vuetify 3.6.6 → 3.6.8

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 (134) hide show
  1. package/dist/json/attributes.json +86 -14
  2. package/dist/json/importMap-labs.json +16 -16
  3. package/dist/json/importMap.json +124 -124
  4. package/dist/json/tags.json +19 -1
  5. package/dist/json/web-types.json +239 -58
  6. package/dist/vuetify-labs.css +2274 -2182
  7. package/dist/vuetify-labs.d.ts +645 -1407
  8. package/dist/vuetify-labs.esm.js +271 -124
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +270 -123
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +2437 -2345
  13. package/dist/vuetify.d.ts +530 -1132
  14. package/dist/vuetify.esm.js +159 -91
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +158 -90
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +372 -369
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/index.d.mts +102 -336
  24. package/lib/components/VBtn/VBtn.css +6 -0
  25. package/lib/components/VBtn/VBtn.sass +6 -0
  26. package/lib/components/VCombobox/VCombobox.mjs +4 -3
  27. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  28. package/lib/components/VCombobox/index.d.mts +102 -336
  29. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +8 -0
  30. package/lib/components/VConfirmEdit/VConfirmEdit.mjs.map +1 -1
  31. package/lib/components/VConfirmEdit/index.d.mts +24 -3
  32. package/lib/components/VDataTable/VDataTable.css +4 -0
  33. package/lib/components/VDataTable/VDataTable.mjs +2 -1
  34. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  35. package/lib/components/VDataTable/VDataTable.sass +4 -0
  36. package/lib/components/VDataTable/VDataTableHeaders.mjs +4 -3
  37. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  38. package/lib/components/VDataTable/VDataTableServer.mjs +1 -1
  39. package/lib/components/VDataTable/VDataTableServer.mjs.map +1 -1
  40. package/lib/components/VDataTable/VDataTableVirtual.mjs +1 -1
  41. package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
  42. package/lib/components/VDataTable/composables/sort.mjs +1 -1
  43. package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
  44. package/lib/components/VDataTable/index.d.mts +63 -0
  45. package/lib/components/VDatePicker/VDatePicker.mjs +2 -1
  46. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  47. package/lib/components/VDatePicker/VDatePickerMonth.mjs +3 -0
  48. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  49. package/lib/components/VDatePicker/VDatePickerMonths.mjs +10 -1
  50. package/lib/components/VDatePicker/VDatePickerMonths.mjs.map +1 -1
  51. package/lib/components/VDatePicker/index.d.mts +24 -6
  52. package/lib/components/VDivider/VDivider.css +2 -1
  53. package/lib/components/VDivider/VDivider.mjs +1 -1
  54. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  55. package/lib/components/VDivider/VDivider.sass +2 -1
  56. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +1 -1
  57. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  58. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +1 -1
  59. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  60. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
  61. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  62. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +1 -1
  63. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  64. package/lib/components/VExpansionPanel/index.d.mts +36 -36
  65. package/lib/components/VExpansionPanel/shared.mjs +4 -0
  66. package/lib/components/VExpansionPanel/shared.mjs.map +1 -0
  67. package/lib/components/VField/VField.css +1 -0
  68. package/lib/components/VField/VField.sass +2 -0
  69. package/lib/components/VList/VList.mjs +3 -1
  70. package/lib/components/VList/VList.mjs.map +1 -1
  71. package/lib/components/VList/VListChildren.mjs +2 -1
  72. package/lib/components/VList/VListChildren.mjs.map +1 -1
  73. package/lib/components/VList/VListGroup.mjs +1 -0
  74. package/lib/components/VList/VListGroup.mjs.map +1 -1
  75. package/lib/components/VList/VListItem.css +2 -2
  76. package/lib/components/VList/VListItem.mjs +2 -0
  77. package/lib/components/VList/VListItem.mjs.map +1 -1
  78. package/lib/components/VList/VListItem.sass +1 -1
  79. package/lib/components/VList/index.d.mts +52 -66
  80. package/lib/components/VSelect/index.d.mts +102 -336
  81. package/lib/components/VSelectionControl/VSelectionControl.mjs +9 -1
  82. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  83. package/lib/components/VSlider/VSlider.mjs +2 -1
  84. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  85. package/lib/components/VSlider/VSliderThumb.mjs +2 -0
  86. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  87. package/lib/components/VSnackbar/VSnackbar.css +1 -1
  88. package/lib/components/VSnackbar/VSnackbar.sass +1 -1
  89. package/lib/components/VStepper/VStepper.mjs +19 -5
  90. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  91. package/lib/components/VStepper/VStepperItem.css +3 -0
  92. package/lib/components/VStepper/VStepperItem.mjs +1 -1
  93. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  94. package/lib/components/VStepper/VStepperItem.sass +3 -0
  95. package/lib/components/VStepper/VStepperWindow.mjs +2 -2
  96. package/lib/components/VStepper/VStepperWindow.mjs.map +1 -1
  97. package/lib/components/VStepper/index.d.mts +43 -9
  98. package/lib/components/VStepper/shared.mjs +4 -0
  99. package/lib/components/VStepper/shared.mjs.map +1 -0
  100. package/lib/components/VTabs/VTabs.mjs +2 -2
  101. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  102. package/lib/components/index.d.mts +490 -1092
  103. package/lib/composables/defaults.mjs +4 -2
  104. package/lib/composables/defaults.mjs.map +1 -1
  105. package/lib/composables/dimensions.mjs +16 -8
  106. package/lib/composables/dimensions.mjs.map +1 -1
  107. package/lib/composables/filter.mjs +1 -1
  108. package/lib/composables/filter.mjs.map +1 -1
  109. package/lib/entry-bundler.mjs +1 -1
  110. package/lib/framework.mjs +1 -1
  111. package/lib/index.d.mts +40 -40
  112. package/lib/labs/VCalendar/VCalendar.mjs +2 -2
  113. package/lib/labs/VCalendar/VCalendar.mjs.map +1 -1
  114. package/lib/labs/VDateInput/index.d.mts +6 -6
  115. package/lib/labs/VNumberInput/VNumberInput.mjs +7 -0
  116. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  117. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +1 -2
  118. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs.map +1 -1
  119. package/lib/labs/VStepperVertical/index.d.mts +43 -9
  120. package/lib/labs/VTreeview/VTreeview.mjs +1 -1
  121. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  122. package/lib/labs/VTreeview/VTreeviewChildren.mjs +30 -25
  123. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  124. package/lib/labs/VTreeview/VTreeviewItem.mjs +83 -12
  125. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  126. package/lib/labs/VTreeview/index.d.mts +110 -300
  127. package/lib/labs/components.d.mts +3408 -3564
  128. package/lib/locale/fa.mjs +10 -10
  129. package/lib/locale/fa.mjs.map +1 -1
  130. package/lib/styles/main.css +76 -0
  131. package/lib/styles/settings/_utilities.scss +5 -1
  132. package/lib/util/helpers.mjs +2 -0
  133. package/lib/util/helpers.mjs.map +1 -1
  134. package/package.json +2 -2
@@ -7,6 +7,7 @@ import { VBtn } from "../../components/VBtn/index.mjs";
7
7
  import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs";
8
8
  import { VDivider } from "../../components/VDivider/index.mjs";
9
9
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.mjs"; // Composables
10
+ import { useForm } from "../../composables/form.mjs";
10
11
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
11
12
  import { computed, watchEffect } from 'vue';
12
13
  import { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
@@ -49,15 +50,20 @@ export const VNumberInput = genericComponent()({
49
50
  const model = useProxiedModel(props, 'modelValue');
50
51
  const stepDecimals = computed(() => getDecimals(props.step));
51
52
  const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0);
53
+ const form = useForm();
54
+ const controlsDisabled = computed(() => props.disabled || props.readonly || form?.isReadonly.value);
52
55
  const canIncrease = computed(() => {
56
+ if (controlsDisabled.value) return false;
53
57
  if (model.value == null) return true;
54
58
  return model.value + props.step <= props.max;
55
59
  });
56
60
  const canDecrease = computed(() => {
61
+ if (controlsDisabled.value) return false;
57
62
  if (model.value == null) return true;
58
63
  return model.value - props.step >= props.min;
59
64
  });
60
65
  watchEffect(() => {
66
+ if (controlsDisabled.value) return;
61
67
  if (model.value != null && (model.value < props.min || model.value > props.max)) {
62
68
  model.value = clamp(model.value, props.min, props.max);
63
69
  }
@@ -73,6 +79,7 @@ export const VNumberInput = genericComponent()({
73
79
  }));
74
80
  function toggleUpDown() {
75
81
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
82
+ if (controlsDisabled.value) return;
76
83
  if (model.value == null) {
77
84
  model.value = 0;
78
85
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useProxiedModel","computed","watchEffect","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","Infinity","max","step","VNumberInput","name","inheritAttrs","props","emits","val","setup","_ref","attrs","emit","slots","model","stepDecimals","modelDecimals","value","canIncrease","canDecrease","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onKeydown","includes","key","ctrlKey","preventDefault","test","onModelUpdate","v","onControlMousedown","modelValue","_","textFieldProps","filterProps","controlNode","defaultHeight","_createVNode","decrement","disabled","flat","height","size","icon","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: {\n type: Number,\n default: -Infinity,\n },\n max: {\n type: Number,\n default: Infinity,\n },\n step: {\n type: Number,\n default: 1,\n },\n\n ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n inheritAttrs: false,\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0)\n\n const canIncrease = computed(() => {\n if (model.value == null) return true\n return model.value + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (model.value == null) return true\n return model.value - props.step >= props.min\n })\n\n watchEffect(() => {\n if (model.value != null && (model.value < props.min || model.value > props.max)) {\n model.value = clamp(model.value, props.min, props.max)\n }\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n function toggleUpDown (increment = true) {\n if (model.value == null) {\n model.value = 0\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +(((model.value + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +(((model.value - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown(false)\n return\n }\n if (['ArrowUp'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown()\n return\n }\n\n // Only numbers, +, - & . are allowed\n if (!/^[0-9\\-+.]+$/.test(e.key)) {\n e.preventDefault()\n }\n }\n\n function onModelUpdate (v: string) {\n model.value = v ? +(v) : undefined\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function controlNode () {\n const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%'\n return (\n <div class=\"v-number-input__control\">\n {\n !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ defaultHeight }\n name=\"decrement-btn\"\n icon=\"$expand\"\n size=\"small\"\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: defaultHeight,\n size: 'small',\n icon: '$expand',\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n {\n !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ defaultHeight }\n name=\"increment-btn\"\n icon=\"$collapse\"\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size=\"small\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: defaultHeight,\n size: 'small',\n icon: '$collapse',\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n <VBtn\n flat\n height=\"100%\"\n icon=\"$plus\"\n tile\n tabindex=\"-1\"\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n />\n </div>\n ) : (!props.reverse\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VBtn\n flat\n height=\"100%\"\n icon=\"$minus\"\n tile\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n modelValue={ model.value }\n onUpdate:modelValue={ onModelUpdate }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","useProxiedModel","computed","watchEffect","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","Infinity","max","step","VNumberInput","name","inheritAttrs","props","emits","val","setup","_ref","attrs","emit","slots","model","stepDecimals","modelDecimals","value","form","controlsDisabled","disabled","readonly","isReadonly","canIncrease","canDecrease","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onKeydown","includes","key","ctrlKey","preventDefault","test","onModelUpdate","v","onControlMousedown","modelValue","_","textFieldProps","filterProps","controlNode","defaultHeight","_createVNode","decrement","flat","height","size","icon","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: {\n type: Number,\n default: -Infinity,\n },\n max: {\n type: Number,\n default: Infinity,\n },\n step: {\n type: Number,\n default: 1,\n },\n\n ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n inheritAttrs: false,\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0)\n\n const form = useForm()\n const controlsDisabled = computed(() => (\n props.disabled || props.readonly || form?.isReadonly.value\n ))\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value - props.step >= props.min\n })\n\n watchEffect(() => {\n if (controlsDisabled.value) return\n if (model.value != null && (model.value < props.min || model.value > props.max)) {\n model.value = clamp(model.value, props.min, props.max)\n }\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n model.value = 0\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +(((model.value + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +(((model.value - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown(false)\n return\n }\n if (['ArrowUp'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown()\n return\n }\n\n // Only numbers, +, - & . are allowed\n if (!/^[0-9\\-+.]+$/.test(e.key)) {\n e.preventDefault()\n }\n }\n\n function onModelUpdate (v: string) {\n model.value = v ? +(v) : undefined\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function controlNode () {\n const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%'\n return (\n <div class=\"v-number-input__control\">\n {\n !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ defaultHeight }\n name=\"decrement-btn\"\n icon=\"$expand\"\n size=\"small\"\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: defaultHeight,\n size: 'small',\n icon: '$expand',\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n {\n !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ defaultHeight }\n name=\"increment-btn\"\n icon=\"$collapse\"\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size=\"small\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: defaultHeight,\n size: 'small',\n icon: '$collapse',\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n <VBtn\n flat\n height=\"100%\"\n icon=\"$plus\"\n tile\n tabindex=\"-1\"\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n />\n </div>\n ) : (!props.reverse\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VBtn\n flat\n height=\"100%\"\n icon=\"$minus\"\n tile\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n modelValue={ model.value }\n onUpdate:modelValue={ onModelUpdate }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
@@ -6,8 +6,7 @@ import "./VStepperVerticalItem.css";
6
6
  import { VStepperVerticalActions } from "./VStepperVerticalActions.mjs";
7
7
  import { VAvatar } from "../../components/VAvatar/VAvatar.mjs";
8
8
  import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.mjs";
9
- import { VExpansionPanel } from "../../components/VExpansionPanel/index.mjs";
10
- import { makeVExpansionPanelProps } from "../../components/VExpansionPanel/VExpansionPanel.mjs";
9
+ import { makeVExpansionPanelProps, VExpansionPanel } from "../../components/VExpansionPanel/VExpansionPanel.mjs";
11
10
  import { VIcon } from "../../components/VIcon/VIcon.mjs";
12
11
  import { makeStepperItemProps } from "../../components/VStepper/VStepperItem.mjs"; // Utilities
13
12
  import { computed, ref } from 'vue';
@@ -1 +1 @@
1
- {"version":3,"file":"VStepperVerticalItem.mjs","names":["VStepperVerticalActions","VAvatar","VDefaultsProvider","VExpansionPanel","makeVExpansionPanelProps","VIcon","makeStepperItemProps","computed","ref","genericComponent","omit","propsFactory","useRender","makeVStepperVerticalItemProps","hideActions","Boolean","expandIcon","collapseIcon","VStepperVerticalItem","name","props","emits","click:next","click:prev","click:finish","setup","_ref","emit","slots","vExpansionPanelRef","step","isNaN","parseInt","value","Number","groupItem","isSelected","isValid","rules","every","handler","canEdit","disabled","editable","hasError","error","hasCompleted","complete","length","isFirst","icon","errorIcon","completeIcon","editIcon","slotProps","title","subtitle","actionProps","prev","onClickPrev","next","onClickNext","isLast","group","hasColor","hasActions","actions","expansionPanelProps","filterProps","_createVNode","_mergeProps","class","style","_Fragment","color","undefined","default","text","finish"],"sources":["../../../src/labs/VStepperVertical/VStepperVerticalItem.tsx"],"sourcesContent":["// Styles\nimport './VStepperVerticalItem.sass'\n\n// Components\nimport { VStepperVerticalActions } from './VStepperVerticalActions'\nimport { VAvatar } from '@/components/VAvatar/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { VExpansionPanel } from '@/components/VExpansionPanel'\nimport { makeVExpansionPanelProps } from '@/components/VExpansionPanel/VExpansionPanel'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { makeStepperItemProps } from '@/components/VStepper/VStepperItem'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { StepperItemSlot } from '@/components/VStepper/VStepperItem'\n\nexport type VStepperVerticalItemSlots = {\n default: StepperItemSlot\n icon: StepperItemSlot\n subtitle: StepperItemSlot\n title: StepperItemSlot\n text: StepperItemSlot\n prev: StepperItemSlot\n next: StepperItemSlot\n actions: StepperItemSlot & {\n next: () => void\n prev: () => void\n }\n}\n\nexport const makeVStepperVerticalItemProps = propsFactory({\n hideActions: Boolean,\n\n ...makeStepperItemProps(),\n ...omit(makeVExpansionPanelProps({\n expandIcon: '',\n collapseIcon: '',\n }), ['hideActions']),\n}, 'VStepperVerticalItem')\n\nexport const VStepperVerticalItem = genericComponent<VStepperVerticalItemSlots>()({\n name: 'VStepperVerticalItem',\n\n props: makeVStepperVerticalItemProps(),\n\n emits: {\n 'click:next': () => true,\n 'click:prev': () => true,\n 'click:finish': () => true,\n },\n\n setup (props, { emit, slots }) {\n const vExpansionPanelRef = ref<typeof VExpansionPanel>()\n const step = computed(() => !isNaN(parseInt(props.value)) ? Number(props.value) : props.value)\n const groupItem = computed(() => vExpansionPanelRef.value?.groupItem)\n const isSelected = computed(() => groupItem.value?.isSelected.value ?? false)\n const isValid = computed(() => isSelected.value ? props.rules.every(handler => handler() === true) : null)\n const canEdit = computed(() => !props.disabled && props.editable)\n const hasError = computed(() => props.error || (isSelected.value && !isValid.value))\n const hasCompleted = computed(() => props.complete || (props.rules.length > 0 && isValid.value === true))\n\n const disabled = computed(() => {\n if (props.disabled) return props.disabled\n if (groupItem.value?.isFirst.value) return 'prev'\n\n return false\n })\n const icon = computed(() => {\n if (hasError.value) return props.errorIcon\n if (hasCompleted.value) return props.completeIcon\n if (groupItem.value?.isSelected.value && props.editable) return props.editIcon\n\n return props.icon\n })\n\n const slotProps = computed(() => ({\n canEdit: canEdit.value,\n hasError: hasError.value,\n hasCompleted: hasCompleted.value,\n title: props.title,\n subtitle: props.subtitle,\n step: step.value,\n value: props.value,\n }))\n\n const actionProps = computed(() => ({\n ...slotProps.value,\n prev: onClickPrev,\n next: onClickNext,\n }))\n\n function onClickNext () {\n emit('click:next')\n\n if (groupItem.value?.isLast.value) return\n\n groupItem.value.group.next()\n }\n\n function onClickPrev () {\n emit('click:prev')\n\n groupItem.value.group.prev()\n }\n\n useRender(() => {\n const hasColor = (\n hasCompleted.value ||\n groupItem.value?.isSelected.value\n ) && (\n !hasError.value &&\n !props.disabled\n )\n\n const hasActions = !props.hideActions || !!slots.actions\n const expansionPanelProps = VExpansionPanel.filterProps(props)\n\n return (\n <VExpansionPanel\n _as=\"VStepperVerticalItem\"\n ref={ vExpansionPanelRef }\n { ...expansionPanelProps }\n class={[\n 'v-stepper-vertical-item',\n {\n 'v-stepper-vertical-item--complete': hasCompleted.value,\n 'v-stepper-vertical-item--disabled': props.disabled,\n 'v-stepper-vertical-item--editable': canEdit.value,\n 'v-stepper-vertical-item--error': hasError.value,\n },\n props.class,\n ]}\n readonly={ !props.editable }\n style={ props.style }\n color=\"\"\n hide-actions={ false }\n value={ step.value }\n >\n {{\n title: () => (\n <>\n <VAvatar\n key=\"stepper-avatar\"\n class=\"v-stepper-vertical-item__avatar\"\n color={ hasColor ? props.color : undefined }\n size={ 24 }\n start\n >\n { slots.icon?.(slotProps.value) ?? (\n icon.value ? (\n <VIcon icon={ icon.value }></VIcon>\n ) : step.value\n )}\n </VAvatar>\n\n <div>\n <div class=\"v-stepper-vertical-item__title\">\n { slots.title?.(slotProps.value) ?? props.title }\n </div>\n\n <div class=\"v-stepper-vertical-item__subtitle\">\n { slots.subtitle?.(slotProps.value) ?? props.subtitle }\n </div>\n </div>\n </>\n ),\n text: () => (\n <>\n { slots.default?.(slotProps.value) ?? props.text }\n\n { hasActions && (\n <VDefaultsProvider\n defaults={{\n VStepperVerticalActions: {\n disabled: disabled.value,\n finish: groupItem.value?.isLast.value,\n },\n }}\n >\n { slots.actions?.(actionProps.value) ?? (\n <VStepperVerticalActions\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n v-slots={{\n prev: slots.prev ? () => slots.prev?.(actionProps.value) : undefined,\n next: slots.next ? () => slots.next?.(actionProps.value) : undefined,\n }}\n />\n )}\n </VDefaultsProvider>\n )}\n </>\n ),\n }}\n </VExpansionPanel>\n )\n })\n\n return {}\n },\n})\n\nexport type VStepperVerticalItem = InstanceType<typeof VStepperVerticalItem>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VStepperVerticalItem.mjs","names":["VStepperVerticalActions","VAvatar","VDefaultsProvider","makeVExpansionPanelProps","VExpansionPanel","VIcon","makeStepperItemProps","computed","ref","genericComponent","omit","propsFactory","useRender","makeVStepperVerticalItemProps","hideActions","Boolean","expandIcon","collapseIcon","VStepperVerticalItem","name","props","emits","click:next","click:prev","click:finish","setup","_ref","emit","slots","vExpansionPanelRef","step","isNaN","parseInt","value","Number","groupItem","isSelected","isValid","rules","every","handler","canEdit","disabled","editable","hasError","error","hasCompleted","complete","length","isFirst","icon","errorIcon","completeIcon","editIcon","slotProps","title","subtitle","actionProps","prev","onClickPrev","next","onClickNext","isLast","group","hasColor","hasActions","actions","expansionPanelProps","filterProps","_createVNode","_mergeProps","class","style","_Fragment","color","undefined","default","text","finish"],"sources":["../../../src/labs/VStepperVertical/VStepperVerticalItem.tsx"],"sourcesContent":["// Styles\nimport './VStepperVerticalItem.sass'\n\n// Components\nimport { VStepperVerticalActions } from './VStepperVerticalActions'\nimport { VAvatar } from '@/components/VAvatar/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVExpansionPanelProps, VExpansionPanel } from '@/components/VExpansionPanel/VExpansionPanel'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { makeStepperItemProps } from '@/components/VStepper/VStepperItem'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { StepperItemSlot } from '@/components/VStepper/VStepperItem'\n\nexport type VStepperVerticalItemSlots = {\n default: StepperItemSlot\n icon: StepperItemSlot\n subtitle: StepperItemSlot\n title: StepperItemSlot\n text: StepperItemSlot\n prev: StepperItemSlot\n next: StepperItemSlot\n actions: StepperItemSlot & {\n next: () => void\n prev: () => void\n }\n}\n\nexport const makeVStepperVerticalItemProps = propsFactory({\n hideActions: Boolean,\n\n ...makeStepperItemProps(),\n ...omit(makeVExpansionPanelProps({\n expandIcon: '',\n collapseIcon: '',\n }), ['hideActions']),\n}, 'VStepperVerticalItem')\n\nexport const VStepperVerticalItem = genericComponent<VStepperVerticalItemSlots>()({\n name: 'VStepperVerticalItem',\n\n props: makeVStepperVerticalItemProps(),\n\n emits: {\n 'click:next': () => true,\n 'click:prev': () => true,\n 'click:finish': () => true,\n },\n\n setup (props, { emit, slots }) {\n const vExpansionPanelRef = ref<typeof VExpansionPanel>()\n const step = computed(() => !isNaN(parseInt(props.value)) ? Number(props.value) : props.value)\n const groupItem = computed(() => vExpansionPanelRef.value?.groupItem)\n const isSelected = computed(() => groupItem.value?.isSelected.value ?? false)\n const isValid = computed(() => isSelected.value ? props.rules.every(handler => handler() === true) : null)\n const canEdit = computed(() => !props.disabled && props.editable)\n const hasError = computed(() => props.error || (isSelected.value && !isValid.value))\n const hasCompleted = computed(() => props.complete || (props.rules.length > 0 && isValid.value === true))\n\n const disabled = computed(() => {\n if (props.disabled) return props.disabled\n if (groupItem.value?.isFirst.value) return 'prev'\n\n return false\n })\n const icon = computed(() => {\n if (hasError.value) return props.errorIcon\n if (hasCompleted.value) return props.completeIcon\n if (groupItem.value?.isSelected.value && props.editable) return props.editIcon\n\n return props.icon\n })\n\n const slotProps = computed(() => ({\n canEdit: canEdit.value,\n hasError: hasError.value,\n hasCompleted: hasCompleted.value,\n title: props.title,\n subtitle: props.subtitle,\n step: step.value,\n value: props.value,\n }))\n\n const actionProps = computed(() => ({\n ...slotProps.value,\n prev: onClickPrev,\n next: onClickNext,\n }))\n\n function onClickNext () {\n emit('click:next')\n\n if (groupItem.value?.isLast.value) return\n\n groupItem.value.group.next()\n }\n\n function onClickPrev () {\n emit('click:prev')\n\n groupItem.value.group.prev()\n }\n\n useRender(() => {\n const hasColor = (\n hasCompleted.value ||\n groupItem.value?.isSelected.value\n ) && (\n !hasError.value &&\n !props.disabled\n )\n\n const hasActions = !props.hideActions || !!slots.actions\n const expansionPanelProps = VExpansionPanel.filterProps(props)\n\n return (\n <VExpansionPanel\n _as=\"VStepperVerticalItem\"\n ref={ vExpansionPanelRef }\n { ...expansionPanelProps }\n class={[\n 'v-stepper-vertical-item',\n {\n 'v-stepper-vertical-item--complete': hasCompleted.value,\n 'v-stepper-vertical-item--disabled': props.disabled,\n 'v-stepper-vertical-item--editable': canEdit.value,\n 'v-stepper-vertical-item--error': hasError.value,\n },\n props.class,\n ]}\n readonly={ !props.editable }\n style={ props.style }\n color=\"\"\n hide-actions={ false }\n value={ step.value }\n >\n {{\n title: () => (\n <>\n <VAvatar\n key=\"stepper-avatar\"\n class=\"v-stepper-vertical-item__avatar\"\n color={ hasColor ? props.color : undefined }\n size={ 24 }\n start\n >\n { slots.icon?.(slotProps.value) ?? (\n icon.value ? (\n <VIcon icon={ icon.value }></VIcon>\n ) : step.value\n )}\n </VAvatar>\n\n <div>\n <div class=\"v-stepper-vertical-item__title\">\n { slots.title?.(slotProps.value) ?? props.title }\n </div>\n\n <div class=\"v-stepper-vertical-item__subtitle\">\n { slots.subtitle?.(slotProps.value) ?? props.subtitle }\n </div>\n </div>\n </>\n ),\n text: () => (\n <>\n { slots.default?.(slotProps.value) ?? props.text }\n\n { hasActions && (\n <VDefaultsProvider\n defaults={{\n VStepperVerticalActions: {\n disabled: disabled.value,\n finish: groupItem.value?.isLast.value,\n },\n }}\n >\n { slots.actions?.(actionProps.value) ?? (\n <VStepperVerticalActions\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n v-slots={{\n prev: slots.prev ? () => slots.prev?.(actionProps.value) : undefined,\n next: slots.next ? () => slots.next?.(actionProps.value) : undefined,\n }}\n />\n )}\n </VDefaultsProvider>\n )}\n </>\n ),\n }}\n </VExpansionPanel>\n )\n })\n\n return {}\n },\n})\n\nexport type VStepperVerticalItem = InstanceType<typeof VStepperVerticalItem>\n"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,10 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
6
6
  }
7
7
 
8
+ declare const breakpoints: readonly ["sm", "md", "lg", "xl", "xxl"];
9
+ type Breakpoint = typeof breakpoints[number];
10
+ type DisplayBreakpoint = 'xs' | Breakpoint;
11
+
8
12
  type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
9
13
  declare const IconValue: PropType<IconValue>;
10
14
 
@@ -30,7 +34,7 @@ declare const VStepperVertical: {
30
34
  style: vue.StyleValue;
31
35
  disabled: boolean;
32
36
  tag: string;
33
- mobile: boolean;
37
+ mobile: boolean | null;
34
38
  readonly: boolean;
35
39
  variant: NonNullable<"default" | "inset" | "accordion" | "popout">;
36
40
  items: readonly StepperItem[];
@@ -59,12 +63,16 @@ declare const VStepperVertical: {
59
63
  value?: any;
60
64
  theme?: string | undefined;
61
65
  color?: string | undefined;
66
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
62
67
  modelValue?: any;
63
68
  rounded?: string | number | boolean | undefined;
64
69
  elevation?: string | number | undefined;
65
70
  max?: number | undefined;
66
71
  selectedClass?: string | undefined;
67
72
  bgColor?: string | undefined;
73
+ completeIcon?: string | undefined;
74
+ editIcon?: string | undefined;
75
+ errorIcon?: string | undefined;
68
76
  } & {
69
77
  $children?: vue.VNodeChild | {
70
78
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -118,7 +126,7 @@ declare const VStepperVertical: {
118
126
  style: vue.StyleValue;
119
127
  disabled: boolean;
120
128
  tag: string;
121
- mobile: boolean;
129
+ mobile: boolean | null;
122
130
  readonly: boolean;
123
131
  variant: NonNullable<"default" | "inset" | "accordion" | "popout">;
124
132
  items: readonly StepperItem[];
@@ -147,12 +155,16 @@ declare const VStepperVertical: {
147
155
  value?: any;
148
156
  theme?: string | undefined;
149
157
  color?: string | undefined;
158
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
150
159
  modelValue?: any;
151
160
  rounded?: string | number | boolean | undefined;
152
161
  elevation?: string | number | undefined;
153
162
  max?: number | undefined;
154
163
  selectedClass?: string | undefined;
155
164
  bgColor?: string | undefined;
165
+ completeIcon?: string | undefined;
166
+ editIcon?: string | undefined;
167
+ errorIcon?: string | undefined;
156
168
  } & {
157
169
  $children?: vue.VNodeChild | {
158
170
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -204,7 +216,7 @@ declare const VStepperVertical: {
204
216
  style: vue.StyleValue;
205
217
  disabled: boolean;
206
218
  tag: string;
207
- mobile: boolean;
219
+ mobile: boolean | null;
208
220
  readonly: boolean;
209
221
  modelValue: any;
210
222
  rounded: string | number | boolean;
@@ -273,7 +285,7 @@ declare const VStepperVertical: {
273
285
  style: vue.StyleValue;
274
286
  disabled: boolean;
275
287
  tag: string;
276
- mobile: boolean;
288
+ mobile: boolean | null;
277
289
  readonly: boolean;
278
290
  variant: NonNullable<"default" | "inset" | "accordion" | "popout">;
279
291
  items: readonly StepperItem[];
@@ -302,12 +314,16 @@ declare const VStepperVertical: {
302
314
  value?: any;
303
315
  theme?: string | undefined;
304
316
  color?: string | undefined;
317
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
305
318
  modelValue?: any;
306
319
  rounded?: string | number | boolean | undefined;
307
320
  elevation?: string | number | undefined;
308
321
  max?: number | undefined;
309
322
  selectedClass?: string | undefined;
310
323
  bgColor?: string | undefined;
324
+ completeIcon?: string | undefined;
325
+ editIcon?: string | undefined;
326
+ errorIcon?: string | undefined;
311
327
  } & {
312
328
  $children?: vue.VNodeChild | {
313
329
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -359,7 +375,7 @@ declare const VStepperVertical: {
359
375
  style: vue.StyleValue;
360
376
  disabled: boolean;
361
377
  tag: string;
362
- mobile: boolean;
378
+ mobile: boolean | null;
363
379
  readonly: boolean;
364
380
  modelValue: any;
365
381
  rounded: string | number | boolean;
@@ -392,7 +408,7 @@ declare const VStepperVertical: {
392
408
  style: vue.StyleValue;
393
409
  disabled: boolean;
394
410
  tag: string;
395
- mobile: boolean;
411
+ mobile: boolean | null;
396
412
  readonly: boolean;
397
413
  variant: NonNullable<"default" | "inset" | "accordion" | "popout">;
398
414
  items: readonly StepperItem[];
@@ -421,12 +437,16 @@ declare const VStepperVertical: {
421
437
  value?: any;
422
438
  theme?: string | undefined;
423
439
  color?: string | undefined;
440
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
424
441
  modelValue?: any;
425
442
  rounded?: string | number | boolean | undefined;
426
443
  elevation?: string | number | undefined;
427
444
  max?: number | undefined;
428
445
  selectedClass?: string | undefined;
429
446
  bgColor?: string | undefined;
447
+ completeIcon?: string | undefined;
448
+ editIcon?: string | undefined;
449
+ errorIcon?: string | undefined;
430
450
  } & {
431
451
  $children?: vue.VNodeChild | {
432
452
  [x: `header-item.${string}`]: ((arg: StepperItemSlot) => vue.VNodeChild) | undefined;
@@ -480,7 +500,7 @@ declare const VStepperVertical: {
480
500
  style: vue.StyleValue;
481
501
  disabled: boolean;
482
502
  tag: string;
483
- mobile: boolean;
503
+ mobile: boolean | null;
484
504
  readonly: boolean;
485
505
  modelValue: any;
486
506
  rounded: string | number | boolean;
@@ -601,8 +621,16 @@ declare const VStepperVertical: {
601
621
  };
602
622
  hideActions: BooleanConstructor;
603
623
  focusable: BooleanConstructor;
624
+ mobile: {
625
+ type: vue.PropType<boolean | null>;
626
+ default: boolean;
627
+ };
628
+ mobileBreakpoint: vue.PropType<number | DisplayBreakpoint>;
604
629
  altLabels: BooleanConstructor;
630
+ completeIcon: StringConstructor;
631
+ editIcon: StringConstructor;
605
632
  editable: BooleanConstructor;
633
+ errorIcon: StringConstructor;
606
634
  items: {
607
635
  type: vue.PropType<readonly StepperItem[]>;
608
636
  default: () => never[];
@@ -615,7 +643,6 @@ declare const VStepperVertical: {
615
643
  type: StringConstructor;
616
644
  default: string;
617
645
  };
618
- mobile: BooleanConstructor;
619
646
  nonLinear: BooleanConstructor;
620
647
  prevText: {
621
648
  type: StringConstructor;
@@ -689,8 +716,16 @@ declare const VStepperVertical: {
689
716
  };
690
717
  hideActions: BooleanConstructor;
691
718
  focusable: BooleanConstructor;
719
+ mobile: {
720
+ type: vue.PropType<boolean | null>;
721
+ default: boolean;
722
+ };
723
+ mobileBreakpoint: vue.PropType<number | DisplayBreakpoint>;
692
724
  altLabels: BooleanConstructor;
725
+ completeIcon: StringConstructor;
726
+ editIcon: StringConstructor;
693
727
  editable: BooleanConstructor;
728
+ errorIcon: StringConstructor;
694
729
  items: {
695
730
  type: vue.PropType<readonly StepperItem[]>;
696
731
  default: () => never[];
@@ -703,7 +738,6 @@ declare const VStepperVertical: {
703
738
  type: StringConstructor;
704
739
  default: string;
705
740
  };
706
- mobile: BooleanConstructor;
707
741
  nonLinear: BooleanConstructor;
708
742
  prevText: {
709
743
  type: StringConstructor;
@@ -26,7 +26,7 @@ export const makeVTreeviewProps = propsFactory({
26
26
  ...omit(makeVListProps({
27
27
  collapseIcon: '$treeviewCollapse',
28
28
  expandIcon: '$treeviewExpand',
29
- selectStrategy: 'independent',
29
+ selectStrategy: 'classic',
30
30
  openStrategy: 'multiple',
31
31
  slim: true
32
32
  }), ['nav'])
@@ -1 +1 @@
1
- {"version":3,"file":"VTreeview.mjs","names":["makeVTreeviewChildrenProps","VTreeviewChildren","makeVListProps","useListItems","VList","provideDefaults","makeFilterProps","useFilter","useProxiedModel","computed","provide","ref","toRef","watch","genericComponent","omit","propsFactory","useRender","VTreeviewSymbol","flatten","items","flat","arguments","length","undefined","item","push","children","makeVTreeviewProps","openAll","Boolean","search","String","filterKeys","collapseIcon","expandIcon","selectStrategy","openStrategy","slim","VTreeview","name","props","emits","val","value","setup","_ref","slots","activeColor","baseColor","color","opened","activated","selected","vListRef","flatItems","filteredItems","visibleIds","Set","flatMap","getPath","getChildren","id","path","parent","unshift","parents","get","arr","queue","slice","child","shift","immediate","ids","i","concat","VTreeviewGroup","VTreeviewItem","activeClass","density","disabled","lines","variant","listProps","filterProps","treeviewChildrenProps","_createVNode","_mergeProps","class","style","$event","default","open"],"sources":["../../../src/labs/VTreeview/VTreeview.tsx"],"sourcesContent":["// Components\nimport { makeVTreeviewChildrenProps, VTreeviewChildren } from './VTreeviewChildren'\nimport { makeVListProps, useListItems, VList } from '@/components/VList/VList'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, provide, ref, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListChildrenSlots } from '@/components/VList/VListChildren'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps } from '@/util'\n\nfunction flatten (items: ListItem[], flat: ListItem[] = []) {\n for (const item of items) {\n flat.push(item)\n if (item.children) flatten(item.children, flat)\n }\n return flat\n}\n\nexport const makeVTreeviewProps = propsFactory({\n openAll: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeVTreeviewChildrenProps(),\n ...omit(makeVListProps({\n collapseIcon: '$treeviewCollapse',\n expandIcon: '$treeviewExpand',\n selectStrategy: 'independent' as const,\n openStrategy: 'multiple' as const,\n slim: true,\n }), ['nav']),\n}, 'VTreeview')\n\nexport const VTreeview = genericComponent<new <T>(\n props: {\n items?: T[]\n },\n slots: VListChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeview',\n\n props: makeVTreeviewProps(),\n\n emits: {\n 'update:opened': (val: unknown) => true,\n 'update:activated': (val: unknown) => true,\n 'update:selected': (val: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const activeColor = toRef(props, 'activeColor')\n const baseColor = toRef(props, 'baseColor')\n const color = toRef(props, 'color')\n const opened = useProxiedModel(props, 'opened')\n const activated = useProxiedModel(props, 'activated')\n const selected = useProxiedModel(props, 'selected')\n\n const vListRef = ref<VList>()\n\n const flatItems = computed(() => flatten(items.value))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, flatItems, search)\n const visibleIds = computed(() => {\n if (!search.value) {\n return null\n }\n return new Set(filteredItems.value.flatMap(item => {\n return [...getPath(item.props.value), ...getChildren(item.props.value)]\n }))\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n while (parent != null) {\n path.unshift(parent)\n parent = vListRef.value?.parents.get(parent)\n }\n return path\n }\n\n function getChildren (id: unknown) {\n const arr: unknown[] = []\n const queue = ((vListRef.value?.children.get(id) ?? []).slice())\n while (queue.length) {\n const child = queue.shift()\n if (!child) continue\n arr.push(child)\n queue.push(...((vListRef.value?.children.get(child) ?? []).slice()))\n }\n return arr\n }\n\n watch(() => props.openAll, val => {\n opened.value = val ? openAll(items.value) : []\n }, { immediate: true })\n\n function openAll (item: any) {\n let ids: number[] = []\n\n for (const i of item) {\n if (!i.children) continue\n\n ids.push(i.value)\n\n if (i.children) {\n ids = ids.concat(openAll(i.children))\n }\n }\n\n return ids\n }\n\n provide(VTreeviewSymbol, { visibleIds })\n\n provideDefaults({\n VTreeviewGroup: {\n activeColor,\n baseColor,\n color,\n collapseIcon: toRef(props, 'collapseIcon'),\n expandIcon: toRef(props, 'expandIcon'),\n },\n VTreeviewItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => {\n const listProps = VList.filterProps(props)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return (\n <VList\n ref={ vListRef }\n { ...listProps }\n class={[\n 'v-treeview',\n props.class,\n ]}\n style={ props.style }\n v-model:opened={ opened.value }\n v-model:activated={ activated.value }\n v-model:selected={ selected.value }\n >\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ items.value }\n v-slots={ slots }\n ></VTreeviewChildren>\n </VList>\n )\n })\n\n return {\n open,\n }\n },\n})\n\nexport type VTreeview = InstanceType<typeof VTreeview>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VTreeview.mjs","names":["makeVTreeviewChildrenProps","VTreeviewChildren","makeVListProps","useListItems","VList","provideDefaults","makeFilterProps","useFilter","useProxiedModel","computed","provide","ref","toRef","watch","genericComponent","omit","propsFactory","useRender","VTreeviewSymbol","flatten","items","flat","arguments","length","undefined","item","push","children","makeVTreeviewProps","openAll","Boolean","search","String","filterKeys","collapseIcon","expandIcon","selectStrategy","openStrategy","slim","VTreeview","name","props","emits","val","value","setup","_ref","slots","activeColor","baseColor","color","opened","activated","selected","vListRef","flatItems","filteredItems","visibleIds","Set","flatMap","getPath","getChildren","id","path","parent","unshift","parents","get","arr","queue","slice","child","shift","immediate","ids","i","concat","VTreeviewGroup","VTreeviewItem","activeClass","density","disabled","lines","variant","listProps","filterProps","treeviewChildrenProps","_createVNode","_mergeProps","class","style","$event","default","open"],"sources":["../../../src/labs/VTreeview/VTreeview.tsx"],"sourcesContent":["// Components\nimport { makeVTreeviewChildrenProps, VTreeviewChildren } from './VTreeviewChildren'\nimport { makeVListProps, useListItems, VList } from '@/components/VList/VList'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, provide, ref, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListChildrenSlots } from '@/components/VList/VListChildren'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps } from '@/util'\n\nfunction flatten (items: ListItem[], flat: ListItem[] = []) {\n for (const item of items) {\n flat.push(item)\n if (item.children) flatten(item.children, flat)\n }\n return flat\n}\n\nexport const makeVTreeviewProps = propsFactory({\n openAll: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeVTreeviewChildrenProps(),\n ...omit(makeVListProps({\n collapseIcon: '$treeviewCollapse',\n expandIcon: '$treeviewExpand',\n selectStrategy: 'classic' as const,\n openStrategy: 'multiple' as const,\n slim: true,\n }), ['nav']),\n}, 'VTreeview')\n\nexport const VTreeview = genericComponent<new <T>(\n props: {\n items?: T[]\n },\n slots: VListChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeview',\n\n props: makeVTreeviewProps(),\n\n emits: {\n 'update:opened': (val: unknown) => true,\n 'update:activated': (val: unknown) => true,\n 'update:selected': (val: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const activeColor = toRef(props, 'activeColor')\n const baseColor = toRef(props, 'baseColor')\n const color = toRef(props, 'color')\n const opened = useProxiedModel(props, 'opened')\n const activated = useProxiedModel(props, 'activated')\n const selected = useProxiedModel(props, 'selected')\n\n const vListRef = ref<VList>()\n\n const flatItems = computed(() => flatten(items.value))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, flatItems, search)\n const visibleIds = computed(() => {\n if (!search.value) {\n return null\n }\n return new Set(filteredItems.value.flatMap(item => {\n return [...getPath(item.props.value), ...getChildren(item.props.value)]\n }))\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n while (parent != null) {\n path.unshift(parent)\n parent = vListRef.value?.parents.get(parent)\n }\n return path\n }\n\n function getChildren (id: unknown) {\n const arr: unknown[] = []\n const queue = ((vListRef.value?.children.get(id) ?? []).slice())\n while (queue.length) {\n const child = queue.shift()\n if (!child) continue\n arr.push(child)\n queue.push(...((vListRef.value?.children.get(child) ?? []).slice()))\n }\n return arr\n }\n\n watch(() => props.openAll, val => {\n opened.value = val ? openAll(items.value) : []\n }, { immediate: true })\n\n function openAll (item: any) {\n let ids: number[] = []\n\n for (const i of item) {\n if (!i.children) continue\n\n ids.push(i.value)\n\n if (i.children) {\n ids = ids.concat(openAll(i.children))\n }\n }\n\n return ids\n }\n\n provide(VTreeviewSymbol, { visibleIds })\n\n provideDefaults({\n VTreeviewGroup: {\n activeColor,\n baseColor,\n color,\n collapseIcon: toRef(props, 'collapseIcon'),\n expandIcon: toRef(props, 'expandIcon'),\n },\n VTreeviewItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => {\n const listProps = VList.filterProps(props)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return (\n <VList\n ref={ vListRef }\n { ...listProps }\n class={[\n 'v-treeview',\n props.class,\n ]}\n style={ props.style }\n v-model:opened={ opened.value }\n v-model:activated={ activated.value }\n v-model:selected={ selected.value }\n >\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ items.value }\n v-slots={ slots }\n ></VTreeviewChildren>\n </VList>\n )\n })\n\n return {\n open,\n }\n },\n})\n\nexport type VTreeview = InstanceType<typeof VTreeview>\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,9 @@
1
- import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
1
+ import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  // Components
3
3
  import { VTreeviewGroup } from "./VTreeviewGroup.mjs";
4
4
  import { VTreeviewItem } from "./VTreeviewItem.mjs";
5
5
  import { VCheckboxBtn } from "../../components/VCheckbox/index.mjs"; // Utilities
6
- import { shallowRef } from 'vue';
6
+ import { shallowRef, withModifiers } from 'vue';
7
7
  import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
8
8
  export const makeVTreeviewChildrenProps = propsFactory({
9
9
  loadChildren: Function,
@@ -12,7 +12,8 @@ export const makeVTreeviewChildrenProps = propsFactory({
12
12
  default: '$loading'
13
13
  },
14
14
  items: Array,
15
- selectable: Boolean
15
+ selectable: Boolean,
16
+ selectStrategy: [String, Function, Object]
16
17
  }, 'VTreeviewChildren');
17
18
  export const VTreeviewChildren = genericComponent()({
18
19
  name: 'VTreeviewChildren',
@@ -36,9 +37,10 @@ export const VTreeviewChildren = genericComponent()({
36
37
  isLoading.value = null;
37
38
  });
38
39
  }
39
- function onClick(e, item) {
40
- e.stopPropagation();
41
- checkChildren(item);
40
+ function selectItem(select, isSelected) {
41
+ if (props.selectable) {
42
+ select(!isSelected);
43
+ }
42
44
  }
43
45
  return () => slots.default?.() ?? props.items?.map(_ref2 => {
44
46
  let {
@@ -48,23 +50,21 @@ export const VTreeviewChildren = genericComponent()({
48
50
  } = _ref2;
49
51
  const loading = isLoading.value === item.value;
50
52
  const slotsWithItem = {
51
- prepend: slots.prepend ? slotProps => slots.prepend?.({
53
+ prepend: slotProps => _createVNode(_Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && _createVNode("div", null, [_createVNode(VCheckboxBtn, {
54
+ "key": item.value,
55
+ "modelValue": slotProps.isSelected,
56
+ "loading": loading,
57
+ "indeterminate": slotProps.isIndeterminate,
58
+ "onClick": withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
59
+ "onKeydown": e => {
60
+ if (!['Enter', 'Space'].includes(e.key)) return;
61
+ e.stopPropagation();
62
+ selectItem(slotProps.select, slotProps.isSelected);
63
+ }
64
+ }, null)]), slots.prepend?.({
52
65
  ...slotProps,
53
66
  item
54
- }) : props.selectable ? _ref3 => {
55
- let {
56
- isSelected,
57
- isIndeterminate
58
- } = _ref3;
59
- return _createVNode(VCheckboxBtn, {
60
- "key": item.value,
61
- "tabindex": "-1",
62
- "modelValue": isSelected,
63
- "loading": loading,
64
- "indeterminate": isIndeterminate,
65
- "onClick": e => onClick(e, item)
66
- }, null);
67
- } : undefined,
67
+ })]),
68
68
  append: slots.append ? slotProps => slots.append?.({
69
69
  ...slotProps,
70
70
  item
@@ -79,13 +79,18 @@ export const VTreeviewChildren = genericComponent()({
79
79
  return children ? _createVNode(VTreeviewGroup, _mergeProps({
80
80
  "value": itemProps?.value
81
81
  }, treeviewGroupProps), {
82
- activator: _ref4 => {
82
+ activator: _ref3 => {
83
83
  let {
84
84
  props: activatorProps
85
- } = _ref4;
86
- return _createVNode(VTreeviewItem, _mergeProps(itemProps, activatorProps, {
85
+ } = _ref3;
86
+ const listItemProps = {
87
+ ...itemProps,
88
+ ...activatorProps,
89
+ value: itemProps?.value
90
+ };
91
+ return _createVNode(VTreeviewItem, _mergeProps(listItemProps, {
87
92
  "loading": loading,
88
- "onClick": e => onClick(e, item)
93
+ "onClick": () => checkChildren(item)
89
94
  }), slotsWithItem);
90
95
  },
91
96
  default: () => _createVNode(VTreeviewChildren, _mergeProps(treeviewChildrenProps, {
@@ -1 +1 @@
1
- {"version":3,"file":"VTreeviewChildren.mjs","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","shallowRef","genericComponent","propsFactory","makeVTreeviewChildrenProps","loadChildren","Function","loadingIcon","type","String","default","items","Array","selectable","Boolean","VTreeviewChildren","name","props","setup","_ref","emit","slots","isLoading","checkChildren","item","Promise","resolve","length","children","value","then","finally","onClick","e","stopPropagation","map","_ref2","itemProps","raw","loading","slotsWithItem","prepend","slotProps","_ref3","isSelected","isIndeterminate","_createVNode","undefined","append","title","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref4","activatorProps"],"sources":["../../../src/labs/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Utilities\nimport { shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & { item: T }\n} & {\n default: never\n item: { props: InternalListItem['props'] }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n selectable: Boolean,\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { emit, slots }) {\n const isLoading = shallowRef(null)\n\n function checkChildren (item: any) {\n return new Promise<void>(resolve => {\n if (!props.items?.length || !props.loadChildren) return resolve()\n\n if (item?.children?.length === 0) {\n isLoading.value = item.value\n props.loadChildren(item).then(resolve)\n\n return\n }\n\n resolve()\n }).finally(() => {\n isLoading.value = null\n })\n }\n\n function onClick (e: MouseEvent | KeyboardEvent, item: any) {\n e.stopPropagation()\n\n checkChildren(item)\n }\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, raw: item }) => {\n const loading = isLoading.value === item.value\n const slotsWithItem = {\n prepend: slots.prepend\n ? slotProps => slots.prepend?.({ ...slotProps, item })\n : props.selectable\n ? ({ isSelected, isIndeterminate }) => (\n <VCheckboxBtn\n key={ item.value }\n tabindex=\"-1\"\n modelValue={ isSelected }\n loading={ loading }\n indeterminate={ isIndeterminate }\n onClick={ (e: MouseEvent) => onClick(e, item) }\n />\n )\n : undefined,\n append: slots.append ? slotProps => slots.append?.({ ...slotProps, item }) : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return children ? (\n <VTreeviewGroup\n value={ itemProps?.value }\n { ...treeviewGroupProps }\n >\n {{\n activator: ({ props: activatorProps }) => (\n <VTreeviewItem\n { ...itemProps }\n { ...activatorProps }\n loading={ loading }\n v-slots={ slotsWithItem }\n onClick={ (e: MouseEvent | KeyboardEvent) => onClick(e, item) }\n />\n ),\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps }) ?? (\n <VTreeviewItem\n { ...itemProps }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VTreeviewChildren.mjs","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","shallowRef","withModifiers","genericComponent","propsFactory","makeVTreeviewChildrenProps","loadChildren","Function","loadingIcon","type","String","default","items","Array","selectable","Boolean","selectStrategy","Object","VTreeviewChildren","name","props","setup","_ref","emit","slots","isLoading","checkChildren","item","Promise","resolve","length","children","value","then","finally","selectItem","select","isSelected","map","_ref2","itemProps","raw","loading","slotsWithItem","prepend","slotProps","_createVNode","_Fragment","includes","isIndeterminate","e","key","stopPropagation","append","undefined","title","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref3","activatorProps","listItemProps","onClick"],"sources":["../../../src/labs/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Utilities\nimport { shallowRef, withModifiers } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & { item: T }\n} & {\n default: never\n item: { props: InternalListItem['props'] }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n selectable: Boolean,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { emit, slots }) {\n const isLoading = shallowRef(null)\n\n function checkChildren (item: any) {\n return new Promise<void>(resolve => {\n if (!props.items?.length || !props.loadChildren) return resolve()\n\n if (item?.children?.length === 0) {\n isLoading.value = item.value\n props.loadChildren(item).then(resolve)\n\n return\n }\n\n resolve()\n }).finally(() => {\n isLoading.value = null\n })\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(!isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, raw: item }) => {\n const loading = isLoading.value === item.value\n const slotsWithItem = {\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <div>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n loading={ loading }\n indeterminate={ slotProps.isIndeterminate }\n onClick={ withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']) }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </div>\n )}\n\n { slots.prepend?.({ ...slotProps, item }) }\n </>\n ),\n append: slots.append ? slotProps => slots.append?.({ ...slotProps, item }) : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return children ? (\n <VTreeviewGroup\n value={ itemProps?.value }\n { ...treeviewGroupProps }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n }\n\n return (\n <VTreeviewItem\n { ...listItemProps }\n loading={ loading }\n v-slots={ slotsWithItem }\n onClick={ () => checkChildren(item) }\n />\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps }) ?? (\n <VTreeviewItem\n { ...itemProps }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":";AAAA;AAAA,SACSA,cAAc;AAAA,SACdC,aAAa;AAAA,SACbC,YAAY,gDAErB;AACA,SAASC,UAAU,EAAEC,aAAa,QAAQ,KAAK;AAAA,SACtCC,gBAAgB,EAAEC,YAAY,gCAEvC;AAcA,OAAO,MAAMC,0BAA0B,GAAGD,YAAY,CAAC;EACrDE,YAAY,EAAEC,QAAsD;EACpEC,WAAW,EAAE;IACXC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEC,KAA8C;EACrDC,UAAU,EAAEC,OAAO;EACnBC,cAAc,EAAE,CAACN,MAAM,EAAEH,QAAQ,EAAEU,MAAM;AAC3C,CAAC,EAAE,mBAAmB,CAAC;AAEvB,OAAO,MAAMC,iBAAiB,GAAGf,gBAAgB,CAKF,CAAC,CAAC;EAC/CgB,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAEf,0BAA0B,CAAC,CAAC;EAEnCgB,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,SAAS,GAAGxB,UAAU,CAAC,IAAI,CAAC;IAElC,SAASyB,aAAaA,CAAEC,IAAS,EAAE;MACjC,OAAO,IAAIC,OAAO,CAAOC,OAAO,IAAI;QAClC,IAAI,CAACT,KAAK,CAACR,KAAK,EAAEkB,MAAM,IAAI,CAACV,KAAK,CAACd,YAAY,EAAE,OAAOuB,OAAO,CAAC,CAAC;QAEjE,IAAIF,IAAI,EAAEI,QAAQ,EAAED,MAAM,KAAK,CAAC,EAAE;UAChCL,SAAS,CAACO,KAAK,GAAGL,IAAI,CAACK,KAAK;UAC5BZ,KAAK,CAACd,YAAY,CAACqB,IAAI,CAAC,CAACM,IAAI,CAACJ,OAAO,CAAC;UAEtC;QACF;QAEAA,OAAO,CAAC,CAAC;MACX,CAAC,CAAC,CAACK,OAAO,CAAC,MAAM;QACfT,SAAS,CAACO,KAAK,GAAG,IAAI;MACxB,CAAC,CAAC;IACJ;IAEA,SAASG,UAAUA,CAAEC,MAAgC,EAAEC,UAAmB,EAAE;MAC1E,IAAIjB,KAAK,CAACN,UAAU,EAAE;QACpBsB,MAAM,CAAC,CAACC,UAAU,CAAC;MACrB;IACF;IAEA,OAAO,MAAMb,KAAK,CAACb,OAAO,GAAG,CAAC,IAAIS,KAAK,CAACR,KAAK,EAAE0B,GAAG,CAACC,KAAA,IAA+C;MAAA,IAA9C;QAAER,QAAQ;QAAEX,KAAK,EAAEoB,SAAS;QAAEC,GAAG,EAAEd;MAAK,CAAC,GAAAY,KAAA;MAC3F,MAAMG,OAAO,GAAGjB,SAAS,CAACO,KAAK,KAAKL,IAAI,CAACK,KAAK;MAC9C,MAAMW,aAAa,GAAG;QACpBC,OAAO,EAAEC,SAAS,IAAAC,YAAA,CAAAC,SAAA,SAEZ3B,KAAK,CAACN,UAAU,KAAK,CAACiB,QAAQ,IAAKA,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAACiB,QAAQ,CAAC5B,KAAK,CAACJ,cAAwB,CAAE,CAAC,IAAA8B,YAAA,eAAAA,YAAA,CAAA9C,YAAA;UAAA,OAGxG2B,IAAI,CAACK,KAAK;UAAA,cACHa,SAAS,CAACR,UAAU;UAAA,WACvBK,OAAO;UAAA,iBACDG,SAAS,CAACI,eAAe;UAAA,WAC/B/C,aAAa,CAAC,MAAMiC,UAAU,CAACU,SAAS,CAACT,MAAM,EAAES,SAAS,CAACR,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;UAAA,aAC9Ea,CAAgB,IAAK;YAChC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAACF,QAAQ,CAACE,CAAC,CAACC,GAAG,CAAC,EAAE;YACzCD,CAAC,CAACE,eAAe,CAAC,CAAC;YACnBjB,UAAU,CAACU,SAAS,CAACT,MAAM,EAAES,SAAS,CAACR,UAAU,CAAC;UACpD;QAAC,UAGN,EAECb,KAAK,CAACoB,OAAO,GAAG;UAAE,GAAGC,SAAS;UAAElB;QAAK,CAAC,CAAC,EAE5C;QACD0B,MAAM,EAAE7B,KAAK,CAAC6B,MAAM,GAAGR,SAAS,IAAIrB,KAAK,CAAC6B,MAAM,GAAG;UAAE,GAAGR,SAAS;UAAElB;QAAK,CAAC,CAAC,GAAG2B,SAAS;QACtFC,KAAK,EAAE/B,KAAK,CAAC+B,KAAK,GAAGV,SAAS,IAAIrB,KAAK,CAAC+B,KAAK,GAAG;UAAE,GAAGV,SAAS;UAAElB;QAAK,CAAC,CAAC,GAAG2B;MAC5E,CAAgD;MAEhD,MAAME,kBAAkB,GAAG1D,cAAc,CAAC2D,WAAW,CAACjB,SAAS,CAAC;MAChE,MAAMkB,qBAAqB,GAAGxC,iBAAiB,CAACuC,WAAW,CAACrC,KAAK,CAAC;MAElE,OAAOW,QAAQ,GAAAe,YAAA,CAAAhD,cAAA,EAAA6D,WAAA;QAAA,SAEHnB,SAAS,EAAER;MAAK,GACnBwB,kBAAkB;QAGrBI,SAAS,EAAEC,KAAA,IAA+B;UAAA,IAA9B;YAAEzC,KAAK,EAAE0C;UAAe,CAAC,GAAAD,KAAA;UACnC,MAAME,aAAa,GAAG;YACpB,GAAGvB,SAAS;YACZ,GAAGsB,cAAc;YACjB9B,KAAK,EAAEQ,SAAS,EAAER;UACpB,CAAC;UAED,OAAAc,YAAA,CAAA/C,aAAA,EAAA4D,WAAA,CAESI,aAAa;YAAA,WACRrB,OAAO;YAAA,WAEPsB,CAAA,KAAMtC,aAAa,CAACC,IAAI;UAAC,IADzBgB,aAAa;QAI7B,CAAC;QACDhC,OAAO,EAAEA,CAAA,KAAAmC,YAAA,CAAA5B,iBAAA,EAAAyC,WAAA,CAEAD,qBAAqB;UAAA,SAClB3B;QAAQ,IACNP,KAAK;MAElB,KAILA,KAAK,CAACG,IAAI,GAAG;QAAEP,KAAK,EAAEoB;MAAU,CAAC,CAAC,IAAAM,YAAA,CAAA/C,aAAA,EAEzByC,SAAS,EACJG,aAAa,CAEzB;IACN,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}