diff --git a/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx b/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx index 5bbbef1a5f0..17d03dc138a 100644 --- a/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx +++ b/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx @@ -24,6 +24,7 @@ import { genericComponent, useRender, wrapInArray } from '@/util' // Types import type { FilterMatch } from '@/composables/filter' +import type { InternalItem } from '@/composables/items' import type { MakeSlots } from '@/util' import type { VFieldSlots } from '@/components/VField/VField' import type { VInputSlots } from '@/components/VInput/VInput' @@ -65,11 +66,11 @@ export const VAutocomplete = genericComponent 'onUpdate:modelValue'?: (val: V) => void - } + } & Omit $slots: Omit & MakeSlots<{ - item: [{ item: T, index: number, props: Record }] - chip: [{ item: T, index: number, props: Record }] - selection: [{ item: T, index: number }] + item: [{ item: InternalItem, index: number, props: Record }] + chip: [{ item: InternalItem, index: number, props: Record }] + selection: [{ item: InternalItem, index: number }] 'no-data': [] }> }>()({ @@ -160,7 +161,7 @@ export const VAutocomplete = genericComponent selection === item.value) diff --git a/packages/vuetify/src/components/VCombobox/VCombobox.tsx b/packages/vuetify/src/components/VCombobox/VCombobox.tsx index 684a9ec9125..98a474bc717 100644 --- a/packages/vuetify/src/components/VCombobox/VCombobox.tsx +++ b/packages/vuetify/src/components/VCombobox/VCombobox.tsx @@ -68,11 +68,11 @@ export const VCombobox = genericComponent 'onUpdate:modelValue'?: (val: V) => void - } + } & Omit $slots: Omit & MakeSlots<{ - item: [{ item: T, index: number, props: Record }] - chip: [{ item: T, index: number, props: Record }] - selection: [{ item: T, index: number }] + item: [{ item: InternalItem, index: number, props: Record }] + chip: [{ item: InternalItem, index: number, props: Record }] + selection: [{ item: InternalItem, index: number }] 'no-data': [] }> }>()({ diff --git a/packages/vuetify/src/components/VDialog/VDialog.tsx b/packages/vuetify/src/components/VDialog/VDialog.tsx index c7ec2b14ad3..3214bf7bc35 100644 --- a/packages/vuetify/src/components/VDialog/VDialog.tsx +++ b/packages/vuetify/src/components/VDialog/VDialog.tsx @@ -21,6 +21,7 @@ import type { OverlaySlots } from '@/components/VOverlay/VOverlay' export const VDialog = genericComponent { $slots: OverlaySlots + $props: VOverlay['$props'] }>()({ name: 'VDialog', diff --git a/packages/vuetify/src/components/VMenu/VMenu.tsx b/packages/vuetify/src/components/VMenu/VMenu.tsx index 2206266ea31..95c7c326f58 100644 --- a/packages/vuetify/src/components/VMenu/VMenu.tsx +++ b/packages/vuetify/src/components/VMenu/VMenu.tsx @@ -22,6 +22,7 @@ import type { OverlaySlots } from '@/components/VOverlay/VOverlay' export const VMenu = genericComponent { $slots: OverlaySlots + $props: VOverlay['$props'] }>()({ name: 'VMenu', diff --git a/packages/vuetify/src/components/VSelect/VSelect.tsx b/packages/vuetify/src/components/VSelect/VSelect.tsx index 67e44708eb7..2256c26825a 100644 --- a/packages/vuetify/src/components/VSelect/VSelect.tsx +++ b/packages/vuetify/src/components/VSelect/VSelect.tsx @@ -81,11 +81,11 @@ export const VSelect = genericComponent 'onUpdate:modelValue'?: (val: V) => void - } + } & Omit $slots: Omit & MakeSlots<{ - item: [{ item: T, index: number, props: Record }] - chip: [{ item: T, index: number, props: Record }] - selection: [{ item: T, index: number }] + item: [{ item: InternalItem, index: number, props: Record }] + chip: [{ item: InternalItem, index: number, props: Record }] + selection: [{ item: InternalItem, index: number }] 'no-data': [] }> }>()({ diff --git a/packages/vuetify/src/components/VSnackbar/VSnackbar.tsx b/packages/vuetify/src/components/VSnackbar/VSnackbar.tsx index 923c669cfa3..769bfc40580 100644 --- a/packages/vuetify/src/components/VSnackbar/VSnackbar.tsx +++ b/packages/vuetify/src/components/VSnackbar/VSnackbar.tsx @@ -17,9 +17,19 @@ import { forwardRefs } from '@/composables/forwardRefs' // Utilities import { onMounted, ref, watch } from 'vue' -import { defineComponent, useRender } from '@/util' - -export const VSnackbar = defineComponent({ +import { genericComponent, useRender } from '@/util' + +// Types +import type { MakeSlots } from '@/util' + +export const VSnackbar = genericComponent { + $slots: MakeSlots<{ + activator: [{ isActive: boolean, props: Record }] + default: [] + actions: [] + }> + $props: VOverlay['$props'] +}>()({ name: 'VSnackbar', props: { diff --git a/packages/vuetify/src/components/VTooltip/VTooltip.tsx b/packages/vuetify/src/components/VTooltip/VTooltip.tsx index a94c5d3fac1..60d44963772 100644 --- a/packages/vuetify/src/components/VTooltip/VTooltip.tsx +++ b/packages/vuetify/src/components/VTooltip/VTooltip.tsx @@ -21,6 +21,7 @@ import type { StrategyProps } from '@/components/VOverlay/locationStrategies' export const VTooltip = genericComponent { $slots: OverlaySlots + $props: VOverlay['$props'] }>()({ name: 'VTooltip', diff --git a/packages/vuetify/src/composables/items.ts b/packages/vuetify/src/composables/items.ts index 7cb73ab983d..ee08030727a 100644 --- a/packages/vuetify/src/composables/items.ts +++ b/packages/vuetify/src/composables/items.ts @@ -6,7 +6,7 @@ import { getPropertyFromItem, pick, propsFactory } from '@/util' import type { PropType } from 'vue' import type { SelectItemKey } from '@/util' -export interface InternalItem { +export interface InternalItem { title: string value: any props: { @@ -15,7 +15,7 @@ export interface InternalItem { value: any } children?: InternalItem[] - raw: any + raw: T } export interface ItemProps {