@vuetify/nightly 3.9.0-beta.1-dev.2025-06-28 → 3.9.0-beta.1-dev.2025-07-04

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 (99) hide show
  1. package/CHANGELOG.md +112 -3
  2. package/dist/json/attributes.json +3349 -3357
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +160 -160
  5. package/dist/json/tags.json +2 -4
  6. package/dist/json/web-types.json +6608 -6629
  7. package/dist/vuetify-labs.cjs +179 -121
  8. package/dist/vuetify-labs.css +3814 -3803
  9. package/dist/vuetify-labs.d.ts +248 -258
  10. package/dist/vuetify-labs.esm.js +179 -121
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +179 -121
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +154 -97
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3909 -3898
  17. package/dist/vuetify.d.ts +105 -115
  18. package/dist/vuetify.esm.js +154 -97
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +154 -97
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +102 -89
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataTable/VDataTable.css +12 -1
  26. package/lib/components/VDataTable/VDataTable.d.ts +20 -38
  27. package/lib/components/VDataTable/VDataTable.sass +12 -2
  28. package/lib/components/VDataTable/VDataTableColumn.d.ts +9 -3
  29. package/lib/components/VDataTable/VDataTableColumn.js +12 -4
  30. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  31. package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
  32. package/lib/components/VDataTable/VDataTableHeaders.js +10 -9
  33. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  34. package/lib/components/VDataTable/VDataTableRow.js +2 -0
  35. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableServer.d.ts +10 -23
  37. package/lib/components/VDataTable/VDataTableVirtual.d.ts +10 -23
  38. package/lib/components/VDataTable/composables/headers.d.ts +22 -14
  39. package/lib/components/VDataTable/composables/headers.js +51 -22
  40. package/lib/components/VDataTable/composables/headers.js.map +1 -1
  41. package/lib/components/VDataTable/composables/sort.js +2 -1
  42. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  43. package/lib/components/VDataTable/types.d.ts +3 -1
  44. package/lib/components/VDataTable/types.js.map +1 -1
  45. package/lib/components/VDatePicker/VDatePickerMonth.js +1 -2
  46. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  47. package/lib/components/VList/VListGroup.d.ts +13 -0
  48. package/lib/components/VList/VListGroup.js +2 -1
  49. package/lib/components/VList/VListGroup.js.map +1 -1
  50. package/lib/components/VList/VListItem.d.ts +6 -3
  51. package/lib/components/VList/VListItem.js +1 -1
  52. package/lib/components/VList/VListItem.js.map +1 -1
  53. package/lib/components/VOtpInput/VOtpInput.js +17 -14
  54. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  55. package/lib/components/VOverlay/locationStrategies.js +1 -1
  56. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  57. package/lib/components/VTextField/VTextField.js +1 -1
  58. package/lib/components/VTextField/VTextField.js.map +1 -1
  59. package/lib/components/VTreeview/VTreeview.d.ts +6 -21
  60. package/lib/components/VTreeview/VTreeview.js +6 -9
  61. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  62. package/lib/components/VTreeview/VTreeviewGroup.d.ts +13 -0
  63. package/lib/components/VTreeview/VTreeviewItem.d.ts +18 -9
  64. package/lib/components/VTreeview/VTreeviewItem.js +1 -1
  65. package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
  66. package/lib/composables/calendar.d.ts +0 -1
  67. package/lib/composables/calendar.js +6 -10
  68. package/lib/composables/calendar.js.map +1 -1
  69. package/lib/composables/date/adapters/vuetify.js +1 -1
  70. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  71. package/lib/composables/nested/nested.d.ts +7 -4
  72. package/lib/composables/nested/nested.js +16 -6
  73. package/lib/composables/nested/nested.js.map +1 -1
  74. package/lib/composables/nested/selectStrategies.d.ts +2 -1
  75. package/lib/composables/nested/selectStrategies.js +22 -11
  76. package/lib/composables/nested/selectStrategies.js.map +1 -1
  77. package/lib/composables/virtual.js +1 -1
  78. package/lib/composables/virtual.js.map +1 -1
  79. package/lib/entry-bundler.js +1 -1
  80. package/lib/framework.d.ts +60 -57
  81. package/lib/framework.js +1 -1
  82. package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
  83. package/lib/labs/VCalendar/VCalendar.js +9 -9
  84. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  85. package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
  86. package/lib/labs/VCalendar/VCalendarDay.js +1 -1
  87. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  88. package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
  89. package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
  90. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  91. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
  92. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
  93. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  94. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
  95. package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
  96. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  97. package/lib/labs/VIconBtn/VIconBtn.js +1 -0
  98. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  99. package/package.json +1 -1
@@ -14,6 +14,7 @@ export declare const makeVListGroupProps: <Defaults extends {
14
14
  baseColor?: unknown;
15
15
  color?: unknown;
16
16
  collapseIcon?: unknown;
17
+ disabled?: unknown;
17
18
  expandIcon?: unknown;
18
19
  rawId?: unknown;
19
20
  prependIcon?: unknown;
@@ -69,6 +70,10 @@ export declare const makeVListGroupProps: <Defaults extends {
69
70
  type: import("vue").PropType<unknown extends Defaults["collapseIcon"] ? IconValue : IconValue | Defaults["collapseIcon"]>;
70
71
  default: unknown extends Defaults["collapseIcon"] ? IconValue : NonNullable<IconValue> | Defaults["collapseIcon"];
71
72
  };
73
+ disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
74
+ type: import("vue").PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
75
+ default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
76
+ };
72
77
  expandIcon: unknown extends Defaults["expandIcon"] ? {
73
78
  type: import("vue").PropType<IconValue>;
74
79
  default: string;
@@ -111,6 +116,7 @@ export declare const makeVListGroupProps: <Defaults extends {
111
116
  export declare const VListGroup: {
112
117
  new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
113
118
  style: import("vue").StyleValue;
119
+ disabled: boolean;
114
120
  tag: string | import("../../util/index.js").JSXComponent;
115
121
  subgroup: boolean;
116
122
  collapseIcon: IconValue;
@@ -151,6 +157,7 @@ export declare const VListGroup: {
151
157
  isOpen: import("vue").ComputedRef<boolean>;
152
158
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
153
159
  style: import("vue").StyleValue;
160
+ disabled: boolean;
154
161
  tag: string | import("../../util/index.js").JSXComponent;
155
162
  subgroup: boolean;
156
163
  collapseIcon: IconValue;
@@ -171,6 +178,7 @@ export declare const VListGroup: {
171
178
  Defaults: {};
172
179
  }, {
173
180
  style: import("vue").StyleValue;
181
+ disabled: boolean;
174
182
  tag: string | import("../../util/index.js").JSXComponent;
175
183
  subgroup: boolean;
176
184
  collapseIcon: IconValue;
@@ -211,6 +219,7 @@ export declare const VListGroup: {
211
219
  isOpen: import("vue").ComputedRef<boolean>;
212
220
  }, {}, {}, {}, {
213
221
  style: import("vue").StyleValue;
222
+ disabled: boolean;
214
223
  tag: string | import("../../util/index.js").JSXComponent;
215
224
  subgroup: boolean;
216
225
  collapseIcon: IconValue;
@@ -222,6 +231,7 @@ export declare const VListGroup: {
222
231
  __isSuspense?: never;
223
232
  } & import("vue").ComponentOptionsBase<{
224
233
  style: import("vue").StyleValue;
234
+ disabled: boolean;
225
235
  tag: string | import("../../util/index.js").JSXComponent;
226
236
  subgroup: boolean;
227
237
  collapseIcon: IconValue;
@@ -262,6 +272,7 @@ export declare const VListGroup: {
262
272
  isOpen: import("vue").ComputedRef<boolean>;
263
273
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
264
274
  style: import("vue").StyleValue;
275
+ disabled: boolean;
265
276
  tag: string | import("../../util/index.js").JSXComponent;
266
277
  subgroup: boolean;
267
278
  collapseIcon: IconValue;
@@ -290,6 +301,7 @@ export declare const VListGroup: {
290
301
  type: import("vue").PropType<IconValue>;
291
302
  default: string;
292
303
  };
304
+ disabled: BooleanConstructor;
293
305
  expandIcon: {
294
306
  type: import("vue").PropType<IconValue>;
295
307
  default: string;
@@ -318,6 +330,7 @@ export declare const VListGroup: {
318
330
  type: import("vue").PropType<IconValue>;
319
331
  default: string;
320
332
  };
333
+ disabled: BooleanConstructor;
321
334
  expandIcon: {
322
335
  type: import("vue").PropType<IconValue>;
323
336
  default: string;
@@ -30,6 +30,7 @@ export const makeVListGroupProps = propsFactory({
30
30
  type: IconValue,
31
31
  default: '$collapse'
32
32
  },
33
+ disabled: Boolean,
33
34
  expandIcon: {
34
35
  type: IconValue,
35
36
  default: '$expand'
@@ -55,7 +56,7 @@ export const VListGroup = genericComponent()({
55
56
  isOpen,
56
57
  open,
57
58
  id: _id
58
- } = useNestedItem(() => props.value, true);
59
+ } = useNestedItem(() => props.value, () => props.disabled, true);
59
60
  const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
60
61
  const list = useList();
61
62
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"VListGroup.js","names":["VExpandTransition","VDefaultsProvider","useList","makeComponentProps","IconValue","useNestedGroupActivator","useNestedItem","useSsrBoot","makeTagProps","MaybeTransition","computed","defineComponent","genericComponent","propsFactory","useRender","VListGroupActivator","name","setup","_","_ref","slots","default","makeVListGroupProps","activeColor","String","baseColor","color","collapseIcon","type","expandIcon","rawId","Number","prependIcon","appendIcon","fluid","Boolean","subgroup","title","value","VListGroup","props","_ref2","isOpen","open","id","_id","list","isBooted","onClick","e","includes","target","tagName","activatorProps","class","toggleIcon","activatorDefaults","VListItem","active","_createVNode","tag","_normalizeClass","hasPrepend","_normalizeStyle","style","activator","component","_withDirectives","_createElementVNode","_vShow"],"sources":["../../../src/components/VList/VListGroup.tsx"],"sourcesContent":["// Components\nimport { VExpandTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useList } from './list'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedGroupActivator, useNestedItem } from '@/composables/nested/nested'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VListGroupSlots = {\n default: never\n activator: { isOpen: boolean, props: Record<string, unknown> }\n}\n\nconst VListGroupActivator = defineComponent({\n name: 'VListGroupActivator',\n\n setup (_, { slots }) {\n useNestedGroupActivator()\n\n return () => slots.default?.()\n },\n})\n\nexport const makeVListGroupProps = propsFactory({\n /* @deprecated */\n activeColor: String,\n baseColor: String,\n color: String,\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n rawId: [String, Number],\n prependIcon: IconValue,\n appendIcon: IconValue,\n fluid: Boolean,\n subgroup: Boolean,\n title: String,\n value: null,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListGroup')\n\nexport const VListGroup = genericComponent<VListGroupSlots>()({\n name: 'VListGroup',\n\n props: makeVListGroupProps(),\n\n setup (props, { slots }) {\n const { isOpen, open, id: _id } = useNestedItem(() => props.value, true)\n const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`)\n const list = useList()\n const { isBooted } = useSsrBoot()\n\n function onClick (e: Event) {\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n open(!isOpen.value, e)\n }\n\n const activatorProps = computed(() => ({\n onClick,\n class: 'v-list-group__header',\n id: id.value,\n }))\n\n const toggleIcon = computed(() => isOpen.value ? props.collapseIcon : props.expandIcon)\n const activatorDefaults = computed(() => ({\n VListItem: {\n active: isOpen.value,\n activeColor: props.activeColor,\n baseColor: props.baseColor,\n color: props.color,\n prependIcon: props.prependIcon || (props.subgroup && toggleIcon.value),\n appendIcon: props.appendIcon || (!props.subgroup && toggleIcon.value),\n title: props.title,\n value: props.value,\n },\n }))\n\n useRender(() => (\n <props.tag\n class={[\n 'v-list-group',\n {\n 'v-list-group--prepend': list?.hasPrepend.value,\n 'v-list-group--fluid': props.fluid,\n 'v-list-group--subgroup': props.subgroup,\n 'v-list-group--open': isOpen.value,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { slots.activator && (\n <VDefaultsProvider defaults={ activatorDefaults.value }>\n <VListGroupActivator>\n { slots.activator({ props: activatorProps.value, isOpen: isOpen.value }) }\n </VListGroupActivator>\n </VDefaultsProvider>\n )}\n\n <MaybeTransition transition={{ component: VExpandTransition }} disabled={ !isBooted.value }>\n <div class=\"v-list-group__items\" role=\"group\" aria-labelledby={ id.value } v-show={ isOpen.value }>\n { slots.default?.() }\n </div>\n </MaybeTransition>\n </props.tag>\n ))\n\n return {\n isOpen,\n }\n },\n})\n\nexport type VListGroup = InstanceType<typeof VListGroup>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VListGroup.js","names":["VExpandTransition","VDefaultsProvider","useList","makeComponentProps","IconValue","useNestedGroupActivator","useNestedItem","useSsrBoot","makeTagProps","MaybeTransition","computed","defineComponent","genericComponent","propsFactory","useRender","VListGroupActivator","name","setup","_","_ref","slots","default","makeVListGroupProps","activeColor","String","baseColor","color","collapseIcon","type","disabled","Boolean","expandIcon","rawId","Number","prependIcon","appendIcon","fluid","subgroup","title","value","VListGroup","props","_ref2","isOpen","open","id","_id","list","isBooted","onClick","e","includes","target","tagName","activatorProps","class","toggleIcon","activatorDefaults","VListItem","active","_createVNode","tag","_normalizeClass","hasPrepend","_normalizeStyle","style","activator","component","_withDirectives","_createElementVNode","_vShow"],"sources":["../../../src/components/VList/VListGroup.tsx"],"sourcesContent":["// Components\nimport { VExpandTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useList } from './list'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedGroupActivator, useNestedItem } from '@/composables/nested/nested'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VListGroupSlots = {\n default: never\n activator: { isOpen: boolean, props: Record<string, unknown> }\n}\n\nconst VListGroupActivator = defineComponent({\n name: 'VListGroupActivator',\n\n setup (_, { slots }) {\n useNestedGroupActivator()\n\n return () => slots.default?.()\n },\n})\n\nexport const makeVListGroupProps = propsFactory({\n /* @deprecated */\n activeColor: String,\n baseColor: String,\n color: String,\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n disabled: Boolean,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n rawId: [String, Number],\n prependIcon: IconValue,\n appendIcon: IconValue,\n fluid: Boolean,\n subgroup: Boolean,\n title: String,\n value: null,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListGroup')\n\nexport const VListGroup = genericComponent<VListGroupSlots>()({\n name: 'VListGroup',\n\n props: makeVListGroupProps(),\n\n setup (props, { slots }) {\n const { isOpen, open, id: _id } = useNestedItem(() => props.value, () => props.disabled, true)\n const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`)\n const list = useList()\n const { isBooted } = useSsrBoot()\n\n function onClick (e: Event) {\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n open(!isOpen.value, e)\n }\n\n const activatorProps = computed(() => ({\n onClick,\n class: 'v-list-group__header',\n id: id.value,\n }))\n\n const toggleIcon = computed(() => isOpen.value ? props.collapseIcon : props.expandIcon)\n const activatorDefaults = computed(() => ({\n VListItem: {\n active: isOpen.value,\n activeColor: props.activeColor,\n baseColor: props.baseColor,\n color: props.color,\n prependIcon: props.prependIcon || (props.subgroup && toggleIcon.value),\n appendIcon: props.appendIcon || (!props.subgroup && toggleIcon.value),\n title: props.title,\n value: props.value,\n },\n }))\n\n useRender(() => (\n <props.tag\n class={[\n 'v-list-group',\n {\n 'v-list-group--prepend': list?.hasPrepend.value,\n 'v-list-group--fluid': props.fluid,\n 'v-list-group--subgroup': props.subgroup,\n 'v-list-group--open': isOpen.value,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { slots.activator && (\n <VDefaultsProvider defaults={ activatorDefaults.value }>\n <VListGroupActivator>\n { slots.activator({ props: activatorProps.value, isOpen: isOpen.value }) }\n </VListGroupActivator>\n </VDefaultsProvider>\n )}\n\n <MaybeTransition transition={{ component: VExpandTransition }} disabled={ !isBooted.value }>\n <div class=\"v-list-group__items\" role=\"group\" aria-labelledby={ id.value } v-show={ isOpen.value }>\n { slots.default?.() }\n </div>\n </MaybeTransition>\n </props.tag>\n ))\n\n return {\n isOpen,\n }\n },\n})\n\nexport type VListGroup = InstanceType<typeof VListGroup>\n"],"mappings":"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","ignoreList":[]}
@@ -400,13 +400,14 @@ export declare const VListItem: {
400
400
  root: {
401
401
  children: import("vue").Ref<Map<unknown, unknown[]>>;
402
402
  parents: import("vue").Ref<Map<unknown, unknown>>;
403
+ disabled: import("vue").Ref<Set<unknown>>;
403
404
  activatable: import("vue").Ref<boolean>;
404
405
  selectable: import("vue").Ref<boolean>;
405
406
  opened: import("vue").Ref<Set<unknown>>;
406
407
  activated: import("vue").Ref<Set<unknown>>;
407
408
  selected: import("vue").Ref<Map<unknown, "on" | "off" | "indeterminate">>;
408
409
  selectedValues: import("vue").Ref<unknown[]>;
409
- register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
410
+ register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
410
411
  unregister: (id: unknown) => void;
411
412
  open: (id: unknown, value: boolean, event?: Event) => void;
412
413
  activate: (id: unknown, value: boolean, event?: Event) => void;
@@ -533,13 +534,14 @@ export declare const VListItem: {
533
534
  root: {
534
535
  children: import("vue").Ref<Map<unknown, unknown[]>>;
535
536
  parents: import("vue").Ref<Map<unknown, unknown>>;
537
+ disabled: import("vue").Ref<Set<unknown>>;
536
538
  activatable: import("vue").Ref<boolean>;
537
539
  selectable: import("vue").Ref<boolean>;
538
540
  opened: import("vue").Ref<Set<unknown>>;
539
541
  activated: import("vue").Ref<Set<unknown>>;
540
542
  selected: import("vue").Ref<Map<unknown, "on" | "off" | "indeterminate">>;
541
543
  selectedValues: import("vue").Ref<unknown[]>;
542
- register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
544
+ register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
543
545
  unregister: (id: unknown) => void;
544
546
  open: (id: unknown, value: boolean, event?: Event) => void;
545
547
  activate: (id: unknown, value: boolean, event?: Event) => void;
@@ -655,13 +657,14 @@ export declare const VListItem: {
655
657
  root: {
656
658
  children: import("vue").Ref<Map<unknown, unknown[]>>;
657
659
  parents: import("vue").Ref<Map<unknown, unknown>>;
660
+ disabled: import("vue").Ref<Set<unknown>>;
658
661
  activatable: import("vue").Ref<boolean>;
659
662
  selectable: import("vue").Ref<boolean>;
660
663
  opened: import("vue").Ref<Set<unknown>>;
661
664
  activated: import("vue").Ref<Set<unknown>>;
662
665
  selected: import("vue").Ref<Map<unknown, "on" | "off" | "indeterminate">>;
663
666
  selectedValues: import("vue").Ref<unknown[]>;
664
- register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
667
+ register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
665
668
  unregister: (id: unknown) => void;
666
669
  open: (id: unknown, value: boolean, event?: Event) => void;
667
670
  activate: (id: unknown, value: boolean, event?: Event) => void;
@@ -102,7 +102,7 @@ export const VListItem = genericComponent()({
102
102
  parent,
103
103
  openOnSelect,
104
104
  id: uid
105
- } = useNestedItem(id, false);
105
+ } = useNestedItem(id, () => props.disabled, false);
106
106
  const list = useList();
107
107
  const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
108
108
  const isLink = toRef(() => props.link !== false && link.isLink.value);
@@ -1 +1 @@
1
- {"version":3,"file":"VListItem.js","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","computed","onBeforeMount","toDisplayString","toRef","watch","deprecate","EventProp","genericComponent","keyCodes","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","uid","list","isActive","activatable","isLink","isSelectable","selectable","isClickable","roundedProps","rounded","color","variantProps","val","handleActiveLink","open","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","rippleOptions","filterable","keys","enter","slotProps","includes","target","tagName","navigate","onKeyDown","key","preventDefault","stopPropagation","dispatchEvent","MouseEvent","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_mergeProps","class","style","linkProps","_createElementVNode","_Fragment","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, onBeforeMount, toDisplayString, toRef, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, keyCodes, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n index?: number\n depth?: number\n path?: number[]\n isFirst?: boolean\n isLast?: boolean\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { vRipple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid,\n } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = toRef(() => props.link !== false && link.isLink.value)\n const isSelectable = computed(() => (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || isSelectable.value)\n )\n\n const roundedProps = toRef(() => props.rounded || props.nav)\n const color = toRef(() => props.color ?? props.activeColor)\n const variantProps = toRef(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n // useNestedItem doesn't call register until beforeMount,\n // so this can't be an immediate watcher as we don't know parent yet\n watch(() => link.isActive?.value, val => {\n if (!val) return\n handleActiveLink()\n })\n onBeforeMount(() => {\n if (link.isActive?.value) handleActiveLink()\n })\n function handleActiveLink () {\n if (parent.value != null) {\n root.open(parent.value, true)\n }\n openOnSelect(true)\n }\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n const rippleOptions = toRef(() =>\n (\n props.ripple !== undefined &&\n !!props.ripple &&\n list?.filterable\n )\n ? { keys: [keyCodes.enter] }\n : props.ripple\n )\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'Enter' || (e.key === ' ' && !list?.filterable)) {\n e.preventDefault()\n e.stopPropagation()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n aria-selected={\n isSelectable.value ? (\n root.activatable.value ? isActivated.value\n : root.selectable.value ? isSelected.value\n : isActive.value\n ) : undefined\n }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && rippleOptions.value }\n { ...link.linkProps }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? toDisplayString(props.title) }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? toDisplayString(props.subtitle) }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid,\n link,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VListItem.js","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","computed","onBeforeMount","toDisplayString","toRef","watch","deprecate","EventProp","genericComponent","keyCodes","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","uid","list","isActive","activatable","isLink","isSelectable","selectable","isClickable","roundedProps","rounded","color","variantProps","val","handleActiveLink","open","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","rippleOptions","filterable","keys","enter","slotProps","includes","target","tagName","navigate","onKeyDown","key","preventDefault","stopPropagation","dispatchEvent","MouseEvent","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_mergeProps","class","style","linkProps","_createElementVNode","_Fragment","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, onBeforeMount, toDisplayString, toRef, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, keyCodes, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n index?: number\n depth?: number\n path?: number[]\n isFirst?: boolean\n isLast?: boolean\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { vRipple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid,\n } = useNestedItem(id, () => props.disabled, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = toRef(() => props.link !== false && link.isLink.value)\n const isSelectable = computed(() => (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || isSelectable.value)\n )\n\n const roundedProps = toRef(() => props.rounded || props.nav)\n const color = toRef(() => props.color ?? props.activeColor)\n const variantProps = toRef(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n // useNestedItem doesn't call register until beforeMount,\n // so this can't be an immediate watcher as we don't know parent yet\n watch(() => link.isActive?.value, val => {\n if (!val) return\n handleActiveLink()\n })\n onBeforeMount(() => {\n if (link.isActive?.value) handleActiveLink()\n })\n function handleActiveLink () {\n if (parent.value != null) {\n root.open(parent.value, true)\n }\n openOnSelect(true)\n }\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n const rippleOptions = toRef(() =>\n (\n props.ripple !== undefined &&\n !!props.ripple &&\n list?.filterable\n )\n ? { keys: [keyCodes.enter] }\n : props.ripple\n )\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'Enter' || (e.key === ' ' && !list?.filterable)) {\n e.preventDefault()\n e.stopPropagation()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n aria-selected={\n isSelectable.value ? (\n root.activatable.value ? isActivated.value\n : root.selectable.value ? isSelected.value\n : isActive.value\n ) : undefined\n }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && rippleOptions.value }\n { ...link.linkProps }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? toDisplayString(props.title) }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? toDisplayString(props.subtitle) }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid,\n link,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,8 @@ import { makeDimensionProps, useDimension } from "../../composables/dimensions.j
11
11
  import { makeFocusProps, useFocus } from "../../composables/focus.js";
12
12
  import { useIntersectionObserver } from "../../composables/intersectionObserver.js";
13
13
  import { useLocale } from "../../composables/locale.js";
14
- import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
14
+ import { useProxiedModel } from "../../composables/proxiedModel.js";
15
+ import { useToggleScope } from "../../composables/toggleScope.js"; // Utilities
15
16
  import { computed, effectScope, nextTick, ref, toRef, watch, watchEffect } from 'vue';
16
17
  import { filterInputAttrs, focusChild, genericComponent, pick, propsFactory, useRender } from "../../util/index.js"; // Types
17
18
  // Types
@@ -74,19 +75,21 @@ export const VOtpInput = genericComponent()({
74
75
  const contentRef = ref();
75
76
  const inputRef = ref([]);
76
77
  const current = computed(() => inputRef.value[focusIndex.value]);
77
- const intersectScope = effectScope();
78
- intersectScope.run(() => {
79
- const {
80
- intersectionRef,
81
- isIntersecting
82
- } = useIntersectionObserver();
83
- watch(isIntersecting, v => {
84
- if (!v) return;
85
- intersectionRef.value?.focus();
86
- intersectScope.stop();
87
- });
88
- watchEffect(() => {
89
- intersectionRef.value = inputRef.value[0];
78
+ useToggleScope(() => props.autofocus, () => {
79
+ const intersectScope = effectScope();
80
+ intersectScope.run(() => {
81
+ const {
82
+ intersectionRef,
83
+ isIntersecting
84
+ } = useIntersectionObserver();
85
+ watchEffect(() => {
86
+ intersectionRef.value = inputRef.value[0];
87
+ });
88
+ watch(isIntersecting, v => {
89
+ if (!v) return;
90
+ intersectionRef.value?.focus();
91
+ intersectScope.stop();
92
+ });
90
93
  });
91
94
  });
92
95
  function onInput() {
@@ -1 +1 @@
1
- {"version":3,"file":"VOtpInput.js","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useIntersectionObserver","useLocale","useProxiedModel","computed","effectScope","nextTick","ref","toRef","watch","watchEffect","filterInputAttrs","focusChild","genericComponent","pick","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","intersectScope","run","intersectionRef","isIntersecting","v","stop","onInput","isValidNumber","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","trim","finalIndex","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createElementVNode","_mergeProps","class","style","_normalizeStyle","map","_","i","_Fragment","_createVNode","loader","_normalizeClass","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, effectScope, nextTick, ref, toRef, watch, watchEffect } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...pick(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n const intersectScope = effectScope()\n intersectScope.run(() => {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n watch(isIntersecting, v => {\n if (!v) return\n intersectionRef.value?.focus()\n intersectScope.stop()\n })\n watchEffect(() => {\n intersectionRef.value = inputRef.value[0]\n })\n })\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? ''\n const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[finalIndex].focus()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: toRef(() => props.color),\n bgColor: toRef(() => props.color),\n baseColor: toRef(() => props.baseColor),\n disabled: toRef(() => props.disabled),\n error: toRef(() => props.error),\n variant: toRef(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) {\n focusIndex.value = length.value - 1\n emit('finish', val.join(''))\n }\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength={ i === 0 ? length.value : '1' }\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VOtpInput.js","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useIntersectionObserver","useLocale","useProxiedModel","useToggleScope","computed","effectScope","nextTick","ref","toRef","watch","watchEffect","filterInputAttrs","focusChild","genericComponent","pick","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","intersectScope","run","intersectionRef","isIntersecting","v","stop","onInput","isValidNumber","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","trim","finalIndex","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createElementVNode","_mergeProps","class","style","_normalizeStyle","map","_","i","_Fragment","_createVNode","loader","_normalizeClass","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, effectScope, nextTick, ref, toRef, watch, watchEffect } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...pick(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n useToggleScope(() => props.autofocus, () => {\n const intersectScope = effectScope()\n intersectScope.run(() => {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n watchEffect(() => {\n intersectionRef.value = inputRef.value[0]\n })\n watch(isIntersecting, v => {\n if (!v) return\n intersectionRef.value?.focus()\n intersectScope.stop()\n })\n })\n })\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? ''\n const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[finalIndex].focus()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: toRef(() => props.color),\n bgColor: toRef(() => props.color),\n baseColor: toRef(() => props.baseColor),\n disabled: toRef(() => props.disabled),\n error: toRef(() => props.error),\n variant: toRef(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) {\n focusIndex.value = length.value - 1\n emit('finish', val.join(''))\n }\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength={ i === 0 ? length.value : '1' }\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}
@@ -165,7 +165,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
165
165
  });
166
166
  if (flipped.isFull) {
167
167
  const values = flipped.values();
168
- if (deepEqual(values.at(-1), values.at(-3))) {
168
+ if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {
169
169
  // Flipping is causing a container resize loop
170
170
  return;
171
171
  }