diff --git a/next-ui/src/components/FormattedMessage.ts b/next-ui/src/components/FormattedMessage.ts index b3ad2e16..d58a8f4c 100644 --- a/next-ui/src/components/FormattedMessage.ts +++ b/next-ui/src/components/FormattedMessage.ts @@ -6,20 +6,23 @@ export default defineComponent({ props: { messageDescriptor: Object as PropType, tag: String, - values: Object, + values: Object as PropType>, }, setup(props, context) { const { messageDescriptor, tag, values = {} } = props + if (!messageDescriptor) return () => '' + const intl = useIntl() const slotNames = Object.keys(context.slots) - const message = intl.formatMessage(messageDescriptor, { + const v = { ...values, - ...slotNames.reduce((slots, name) => { - slots[name] = (content) => context.slots[name](() => content) + ...slotNames.reduce((slots: Record, name) => { + slots[name] = (content: unknown) => context.slots[name]!(() => content) return slots }, {}), - }) + } as Record + const message = intl.formatMessage(messageDescriptor, v) return () => (tag || Array.isArray(message) ? h(tag || 'div', message) : message) },