@vuetify/nightly 3.6.7-master.2024-05-28 → 3.6.8-master.2024-05-30

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 (64) hide show
  1. package/CHANGELOG.md +2 -10
  2. package/dist/json/attributes.json +44 -12
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +118 -118
  5. package/dist/json/tags.json +8 -0
  6. package/dist/json/web-types.json +117 -45
  7. package/dist/vuetify-labs.css +1826 -1823
  8. package/dist/vuetify-labs.d.ts +528 -1392
  9. package/dist/vuetify-labs.esm.js +145 -43
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +145 -43
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +849 -846
  14. package/dist/vuetify.d.ts +423 -1127
  15. package/dist/vuetify.esm.js +41 -12
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +41 -12
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +16 -16
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAutocomplete/index.d.mts +102 -336
  23. package/lib/components/VCombobox/index.d.mts +102 -336
  24. package/lib/components/VDatePicker/VDatePickerMonth.mjs +3 -0
  25. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  26. package/lib/components/VDivider/VDivider.mjs +1 -1
  27. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  28. package/lib/components/VList/VList.mjs +3 -1
  29. package/lib/components/VList/VList.mjs.map +1 -1
  30. package/lib/components/VList/VListGroup.mjs +1 -0
  31. package/lib/components/VList/VListGroup.mjs.map +1 -1
  32. package/lib/components/VList/VListItem.css +2 -2
  33. package/lib/components/VList/VListItem.mjs +2 -0
  34. package/lib/components/VList/VListItem.mjs.map +1 -1
  35. package/lib/components/VList/VListItem.sass +1 -1
  36. package/lib/components/VList/index.d.mts +52 -66
  37. package/lib/components/VSelect/index.d.mts +102 -336
  38. package/lib/components/VSelectionControl/VSelectionControl.mjs +9 -1
  39. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  40. package/lib/components/VSnackbar/VSnackbar.css +1 -1
  41. package/lib/components/VSnackbar/VSnackbar.sass +1 -1
  42. package/lib/components/VStepper/VStepper.mjs +18 -4
  43. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  44. package/lib/components/VStepper/VStepperItem.css +3 -0
  45. package/lib/components/VStepper/VStepperItem.sass +3 -0
  46. package/lib/components/VStepper/index.d.mts +43 -9
  47. package/lib/components/VTabs/VTabs.mjs +2 -2
  48. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  49. package/lib/components/index.d.mts +379 -1083
  50. package/lib/composables/filter.mjs +1 -1
  51. package/lib/composables/filter.mjs.map +1 -1
  52. package/lib/entry-bundler.mjs +1 -1
  53. package/lib/framework.mjs +1 -1
  54. package/lib/index.d.mts +44 -44
  55. package/lib/labs/VStepperVertical/index.d.mts +43 -9
  56. package/lib/labs/VTreeview/VTreeview.mjs +1 -1
  57. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  58. package/lib/labs/VTreeview/VTreeviewChildren.mjs +30 -25
  59. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  60. package/lib/labs/VTreeview/VTreeviewItem.mjs +81 -10
  61. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  62. package/lib/labs/VTreeview/index.d.mts +110 -300
  63. package/lib/labs/components.d.mts +3402 -3558
  64. package/package.json +1 -1
@@ -129,7 +129,15 @@ export const VSelectionControl = genericComponent()({
129
129
  e.stopPropagation();
130
130
  }
131
131
  function onInput(e) {
132
- if (!isInteractive.value) return;
132
+ if (!isInteractive.value) {
133
+ if (input.value) {
134
+ // model value is not updated when input is not interactive
135
+ // but the internal checked state of the input is still updated,
136
+ // so here it's value is restored
137
+ input.value.checked = model.value;
138
+ }
139
+ return;
140
+ }
133
141
  if (props.readonly && group) {
134
142
  nextTick(() => group.forceUpdate());
135
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useBackgroundColor","useTextColor","makeComponentProps","useDensity","useProxiedModel","Ripple","computed","inject","nextTick","ref","shallowRef","filterInputAttrs","genericComponent","getUid","matchesSelector","propsFactory","useRender","wrapInArray","makeVSelectionControlProps","label","String","baseColor","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","backgroundColorClasses","backgroundColorStyles","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","isFocused","isFocusVisible","input","id","isInteractive","onForceUpdate","checked","onFocus","e","target","onBlur","onClickLabel","stopPropagation","onInput","forceUpdate","for","rootAttrs","inputAttrs","inputNode","_createVNode","_mergeProps","type","inline","class","style","default","_withDirectives","_Fragment","_resolveDirective","ripple"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, VNode, WritableComputedRef } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { EventProp, GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<boolean>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n inputNode: VNode\n icon: IconValue | undefined\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: {\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n }\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\n 'onUpdate:modelValue': EventProp | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? wrapInArray(val).some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n if (props.error || props.disabled) return undefined\n\n return model.value ? props.color : props.baseColor\n }))\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : props.baseColor\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n const id = computed(() => props.id || `input-${uid}`)\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n if (!isInteractive.value) return\n\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onClickLabel (e: Event) {\n e.stopPropagation()\n }\n\n function onInput (e: Event) {\n if (!isInteractive.value) return\n\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!props.disabled }\n aria-label={ props.label }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n )\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles,\n })}\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } satisfies SelectionControlSlot) ?? (\n <>\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n { inputNode }\n </>\n )}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } onClick={ onClickLabel }>\n { label }\n </VLabel>\n )}\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useBackgroundColor","useTextColor","makeComponentProps","useDensity","useProxiedModel","Ripple","computed","inject","nextTick","ref","shallowRef","filterInputAttrs","genericComponent","getUid","matchesSelector","propsFactory","useRender","wrapInArray","makeVSelectionControlProps","label","String","baseColor","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","backgroundColorClasses","backgroundColorStyles","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","isFocused","isFocusVisible","input","id","isInteractive","onForceUpdate","checked","onFocus","e","target","onBlur","onClickLabel","stopPropagation","onInput","forceUpdate","for","rootAttrs","inputAttrs","inputNode","_createVNode","_mergeProps","type","inline","class","style","default","_withDirectives","_Fragment","_resolveDirective","ripple"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, VNode, WritableComputedRef } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { EventProp, GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<boolean>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n inputNode: VNode\n icon: IconValue | undefined\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: {\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n }\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\n 'onUpdate:modelValue': EventProp | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? wrapInArray(val).some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n if (props.error || props.disabled) return undefined\n\n return model.value ? props.color : props.baseColor\n }))\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : props.baseColor\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n const id = computed(() => props.id || `input-${uid}`)\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n if (!isInteractive.value) return\n\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onClickLabel (e: Event) {\n e.stopPropagation()\n }\n\n function onInput (e: Event) {\n if (!isInteractive.value) {\n if (input.value) {\n // model value is not updated when input is not interactive\n // but the internal checked state of the input is still updated,\n // so here it's value is restored\n input.value.checked = model.value\n }\n\n return\n }\n\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!props.disabled }\n aria-label={ props.label }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n )\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles,\n })}\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } satisfies SelectionControlSlot) ?? (\n <>\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n { inputNode }\n </>\n )}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } onClick={ onClickLabel }>\n { label }\n </VLabel>\n )}\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@
5
5
  margin-inline-end: calc(8px + var(--v-scrollbar-offset));
6
6
  padding: var(--v-layout-top) var(--v-layout-right) var(--v-layout-bottom) var(--v-layout-left);
7
7
  }
8
- .v-snackbar:not(.v-snackbar--centered):not(.v-snackbar--top) {
8
+ .v-snackbar:not(.v-snackbar--center):not(.v-snackbar--top) {
9
9
  align-items: flex-end;
10
10
  }
11
11
  .v-snackbar__wrapper {
@@ -10,7 +10,7 @@
10
10
  margin-inline-end: calc(#{$snackbar-wrapper-margin} + var(--v-scrollbar-offset))
11
11
  padding: var(--v-layout-top) var(--v-layout-right) var(--v-layout-bottom) var(--v-layout-left)
12
12
 
13
- &:not(.v-snackbar--centered):not(.v-snackbar--top)
13
+ &:not(.v-snackbar--center):not(.v-snackbar--top)
14
14
  align-items: flex-end
15
15
 
16
16
  &__wrapper
@@ -12,13 +12,17 @@ import { VStepperWindowItem } from "./VStepperWindowItem.mjs";
12
12
  import { VDivider } from "../VDivider/index.mjs";
13
13
  import { makeVSheetProps, VSheet } from "../VSheet/VSheet.mjs"; // Composables
14
14
  import { provideDefaults } from "../../composables/defaults.mjs";
15
+ import { makeDisplayProps, useDisplay } from "../../composables/display.mjs";
15
16
  import { makeGroupProps, useGroup } from "../../composables/group.mjs"; // Utilities
16
17
  import { computed, toRefs } from 'vue';
17
18
  import { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from "../../util/index.mjs"; // Types
18
19
  export const makeStepperProps = propsFactory({
19
20
  altLabels: Boolean,
20
21
  bgColor: String,
22
+ completeIcon: String,
23
+ editIcon: String,
21
24
  editable: Boolean,
25
+ errorIcon: String,
22
26
  hideActions: Boolean,
23
27
  items: {
24
28
  type: Array,
@@ -32,9 +36,9 @@ export const makeStepperProps = propsFactory({
32
36
  type: String,
33
37
  default: 'value'
34
38
  },
35
- mobile: Boolean,
36
39
  nonLinear: Boolean,
37
- flat: Boolean
40
+ flat: Boolean,
41
+ ...makeDisplayProps()
38
42
  }, 'Stepper');
39
43
  export const makeVStepperProps = propsFactory({
40
44
  ...makeStepperProps(),
@@ -62,6 +66,13 @@ export const VStepper = genericComponent()({
62
66
  selected
63
67
  } = useGroup(props, VStepperSymbol);
64
68
  const {
69
+ displayClasses,
70
+ mobile
71
+ } = useDisplay(props);
72
+ const {
73
+ completeIcon,
74
+ editIcon,
75
+ errorIcon,
65
76
  color,
66
77
  editable,
67
78
  prevText,
@@ -88,6 +99,9 @@ export const VStepper = genericComponent()({
88
99
  provideDefaults({
89
100
  VStepperItem: {
90
101
  editable,
102
+ errorIcon,
103
+ completeIcon,
104
+ editIcon,
91
105
  prevText,
92
106
  nextText
93
107
  },
@@ -109,8 +123,8 @@ export const VStepper = genericComponent()({
109
123
  'v-stepper--alt-labels': props.altLabels,
110
124
  'v-stepper--flat': props.flat,
111
125
  'v-stepper--non-linear': props.nonLinear,
112
- 'v-stepper--mobile': props.mobile
113
- }, props.class],
126
+ 'v-stepper--mobile': mobile.value
127
+ }, displayClasses.value, props.class],
114
128
  "style": props.style
115
129
  }), {
116
130
  default: () => [hasHeader && _createVNode(VStepperHeader, {
@@ -1 +1 @@
1
- {"version":3,"file":"VStepper.mjs","names":["VStepperSymbol","makeVStepperActionsProps","VStepperActions","VStepperHeader","VStepperItem","VStepperWindow","VStepperWindowItem","VDivider","makeVSheetProps","VSheet","provideDefaults","makeGroupProps","useGroup","computed","toRefs","genericComponent","getPropertyFromItem","only","propsFactory","useRender","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 { VStepperSymbol } from './shared'\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 { PropType } from 'vue'\nimport type { StepperItem, StepperItemSlot } from './VStepperItem'\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":"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","ignoreList":[]}
1
+ {"version":3,"file":"VStepper.mjs","names":["VStepperSymbol","makeVStepperActionsProps","VStepperActions","VStepperHeader","VStepperItem","VStepperWindow","VStepperWindowItem","VDivider","makeVSheetProps","VSheet","provideDefaults","makeDisplayProps","useDisplay","makeGroupProps","useGroup","computed","toRefs","genericComponent","getPropertyFromItem","only","propsFactory","useRender","makeStepperProps","altLabels","Boolean","bgColor","String","completeIcon","editIcon","editable","errorIcon","hideActions","items","type","Array","default","itemTitle","itemValue","nonLinear","flat","makeVStepperProps","mandatory","selectedClass","VStepper","name","props","emits","v","setup","_ref","slots","_items","next","prev","selected","displayClasses","mobile","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 { VStepperSymbol } from './shared'\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 { makeDisplayProps, useDisplay } from '@/composables/display'\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 { PropType } from 'vue'\nimport type { StepperItem, StepperItemSlot } from './VStepperItem'\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 completeIcon: String,\n editIcon: String,\n editable: Boolean,\n errorIcon: String,\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 nonLinear: Boolean,\n flat: Boolean,\n\n ...makeDisplayProps(),\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 { displayClasses, mobile } = useDisplay(props)\n const { completeIcon, editIcon, errorIcon, 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 errorIcon,\n completeIcon,\n editIcon,\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': mobile.value,\n },\n displayClasses.value,\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":"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","ignoreList":[]}
@@ -62,6 +62,9 @@
62
62
  font-size: 0.75rem;
63
63
  margin-inline-end: 8px;
64
64
  }
65
+ .v-stepper--mobile .v-stepper-item__avatar.v-avatar {
66
+ margin-inline-end: 0;
67
+ }
65
68
  .v-stepper-item__avatar.v-avatar .v-icon {
66
69
  font-size: 0.875rem;
67
70
  }
@@ -43,6 +43,9 @@
43
43
  font-size: $stepper-item-avatar-font-size
44
44
  margin-inline-end: $stepper-item-avatar-margin-inline-end
45
45
 
46
+ .v-stepper--mobile &
47
+ margin-inline-end: 0
48
+
46
49
  .v-icon
47
50
  font-size: $stepper-item-avatar-icon-font-size
48
51
 
@@ -11,6 +11,10 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
11
11
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
12
12
  }
13
13
 
14
+ declare const breakpoints: readonly ["sm", "md", "lg", "xl", "xxl"];
15
+ type Breakpoint = typeof breakpoints[number];
16
+ type DisplayBreakpoint = 'xs' | Breakpoint;
17
+
14
18
  type StepperItem = string | Record<string, any>;
15
19
  type StepperItemSlot = {
16
20
  canEdit: boolean;
@@ -346,7 +350,7 @@ declare const VStepper: {
346
350
  style: vue.StyleValue;
347
351
  disabled: boolean;
348
352
  tag: string;
349
- mobile: boolean;
353
+ mobile: boolean | null;
350
354
  items: readonly StepperItem[];
351
355
  mandatory: NonNullable<boolean | "force">;
352
356
  multiple: boolean;
@@ -366,6 +370,7 @@ declare const VStepper: {
366
370
  height?: string | number | undefined;
367
371
  theme?: string | undefined;
368
372
  color?: string | undefined;
373
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
369
374
  border?: string | number | boolean | undefined;
370
375
  position?: "fixed" | "absolute" | "relative" | "static" | "sticky" | undefined;
371
376
  modelValue?: any;
@@ -378,6 +383,9 @@ declare const VStepper: {
378
383
  location?: Anchor | undefined;
379
384
  max?: number | undefined;
380
385
  bgColor?: string | undefined;
386
+ completeIcon?: string | undefined;
387
+ editIcon?: string | undefined;
388
+ errorIcon?: string | undefined;
381
389
  } & {
382
390
  $children?: vue.VNodeChild | {
383
391
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -432,7 +440,7 @@ declare const VStepper: {
432
440
  style: vue.StyleValue;
433
441
  disabled: boolean;
434
442
  tag: string;
435
- mobile: boolean;
443
+ mobile: boolean | null;
436
444
  items: readonly StepperItem[];
437
445
  mandatory: NonNullable<boolean | "force">;
438
446
  multiple: boolean;
@@ -452,6 +460,7 @@ declare const VStepper: {
452
460
  height?: string | number | undefined;
453
461
  theme?: string | undefined;
454
462
  color?: string | undefined;
463
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
455
464
  border?: string | number | boolean | undefined;
456
465
  position?: "fixed" | "absolute" | "relative" | "static" | "sticky" | undefined;
457
466
  modelValue?: any;
@@ -464,6 +473,9 @@ declare const VStepper: {
464
473
  location?: Anchor | undefined;
465
474
  max?: number | undefined;
466
475
  bgColor?: string | undefined;
476
+ completeIcon?: string | undefined;
477
+ editIcon?: string | undefined;
478
+ errorIcon?: string | undefined;
467
479
  } & {
468
480
  $children?: vue.VNodeChild | {
469
481
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -513,7 +525,7 @@ declare const VStepper: {
513
525
  style: vue.StyleValue;
514
526
  disabled: boolean;
515
527
  tag: string;
516
- mobile: boolean;
528
+ mobile: boolean | null;
517
529
  modelValue: any;
518
530
  rounded: string | number | boolean;
519
531
  items: readonly StepperItem[];
@@ -578,7 +590,7 @@ declare const VStepper: {
578
590
  style: vue.StyleValue;
579
591
  disabled: boolean;
580
592
  tag: string;
581
- mobile: boolean;
593
+ mobile: boolean | null;
582
594
  items: readonly StepperItem[];
583
595
  mandatory: NonNullable<boolean | "force">;
584
596
  multiple: boolean;
@@ -598,6 +610,7 @@ declare const VStepper: {
598
610
  height?: string | number | undefined;
599
611
  theme?: string | undefined;
600
612
  color?: string | undefined;
613
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
601
614
  border?: string | number | boolean | undefined;
602
615
  position?: "fixed" | "absolute" | "relative" | "static" | "sticky" | undefined;
603
616
  modelValue?: any;
@@ -610,6 +623,9 @@ declare const VStepper: {
610
623
  location?: Anchor | undefined;
611
624
  max?: number | undefined;
612
625
  bgColor?: string | undefined;
626
+ completeIcon?: string | undefined;
627
+ editIcon?: string | undefined;
628
+ errorIcon?: string | undefined;
613
629
  } & {
614
630
  $children?: vue.VNodeChild | {
615
631
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -662,7 +678,7 @@ declare const VStepper: {
662
678
  style: vue.StyleValue;
663
679
  disabled: boolean;
664
680
  tag: string;
665
- mobile: boolean;
681
+ mobile: boolean | null;
666
682
  modelValue: any;
667
683
  rounded: string | number | boolean;
668
684
  items: readonly StepperItem[];
@@ -687,7 +703,7 @@ declare const VStepper: {
687
703
  style: vue.StyleValue;
688
704
  disabled: boolean;
689
705
  tag: string;
690
- mobile: boolean;
706
+ mobile: boolean | null;
691
707
  items: readonly StepperItem[];
692
708
  mandatory: NonNullable<boolean | "force">;
693
709
  multiple: boolean;
@@ -707,6 +723,7 @@ declare const VStepper: {
707
723
  height?: string | number | undefined;
708
724
  theme?: string | undefined;
709
725
  color?: string | undefined;
726
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
710
727
  border?: string | number | boolean | undefined;
711
728
  position?: "fixed" | "absolute" | "relative" | "static" | "sticky" | undefined;
712
729
  modelValue?: any;
@@ -719,6 +736,9 @@ declare const VStepper: {
719
736
  location?: Anchor | undefined;
720
737
  max?: number | undefined;
721
738
  bgColor?: string | undefined;
739
+ completeIcon?: string | undefined;
740
+ editIcon?: string | undefined;
741
+ errorIcon?: string | undefined;
722
742
  } & {
723
743
  $children?: vue.VNodeChild | {
724
744
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -773,7 +793,7 @@ declare const VStepper: {
773
793
  style: vue.StyleValue;
774
794
  disabled: boolean;
775
795
  tag: string;
776
- mobile: boolean;
796
+ mobile: boolean | null;
777
797
  modelValue: any;
778
798
  rounded: string | number | boolean;
779
799
  items: readonly StepperItem[];
@@ -882,9 +902,17 @@ declare const VStepper: {
882
902
  default: string;
883
903
  };
884
904
  disabled: BooleanConstructor;
905
+ mobile: {
906
+ type: PropType<boolean | null>;
907
+ default: boolean;
908
+ };
909
+ mobileBreakpoint: PropType<number | DisplayBreakpoint>;
885
910
  altLabels: BooleanConstructor;
886
911
  bgColor: StringConstructor;
912
+ completeIcon: StringConstructor;
913
+ editIcon: StringConstructor;
887
914
  editable: BooleanConstructor;
915
+ errorIcon: StringConstructor;
888
916
  hideActions: BooleanConstructor;
889
917
  items: {
890
918
  type: PropType<readonly StepperItem[]>;
@@ -898,7 +926,6 @@ declare const VStepper: {
898
926
  type: StringConstructor;
899
927
  default: string;
900
928
  };
901
- mobile: BooleanConstructor;
902
929
  nonLinear: BooleanConstructor;
903
930
  flat: BooleanConstructor;
904
931
  }, vue.ExtractPropTypes<{
@@ -957,9 +984,17 @@ declare const VStepper: {
957
984
  default: string;
958
985
  };
959
986
  disabled: BooleanConstructor;
987
+ mobile: {
988
+ type: PropType<boolean | null>;
989
+ default: boolean;
990
+ };
991
+ mobileBreakpoint: PropType<number | DisplayBreakpoint>;
960
992
  altLabels: BooleanConstructor;
961
993
  bgColor: StringConstructor;
994
+ completeIcon: StringConstructor;
995
+ editIcon: StringConstructor;
962
996
  editable: BooleanConstructor;
997
+ errorIcon: StringConstructor;
963
998
  hideActions: BooleanConstructor;
964
999
  items: {
965
1000
  type: PropType<readonly StepperItem[]>;
@@ -973,7 +1008,6 @@ declare const VStepper: {
973
1008
  type: StringConstructor;
974
1009
  default: string;
975
1010
  };
976
- mobile: BooleanConstructor;
977
1011
  nonLinear: BooleanConstructor;
978
1012
  flat: BooleanConstructor;
979
1013
  }>>;
@@ -109,9 +109,9 @@ export const VTabs = genericComponent()({
109
109
  "key": item.text,
110
110
  "value": item.value
111
111
  }), {
112
- default: () => slots[`tab.${item.value}`]?.({
112
+ default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({
113
113
  item
114
- })
114
+ }) : undefined
115
115
  }))]
116
116
  }), hasWindow && _createVNode(VTabsWindow, _mergeProps({
117
117
  "modelValue": model.value,
@@ -1 +1 @@
1
- {"version":3,"file":"VTabs.mjs","names":["VTab","VTabsWindow","VTabsWindowItem","makeVSlideGroupProps","VSlideGroup","useBackgroundColor","provideDefaults","makeDensityProps","useDensity","useProxiedModel","useScopeId","makeTagProps","computed","toRef","convertToUnit","genericComponent","isObject","propsFactory","useRender","VTabsSymbol","parseItems","items","map","item","text","value","makeVTabsProps","alignTabs","type","String","default","color","fixedTabs","Boolean","Array","stacked","bgColor","grow","height","Number","undefined","hideSlider","sliderColor","mandatory","selectedClass","VTabs","name","props","emits","v","setup","_ref","attrs","slots","model","densityClasses","backgroundColorClasses","backgroundColorStyles","scopeId","direction","fixed","slideGroupProps","filterProps","hasWindow","window","length","_createVNode","_Fragment","_mergeProps","$event","class","style","tab"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VTab } from './VTab'\nimport { VTabsWindow } from './VTabsWindow'\nimport { VTabsWindowItem } from './VTabsWindowItem'\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/VSlideGroup'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, isObject, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | number | Record<string, any>\n\nexport type VTabsSlot = {\n item: TabItem\n}\n\nexport type VTabsSlots = {\n default: never\n tab: VTabsSlot\n item: VTabsSlot\n window: never\n} & {\n [key: `tab.${string}`]: VTabsSlot\n [key: `item.${string}`]: VTabsSlot\n}\n\nfunction parseItems (items: readonly TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (!isObject(item)) return { text: item, value: item }\n\n return item\n })\n}\n\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<readonly TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n\n ...makeVSlideGroupProps({\n mandatory: 'force' as const,\n selectedClass: 'v-tab-item--selected',\n }),\n ...makeDensityProps(),\n ...makeTagProps(),\n}, 'VTabs')\n\nexport const VTabs = genericComponent<VTabsSlots>()({\n name: 'VTabs',\n\n props: makeVTabsProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { attrs, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const items = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { scopeId } = useScopeId()\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props)\n const hasWindow = !!(slots.window || props.items.length > 0)\n\n return (\n <>\n <VSlideGroup\n { ...slideGroupProps }\n v-model={ model.value }\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n `v-tabs--align-tabs-${props.alignTabs}`,\n {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n { '--v-tabs-height': convertToUnit(props.height) },\n backgroundColorStyles.value,\n props.style,\n ]}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n { ...scopeId }\n { ...attrs }\n >\n { slots.default?.() ?? items.value.map(item => (\n slots.tab?.({ item }) ?? (\n <VTab\n { ...item }\n key={ item.text }\n value={ item.value }\n v-slots={{\n default: () => slots[`tab.${item.value}`]?.({ item }),\n }}\n />\n )\n ))}\n </VSlideGroup>\n\n { hasWindow && (\n <VTabsWindow\n v-model={ model.value }\n key=\"tabs-window\"\n { ...scopeId }\n >\n { items.value.map(item => slots.item?.({ item }) ?? (\n <VTabsWindowItem\n value={ item.value }\n v-slots={{\n default: () => slots[`item.${item.value}`]?.({ item }),\n }}\n />\n ))}\n\n { slots.window?.() }\n </VTabsWindow>\n )}\n </>\n )\n })\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,WAAW;AAAA,SACXC,eAAe;AAAA,SACfC,oBAAoB,EAAEC,WAAW,0CAE1C;AAAA,SACSC,kBAAkB;AAAA,SAClBC,eAAe;AAAA,SACfC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,eAAe;AAAA,SACfC,UAAU;AAAA,SACVC,YAAY,qCAErB;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,aAAa,EAAEC,gBAAgB,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,SAAS,gCAE3E;AAAA,SAESC,WAAW;AAkBpB,SAASC,UAAUA,CAAEC,KAAqC,EAAE;EAC1D,IAAI,CAACA,KAAK,EAAE,OAAO,EAAE;EAErB,OAAOA,KAAK,CAACC,GAAG,CAACC,IAAI,IAAI;IACvB,IAAI,CAACP,QAAQ,CAACO,IAAI,CAAC,EAAE,OAAO;MAAEC,IAAI,EAAED,IAAI;MAAEE,KAAK,EAAEF;IAAK,CAAC;IAEvD,OAAOA,IAAI;EACb,CAAC,CAAC;AACJ;AAEA,OAAO,MAAMG,cAAc,GAAGT,YAAY,CAAC;EACzCU,SAAS,EAAE;IACTC,IAAI,EAAEC,MAAwD;IAC9DC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEF,MAAM;EACbG,SAAS,EAAEC,OAAO;EAClBZ,KAAK,EAAE;IACLO,IAAI,EAAEM,KAAqC;IAC3CJ,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDK,OAAO,EAAEF,OAAO;EAChBG,OAAO,EAAEP,MAAM;EACfQ,IAAI,EAAEJ,OAAO;EACbK,MAAM,EAAE;IACNV,IAAI,EAAE,CAACW,MAAM,EAAEV,MAAM,CAAC;IACtBC,OAAO,EAAEU;EACX,CAAC;EACDC,UAAU,EAAER,OAAO;EACnBS,WAAW,EAAEb,MAAM;EAEnB,GAAG1B,oBAAoB,CAAC;IACtBwC,SAAS,EAAE,OAAgB;IAC3BC,aAAa,EAAE;EACjB,CAAC,CAAC;EACF,GAAGrC,gBAAgB,CAAC,CAAC;EACrB,GAAGI,YAAY,CAAC;AAClB,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,MAAMkC,KAAK,GAAG9B,gBAAgB,CAAa,CAAC,CAAC;EAClD+B,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAErB,cAAc,CAAC,CAAC;EAEvBsB,KAAK,EAAE;IACL,mBAAmB,EAAGC,CAAU,IAAK;EACvC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAMG,KAAK,GAAG7C,eAAe,CAACsC,KAAK,EAAE,YAAY,CAAC;IAClD,MAAM1B,KAAK,GAAGT,QAAQ,CAAC,MAAMQ,UAAU,CAAC2B,KAAK,CAAC1B,KAAK,CAAC,CAAC;IACrD,MAAM;MAAEkC;IAAe,CAAC,GAAG/C,UAAU,CAACuC,KAAK,CAAC;IAC5C,MAAM;MAAES,sBAAsB;MAAEC;IAAsB,CAAC,GAAGpD,kBAAkB,CAACQ,KAAK,CAACkC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrG,MAAM;MAAEW;IAAQ,CAAC,GAAGhD,UAAU,CAAC,CAAC;IAEhCJ,eAAe,CAAC;MACdN,IAAI,EAAE;QACJ+B,KAAK,EAAElB,KAAK,CAACkC,KAAK,EAAE,OAAO,CAAC;QAC5BY,SAAS,EAAE9C,KAAK,CAACkC,KAAK,EAAE,WAAW,CAAC;QACpCZ,OAAO,EAAEtB,KAAK,CAACkC,KAAK,EAAE,SAAS,CAAC;QAChCa,KAAK,EAAE/C,KAAK,CAACkC,KAAK,EAAE,WAAW,CAAC;QAChCL,WAAW,EAAE7B,KAAK,CAACkC,KAAK,EAAE,aAAa,CAAC;QACxCN,UAAU,EAAE5B,KAAK,CAACkC,KAAK,EAAE,YAAY;MACvC;IACF,CAAC,CAAC;IAEF7B,SAAS,CAAC,MAAM;MACd,MAAM2C,eAAe,GAAGzD,WAAW,CAAC0D,WAAW,CAACf,KAAK,CAAC;MACtD,MAAMgB,SAAS,GAAG,CAAC,EAAEV,KAAK,CAACW,MAAM,IAAIjB,KAAK,CAAC1B,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC;MAE5D,OAAAC,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAA9D,WAAA,EAAAgE,WAAA,CAGWP,eAAe;QAAA,cACVP,KAAK,CAAC7B,KAAK;QAAA,uBAAA4C,MAAA,IAAXf,KAAK,CAAC7B,KAAK,GAAA4C,MAAA;QAAA,SACd,CACL,QAAQ,EACP,WAAUtB,KAAK,CAACY,SAAU,EAAC,EAC3B,sBAAqBZ,KAAK,CAACpB,SAAU,EAAC,EACvC;UACE,oBAAoB,EAAEoB,KAAK,CAACf,SAAS;UACrC,cAAc,EAAEe,KAAK,CAACV,IAAI;UAC1B,iBAAiB,EAAEU,KAAK,CAACZ;QAC3B,CAAC,EACDoB,cAAc,CAAC9B,KAAK,EACpB+B,sBAAsB,CAAC/B,KAAK,EAC5BsB,KAAK,CAACuB,KAAK,CACZ;QAAA,SACM,CACL;UAAE,iBAAiB,EAAExD,aAAa,CAACiC,KAAK,CAACT,MAAM;QAAE,CAAC,EAClDmB,qBAAqB,CAAChC,KAAK,EAC3BsB,KAAK,CAACwB,KAAK,CACZ;QAAA;QAAA,UAEQpD;MAAW,GACfuC,OAAO,EACPN,KAAK;QAAAtB,OAAA,EAAAA,CAAA,MAERuB,KAAK,CAACvB,OAAO,GAAG,CAAC,IAAIT,KAAK,CAACI,KAAK,CAACH,GAAG,CAACC,IAAI,IACzC8B,KAAK,CAACmB,GAAG,GAAG;UAAEjD;QAAK,CAAC,CAAC,IAAA2C,YAAA,CAAAlE,IAAA,EAAAoE,WAAA,CAEZ7C,IAAI;UAAA,OACHA,IAAI,CAACC,IAAI;UAAA,SACPD,IAAI,CAACE;QAAK,IACT;UACPK,OAAO,EAAEA,CAAA,KAAMuB,KAAK,CAAE,OAAM9B,IAAI,CAACE,KAAM,EAAC,CAAC,GAAG;YAAEF;UAAK,CAAC;QACtD,CAAC,CAGN,CAAC;MAAA,IAGFwC,SAAS,IAAAG,YAAA,CAAAjE,WAAA,EAAAmE,WAAA;QAAA,cAEGd,KAAK,CAAC7B,KAAK;QAAA,uBAAA4C,MAAA,IAAXf,KAAK,CAAC7B,KAAK,GAAA4C,MAAA;QAAA;MAAA,GAEhBX,OAAO;QAAA5B,OAAA,EAAAA,CAAA,MAEVT,KAAK,CAACI,KAAK,CAACH,GAAG,CAACC,IAAI,IAAI8B,KAAK,CAAC9B,IAAI,GAAG;UAAEA;QAAK,CAAC,CAAC,IAAA2C,YAAA,CAAAhE,eAAA;UAAA,SAEpCqB,IAAI,CAACE;QAAK,GACT;UACPK,OAAO,EAAEA,CAAA,KAAMuB,KAAK,CAAE,QAAO9B,IAAI,CAACE,KAAM,EAAC,CAAC,GAAG;YAAEF;UAAK,CAAC;QACvD,CAAC,CAEJ,CAAC,EAEA8B,KAAK,CAACW,MAAM,GAAG,CAAC;MAAA,EAErB;IAGP,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"VTabs.mjs","names":["VTab","VTabsWindow","VTabsWindowItem","makeVSlideGroupProps","VSlideGroup","useBackgroundColor","provideDefaults","makeDensityProps","useDensity","useProxiedModel","useScopeId","makeTagProps","computed","toRef","convertToUnit","genericComponent","isObject","propsFactory","useRender","VTabsSymbol","parseItems","items","map","item","text","value","makeVTabsProps","alignTabs","type","String","default","color","fixedTabs","Boolean","Array","stacked","bgColor","grow","height","Number","undefined","hideSlider","sliderColor","mandatory","selectedClass","VTabs","name","props","emits","v","setup","_ref","attrs","slots","model","densityClasses","backgroundColorClasses","backgroundColorStyles","scopeId","direction","fixed","slideGroupProps","filterProps","hasWindow","window","length","_createVNode","_Fragment","_mergeProps","$event","class","style","tab"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VTab } from './VTab'\nimport { VTabsWindow } from './VTabsWindow'\nimport { VTabsWindowItem } from './VTabsWindowItem'\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/VSlideGroup'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, isObject, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | number | Record<string, any>\n\nexport type VTabsSlot = {\n item: TabItem\n}\n\nexport type VTabsSlots = {\n default: never\n tab: VTabsSlot\n item: VTabsSlot\n window: never\n} & {\n [key: `tab.${string}`]: VTabsSlot\n [key: `item.${string}`]: VTabsSlot\n}\n\nfunction parseItems (items: readonly TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (!isObject(item)) return { text: item, value: item }\n\n return item\n })\n}\n\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<readonly TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n\n ...makeVSlideGroupProps({\n mandatory: 'force' as const,\n selectedClass: 'v-tab-item--selected',\n }),\n ...makeDensityProps(),\n ...makeTagProps(),\n}, 'VTabs')\n\nexport const VTabs = genericComponent<VTabsSlots>()({\n name: 'VTabs',\n\n props: makeVTabsProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { attrs, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const items = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { scopeId } = useScopeId()\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props)\n const hasWindow = !!(slots.window || props.items.length > 0)\n\n return (\n <>\n <VSlideGroup\n { ...slideGroupProps }\n v-model={ model.value }\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n `v-tabs--align-tabs-${props.alignTabs}`,\n {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n { '--v-tabs-height': convertToUnit(props.height) },\n backgroundColorStyles.value,\n props.style,\n ]}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n { ...scopeId }\n { ...attrs }\n >\n { slots.default?.() ?? items.value.map(item => (\n slots.tab?.({ item }) ?? (\n <VTab\n { ...item }\n key={ item.text }\n value={ item.value }\n v-slots={{\n default: slots[`tab.${item.value}`] ? () => slots[`tab.${item.value}`]?.({ item }) : undefined,\n }}\n />\n )\n ))}\n </VSlideGroup>\n\n { hasWindow && (\n <VTabsWindow\n v-model={ model.value }\n key=\"tabs-window\"\n { ...scopeId }\n >\n { items.value.map(item => slots.item?.({ item }) ?? (\n <VTabsWindowItem\n value={ item.value }\n v-slots={{\n default: () => slots[`item.${item.value}`]?.({ item }),\n }}\n />\n ))}\n\n { slots.window?.() }\n </VTabsWindow>\n )}\n </>\n )\n })\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":"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","ignoreList":[]}