vuetify 3.6.4 → 3.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +292 -4
  3. package/dist/json/importMap-labs.json +30 -18
  4. package/dist/json/importMap.json +134 -134
  5. package/dist/json/tags.json +87 -0
  6. package/dist/json/web-types.json +1313 -6
  7. package/dist/vuetify-labs.css +2150 -2035
  8. package/dist/vuetify-labs.d.ts +1669 -28
  9. package/dist/vuetify-labs.esm.js +326 -25
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +326 -25
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +812 -765
  14. package/dist/vuetify.d.ts +153 -75
  15. package/dist/vuetify.esm.js +66 -25
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +66 -25
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +54 -54
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VBtn/index.d.mts +2 -0
  23. package/lib/components/VDataTable/VDataTable.mjs +6 -2
  24. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  25. package/lib/components/VDataTable/VDataTableServer.mjs +3 -2
  26. package/lib/components/VDataTable/VDataTableServer.mjs.map +1 -1
  27. package/lib/components/VDataTable/VDataTableVirtual.mjs +3 -1
  28. package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
  29. package/lib/components/VDataTable/index.d.mts +54 -0
  30. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +3 -1
  31. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  32. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +15 -4
  33. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  34. package/lib/components/VExpansionPanel/index.d.mts +82 -27
  35. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  36. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  37. package/lib/components/VSlideGroup/index.d.mts +2 -0
  38. package/lib/components/VStepper/VStepper.mjs +17 -8
  39. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  40. package/lib/components/VStepper/VStepperItem.css +47 -0
  41. package/lib/components/VStepper/VStepperItem.mjs +10 -5
  42. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  43. package/lib/components/VStepper/VStepperItem.sass +18 -0
  44. package/lib/components/VStepper/index.d.mts +1 -1
  45. package/lib/components/VTabs/index.d.mts +2 -0
  46. package/lib/components/VWindow/index.d.mts +2 -0
  47. package/lib/components/index.d.mts +102 -27
  48. package/lib/composables/group.mjs +8 -0
  49. package/lib/composables/group.mjs.map +1 -1
  50. package/lib/entry-bundler.mjs +1 -1
  51. package/lib/framework.mjs +1 -1
  52. package/lib/index.d.mts +51 -48
  53. package/lib/labs/VStepperVertical/VStepperVertical.mjs +106 -0
  54. package/lib/labs/VStepperVertical/VStepperVertical.mjs.map +1 -0
  55. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +38 -0
  56. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs.map +1 -0
  57. package/lib/labs/VStepperVertical/VStepperVerticalItem.css +69 -0
  58. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +134 -0
  59. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs.map +1 -0
  60. package/lib/labs/VStepperVertical/VStepperVerticalItem.sass +74 -0
  61. package/lib/labs/VStepperVertical/_variables.scss +3 -0
  62. package/lib/labs/VStepperVertical/index.d.mts +1590 -0
  63. package/lib/labs/VStepperVertical/index.mjs +4 -0
  64. package/lib/labs/VStepperVertical/index.mjs.map +1 -0
  65. package/lib/labs/components.d.mts +1599 -20
  66. package/lib/labs/components.mjs +1 -0
  67. package/lib/labs/components.mjs.map +1 -1
  68. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
1
+ import { createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VExpansionPanel.css";
4
4
 
@@ -32,7 +32,10 @@ export const VExpansionPanels = genericComponent()({
32
32
  let {
33
33
  slots
34
34
  } = _ref;
35
- useGroup(props, VExpansionPanelSymbol);
35
+ const {
36
+ next,
37
+ prev
38
+ } = useGroup(props, VExpansionPanelSymbol);
36
39
  const {
37
40
  themeClasses
38
41
  } = provideTheme(props);
@@ -59,8 +62,16 @@ export const VExpansionPanels = genericComponent()({
59
62
  'v-expansion-panels--tile': props.tile
60
63
  }, themeClasses.value, variantClass.value, props.class],
61
64
  "style": props.style
62
- }, slots));
63
- return {};
65
+ }, {
66
+ default: () => [slots.default?.({
67
+ prev,
68
+ next
69
+ })]
70
+ }));
71
+ return {
72
+ next,
73
+ prev
74
+ };
64
75
  }
65
76
  });
66
77
  //# sourceMappingURL=VExpansionPanels.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VExpansionPanels.mjs","names":["makeVExpansionPanelProps","provideDefaults","makeGroupProps","useGroup","makeThemeProps","provideTheme","computed","toRef","genericComponent","propsFactory","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","makeVExpansionPanelsProps","flat","Boolean","variant","type","String","default","validator","v","includes","VExpansionPanels","name","props","emits","val","setup","_ref","slots","themeClasses","variantClass","VExpansionPanel","bgColor","collapseIcon","color","eager","elevation","expandIcon","focusable","hideActions","readonly","ripple","rounded","static","_createVNode","tag","tile","value","class","style"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { makeVExpansionPanelProps } from './VExpansionPanel'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const makeVExpansionPanelsProps = propsFactory({\n flat: Boolean,\n\n ...makeGroupProps(),\n ...makeVExpansionPanelProps(),\n ...makeThemeProps(),\n\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'VExpansionPanels')\n\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n\n props: makeVExpansionPanelsProps(),\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n bgColor: toRef(props, 'bgColor'),\n collapseIcon: toRef(props, 'collapseIcon'),\n color: toRef(props, 'color'),\n eager: toRef(props, 'eager'),\n elevation: toRef(props, 'elevation'),\n expandIcon: toRef(props, 'expandIcon'),\n focusable: toRef(props, 'focusable'),\n hideActions: toRef(props, 'hideActions'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n rounded: toRef(props, 'rounded'),\n static: toRef(props, 'static'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n {\n 'v-expansion-panels--flat': props.flat,\n 'v-expansion-panels--tile': props.tile,\n },\n themeClasses.value,\n variantClass.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VExpansionPanels.mjs","names":["makeVExpansionPanelProps","provideDefaults","makeGroupProps","useGroup","makeThemeProps","provideTheme","computed","toRef","genericComponent","propsFactory","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","makeVExpansionPanelsProps","flat","Boolean","variant","type","String","default","validator","v","includes","VExpansionPanels","name","props","emits","val","setup","_ref","slots","next","prev","themeClasses","variantClass","VExpansionPanel","bgColor","collapseIcon","color","eager","elevation","expandIcon","focusable","hideActions","readonly","ripple","rounded","static","_createVNode","tag","tile","value","class","style"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { makeVExpansionPanelProps } from './VExpansionPanel'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport type VExpansionPanelSlot = {\n prev: () => void\n next: () => void\n}\n\nexport type VExpansionPanelSlots = {\n default: VExpansionPanelSlot\n}\n\nexport const makeVExpansionPanelsProps = propsFactory({\n flat: Boolean,\n\n ...makeGroupProps(),\n ...makeVExpansionPanelProps(),\n ...makeThemeProps(),\n\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'VExpansionPanels')\n\nexport const VExpansionPanels = genericComponent<VExpansionPanelSlots>()({\n name: 'VExpansionPanels',\n\n props: makeVExpansionPanelsProps(),\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n const { next, prev } = useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n bgColor: toRef(props, 'bgColor'),\n collapseIcon: toRef(props, 'collapseIcon'),\n color: toRef(props, 'color'),\n eager: toRef(props, 'eager'),\n elevation: toRef(props, 'elevation'),\n expandIcon: toRef(props, 'expandIcon'),\n focusable: toRef(props, 'focusable'),\n hideActions: toRef(props, 'hideActions'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n rounded: toRef(props, 'rounded'),\n static: toRef(props, 'static'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n {\n 'v-expansion-panels--flat': props.flat,\n 'v-expansion-panels--tile': props.tile,\n },\n themeClasses.value,\n variantClass.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.({ prev, next }) }\n </props.tag>\n ))\n\n return {\n next,\n prev,\n }\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, Ref, ComponentInternalInstance, ComputedRef } from 'vue';
3
3
 
4
4
  interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
@@ -8,6 +8,46 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
8
8
  type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
9
9
  declare const IconValue: PropType<IconValue>;
10
10
 
11
+ interface GroupItem {
12
+ id: number;
13
+ value: Ref<unknown>;
14
+ disabled: Ref<boolean | undefined>;
15
+ useIndexAsValue?: boolean;
16
+ }
17
+ interface GroupProvide {
18
+ register: (item: GroupItem, cmp: ComponentInternalInstance) => void;
19
+ unregister: (id: number) => void;
20
+ select: (id: number, value: boolean) => void;
21
+ selected: Ref<Readonly<number[]>>;
22
+ isSelected: (id: number) => boolean;
23
+ prev: () => void;
24
+ next: () => void;
25
+ selectedClass: Ref<string | undefined>;
26
+ items: ComputedRef<{
27
+ id: number;
28
+ value: unknown;
29
+ disabled: boolean | undefined;
30
+ }[]>;
31
+ disabled: Ref<boolean | undefined>;
32
+ getItemIndex: (value: unknown) => number;
33
+ }
34
+ interface GroupItemProvide {
35
+ id: number;
36
+ isSelected: Ref<boolean>;
37
+ isFirst: Ref<boolean>;
38
+ isLast: Ref<boolean>;
39
+ toggle: () => void;
40
+ select: (value: boolean) => void;
41
+ selectedClass: Ref<(string | undefined)[] | false>;
42
+ value: Ref<unknown>;
43
+ disabled: Ref<boolean | undefined>;
44
+ group: GroupProvide;
45
+ }
46
+
47
+ type VExpansionPanelSlot = {
48
+ prev: () => void;
49
+ next: () => void;
50
+ };
11
51
  declare const VExpansionPanels: {
12
52
  new (...args: any[]): vue.CreateComponentPublicInstance<{
13
53
  flat: boolean;
@@ -43,16 +83,19 @@ declare const VExpansionPanels: {
43
83
  bgColor?: string | undefined;
44
84
  } & {
45
85
  $children?: vue.VNodeChild | {
46
- default?: (() => vue.VNodeChild) | undefined;
47
- } | (() => vue.VNodeChild);
86
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
87
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
48
88
  'v-slots'?: {
49
- default?: false | (() => vue.VNodeChild) | undefined;
89
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
50
90
  } | undefined;
51
91
  } & {
52
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
92
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
53
93
  } & {
54
94
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
55
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
95
+ }, {
96
+ next: () => void;
97
+ prev: () => void;
98
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
56
99
  'update:modelValue': (val: unknown) => boolean;
57
100
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
58
101
  flat: boolean;
@@ -88,13 +131,13 @@ declare const VExpansionPanels: {
88
131
  bgColor?: string | undefined;
89
132
  } & {
90
133
  $children?: vue.VNodeChild | {
91
- default?: (() => vue.VNodeChild) | undefined;
92
- } | (() => vue.VNodeChild);
134
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
135
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
93
136
  'v-slots'?: {
94
- default?: false | (() => vue.VNodeChild) | undefined;
137
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
95
138
  } | undefined;
96
139
  } & {
97
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
140
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
98
141
  } & {
99
142
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
100
143
  }, {
@@ -118,7 +161,7 @@ declare const VExpansionPanels: {
118
161
  hideActions: boolean;
119
162
  focusable: boolean;
120
163
  }, true, {}, vue.SlotsType<Partial<{
121
- default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
164
+ default: (arg: VExpansionPanelSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
122
165
  [key: string]: any;
123
166
  }>[];
124
167
  }>>, {
@@ -162,16 +205,19 @@ declare const VExpansionPanels: {
162
205
  bgColor?: string | undefined;
163
206
  } & {
164
207
  $children?: vue.VNodeChild | {
165
- default?: (() => vue.VNodeChild) | undefined;
166
- } | (() => vue.VNodeChild);
208
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
209
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
167
210
  'v-slots'?: {
168
- default?: false | (() => vue.VNodeChild) | undefined;
211
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
169
212
  } | undefined;
170
213
  } & {
171
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
214
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
172
215
  } & {
173
216
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
174
- }, {}, {}, {}, {}, {
217
+ }, {
218
+ next: () => void;
219
+ prev: () => void;
220
+ }, {}, {}, {}, {
175
221
  flat: boolean;
176
222
  style: vue.StyleValue;
177
223
  disabled: boolean;
@@ -229,16 +275,19 @@ declare const VExpansionPanels: {
229
275
  bgColor?: string | undefined;
230
276
  } & {
231
277
  $children?: vue.VNodeChild | {
232
- default?: (() => vue.VNodeChild) | undefined;
233
- } | (() => vue.VNodeChild);
278
+ default?: ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
279
+ } | ((arg: VExpansionPanelSlot) => vue.VNodeChild);
234
280
  'v-slots'?: {
235
- default?: false | (() => vue.VNodeChild) | undefined;
281
+ default?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
236
282
  } | undefined;
237
283
  } & {
238
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
284
+ "v-slot:default"?: false | ((arg: VExpansionPanelSlot) => vue.VNodeChild) | undefined;
239
285
  } & {
240
286
  "onUpdate:modelValue"?: ((val: unknown) => any) | undefined;
241
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
287
+ }, {
288
+ next: () => void;
289
+ prev: () => void;
290
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
242
291
  'update:modelValue': (val: unknown) => boolean;
243
292
  }, string, {
244
293
  flat: boolean;
@@ -261,7 +310,7 @@ declare const VExpansionPanels: {
261
310
  hideActions: boolean;
262
311
  focusable: boolean;
263
312
  }, {}, string, vue.SlotsType<Partial<{
264
- default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
313
+ default: (arg: VExpansionPanelSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
265
314
  [key: string]: any;
266
315
  }>[];
267
316
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
@@ -430,10 +479,12 @@ declare const VExpansionPanel: {
430
479
  "onGroup:selected"?: ((val: {
431
480
  value: boolean;
432
481
  }) => any) | undefined;
433
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
482
+ }, {
483
+ groupItem: GroupItemProvide;
484
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
434
485
  'group:selected': (val: {
435
486
  value: boolean;
436
- }) => boolean;
487
+ }) => true;
437
488
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
438
489
  style: vue.StyleValue;
439
490
  disabled: boolean;
@@ -555,7 +606,9 @@ declare const VExpansionPanel: {
555
606
  "onGroup:selected"?: ((val: {
556
607
  value: boolean;
557
608
  }) => any) | undefined;
558
- }, {}, {}, {}, {}, {
609
+ }, {
610
+ groupItem: GroupItemProvide;
611
+ }, {}, {}, {}, {
559
612
  style: vue.StyleValue;
560
613
  disabled: boolean;
561
614
  tag: string;
@@ -619,10 +672,12 @@ declare const VExpansionPanel: {
619
672
  "onGroup:selected"?: ((val: {
620
673
  value: boolean;
621
674
  }) => any) | undefined;
622
- }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
675
+ }, {
676
+ groupItem: GroupItemProvide;
677
+ }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
623
678
  'group:selected': (val: {
624
679
  value: boolean;
625
- }) => boolean;
680
+ }) => true;
626
681
  }, string, {
627
682
  style: vue.StyleValue;
628
683
  disabled: boolean;
@@ -171,7 +171,7 @@ export const VFileInput = genericComponent()({
171
171
  }, fieldProps, {
172
172
  "id": id.value,
173
173
  "active": isActive.value || isDirty.value,
174
- "dirty": isDirty.value,
174
+ "dirty": isDirty.value || props.dirty,
175
175
  "disabled": isDisabled.value,
176
176
  "focused": isFocused.value,
177
177
  "error": isValid.value === false
@@ -1 +1 @@
1
- {"version":3,"file":"VFileInput.mjs","names":["VChip","VCounter","VField","filterFieldProps","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","_ref4","fieldClass","slotProps","_Fragment","preventDefault","target","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : (val[0] ?? null),\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.active\n ))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VFileInput.mjs","names":["VChip","VCounter","VField","filterFieldProps","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_Fragment","preventDefault","target","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : (val[0] ?? null),\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.active\n ))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
@@ -63,6 +63,8 @@ interface GroupProvide {
63
63
  interface GroupItemProvide {
64
64
  id: number;
65
65
  isSelected: Ref<boolean>;
66
+ isFirst: Ref<boolean>;
67
+ isLast: Ref<boolean>;
66
68
  toggle: () => void;
67
69
  select: (value: boolean) => void;
68
70
  selectedClass: Ref<(string | undefined)[] | false>;
@@ -15,7 +15,7 @@ import { makeGroupProps, useGroup } from "../../composables/group.mjs"; // Utili
15
15
  import { computed, toRefs } from 'vue';
16
16
  import { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from "../../util/index.mjs"; // Types
17
17
  export const VStepperSymbol = Symbol.for('vuetify:v-stepper');
18
- export const makeVStepperProps = propsFactory({
18
+ export const makeStepperProps = propsFactory({
19
19
  altLabels: Boolean,
20
20
  bgColor: String,
21
21
  editable: Boolean,
@@ -34,7 +34,10 @@ export const makeVStepperProps = propsFactory({
34
34
  },
35
35
  mobile: Boolean,
36
36
  nonLinear: Boolean,
37
- flat: Boolean,
37
+ flat: Boolean
38
+ }, 'Stepper');
39
+ export const makeVStepperProps = propsFactory({
40
+ ...makeStepperProps(),
38
41
  ...makeGroupProps({
39
42
  mandatory: 'force',
40
43
  selectedClass: 'v-stepper-item--selected'
@@ -113,12 +116,18 @@ export const VStepper = genericComponent()({
113
116
  default: () => [hasHeader && _createVNode(VStepperHeader, {
114
117
  "key": "stepper-header"
115
118
  }, {
116
- default: () => [items.value.map((item, index) => _createVNode(_Fragment, null, [!!index && _createVNode(VDivider, null, null), _createVNode(VStepperItem, item, {
117
- default: slots[`header-item.${item.value}`] ?? slots.header,
118
- icon: slots.icon,
119
- title: slots.title,
120
- subtitle: slots.subtitle
121
- })]))]
119
+ default: () => [items.value.map((_ref2, index) => {
120
+ let {
121
+ raw,
122
+ ...item
123
+ } = _ref2;
124
+ return _createVNode(_Fragment, null, [!!index && _createVNode(VDivider, null, null), _createVNode(VStepperItem, item, {
125
+ default: slots[`header-item.${item.value}`] ?? slots.header,
126
+ icon: slots.icon,
127
+ title: slots.title,
128
+ subtitle: slots.subtitle
129
+ })]);
130
+ })]
122
131
  }), hasWindow && _createVNode(VStepperWindow, {
123
132
  "key": "stepper-window"
124
133
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"VStepper.mjs","names":["makeVStepperActionsProps","VStepperActions","VStepperHeader","VStepperItem","VStepperWindow","VStepperWindowItem","VDivider","makeVSheetProps","VSheet","provideDefaults","makeGroupProps","useGroup","computed","toRefs","genericComponent","getPropertyFromItem","only","propsFactory","useRender","VStepperSymbol","Symbol","for","makeVStepperProps","altLabels","Boolean","bgColor","String","editable","hideActions","items","type","Array","default","itemTitle","itemValue","mobile","nonLinear","flat","mandatory","selectedClass","VStepper","name","props","emits","v","setup","_ref","slots","_items","next","prev","selected","color","prevText","nextText","map","item","index","title","value","raw","activeIndex","findIndex","includes","id","disabled","length","sheetProps","filterProps","hasHeader","header","hasWindow","hasActions","actions","_createVNode","_mergeProps","class","style","_Fragment","icon","subtitle"],"sources":["../../../src/components/VStepper/VStepper.tsx"],"sourcesContent":["// Styles\nimport './VStepper.sass'\n\n// Components\nimport { makeVStepperActionsProps, VStepperActions } from './VStepperActions'\nimport { VStepperHeader } from './VStepperHeader'\nimport { VStepperItem } from './VStepperItem'\nimport { VStepperWindow } from './VStepperWindow'\nimport { VStepperWindowItem } from './VStepperWindowItem'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\n\n// Utilities\nimport { computed, toRefs } from 'vue'\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { StepperItemSlot } from './VStepperItem'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VStepperSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-stepper')\n\nexport type StepperItem = string | Record<string, any>\n\nexport type VStepperSlot = {\n prev: () => void\n next: () => void\n}\n\nexport type VStepperSlots = {\n actions: VStepperSlot\n default: VStepperSlot\n header: StepperItem\n 'header-item': StepperItemSlot\n icon: StepperItemSlot\n title: StepperItemSlot\n subtitle: StepperItemSlot\n item: StepperItem\n prev: never\n next: never\n} & {\n [key: `header-item.${string}`]: StepperItemSlot\n [key: `item.${string}`]: StepperItem\n}\n\nexport const makeVStepperProps = propsFactory({\n altLabels: Boolean,\n bgColor: String,\n editable: Boolean,\n hideActions: Boolean,\n items: {\n type: Array as PropType<readonly StepperItem[]>,\n default: () => ([]),\n },\n itemTitle: {\n type: String,\n default: 'title',\n },\n itemValue: {\n type: String,\n default: 'value',\n },\n mobile: Boolean,\n nonLinear: Boolean,\n flat: Boolean,\n\n ...makeGroupProps({\n mandatory: 'force' as const,\n selectedClass: 'v-stepper-item--selected',\n }),\n ...makeVSheetProps(),\n ...only(makeVStepperActionsProps(), ['prevText', 'nextText']),\n}, 'VStepper')\n\nexport const VStepper = genericComponent<VStepperSlots>()({\n name: 'VStepper',\n\n props: makeVStepperProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const { items: _items, next, prev, selected } = useGroup(props, VStepperSymbol)\n const { color, editable, prevText, nextText } = toRefs(props)\n\n const items = computed(() => props.items.map((item, index) => {\n const title = getPropertyFromItem(item, props.itemTitle, item)\n const value = getPropertyFromItem(item, props.itemValue, index + 1)\n\n return {\n title,\n value,\n raw: item,\n }\n }))\n const activeIndex = computed(() => {\n return _items.value.findIndex(item => selected.value.includes(item.id))\n })\n const disabled = computed(() => {\n if (props.disabled) return props.disabled\n if (activeIndex.value === 0) return 'prev'\n if (activeIndex.value === _items.value.length - 1) return 'next'\n\n return false\n })\n\n provideDefaults({\n VStepperItem: {\n editable,\n prevText,\n nextText,\n },\n VStepperActions: {\n color,\n disabled,\n prevText,\n nextText,\n },\n })\n\n useRender(() => {\n const sheetProps = VSheet.filterProps(props)\n\n const hasHeader = !!(slots.header || props.items.length)\n const hasWindow = props.items.length > 0\n const hasActions = !props.hideActions && !!(hasWindow || slots.actions)\n\n return (\n <VSheet\n { ...sheetProps }\n color={ props.bgColor }\n class={[\n 'v-stepper',\n {\n 'v-stepper--alt-labels': props.altLabels,\n 'v-stepper--flat': props.flat,\n 'v-stepper--non-linear': props.nonLinear,\n 'v-stepper--mobile': props.mobile,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { hasHeader && (\n <VStepperHeader key=\"stepper-header\">\n { items.value.map((item, index) => (\n <>\n { !!index && (<VDivider />) }\n\n <VStepperItem\n { ...item }\n v-slots={{\n default: slots[`header-item.${item.value}`] ?? slots.header,\n icon: slots.icon,\n title: slots.title,\n subtitle: slots.subtitle,\n }}\n />\n </>\n ))}\n </VStepperHeader>\n )}\n\n { hasWindow && (\n <VStepperWindow key=\"stepper-window\">\n { items.value.map(item => (\n <VStepperWindowItem\n value={ item.value }\n v-slots={{\n default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item),\n }}\n />\n ))}\n </VStepperWindow>\n )}\n\n { slots.default?.({ prev, next }) }\n\n { hasActions && (\n slots.actions?.({ next, prev }) ?? (\n <VStepperActions\n key=\"stepper-actions\"\n onClick:prev={ prev }\n onClick:next={ next }\n v-slots={ slots }\n />\n )\n )}\n </VSheet>\n )\n })\n\n return {\n prev,\n next,\n }\n },\n})\n\nexport type VStepper = InstanceType<typeof VStepper>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VStepper.mjs","names":["makeVStepperActionsProps","VStepperActions","VStepperHeader","VStepperItem","VStepperWindow","VStepperWindowItem","VDivider","makeVSheetProps","VSheet","provideDefaults","makeGroupProps","useGroup","computed","toRefs","genericComponent","getPropertyFromItem","only","propsFactory","useRender","VStepperSymbol","Symbol","for","makeStepperProps","altLabels","Boolean","bgColor","String","editable","hideActions","items","type","Array","default","itemTitle","itemValue","mobile","nonLinear","flat","makeVStepperProps","mandatory","selectedClass","VStepper","name","props","emits","v","setup","_ref","slots","_items","next","prev","selected","color","prevText","nextText","map","item","index","title","value","raw","activeIndex","findIndex","includes","id","disabled","length","sheetProps","filterProps","hasHeader","header","hasWindow","hasActions","actions","_createVNode","_mergeProps","class","style","_ref2","_Fragment","icon","subtitle"],"sources":["../../../src/components/VStepper/VStepper.tsx"],"sourcesContent":["// Styles\nimport './VStepper.sass'\n\n// Components\nimport { makeVStepperActionsProps, VStepperActions } from './VStepperActions'\nimport { VStepperHeader } from './VStepperHeader'\nimport { VStepperItem } from './VStepperItem'\nimport { VStepperWindow } from './VStepperWindow'\nimport { VStepperWindowItem } from './VStepperWindowItem'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\n\n// Utilities\nimport { computed, toRefs } from 'vue'\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { StepperItem, StepperItemSlot } from './VStepperItem'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VStepperSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-stepper')\n\nexport type VStepperSlot = {\n prev: () => void\n next: () => void\n}\n\nexport type VStepperSlots = {\n actions: VStepperSlot\n default: VStepperSlot\n header: StepperItem\n 'header-item': StepperItemSlot\n icon: StepperItemSlot\n title: StepperItemSlot\n subtitle: StepperItemSlot\n item: StepperItem\n prev: never\n next: never\n} & {\n [key: `header-item.${string}`]: StepperItemSlot\n [key: `item.${string}`]: StepperItem\n}\n\nexport const makeStepperProps = propsFactory({\n altLabels: Boolean,\n bgColor: String,\n editable: Boolean,\n hideActions: Boolean,\n items: {\n type: Array as PropType<readonly StepperItem[]>,\n default: () => ([]),\n },\n itemTitle: {\n type: String,\n default: 'title',\n },\n itemValue: {\n type: String,\n default: 'value',\n },\n mobile: Boolean,\n nonLinear: Boolean,\n flat: Boolean,\n}, 'Stepper')\n\nexport const makeVStepperProps = propsFactory({\n ...makeStepperProps(),\n ...makeGroupProps({\n mandatory: 'force' as const,\n selectedClass: 'v-stepper-item--selected',\n }),\n ...makeVSheetProps(),\n ...only(makeVStepperActionsProps(), ['prevText', 'nextText']),\n}, 'VStepper')\n\nexport const VStepper = genericComponent<VStepperSlots>()({\n name: 'VStepper',\n\n props: makeVStepperProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const { items: _items, next, prev, selected } = useGroup(props, VStepperSymbol)\n const { color, editable, prevText, nextText } = toRefs(props)\n\n const items = computed(() => props.items.map((item, index) => {\n const title = getPropertyFromItem(item, props.itemTitle, item)\n const value = getPropertyFromItem(item, props.itemValue, index + 1)\n\n return {\n title,\n value,\n raw: item,\n }\n }))\n const activeIndex = computed(() => {\n return _items.value.findIndex(item => selected.value.includes(item.id))\n })\n const disabled = computed(() => {\n if (props.disabled) return props.disabled\n if (activeIndex.value === 0) return 'prev'\n if (activeIndex.value === _items.value.length - 1) return 'next'\n\n return false\n })\n\n provideDefaults({\n VStepperItem: {\n editable,\n prevText,\n nextText,\n },\n VStepperActions: {\n color,\n disabled,\n prevText,\n nextText,\n },\n })\n\n useRender(() => {\n const sheetProps = VSheet.filterProps(props)\n\n const hasHeader = !!(slots.header || props.items.length)\n const hasWindow = props.items.length > 0\n const hasActions = !props.hideActions && !!(hasWindow || slots.actions)\n\n return (\n <VSheet\n { ...sheetProps }\n color={ props.bgColor }\n class={[\n 'v-stepper',\n {\n 'v-stepper--alt-labels': props.altLabels,\n 'v-stepper--flat': props.flat,\n 'v-stepper--non-linear': props.nonLinear,\n 'v-stepper--mobile': props.mobile,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { hasHeader && (\n <VStepperHeader key=\"stepper-header\">\n { items.value.map(({ raw, ...item }, index) => (\n <>\n { !!index && (<VDivider />) }\n\n <VStepperItem\n { ...item }\n v-slots={{\n default: slots[`header-item.${item.value}`] ?? slots.header,\n icon: slots.icon,\n title: slots.title,\n subtitle: slots.subtitle,\n }}\n />\n </>\n ))}\n </VStepperHeader>\n )}\n\n { hasWindow && (\n <VStepperWindow key=\"stepper-window\">\n { items.value.map(item => (\n <VStepperWindowItem\n value={ item.value }\n v-slots={{\n default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item),\n }}\n />\n ))}\n </VStepperWindow>\n )}\n\n { slots.default?.({ prev, next }) }\n\n { hasActions && (\n slots.actions?.({ next, prev }) ?? (\n <VStepperActions\n key=\"stepper-actions\"\n onClick:prev={ prev }\n onClick:next={ next }\n v-slots={ slots }\n />\n )\n )}\n </VSheet>\n )\n })\n\n return {\n prev,\n next,\n }\n },\n})\n\nexport type VStepper = InstanceType<typeof VStepper>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,wBAAwB,EAAEC,eAAe;AAAA,SACzCC,cAAc;AAAA,SACdC,YAAY;AAAA,SACZC,cAAc;AAAA,SACdC,kBAAkB;AAAA,SAClBC,QAAQ;AAAA,SACRC,eAAe,EAAEC,MAAM,gCAEhC;AAAA,SACSC,eAAe;AAAA,SACfC,cAAc,EAAEC,QAAQ,uCAEjC;AACA,SAASC,QAAQ,EAAEC,MAAM,QAAQ,KAAK;AAAA,SAC7BC,gBAAgB,EAAEC,mBAAmB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,gCAE7E;AAKA,OAAO,MAAMC,cAA8C,GAAGC,MAAM,CAACC,GAAG,CAAC,mBAAmB,CAAC;AAuB7F,OAAO,MAAMC,gBAAgB,GAAGL,YAAY,CAAC;EAC3CM,SAAS,EAAEC,OAAO;EAClBC,OAAO,EAAEC,MAAM;EACfC,QAAQ,EAAEH,OAAO;EACjBI,WAAW,EAAEJ,OAAO;EACpBK,KAAK,EAAE;IACLC,IAAI,EAAEC,KAAyC;IAC/CC,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEJ,MAAM;IACZM,OAAO,EAAE;EACX,CAAC;EACDE,SAAS,EAAE;IACTJ,IAAI,EAAEJ,MAAM;IACZM,OAAO,EAAE;EACX,CAAC;EACDG,MAAM,EAAEX,OAAO;EACfY,SAAS,EAAEZ,OAAO;EAClBa,IAAI,EAAEb;AACR,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,MAAMc,iBAAiB,GAAGrB,YAAY,CAAC;EAC5C,GAAGK,gBAAgB,CAAC,CAAC;EACrB,GAAGZ,cAAc,CAAC;IAChB6B,SAAS,EAAE,OAAgB;IAC3BC,aAAa,EAAE;EACjB,CAAC,CAAC;EACF,GAAGjC,eAAe,CAAC,CAAC;EACpB,GAAGS,IAAI,CAAChB,wBAAwB,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;AAC9D,CAAC,EAAE,UAAU,CAAC;AAEd,OAAO,MAAMyC,QAAQ,GAAG3B,gBAAgB,CAAgB,CAAC,CAAC;EACxD4B,IAAI,EAAE,UAAU;EAEhBC,KAAK,EAAEL,iBAAiB,CAAC,CAAC;EAE1BM,KAAK,EAAE;IACL,mBAAmB,EAAGC,CAAU,IAAK;EACvC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAElB,KAAK,EAAEoB,MAAM;MAAEC,IAAI;MAAEC,IAAI;MAAEC;IAAS,CAAC,GAAGzC,QAAQ,CAACgC,KAAK,EAAExB,cAAc,CAAC;IAC/E,MAAM;MAAEkC,KAAK;MAAE1B,QAAQ;MAAE2B,QAAQ;MAAEC;IAAS,CAAC,GAAG1C,MAAM,CAAC8B,KAAK,CAAC;IAE7D,MAAMd,KAAK,GAAGjB,QAAQ,CAAC,MAAM+B,KAAK,CAACd,KAAK,CAAC2B,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MAC5D,MAAMC,KAAK,GAAG5C,mBAAmB,CAAC0C,IAAI,EAAEd,KAAK,CAACV,SAAS,EAAEwB,IAAI,CAAC;MAC9D,MAAMG,KAAK,GAAG7C,mBAAmB,CAAC0C,IAAI,EAAEd,KAAK,CAACT,SAAS,EAAEwB,KAAK,GAAG,CAAC,CAAC;MAEnE,OAAO;QACLC,KAAK;QACLC,KAAK;QACLC,GAAG,EAAEJ;MACP,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAMK,WAAW,GAAGlD,QAAQ,CAAC,MAAM;MACjC,OAAOqC,MAAM,CAACW,KAAK,CAACG,SAAS,CAACN,IAAI,IAAIL,QAAQ,CAACQ,KAAK,CAACI,QAAQ,CAACP,IAAI,CAACQ,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,MAAMC,QAAQ,GAAGtD,QAAQ,CAAC,MAAM;MAC9B,IAAI+B,KAAK,CAACuB,QAAQ,EAAE,OAAOvB,KAAK,CAACuB,QAAQ;MACzC,IAAIJ,WAAW,CAACF,KAAK,KAAK,CAAC,EAAE,OAAO,MAAM;MAC1C,IAAIE,WAAW,CAACF,KAAK,KAAKX,MAAM,CAACW,KAAK,CAACO,MAAM,GAAG,CAAC,EAAE,OAAO,MAAM;MAEhE,OAAO,KAAK;IACd,CAAC,CAAC;IAEF1D,eAAe,CAAC;MACdN,YAAY,EAAE;QACZwB,QAAQ;QACR2B,QAAQ;QACRC;MACF,CAAC;MACDtD,eAAe,EAAE;QACfoD,KAAK;QACLa,QAAQ;QACRZ,QAAQ;QACRC;MACF;IACF,CAAC,CAAC;IAEFrC,SAAS,CAAC,MAAM;MACd,MAAMkD,UAAU,GAAG5D,MAAM,CAAC6D,WAAW,CAAC1B,KAAK,CAAC;MAE5C,MAAM2B,SAAS,GAAG,CAAC,EAAEtB,KAAK,CAACuB,MAAM,IAAI5B,KAAK,CAACd,KAAK,CAACsC,MAAM,CAAC;MACxD,MAAMK,SAAS,GAAG7B,KAAK,CAACd,KAAK,CAACsC,MAAM,GAAG,CAAC;MACxC,MAAMM,UAAU,GAAG,CAAC9B,KAAK,CAACf,WAAW,IAAI,CAAC,EAAE4C,SAAS,IAAIxB,KAAK,CAAC0B,OAAO,CAAC;MAEvE,OAAAC,YAAA,CAAAnE,MAAA,EAAAoE,WAAA,CAESR,UAAU;QAAA,SACPzB,KAAK,CAAClB,OAAO;QAAA,SACd,CACL,WAAW,EACX;UACE,uBAAuB,EAAEkB,KAAK,CAACpB,SAAS;UACxC,iBAAiB,EAAEoB,KAAK,CAACN,IAAI;UAC7B,uBAAuB,EAAEM,KAAK,CAACP,SAAS;UACxC,mBAAmB,EAAEO,KAAK,CAACR;QAC7B,CAAC,EACDQ,KAAK,CAACkC,KAAK,CACZ;QAAA,SACOlC,KAAK,CAACmC;MAAK;QAAA9C,OAAA,EAAAA,CAAA,MAEjBsC,SAAS,IAAAK,YAAA,CAAAzE,cAAA;UAAA;QAAA;UAAA8B,OAAA,EAAAA,CAAA,MAELH,KAAK,CAAC+B,KAAK,CAACJ,GAAG,CAAC,CAAAuB,KAAA,EAAmBrB,KAAK;YAAA,IAAvB;cAAEG,GAAG;cAAE,GAAGJ;YAAK,CAAC,GAAAsB,KAAA;YAAA,OAAAJ,YAAA,CAAAK,SAAA,SAE7B,CAAC,CAACtB,KAAK,IAAAiB,YAAA,CAAArE,QAAA,aAAkB,EAAAqE,YAAA,CAAAxE,YAAA,EAGpBsD,IAAI,EACA;cACPzB,OAAO,EAAEgB,KAAK,CAAE,eAAcS,IAAI,CAACG,KAAM,EAAC,CAAC,IAAIZ,KAAK,CAACuB,MAAM;cAC3DU,IAAI,EAAEjC,KAAK,CAACiC,IAAI;cAChBtB,KAAK,EAAEX,KAAK,CAACW,KAAK;cAClBuB,QAAQ,EAAElC,KAAK,CAACkC;YAClB,CAAC;UAAA,CAGN,CAAC;QAAA,EAEL,EAECV,SAAS,IAAAG,YAAA,CAAAvE,cAAA;UAAA;QAAA;UAAA4B,OAAA,EAAAA,CAAA,MAELH,KAAK,CAAC+B,KAAK,CAACJ,GAAG,CAACC,IAAI,IAAAkB,YAAA,CAAAtE,kBAAA;YAAA,SAEVoD,IAAI,CAACG;UAAK,GACT;YACP5B,OAAO,EAAEA,CAAA,KAAMgB,KAAK,CAAE,QAAOS,IAAI,CAACG,KAAM,EAAC,CAAC,GAAGH,IAAI,CAAC,IAAIT,KAAK,CAACS,IAAI,GAAGA,IAAI;UACzE,CAAC,CAEJ,CAAC;QAAA,EAEL,EAECT,KAAK,CAAChB,OAAO,GAAG;UAAEmB,IAAI;UAAED;QAAK,CAAC,CAAC,EAE/BuB,UAAU,KACVzB,KAAK,CAAC0B,OAAO,GAAG;UAAExB,IAAI;UAAEC;QAAK,CAAC,CAAC,IAAAwB,YAAA,CAAA1E,eAAA;UAAA;UAAA,gBAGZkD,IAAI;UAAA,gBACJD;QAAI,GACTF,KAAK,CAElB,CACF;MAAA;IAGP,CAAC,CAAC;IAEF,OAAO;MACLG,IAAI;MACJD;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
@@ -3,12 +3,42 @@
3
3
  align-self: stretch;
4
4
  display: inline-flex;
5
5
  flex: none;
6
+ outline: none;
6
7
  opacity: var(--v-medium-emphasis-opacity);
7
8
  padding: 1.5rem;
9
+ position: relative;
8
10
  transition-duration: 0.2s;
9
11
  transition-property: opacity;
10
12
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
11
13
  }
14
+ .v-stepper-item:hover > .v-stepper-item__overlay {
15
+ opacity: calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier));
16
+ }
17
+ .v-stepper-item:focus-visible > .v-stepper-item__overlay {
18
+ opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
19
+ }
20
+ @supports not selector(:focus-visible) {
21
+ .v-stepper-item:focus > .v-stepper-item__overlay {
22
+ opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
23
+ }
24
+ }
25
+ .v-stepper-item--active > .v-stepper-item__overlay, .v-stepper-item[aria-haspopup=menu][aria-expanded=true] > .v-stepper-item__overlay {
26
+ opacity: calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier));
27
+ }
28
+ .v-stepper-item--active:hover > .v-stepper-item__overlay, .v-stepper-item[aria-haspopup=menu][aria-expanded=true]:hover > .v-stepper-item__overlay {
29
+ opacity: calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier));
30
+ }
31
+ .v-stepper-item--active:focus-visible > .v-stepper-item__overlay, .v-stepper-item[aria-haspopup=menu][aria-expanded=true]:focus-visible > .v-stepper-item__overlay {
32
+ opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
33
+ }
34
+ @supports not selector(:focus-visible) {
35
+ .v-stepper-item--active:focus > .v-stepper-item__overlay, .v-stepper-item[aria-haspopup=menu][aria-expanded=true]:focus > .v-stepper-item__overlay {
36
+ opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
37
+ }
38
+ }
39
+ .v-stepper--non-linear .v-stepper-item {
40
+ opacity: var(--v-high-emphasis-opacity);
41
+ }
12
42
  .v-stepper-item--selected {
13
43
  opacity: 1;
14
44
  }
@@ -64,4 +94,21 @@
64
94
  }
65
95
  .v-stepper--mobile .v-stepper-item__subtitle {
66
96
  display: none;
97
+ }
98
+
99
+ .v-stepper-item__overlay {
100
+ background-color: currentColor;
101
+ border-radius: inherit;
102
+ opacity: 0;
103
+ transition: opacity 0.2s ease-in-out;
104
+ }
105
+
106
+ .v-stepper-item__overlay,
107
+ .v-stepper-item__underlay {
108
+ position: absolute;
109
+ top: 0;
110
+ left: 0;
111
+ width: 100%;
112
+ height: 100%;
113
+ pointer-events: none;
67
114
  }
@@ -5,12 +5,13 @@ import "./VStepperItem.css";
5
5
  // Components
6
6
  import { VAvatar } from "../VAvatar/VAvatar.mjs";
7
7
  import { VIcon } from "../VIcon/VIcon.mjs"; // Composables
8
- import { makeGroupItemProps, useGroupItem } from "../../composables/group.mjs"; // Directives
8
+ import { makeGroupItemProps, useGroupItem } from "../../composables/group.mjs";
9
+ import { genOverlays } from "../../composables/variant.mjs"; // Directives
9
10
  import { Ripple } from "../../directives/ripple/index.mjs"; // Utilities
10
11
  import { computed } from 'vue';
11
12
  import { VStepperSymbol } from "./VStepper.mjs";
12
13
  import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
13
- export const makeVStepperItemProps = propsFactory({
14
+ export const makeStepperItemProps = propsFactory({
14
15
  color: String,
15
16
  title: String,
16
17
  subtitle: String,
@@ -37,7 +38,10 @@ export const makeVStepperItemProps = propsFactory({
37
38
  rules: {
38
39
  type: Array,
39
40
  default: () => []
40
- },
41
+ }
42
+ }, 'StepperItem');
43
+ export const makeVStepperItemProps = propsFactory({
44
+ ...makeStepperItemProps(),
41
45
  ...makeGroupItemProps()
42
46
  }, 'VStepperItem');
43
47
  export const VStepperItem = genericComponent()({
@@ -56,13 +60,14 @@ export const VStepperItem = genericComponent()({
56
60
  const group = useGroupItem(props, VStepperSymbol, true);
57
61
  const step = computed(() => group?.value.value ?? props.value);
58
62
  const isValid = computed(() => props.rules.every(handler => handler() === true));
63
+ const isClickable = computed(() => !props.disabled && props.editable);
59
64
  const canEdit = computed(() => !props.disabled && props.editable);
60
65
  const hasError = computed(() => props.error || !isValid.value);
61
66
  const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value);
62
67
  const icon = computed(() => {
63
68
  if (hasError.value) return props.errorIcon;
64
69
  if (hasCompleted.value) return props.completeIcon;
65
- if (props.editable) return props.editIcon;
70
+ if (group.isSelected.value && props.editable) return props.editIcon;
66
71
  return props.icon;
67
72
  });
68
73
  const slotProps = computed(() => ({
@@ -89,7 +94,7 @@ export const VStepperItem = genericComponent()({
89
94
  }, group?.selectedClass.value],
90
95
  "disabled": !props.editable,
91
96
  "onClick": onClick
92
- }, [_createVNode(VAvatar, {
97
+ }, [isClickable.value && genOverlays(true, 'v-stepper-item'), _createVNode(VAvatar, {
93
98
  "key": "stepper-avatar",
94
99
  "class": "v-stepper-item__avatar",
95
100
  "color": hasColor ? props.color : undefined,