vuetify 3.10.3 → 3.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/json/attributes.json +3285 -3269
  2. package/dist/json/importMap-labs.json +18 -18
  3. package/dist/json/importMap.json +176 -176
  4. package/dist/json/tags.json +4 -0
  5. package/dist/json/web-types.json +5963 -5923
  6. package/dist/vuetify-labs.cjs +125 -81
  7. package/dist/vuetify-labs.css +6900 -6889
  8. package/dist/vuetify-labs.d.ts +117 -59
  9. package/dist/vuetify-labs.esm.js +126 -82
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +125 -81
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +117 -77
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3658 -3647
  16. package/dist/vuetify.d.ts +117 -59
  17. package/dist/vuetify.esm.js +117 -77
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +117 -77
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +43 -39
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBadge/VBadge.css +10 -0
  25. package/lib/components/VBadge/VBadge.sass +9 -0
  26. package/lib/components/VBtn/VBtn.js +1 -1
  27. package/lib/components/VBtn/VBtn.js.map +1 -1
  28. package/lib/components/VChip/VChip.js +13 -2
  29. package/lib/components/VChip/VChip.js.map +1 -1
  30. package/lib/components/VCombobox/VCombobox.d.ts +13 -0
  31. package/lib/components/VCombobox/VCombobox.js +3 -1
  32. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  33. package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +29 -0
  34. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +4 -1
  35. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableHeaders.d.ts +29 -0
  37. package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
  38. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTableRow.d.ts +29 -0
  40. package/lib/components/VDataTable/VDataTableRow.js +3 -0
  41. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableRows.d.ts +29 -0
  43. package/lib/components/VDataTable/VDataTableRows.js +4 -3
  44. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  45. package/lib/components/VDialog/VDialog.js +29 -11
  46. package/lib/components/VDialog/VDialog.js.map +1 -1
  47. package/lib/components/VDialog/__test__/VDialog.spec.browser.js +41 -0
  48. package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
  49. package/lib/components/VDivider/VDivider.css +1 -0
  50. package/lib/components/VDivider/VDivider.sass +1 -0
  51. package/lib/components/VFileInput/VFileInput.js +2 -1
  52. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  53. package/lib/components/VKbd/_variables.scss +3 -1
  54. package/lib/components/VList/VListItem.js +1 -1
  55. package/lib/components/VList/VListItem.js.map +1 -1
  56. package/lib/components/VTable/VTable.js +20 -32
  57. package/lib/components/VTable/VTable.js.map +1 -1
  58. package/lib/components/VTreeview/VTreeviewChildren.js +1 -1
  59. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  60. package/lib/composables/group.d.ts +2 -0
  61. package/lib/composables/group.js +15 -9
  62. package/lib/composables/group.js.map +1 -1
  63. package/lib/entry-bundler.js +1 -1
  64. package/lib/framework.d.ts +59 -59
  65. package/lib/framework.js +1 -1
  66. package/lib/labs/VCalendar/VCalendar.js +7 -3
  67. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  68. package/lib/labs/VCalendar/composables/calendarWithEvents.js +7 -4
  69. package/lib/labs/VCalendar/composables/calendarWithEvents.js.map +1 -1
  70. package/lib/labs/VFileUpload/VFileUpload.js +2 -1
  71. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  72. package/lib/labs/rules/rules.js +3 -3
  73. package/lib/labs/rules/rules.js.map +1 -1
  74. package/lib/util/animation.js +1 -1
  75. package/lib/util/animation.js.map +1 -1
  76. package/lib/util/box.d.ts +1 -1
  77. package/lib/util/box.js +19 -14
  78. package/lib/util/box.js.map +1 -1
  79. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VTreeviewChildren.js","names":["VTreeviewGroup","makeVTreeviewItemProps","VTreeviewItem","VCheckboxBtn","VDivider","VListItemAction","VListSubheader","makeDensityProps","IconValue","computed","reactive","ref","toRaw","genericComponent","getIndentLines","pick","propsFactory","renderSlot","makeVTreeviewChildrenProps","fluid","Boolean","disabled","loadChildren","Function","loadingIcon","type","String","default","items","Array","openOnClick","undefined","indeterminateIcon","falseIcon","trueIcon","returnObject","activatable","selectable","selectedColor","selectStrategy","Object","index","Number","isLastGroup","separateRoots","parentIndentLines","indentLinesVariant","path","VTreeviewChildren","name","props","setup","_ref","slots","isLoading","Set","activatorItems","isClickOnOpen","checkChildren","item","length","children","add","value","raw","delete","selectItem","select","isSelected","map","itemProps","loading","has","nextItemHasChildren","at","depth","isLast","treeItemProps","isFirst","hideAction","hideActions","indentLines","leafLinks","variant","slotsWithItem","toggle","slotProps","internalItem","prepend","_createElementVNode","_Fragment","includes","_createVNode","density","isIndeterminate","v","e","stopPropagation","key","append","title","subtitle","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref2","activatorProps","listItemProps","onToggleExpand","onClick","header","el","node","divider","subheader","leaf"],"sources":["../../../src/components/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { makeVTreeviewItemProps, VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VDivider } from '@/components/VDivider'\nimport { VListItemAction, VListSubheader } from '@/components/VList'\n\n// Composables\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, reactive, ref, toRaw } from 'vue'\nimport { genericComponent, getIndentLines, pick, propsFactory, renderSlot } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTreeviewItemSlots } from './VTreeviewItem'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps, IndentLinesVariant, IndentLineType } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VTreeviewItemSlots, 'default'>]: VTreeviewItemSlots[K] & {\n item: T\n internalItem: InternalListItem<T>\n }\n} & {\n default: never\n item: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n }\n header: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n loading: boolean\n }\n divider: { props: InternalListItem['props'] }\n subheader: { props: InternalListItem['props'] }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n fluid: Boolean,\n disabled: Boolean,\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n falseIcon: IconValue,\n trueIcon: IconValue,\n returnObject: Boolean,\n activatable: Boolean,\n selectable: Boolean,\n selectedColor: String,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n index: Number,\n isLastGroup: Boolean,\n separateRoots: Boolean,\n parentIndentLines: Array as PropType<IndentLineType[]>,\n indentLinesVariant: String as PropType<IndentLinesVariant>,\n path: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n ...pick(makeVTreeviewItemProps(), ['hideActions']),\n ...makeDensityProps(),\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { slots }) {\n const isLoading = reactive(new Set<unknown>())\n const activatorItems = ref<VTreeviewItem[]>([])\n\n const isClickOnOpen = computed(() => (\n !props.disabled && (\n props.openOnClick != null\n ? props.openOnClick\n : props.selectable && !props.activatable\n )))\n\n async function checkChildren (item: InternalListItem) {\n try {\n if (!props.items?.length || !props.loadChildren) return\n\n if (item?.children?.length === 0) {\n isLoading.add(item.value)\n await props.loadChildren(item.raw)\n }\n } finally {\n isLoading.delete(item.value)\n }\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map((item, index, items) => {\n const { children, props: itemProps } = item\n const loading = isLoading.has(item.value)\n const nextItemHasChildren = !!items.at(index + 1)?.children\n\n const depth = props.path?.length ?? 0\n const isLast = items.length - 1 === index\n const treeItemProps = {\n index,\n depth,\n isFirst: index === 0,\n isLast,\n path: [...props.path, index],\n hideAction: props.hideActions,\n }\n\n const indentLines = getIndentLines({\n depth,\n isLast,\n isLastGroup: props.isLastGroup,\n leafLinks: !props.hideActions && !props.fluid,\n separateRoots: props.separateRoots,\n parentIndentLines: props.parentIndentLines,\n variant: props.indentLinesVariant,\n })\n\n const slotsWithItem = {\n toggle: slots.toggle\n ? slotProps => slots.toggle?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item, loading })\n : undefined,\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <VListItemAction start>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n disabled={ props.disabled }\n loading={ loading }\n color={ props.selectedColor }\n density={ props.density }\n indeterminate={ slotProps.isIndeterminate }\n indeterminateIcon={ props.indeterminateIcon }\n falseIcon={ props.falseIcon }\n trueIcon={ props.trueIcon }\n onUpdate:modelValue={ v => selectItem(slotProps.select, v) }\n onClick={ (e: PointerEvent) => e.stopPropagation() }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </VListItemAction>\n )}\n\n { slots.prepend?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item }) }\n </>\n ),\n append: slots.append\n ? slotProps => slots.append?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item })\n : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n subtitle: slots.subtitle ? slotProps => slots.subtitle?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps({ ...props, ...treeItemProps })\n\n return children ? (\n <VTreeviewGroup\n { ...treeviewGroupProps }\n value={ props.returnObject ? item.raw : treeviewGroupProps?.value }\n rawId={ treeviewGroupProps?.value }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n onToggleExpand: [() => checkChildren(item), activatorProps.onClick] as any,\n onClick: isClickOnOpen.value\n ? [() => checkChildren(item), activatorProps.onClick] as any\n : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected),\n }\n\n return renderSlot(\n slots.header,\n { props: listItemProps, item: item.raw, internalItem: item, loading },\n () => (\n <VTreeviewItem\n ref={ el => activatorItems.value[index] = el as VTreeviewItem }\n { ...listItemProps }\n hasCustomPrepend={ !!slots.prepend }\n hideActions={ props.hideActions }\n indentLines={ indentLines.node }\n value={ props.returnObject ? item.raw : itemProps.value }\n loading={ loading }\n v-slots={ slotsWithItem }\n />\n )\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n indentLinesVariant={ props.indentLinesVariant }\n parentIndentLines={ indentLines.children }\n isLastGroup={ nextItemHasChildren }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : renderSlot(\n slots.item,\n { props: itemProps, item: item.raw, internalItem: item },\n () => {\n if (item.type === 'divider') {\n return renderSlot(\n slots.divider,\n { props: item.raw },\n () => <VDivider { ...item.props } />,\n )\n }\n if (item.type === 'subheader') {\n return renderSlot(\n slots.subheader,\n { props: item.raw },\n () => <VListSubheader { ...item.props } />,\n )\n }\n return (\n <VTreeviewItem\n { ...itemProps }\n hasCustomPrepend={ !!slots.prepend }\n hideActions={ props.hideActions }\n indentLines={ indentLines.leaf }\n value={ props.returnObject ? toRaw(item.raw) : itemProps.value }\n v-slots={ slotsWithItem }\n />\n )\n })\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VTreeviewChildren.js","names":["VTreeviewGroup","makeVTreeviewItemProps","VTreeviewItem","VCheckboxBtn","VDivider","VListItemAction","VListSubheader","makeDensityProps","IconValue","computed","reactive","ref","toRaw","genericComponent","getIndentLines","pick","propsFactory","renderSlot","makeVTreeviewChildrenProps","fluid","Boolean","disabled","loadChildren","Function","loadingIcon","type","String","default","items","Array","openOnClick","undefined","indeterminateIcon","falseIcon","trueIcon","returnObject","activatable","selectable","selectedColor","selectStrategy","Object","index","Number","isLastGroup","separateRoots","parentIndentLines","indentLinesVariant","path","VTreeviewChildren","name","props","setup","_ref","slots","isLoading","Set","activatorItems","isClickOnOpen","checkChildren","item","length","children","add","value","raw","delete","selectItem","select","isSelected","map","itemProps","loading","has","nextItemHasChildren","at","depth","isLast","treeItemProps","isFirst","hideAction","hideActions","indentLines","leafLinks","variant","slotsWithItem","toggle","slotProps","internalItem","prepend","_createElementVNode","_Fragment","includes","_createVNode","density","isIndeterminate","v","e","stopPropagation","key","append","title","subtitle","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref2","activatorProps","listItemProps","node","onToggleExpand","onClick","header","el","divider","subheader","leaf"],"sources":["../../../src/components/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { makeVTreeviewItemProps, VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VDivider } from '@/components/VDivider'\nimport { VListItemAction, VListSubheader } from '@/components/VList'\n\n// Composables\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, reactive, ref, toRaw } from 'vue'\nimport { genericComponent, getIndentLines, pick, propsFactory, renderSlot } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTreeviewItemSlots } from './VTreeviewItem'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps, IndentLinesVariant, IndentLineType } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VTreeviewItemSlots, 'default'>]: VTreeviewItemSlots[K] & {\n item: T\n internalItem: InternalListItem<T>\n }\n} & {\n default: never\n item: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n }\n header: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n loading: boolean\n }\n divider: { props: InternalListItem['props'] }\n subheader: { props: InternalListItem['props'] }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n fluid: Boolean,\n disabled: Boolean,\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n falseIcon: IconValue,\n trueIcon: IconValue,\n returnObject: Boolean,\n activatable: Boolean,\n selectable: Boolean,\n selectedColor: String,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n index: Number,\n isLastGroup: Boolean,\n separateRoots: Boolean,\n parentIndentLines: Array as PropType<IndentLineType[]>,\n indentLinesVariant: String as PropType<IndentLinesVariant>,\n path: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n ...pick(makeVTreeviewItemProps(), ['hideActions']),\n ...makeDensityProps(),\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { slots }) {\n const isLoading = reactive(new Set<unknown>())\n const activatorItems = ref<VTreeviewItem[]>([])\n\n const isClickOnOpen = computed(() => (\n !props.disabled && (\n props.openOnClick != null\n ? props.openOnClick\n : props.selectable && !props.activatable\n )))\n\n async function checkChildren (item: InternalListItem) {\n try {\n if (!props.items?.length || !props.loadChildren) return\n\n if (item?.children?.length === 0) {\n isLoading.add(item.value)\n await props.loadChildren(item.raw)\n }\n } finally {\n isLoading.delete(item.value)\n }\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map((item, index, items) => {\n const { children, props: itemProps } = item\n const loading = isLoading.has(item.value)\n const nextItemHasChildren = !!items.at(index + 1)?.children\n\n const depth = props.path?.length ?? 0\n const isLast = items.length - 1 === index\n const treeItemProps = {\n index,\n depth,\n isFirst: index === 0,\n isLast,\n path: [...props.path, index],\n hideAction: props.hideActions,\n }\n\n const indentLines = getIndentLines({\n depth,\n isLast,\n isLastGroup: props.isLastGroup,\n leafLinks: !props.hideActions && !props.fluid,\n separateRoots: props.separateRoots,\n parentIndentLines: props.parentIndentLines,\n variant: props.indentLinesVariant,\n })\n\n const slotsWithItem = {\n toggle: slots.toggle\n ? slotProps => slots.toggle?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item, loading })\n : undefined,\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <VListItemAction start>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n disabled={ props.disabled }\n loading={ loading }\n color={ props.selectedColor }\n density={ props.density }\n indeterminate={ slotProps.isIndeterminate }\n indeterminateIcon={ props.indeterminateIcon }\n falseIcon={ props.falseIcon }\n trueIcon={ props.trueIcon }\n onUpdate:modelValue={ v => selectItem(slotProps.select, v) }\n onClick={ (e: PointerEvent) => e.stopPropagation() }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </VListItemAction>\n )}\n\n { slots.prepend?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item }) }\n </>\n ),\n append: slots.append\n ? slotProps => slots.append?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item })\n : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n subtitle: slots.subtitle ? slotProps => slots.subtitle?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps({ ...props, ...treeItemProps })\n\n return children ? (\n <VTreeviewGroup\n { ...treeviewGroupProps }\n value={ props.returnObject ? item.raw : treeviewGroupProps?.value }\n rawId={ treeviewGroupProps?.value }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n indentLines: indentLines.node,\n onToggleExpand: [() => checkChildren(item), activatorProps.onClick] as any,\n onClick: isClickOnOpen.value\n ? [() => checkChildren(item), activatorProps.onClick] as any\n : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected),\n }\n\n return renderSlot(\n slots.header,\n { props: listItemProps, item: item.raw, internalItem: item, loading },\n () => (\n <VTreeviewItem\n ref={ el => activatorItems.value[index] = el as VTreeviewItem }\n { ...listItemProps }\n hasCustomPrepend={ !!slots.prepend }\n hideActions={ props.hideActions }\n value={ props.returnObject ? item.raw : itemProps.value }\n loading={ loading }\n v-slots={ slotsWithItem }\n />\n )\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n indentLinesVariant={ props.indentLinesVariant }\n parentIndentLines={ indentLines.children }\n isLastGroup={ nextItemHasChildren }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : renderSlot(\n slots.item,\n { props: itemProps, item: item.raw, internalItem: item },\n () => {\n if (item.type === 'divider') {\n return renderSlot(\n slots.divider,\n { props: item.raw },\n () => <VDivider { ...item.props } />,\n )\n }\n if (item.type === 'subheader') {\n return renderSlot(\n slots.subheader,\n { props: item.raw },\n () => <VListSubheader { ...item.props } />,\n )\n }\n return (\n <VTreeviewItem\n { ...itemProps }\n hasCustomPrepend={ !!slots.prepend }\n hideActions={ props.hideActions }\n indentLines={ indentLines.leaf }\n value={ props.returnObject ? toRaw(item.raw) : itemProps.value }\n v-slots={ slotsWithItem }\n />\n )\n })\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
@@ -44,6 +44,8 @@ export interface GroupItemProvide {
44
44
  value: Ref<unknown>;
45
45
  disabled: Ref<boolean | undefined>;
46
46
  group: GroupProvide;
47
+ register: () => void;
48
+ unregister: () => void;
47
49
  }
48
50
  export declare const makeGroupProps: <Defaults extends {
49
51
  modelValue?: unknown;
@@ -36,14 +36,18 @@ export function useGroupItem(props, injectKey) {
36
36
  }
37
37
  const value = toRef(() => props.value);
38
38
  const disabled = computed(() => !!(group.disabled.value || props.disabled));
39
- group.register({
40
- id,
41
- value,
42
- disabled
43
- }, vm);
44
- onBeforeUnmount(() => {
45
- group.unregister(id);
46
- });
39
+ function register() {
40
+ group?.register({
41
+ id,
42
+ value,
43
+ disabled
44
+ }, vm);
45
+ }
46
+ function unregister() {
47
+ group?.unregister(id);
48
+ }
49
+ onMounted(() => register());
50
+ onBeforeUnmount(() => unregister());
47
51
  const isSelected = computed(() => {
48
52
  return group.isSelected(id);
49
53
  });
@@ -71,7 +75,9 @@ export function useGroupItem(props, injectKey) {
71
75
  selectedClass,
72
76
  value,
73
77
  disabled,
74
- group
78
+ group,
79
+ register,
80
+ unregister
75
81
  };
76
82
  }
77
83
  export function useGroup(props, injectKey) {
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","useId","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","isFirst","items","isLast","emit","flush","toggle","select","useGroup","isUnmounted","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","useIndexAsValue","splice","push","forceMandatoryValue","findIndex","find","i","internalValue","slice","includes","step","offset","currentId","currentIndex","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, useId, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: string\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n useIndexAsValue?: boolean\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': EventProp<[unknown]> | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: string) => void\n select: (id: string, value: boolean) => void\n selected: Ref<Readonly<string[]>>\n isSelected: (id: string) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: Readonly<Ref<{\n id: string\n value: unknown\n disabled: boolean | undefined\n }[]>>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: string\n isSelected: Ref<boolean>\n isFirst: Ref<boolean>\n isLast: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = useId()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(() => props.value)\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n group.register({\n id,\n value,\n disabled,\n }, vm)\n\n onBeforeUnmount(() => {\n group.unregister(id)\n })\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n const isFirst = computed(() => {\n return group.items.value[0].id === id\n })\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v === undefined) return []\n\n return getIds(items, v === null ? [null] : wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (unref(unwrapped.value) === undefined) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: string) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\n })\n\n function select (id: string, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n if (!isSelected && !value) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(() => props.disabled),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: string) => selected.value.includes(id),\n selectedClass: toRef(() => props.selectedClass),\n items: toRef(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids: string[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value !== undefined) {\n ids.push(item.id)\n } else if (itemByIndex?.useIndexAsValue) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value !== undefined ? item.value : itemIndex)\n }\n })\n\n return values\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","useId","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","isFirst","items","isLast","emit","flush","toggle","select","useGroup","isUnmounted","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","useIndexAsValue","splice","push","forceMandatoryValue","findIndex","find","i","internalValue","slice","includes","step","offset","currentId","currentIndex","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, useId, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: string\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n useIndexAsValue?: boolean\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': EventProp<[unknown]> | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: string) => void\n select: (id: string, value: boolean) => void\n selected: Ref<Readonly<string[]>>\n isSelected: (id: string) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: Readonly<Ref<{\n id: string\n value: unknown\n disabled: boolean | undefined\n }[]>>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: string\n isSelected: Ref<boolean>\n isFirst: Ref<boolean>\n isLast: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n register: () => void\n unregister: () => void\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = useId()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(() => props.value)\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n function register () {\n group?.register({ id, value, disabled }, vm)\n }\n\n function unregister () {\n group?.unregister(id)\n }\n\n onMounted(() => register())\n onBeforeUnmount(() => unregister())\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n const isFirst = computed(() => {\n return group.items.value[0].id === id\n })\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n register,\n unregister,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v === undefined) return []\n\n return getIds(items, v === null ? [null] : wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (unref(unwrapped.value) === undefined) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: string) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\n })\n\n function select (id: string, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n if (!isSelected && !value) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(() => props.disabled),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: string) => selected.value.includes(id),\n selectedClass: toRef(() => props.selectedClass),\n items: toRef(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids: string[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value !== undefined) {\n ids.push(item.id)\n } else if (itemByIndex?.useIndexAsValue) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value !== undefined ? item.value : itemIndex)\n }\n })\n\n return values\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.10.3";
19
+ export const version = "3.10.5";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -119,7 +119,7 @@ declare class Box {
119
119
  y: number;
120
120
  width: number;
121
121
  height: number;
122
- constructor({ x, y, width, height }: {
122
+ constructor(args: DOMRect | {
123
123
  x: number;
124
124
  y: number;
125
125
  width: number;
@@ -2712,42 +2712,43 @@ declare module 'vue' {
2712
2712
  $children?: VNodeChild
2713
2713
  }
2714
2714
  export interface GlobalComponents {
2715
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2715
2716
  VApp: typeof import('vuetify/components')['VApp']
2716
- VAlert: typeof import('vuetify/components')['VAlert']
2717
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2718
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2719
2717
  VAppBar: typeof import('vuetify/components')['VAppBar']
2720
2718
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2721
2719
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2722
- VAvatar: typeof import('vuetify/components')['VAvatar']
2720
+ VBadge: typeof import('vuetify/components')['VBadge']
2721
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2722
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2723
2723
  VBanner: typeof import('vuetify/components')['VBanner']
2724
2724
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2725
2725
  VBannerText: typeof import('vuetify/components')['VBannerText']
2726
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2727
- VBadge: typeof import('vuetify/components')['VBadge']
2728
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2729
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2730
- VChip: typeof import('vuetify/components')['VChip']
2731
2726
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2732
2727
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2733
2728
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2734
- VBtn: typeof import('vuetify/components')['VBtn']
2735
- VCarousel: typeof import('vuetify/components')['VCarousel']
2736
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2737
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2738
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2739
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2729
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2730
+ VAlert: typeof import('vuetify/components')['VAlert']
2731
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2740
2732
  VCard: typeof import('vuetify/components')['VCard']
2741
2733
  VCardActions: typeof import('vuetify/components')['VCardActions']
2742
2734
  VCardItem: typeof import('vuetify/components')['VCardItem']
2743
2735
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2744
2736
  VCardText: typeof import('vuetify/components')['VCardText']
2745
2737
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2746
- VCombobox: typeof import('vuetify/components')['VCombobox']
2738
+ VBtn: typeof import('vuetify/components')['VBtn']
2747
2739
  VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2748
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
2740
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2741
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
2742
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2743
+ VChip: typeof import('vuetify/components')['VChip']
2744
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2745
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
2746
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2747
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2749
2748
  VCode: typeof import('vuetify/components')['VCode']
2749
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
2750
2750
  VCounter: typeof import('vuetify/components')['VCounter']
2751
+ VDialog: typeof import('vuetify/components')['VDialog']
2751
2752
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
2752
2753
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2753
2754
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
@@ -2761,33 +2762,27 @@ declare module 'vue' {
2761
2762
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2762
2763
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2763
2764
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2764
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2765
- VDialog: typeof import('vuetify/components')['VDialog']
2765
+ VDivider: typeof import('vuetify/components')['VDivider']
2766
2766
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2767
2767
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2768
2768
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2769
2769
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2770
+ VFab: typeof import('vuetify/components')['VFab']
2770
2771
  VField: typeof import('vuetify/components')['VField']
2771
2772
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2772
- VDivider: typeof import('vuetify/components')['VDivider']
2773
- VFileInput: typeof import('vuetify/components')['VFileInput']
2773
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2774
2774
  VFooter: typeof import('vuetify/components')['VFooter']
2775
2775
  VIcon: typeof import('vuetify/components')['VIcon']
2776
2776
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2777
2777
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2778
2778
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2779
2779
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2780
- VFab: typeof import('vuetify/components')['VFab']
2781
- VInput: typeof import('vuetify/components')['VInput']
2782
2780
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2783
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
2784
- VItem: typeof import('vuetify/components')['VItem']
2781
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2782
+ VKbd: typeof import('vuetify/components')['VKbd']
2785
2783
  VImg: typeof import('vuetify/components')['VImg']
2784
+ VInput: typeof import('vuetify/components')['VInput']
2786
2785
  VLabel: typeof import('vuetify/components')['VLabel']
2787
- VKbd: typeof import('vuetify/components')['VKbd']
2788
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2789
- VMenu: typeof import('vuetify/components')['VMenu']
2790
- VMessages: typeof import('vuetify/components')['VMessages']
2791
2786
  VList: typeof import('vuetify/components')['VList']
2792
2787
  VListGroup: typeof import('vuetify/components')['VListGroup']
2793
2788
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2797,24 +2792,34 @@ declare module 'vue' {
2797
2792
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2798
2793
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2799
2794
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2795
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
2796
+ VItem: typeof import('vuetify/components')['VItem']
2797
+ VMessages: typeof import('vuetify/components')['VMessages']
2800
2798
  VMain: typeof import('vuetify/components')['VMain']
2801
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2802
- VOverlay: typeof import('vuetify/components')['VOverlay']
2799
+ VMenu: typeof import('vuetify/components')['VMenu']
2800
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2803
2801
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
2804
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2805
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2806
2802
  VPagination: typeof import('vuetify/components')['VPagination']
2803
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2804
+ VOverlay: typeof import('vuetify/components')['VOverlay']
2807
2805
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2806
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2807
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2808
2808
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2809
- VSelect: typeof import('vuetify/components')['VSelect']
2809
+ VRating: typeof import('vuetify/components')['VRating']
2810
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2810
2811
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2811
2812
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2812
- VRating: typeof import('vuetify/components')['VRating']
2813
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2813
+ VSelect: typeof import('vuetify/components')['VSelect']
2814
2814
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2815
- VSlider: typeof import('vuetify/components')['VSlider']
2816
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2817
2815
  VSheet: typeof import('vuetify/components')['VSheet']
2816
+ VSlider: typeof import('vuetify/components')['VSlider']
2817
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2818
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2819
+ VTab: typeof import('vuetify/components')['VTab']
2820
+ VTabs: typeof import('vuetify/components')['VTabs']
2821
+ VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2822
+ VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2818
2823
  VStepper: typeof import('vuetify/components')['VStepper']
2819
2824
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2820
2825
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
@@ -2822,41 +2827,33 @@ declare module 'vue' {
2822
2827
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2823
2828
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2824
2829
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2825
- VTextarea: typeof import('vuetify/components')['VTextarea']
2826
- VSwitch: typeof import('vuetify/components')['VSwitch']
2827
2830
  VTextField: typeof import('vuetify/components')['VTextField']
2828
- VTab: typeof import('vuetify/components')['VTab']
2829
- VTabs: typeof import('vuetify/components')['VTabs']
2830
- VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2831
- VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2832
2831
  VTable: typeof import('vuetify/components')['VTable']
2832
+ VTextarea: typeof import('vuetify/components')['VTextarea']
2833
2833
  VTimeline: typeof import('vuetify/components')['VTimeline']
2834
2834
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2835
+ VTreeview: typeof import('vuetify/components')['VTreeview']
2836
+ VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
2837
+ VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
2838
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2835
2839
  VToolbar: typeof import('vuetify/components')['VToolbar']
2836
2840
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2837
2841
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2838
- VTimePicker: typeof import('vuetify/components')['VTimePicker']
2839
- VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2840
- VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2841
2842
  VWindow: typeof import('vuetify/components')['VWindow']
2842
2843
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2843
- VTooltip: typeof import('vuetify/components')['VTooltip']
2844
- VTreeview: typeof import('vuetify/components')['VTreeview']
2845
- VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
2846
- VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
2847
2844
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2848
2845
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2849
2846
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2850
- VHover: typeof import('vuetify/components')['VHover']
2851
2847
  VForm: typeof import('vuetify/components')['VForm']
2848
+ VHover: typeof import('vuetify/components')['VHover']
2852
2849
  VContainer: typeof import('vuetify/components')['VContainer']
2853
2850
  VCol: typeof import('vuetify/components')['VCol']
2854
2851
  VRow: typeof import('vuetify/components')['VRow']
2855
2852
  VSpacer: typeof import('vuetify/components')['VSpacer']
2856
2853
  VLayout: typeof import('vuetify/components')['VLayout']
2857
2854
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2858
- VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2859
2855
  VLazy: typeof import('vuetify/components')['VLazy']
2856
+ VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2860
2857
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2861
2858
  VParallax: typeof import('vuetify/components')['VParallax']
2862
2859
  VRadio: typeof import('vuetify/components')['VRadio']
@@ -2884,23 +2881,26 @@ declare module 'vue' {
2884
2881
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2885
2882
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2886
2883
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2884
+ VTimePicker: typeof import('vuetify/components')['VTimePicker']
2885
+ VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2886
+ VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2887
+ VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2888
+ VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2887
2889
  VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2888
2890
  VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2889
- VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2890
2891
  VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2891
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2892
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2893
- VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2894
2892
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2895
2893
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2896
2894
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2897
2895
  VPie: typeof import('vuetify/labs/components')['VPie']
2898
2896
  VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
2899
2897
  VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
2898
+ VHotkey: typeof import('vuetify/labs/components')['VHotkey']
2900
2899
  VVideo: typeof import('vuetify/labs/components')['VVideo']
2901
2900
  VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
2902
2901
  VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
2903
- VHotkey: typeof import('vuetify/labs/components')['VHotkey']
2902
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2903
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2904
2904
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2905
2905
  VMaskInput: typeof import('vuetify/labs/components')['VMaskInput']
2906
2906
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.10.3";
112
+ export const version = "3.10.5";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
@@ -1,4 +1,4 @@
1
- import { resolveDirective as _resolveDirective, mergeProps as _mergeProps, createVNode as _createVNode, withDirectives as _withDirectives } from "vue";
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, withDirectives as _withDirectives } from "vue";
2
2
  // Styles
3
3
  import "./VCalendarCategory.css";
4
4
  import "./VCalendarDaily.css";
@@ -10,7 +10,8 @@ import { VCalendarDaily } from "./VCalendarDaily.js";
10
10
  import { VCalendarWeekly } from "./VCalendarWeekly.js"; // Composables
11
11
  import { makeCalendarBaseProps } from "./composables/calendarBase.js";
12
12
  import { makeCalendarWithEventsProps, useCalendarWithEvents } from "./composables/calendarWithEvents.js";
13
- import { forwardRefs } from "../../composables/forwardRefs.js"; // Utilities
13
+ import { forwardRefs } from "../../composables/forwardRefs.js"; // Directives
14
+ import vResize from "../../directives/resize/index.js"; // Utilities
14
15
  import { computed, onMounted, onUpdated, ref, watch } from 'vue';
15
16
  import { getParsedCategories } from "./util/parser.js";
16
17
  import { copyTimestamp, DAY_MIN, DAYS_IN_MONTH_MAX, DAYS_IN_WEEK, getEndOfMonth, getStartOfMonth, nextDay, prevDay, relativeDays, timestampToDate, updateFormatted, updateRelative, updateWeekday, validateTimestamp } from "./util/timestamp.js";
@@ -18,6 +19,9 @@ import { genericComponent, useRender } from "../../util/index.js"; // Types
18
19
  // Types
19
20
  export const VCalendar = genericComponent()({
20
21
  name: 'VCalendar',
22
+ directives: {
23
+ vResize
24
+ },
21
25
  props: {
22
26
  modelValue: {
23
27
  type: [String, Number, Date],
@@ -303,7 +307,7 @@ export const VCalendar = genericComponent()({
303
307
  "onClick:date": (e, day) => {
304
308
  if (attrs['onUpdate:modelValue']) emit('update:modelValue', day.date);
305
309
  }
306
- }), base.getScopedSlots()), [[_resolveDirective("resize"), base.updateEventVisibility, void 0, {
310
+ }), base.getScopedSlots()), [[vResize, base.updateEventVisibility, void 0, {
307
311
  quiet: true
308
312
  }]]);
309
313
  });