diff --git a/src/runtime/components/Select.vue b/src/runtime/components/Select.vue index 09268beb98..70d17a090e 100644 --- a/src/runtime/components/Select.vue +++ b/src/runtime/components/Select.vue @@ -105,6 +105,7 @@ export type SelectEmits, VK extends GetItemK } & GetModelValueEmits type SlotProps = (props: { item: T, index: number }) => any +type SlotGroupLabelProps = (props: { item: T, index: number, groupIndex: number }) => any export interface SelectSlots< A extends ArrayOrNested = ArrayOrNested, @@ -126,6 +127,8 @@ export interface SelectSlots< open: boolean ui: { [K in keyof Required]: (props?: Record) => string } }): any + 'group-label': SlotGroupLabelProps + 'separator': SlotProps 'item': SlotProps 'item-leading': SlotProps 'item-label': SlotProps @@ -196,7 +199,7 @@ const groups = computed(() => // eslint-disable-next-line vue/no-dupe-keys const items = computed(() => groups.value.flatMap(group => group) as T[]) -function displayValue(value: GetItemValue | GetItemValue[]): string | undefined { +function displayValue(value?: GetItemValue | GetItemValue[]): string | undefined { if (props.multiple && Array.isArray(value)) { const values = value.map(v => displayValue(v)).filter(Boolean) return values?.length ? values.join(', ') : undefined @@ -297,11 +300,14 @@ defineExpose({