@vuetify/nightly 3.6.4-master.2024-05-10 → 3.6.5-master.2024-05-11

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 (58) hide show
  1. package/CHANGELOG.md +2 -12
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +268 -4
  4. package/dist/json/importMap-labs.json +22 -10
  5. package/dist/json/importMap.json +142 -142
  6. package/dist/json/tags.json +81 -0
  7. package/dist/json/web-types.json +1253 -6
  8. package/dist/vuetify-labs.css +1684 -1616
  9. package/dist/vuetify-labs.d.ts +1615 -28
  10. package/dist/vuetify-labs.esm.js +298 -11
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +298 -11
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.css +1239 -1239
  15. package/dist/vuetify.d.ts +97 -73
  16. package/dist/vuetify.esm.js +38 -11
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +38 -11
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +47 -48
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/components/VBtn/index.d.mts +2 -0
  24. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +3 -1
  25. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  26. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +15 -4
  27. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  28. package/lib/components/VExpansionPanel/index.d.mts +82 -27
  29. package/lib/components/VSlideGroup/index.d.mts +2 -0
  30. package/lib/components/VStepper/VStepper.mjs +5 -2
  31. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  32. package/lib/components/VStepper/VStepperItem.mjs +5 -2
  33. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  34. package/lib/components/VStepper/index.d.mts +1 -1
  35. package/lib/components/VTabs/index.d.mts +2 -0
  36. package/lib/components/VWindow/index.d.mts +2 -0
  37. package/lib/components/index.d.mts +48 -27
  38. package/lib/composables/group.mjs +8 -0
  39. package/lib/composables/group.mjs.map +1 -1
  40. package/lib/entry-bundler.mjs +1 -1
  41. package/lib/framework.mjs +1 -1
  42. package/lib/index.d.mts +49 -46
  43. package/lib/labs/VStepperVertical/VStepperVertical.mjs +106 -0
  44. package/lib/labs/VStepperVertical/VStepperVertical.mjs.map +1 -0
  45. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +38 -0
  46. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs.map +1 -0
  47. package/lib/labs/VStepperVertical/VStepperVerticalItem.css +69 -0
  48. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +134 -0
  49. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs.map +1 -0
  50. package/lib/labs/VStepperVertical/VStepperVerticalItem.sass +74 -0
  51. package/lib/labs/VStepperVertical/_variables.scss +3 -0
  52. package/lib/labs/VStepperVertical/index.d.mts +1590 -0
  53. package/lib/labs/VStepperVertical/index.mjs +4 -0
  54. package/lib/labs/VStepperVertical/index.mjs.map +1 -0
  55. package/lib/labs/components.d.mts +1599 -20
  56. package/lib/labs/components.mjs +1 -0
  57. package/lib/labs/components.mjs.map +1 -1
  58. package/package.json +1 -1
@@ -1438,6 +1438,8 @@ interface GroupProvide {
1438
1438
  interface GroupItemProvide {
1439
1439
  id: number;
1440
1440
  isSelected: Ref<boolean>;
1441
+ isFirst: Ref<boolean>;
1442
+ isLast: Ref<boolean>;
1441
1443
  toggle: () => void;
1442
1444
  select: (value: boolean) => void;
1443
1445
  selectedClass: Ref<(string | undefined)[] | false>;
@@ -32238,6 +32240,10 @@ declare const VEmptyState: {
32238
32240
  }>>;
32239
32241
  type VEmptyState = InstanceType<typeof VEmptyState>;
32240
32242
 
32243
+ type VExpansionPanelSlot = {
32244
+ prev: () => void;
32245
+ next: () => void;
32246
+ };
32241
32247
  declare const VExpansionPanels: {
32242
32248
  new (...args: any[]): vue.CreateComponentPublicInstance<{
32243
32249
  flat: boolean;
@@ -32273,16 +32279,19 @@ declare const VExpansionPanels: {
32273
32279
  bgColor?: string | undefined;
32274
32280
  } & {
32275
32281
  $children?: vue.VNodeChild | {
32276
- default?: (() => vue.VNodeChild) | undefined;
32277
- } | (() => vue.VNodeChild);
32282
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32283
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
32278
32284
  'v-slots'?: {
32279
- default?: false | (() => vue.VNodeChild) | undefined;
32285
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32280
32286
  } | undefined;
32281
32287
  } & {
32282
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
32288
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32283
32289
  } & {
32284
32290
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
32285
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32291
+ }, {
32292
+ next: () => void;
32293
+ prev: () => void;
32294
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32286
32295
  'update:modelValue': (val: unknown) => boolean;
32287
32296
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
32288
32297
  flat: boolean;
@@ -32318,13 +32327,13 @@ declare const VExpansionPanels: {
32318
32327
  bgColor?: string | undefined;
32319
32328
  } & {
32320
32329
  $children?: vue.VNodeChild | {
32321
- default?: (() => vue.VNodeChild) | undefined;
32322
- } | (() => vue.VNodeChild);
32330
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32331
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
32323
32332
  'v-slots'?: {
32324
- default?: false | (() => vue.VNodeChild) | undefined;
32333
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32325
32334
  } | undefined;
32326
32335
  } & {
32327
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
32336
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32328
32337
  } & {
32329
32338
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
32330
32339
  }, {
@@ -32348,7 +32357,7 @@ declare const VExpansionPanels: {
32348
32357
  hideActions: boolean;
32349
32358
  focusable: boolean;
32350
32359
  }, true, {}, vue.SlotsType<Partial<{
32351
- default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
32360
+ default: (arg: VExpansionPanelSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
32352
32361
  [key: string]: any;
32353
32362
  }>[];
32354
32363
  }>>, {
@@ -32392,16 +32401,19 @@ declare const VExpansionPanels: {
32392
32401
  bgColor?: string | undefined;
32393
32402
  } & {
32394
32403
  $children?: vue.VNodeChild | {
32395
- default?: (() => vue.VNodeChild) | undefined;
32396
- } | (() => vue.VNodeChild);
32404
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32405
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
32397
32406
  'v-slots'?: {
32398
- default?: false | (() => vue.VNodeChild) | undefined;
32407
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32399
32408
  } | undefined;
32400
32409
  } & {
32401
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
32410
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32402
32411
  } & {
32403
32412
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
32404
- }, {}, {}, {}, {}, {
32413
+ }, {
32414
+ next: () => void;
32415
+ prev: () => void;
32416
+ }, {}, {}, {}, {
32405
32417
  flat: boolean;
32406
32418
  style: vue.StyleValue;
32407
32419
  disabled: boolean;
@@ -32459,16 +32471,19 @@ declare const VExpansionPanels: {
32459
32471
  bgColor?: string | undefined;
32460
32472
  } & {
32461
32473
  $children?: vue.VNodeChild | {
32462
- default?: (() => vue.VNodeChild) | undefined;
32463
- } | (() => vue.VNodeChild);
32474
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32475
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
32464
32476
  'v-slots'?: {
32465
- default?: false | (() => vue.VNodeChild) | undefined;
32477
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32466
32478
  } | undefined;
32467
32479
  } & {
32468
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
32480
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
32469
32481
  } & {
32470
32482
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
32471
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32483
+ }, {
32484
+ next: () => void;
32485
+ prev: () => void;
32486
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32472
32487
  'update:modelValue': (val: unknown) => boolean;
32473
32488
  }, string, {
32474
32489
  flat: boolean;
@@ -32491,7 +32506,7 @@ declare const VExpansionPanels: {
32491
32506
  hideActions: boolean;
32492
32507
  focusable: boolean;
32493
32508
  }, {}, string, vue.SlotsType<Partial<{
32494
- default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
32509
+ default: (arg: VExpansionPanelSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
32495
32510
  [key: string]: any;
32496
32511
  }>[];
32497
32512
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
@@ -32660,10 +32675,12 @@ declare const VExpansionPanel: {
32660
32675
  "onGroup:selected"?: ((val: {
32661
32676
  value: boolean;
32662
32677
  }) => any) | undefined;
32663
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32678
+ }, {
32679
+ groupItem: GroupItemProvide;
32680
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32664
32681
  'group:selected': (val: {
32665
32682
  value: boolean;
32666
- }) => boolean;
32683
+ }) => true;
32667
32684
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
32668
32685
  style: vue.StyleValue;
32669
32686
  disabled: boolean;
@@ -32785,7 +32802,9 @@ declare const VExpansionPanel: {
32785
32802
  "onGroup:selected"?: ((val: {
32786
32803
  value: boolean;
32787
32804
  }) => any) | undefined;
32788
- }, {}, {}, {}, {}, {
32805
+ }, {
32806
+ groupItem: GroupItemProvide;
32807
+ }, {}, {}, {}, {
32789
32808
  style: vue.StyleValue;
32790
32809
  disabled: boolean;
32791
32810
  tag: string;
@@ -32849,10 +32868,12 @@ declare const VExpansionPanel: {
32849
32868
  "onGroup:selected"?: ((val: {
32850
32869
  value: boolean;
32851
32870
  }) => any) | undefined;
32852
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32871
+ }, {
32872
+ groupItem: GroupItemProvide;
32873
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
32853
32874
  'group:selected': (val: {
32854
32875
  value: boolean;
32855
- }) => boolean;
32876
+ }) => true;
32856
32877
  }, string, {
32857
32878
  style: vue.StyleValue;
32858
32879
  disabled: boolean;
@@ -57728,6 +57749,7 @@ declare const VSpeedDial: {
57728
57749
  }>>;
57729
57750
  type VSpeedDial = InstanceType<typeof VSpeedDial>;
57730
57751
 
57752
+ type StepperItem = string | Record<string, any>;
57731
57753
  type StepperItemSlot = {
57732
57754
  canEdit: boolean;
57733
57755
  hasError: boolean;
@@ -58052,7 +58074,6 @@ declare const VStepperItem: {
58052
58074
  }>>;
58053
58075
  type VStepperItem = InstanceType<typeof VStepperItem>;
58054
58076
 
58055
- type StepperItem = string | Record<string, any>;
58056
58077
  type VStepperSlot = {
58057
58078
  prev: () => void;
58058
58079
  next: () => void;
@@ -47,6 +47,12 @@ export function useGroupItem(props, injectKey) {
47
47
  const isSelected = computed(() => {
48
48
  return group.isSelected(id);
49
49
  });
50
+ const isFirst = computed(() => {
51
+ return group.items.value[0].id === id;
52
+ });
53
+ const isLast = computed(() => {
54
+ return group.items.value[group.items.value.length - 1].id === id;
55
+ });
50
56
  const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass]);
51
57
  watch(isSelected, value => {
52
58
  vm.emit('group:selected', {
@@ -58,6 +64,8 @@ export function useGroupItem(props, injectKey) {
58
64
  return {
59
65
  id,
60
66
  isSelected,
67
+ isFirst,
68
+ isLast,
61
69
  toggle: () => group.select(id, !isSelected.value),
62
70
  select: value => group.select(id, value),
63
71
  selectedClass,
@@ -1 +1 @@
1
- {"version":3,"file":"group.mjs","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","getUid","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","emit","flush","toggle","select","useGroup","isUnmounted","items","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, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: number\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: number) => void\n select: (id: number, value: boolean) => void\n selected: Ref<Readonly<number[]>>\n isSelected: (id: number) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: ComputedRef<{\n id: number\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: number\n isSelected: 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 = getUid()\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\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 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 == null) return []\n\n return getIds(items, 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) == null) {\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: number) {\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: number, 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\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: number) => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => 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: number[] = []\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 != null) {\n ids.push(item.id)\n } else if (itemByIndex != null) {\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 != null ? item.value : itemIndex)\n }\n })\n\n return values\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"group.mjs","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","getUid","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, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: number\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: number) => void\n select: (id: number, value: boolean) => void\n selected: Ref<Readonly<number[]>>\n isSelected: (id: number) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: ComputedRef<{\n id: number\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: number\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 = getUid()\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 == null) return []\n\n return getIds(items, 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) == null) {\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: number) {\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: number, 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\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: number) => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => 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: number[] = []\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 != null) {\n ids.push(item.id)\n } else if (itemByIndex != null) {\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 != null ? 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.6.4-master.2024-05-10";
19
+ export const version = "3.6.5-master.2024-05-11";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.6.4-master.2024-05-10";
100
+ export const version = "3.6.5-master.2024-05-11";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -493,40 +493,48 @@ declare module '@vue/runtime-core' {
493
493
  }
494
494
 
495
495
  export interface GlobalComponents {
496
+ VApp: typeof import('vuetify/components')['VApp']
496
497
  VAppBar: typeof import('vuetify/components')['VAppBar']
497
498
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
498
499
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
500
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
499
501
  VAlert: typeof import('vuetify/components')['VAlert']
500
502
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
503
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
501
504
  VAvatar: typeof import('vuetify/components')['VAvatar']
502
- VApp: typeof import('vuetify/components')['VApp']
503
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
505
+ VBanner: typeof import('vuetify/components')['VBanner']
506
+ VBannerActions: typeof import('vuetify/components')['VBannerActions']
507
+ VBannerText: typeof import('vuetify/components')['VBannerText']
504
508
  VBadge: typeof import('vuetify/components')['VBadge']
509
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
505
510
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
506
511
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
507
512
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
508
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
509
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
510
- VBanner: typeof import('vuetify/components')['VBanner']
511
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
512
- VBannerText: typeof import('vuetify/components')['VBannerText']
513
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
514
513
  VBtn: typeof import('vuetify/components')['VBtn']
514
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
515
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
516
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
517
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
518
+ VChip: typeof import('vuetify/components')['VChip']
515
519
  VCard: typeof import('vuetify/components')['VCard']
516
520
  VCardActions: typeof import('vuetify/components')['VCardActions']
517
521
  VCardItem: typeof import('vuetify/components')['VCardItem']
518
522
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
519
523
  VCardText: typeof import('vuetify/components')['VCardText']
520
524
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
521
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
522
525
  VCarousel: typeof import('vuetify/components')['VCarousel']
523
526
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
524
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
525
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
526
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
527
- VChip: typeof import('vuetify/components')['VChip']
527
+ VCombobox: typeof import('vuetify/components')['VCombobox']
528
528
  VCode: typeof import('vuetify/components')['VCode']
529
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
529
530
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
531
+ VDataTable: typeof import('vuetify/components')['VDataTable']
532
+ VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
533
+ VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
534
+ VDataTableRows: typeof import('vuetify/components')['VDataTableRows']
535
+ VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
536
+ VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
537
+ VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
530
538
  VCounter: typeof import('vuetify/components')['VCounter']
531
539
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
532
540
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
@@ -534,37 +542,29 @@ declare module '@vue/runtime-core' {
534
542
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
535
543
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
536
544
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
537
- VCombobox: typeof import('vuetify/components')['VCombobox']
538
545
  VDialog: typeof import('vuetify/components')['VDialog']
539
- VDataTable: typeof import('vuetify/components')['VDataTable']
540
- VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
541
- VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
542
- VDataTableRows: typeof import('vuetify/components')['VDataTableRows']
543
- VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
544
- VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
545
- VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
546
546
  VDivider: typeof import('vuetify/components')['VDivider']
547
- VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
548
- VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
549
- VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
550
- VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
551
547
  VEmptyState: typeof import('vuetify/components')['VEmptyState']
552
548
  VField: typeof import('vuetify/components')['VField']
553
549
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
550
+ VFileInput: typeof import('vuetify/components')['VFileInput']
554
551
  VFab: typeof import('vuetify/components')['VFab']
555
552
  VFooter: typeof import('vuetify/components')['VFooter']
556
- VFileInput: typeof import('vuetify/components')['VFileInput']
557
- VImg: typeof import('vuetify/components')['VImg']
553
+ VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
554
+ VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
555
+ VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
556
+ VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
558
557
  VIcon: typeof import('vuetify/components')['VIcon']
559
558
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
560
559
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
561
560
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
562
561
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
563
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
564
562
  VInput: typeof import('vuetify/components')['VInput']
565
- VLabel: typeof import('vuetify/components')['VLabel']
563
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
564
+ VImg: typeof import('vuetify/components')['VImg']
566
565
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
567
566
  VItem: typeof import('vuetify/components')['VItem']
567
+ VLabel: typeof import('vuetify/components')['VLabel']
568
568
  VKbd: typeof import('vuetify/components')['VKbd']
569
569
  VList: typeof import('vuetify/components')['VList']
570
570
  VListGroup: typeof import('vuetify/components')['VListGroup']
@@ -575,61 +575,61 @@ declare module '@vue/runtime-core' {
575
575
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
576
576
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
577
577
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
578
- VMenu: typeof import('vuetify/components')['VMenu']
579
578
  VMain: typeof import('vuetify/components')['VMain']
579
+ VMenu: typeof import('vuetify/components')['VMenu']
580
580
  VMessages: typeof import('vuetify/components')['VMessages']
581
581
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
582
+ VOverlay: typeof import('vuetify/components')['VOverlay']
582
583
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
583
584
  VPagination: typeof import('vuetify/components')['VPagination']
584
- VOverlay: typeof import('vuetify/components')['VOverlay']
585
585
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
586
586
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
587
587
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
588
588
  VRating: typeof import('vuetify/components')['VRating']
589
589
  VSelect: typeof import('vuetify/components')['VSelect']
590
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
591
590
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
592
- VSheet: typeof import('vuetify/components')['VSheet']
593
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
591
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
594
592
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
595
593
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
596
594
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
595
+ VSheet: typeof import('vuetify/components')['VSheet']
596
+ VSlider: typeof import('vuetify/components')['VSlider']
597
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
598
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
599
+ VSwitch: typeof import('vuetify/components')['VSwitch']
597
600
  VStepper: typeof import('vuetify/components')['VStepper']
598
601
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
599
602
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
600
603
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
601
604
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
602
605
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
603
- VSlider: typeof import('vuetify/components')['VSlider']
604
- VSwitch: typeof import('vuetify/components')['VSwitch']
606
+ VTextField: typeof import('vuetify/components')['VTextField']
605
607
  VTab: typeof import('vuetify/components')['VTab']
606
608
  VTabs: typeof import('vuetify/components')['VTabs']
607
609
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
608
610
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
609
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
610
611
  VTable: typeof import('vuetify/components')['VTable']
611
612
  VTextarea: typeof import('vuetify/components')['VTextarea']
612
- VTextField: typeof import('vuetify/components')['VTextField']
613
- VTimeline: typeof import('vuetify/components')['VTimeline']
614
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
615
613
  VToolbar: typeof import('vuetify/components')['VToolbar']
616
614
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
617
615
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
618
616
  VTooltip: typeof import('vuetify/components')['VTooltip']
619
617
  VWindow: typeof import('vuetify/components')['VWindow']
620
618
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
619
+ VTimeline: typeof import('vuetify/components')['VTimeline']
620
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
621
621
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
622
622
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
623
623
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
624
- VForm: typeof import('vuetify/components')['VForm']
625
- VHover: typeof import('vuetify/components')['VHover']
626
624
  VContainer: typeof import('vuetify/components')['VContainer']
627
625
  VCol: typeof import('vuetify/components')['VCol']
628
626
  VRow: typeof import('vuetify/components')['VRow']
629
627
  VSpacer: typeof import('vuetify/components')['VSpacer']
628
+ VForm: typeof import('vuetify/components')['VForm']
629
+ VHover: typeof import('vuetify/components')['VHover']
630
+ VLazy: typeof import('vuetify/components')['VLazy']
630
631
  VLayout: typeof import('vuetify/components')['VLayout']
631
632
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
632
- VLazy: typeof import('vuetify/components')['VLazy']
633
633
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
634
634
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
635
635
  VParallax: typeof import('vuetify/components')['VParallax']
@@ -657,23 +657,26 @@ declare module '@vue/runtime-core' {
657
657
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
658
658
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
659
659
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
660
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
661
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
660
662
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
661
663
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
662
664
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
663
665
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
664
666
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
665
667
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
666
- VPicker: typeof import('vuetify/labs/components')['VPicker']
667
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
668
668
  VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
669
+ VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
670
+ VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
671
+ VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
669
672
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
670
673
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
671
674
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
672
675
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
673
676
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
674
677
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
675
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
676
678
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
679
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
677
680
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
678
681
  }
679
682
  }