@@ -5,7 +5,7 @@ import type { AppConfig } from '@nuxt/schema'
55import theme from ' #build/ui/input-menu'
66import type { UseComponentIconsProps } from ' ../composables/useComponentIcons'
77import type { AvatarProps , ChipProps , InputProps } from ' ../types'
8- import type { AcceptableValue , ArrayOrNested , GetItemKeys , GetModelValue , GetModelValueEmits , NestedItem , EmitsToProps , ComponentConfig } from ' ../types/utils'
8+ import type { AcceptableValue , ArrayOrNested , GetItemKeys , GetItemValue , GetModelValue , GetModelValueEmits , NestedItem , EmitsToProps , ComponentConfig } from ' ../types/utils'
99
1010type InputMenu = ComponentConfig <typeof theme , AppConfig , ' inputMenu' >
1111
@@ -183,7 +183,7 @@ import { useComponentIcons } from '../composables/useComponentIcons'
183183import { useFormField } from ' ../composables/useFormField'
184184import { useLocale } from ' ../composables/useLocale'
185185import { usePortal } from ' ../composables/usePortal'
186- import { compare , get , isArrayOfArray } from ' ../utils'
186+ import { compare , get , getDisplayValue , isArrayOfArray } from ' ../utils'
187187import { tv } from ' ../utils/tv'
188188import UIcon from ' ./Icon.vue'
189189import UAvatar from ' ./Avatar.vue'
@@ -233,9 +233,11 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.inputMenu ||
233233 buttonGroup: orientation .value
234234}))
235235
236- function displayValue(value : T ): string {
237- const item = items .value .find (item => compare (typeof item === ' object' && props .valueKey ? get (item as Record <string , any >, props .valueKey as string ) : item , value ))
238- return item && (typeof item === ' object' ? get (item , props .labelKey as string ) : item )
236+ function displayValue(value : GetItemValue <T , VK >): string {
237+ return getDisplayValue (items .value , value , {
238+ labelKey: props .labelKey ,
239+ valueKey: props .valueKey
240+ }) ?? ' '
239241}
240242
241243const groups = computed <InputMenuItem [][]>(() =>
@@ -246,7 +248,7 @@ const groups = computed<InputMenuItem[][]>(() =>
246248 : []
247249)
248250// eslint-disable-next-line vue/no-dupe-keys
249- const items = computed (() => groups .value .flatMap (group => group ))
251+ const items = computed (() => groups .value .flatMap (group => group ) as T [] )
250252
251253const filteredGroups = computed (() => {
252254 if (props .ignoreFilter || ! searchTerm .value ) {
@@ -441,7 +443,7 @@ defineExpose({
441443 <TagsInputItem v-for =" (item, index) in tags" :key =" index" :value =" item" :class =" ui.tagsItem({ class: [props.ui?.tagsItem, isInputItem(item) && item.ui?.tagsItem] })" >
442444 <TagsInputItemText :class =" ui.tagsItemText({ class: [props.ui?.tagsItemText, isInputItem(item) && item.ui?.tagsItemText] })" >
443445 <slot name =" tags-item-text" :item =" (item as NestedItem<T>)" :index =" index" >
444- {{ displayValue(item as T) ?? item }}
446+ {{ displayValue(item as GetItemValue< T , VK >) }}
445447 </slot >
446448 </TagsInputItemText >
447449
0 commit comments