vuetify 3.5.16 → 3.5.18

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 (197) hide show
  1. package/dist/json/attributes.json +226 -30
  2. package/dist/json/importMap-labs.json +12 -8
  3. package/dist/json/importMap.json +114 -114
  4. package/dist/json/tags.json +54 -0
  5. package/dist/json/web-types.json +607 -84
  6. package/dist/vuetify-labs.css +2293 -2267
  7. package/dist/vuetify-labs.d.ts +742 -64
  8. package/dist/vuetify-labs.esm.js +365 -132
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +364 -131
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +2324 -2298
  13. package/dist/vuetify.d.ts +120 -55
  14. package/dist/vuetify.esm.js +177 -104
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +176 -103
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +183 -179
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAppBar/index.d.mts +1 -0
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +8 -10
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VBanner/VBanner.css +1 -1
  25. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +1 -1
  26. package/lib/components/VBtn/index.d.mts +1 -0
  27. package/lib/components/VBtnToggle/index.d.mts +1 -0
  28. package/lib/components/VCard/VCard.css +3 -3
  29. package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
  30. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  31. package/lib/components/VCarousel/index.d.mts +1 -0
  32. package/lib/components/VChip/VChip.css +1 -1
  33. package/lib/components/VChip/VChip.sass +1 -0
  34. package/lib/components/VChipGroup/index.d.mts +1 -0
  35. package/lib/components/VCombobox/VCombobox.mjs +8 -10
  36. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  37. package/lib/components/VDatePicker/VDatePicker.mjs +12 -2
  38. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  39. package/lib/components/VDialog/VDialog.mjs +6 -2
  40. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  41. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs +39 -0
  42. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs.map +1 -0
  43. package/lib/components/VDialog/index.d.mts +4 -10
  44. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  45. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  46. package/lib/components/VFileInput/index.d.mts +17 -5
  47. package/lib/components/VInput/VInput.mjs +6 -1
  48. package/lib/components/VInput/VInput.mjs.map +1 -1
  49. package/lib/components/VInput/index.d.mts +6 -0
  50. package/lib/components/VList/VList.mjs +2 -1
  51. package/lib/components/VList/VList.mjs.map +1 -1
  52. package/lib/components/VList/VListItem.css +1 -1
  53. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +3 -3
  54. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  55. package/lib/components/VNavigationDrawer/touch.mjs +16 -2
  56. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  57. package/lib/components/VProgressLinear/VProgressLinear.mjs +11 -1
  58. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  59. package/lib/components/VProgressLinear/index.d.mts +21 -0
  60. package/lib/components/VRangeSlider/index.d.mts +6 -0
  61. package/lib/components/VSelect/VSelect.mjs +5 -1
  62. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  63. package/lib/components/VSlideGroup/index.d.mts +1 -0
  64. package/lib/components/VSlider/index.d.mts +6 -0
  65. package/lib/components/VSnackbar/VSnackbar.css +18 -4
  66. package/lib/components/VSnackbar/VSnackbar.mjs +34 -9
  67. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  68. package/lib/components/VSnackbar/VSnackbar.sass +19 -3
  69. package/lib/components/VSwitch/VSwitch.css +14 -2
  70. package/lib/components/VSwitch/VSwitch.sass +8 -2
  71. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  72. package/lib/components/VTabs/index.d.mts +1 -0
  73. package/lib/components/VTextField/index.d.mts +15 -3
  74. package/lib/components/VTextarea/index.d.mts +15 -3
  75. package/lib/components/VWindow/index.d.mts +1 -0
  76. package/lib/components/index.d.mts +85 -21
  77. package/lib/composables/directiveComponent.mjs +4 -2
  78. package/lib/composables/directiveComponent.mjs.map +1 -1
  79. package/lib/composables/group.mjs +10 -1
  80. package/lib/composables/group.mjs.map +1 -1
  81. package/lib/entry-bundler.mjs +1 -1
  82. package/lib/framework.mjs +1 -1
  83. package/lib/index.d.mts +35 -34
  84. package/lib/labs/VCalendar/VCalendar.css +0 -1
  85. package/lib/labs/VCalendar/VCalendar.sass +0 -2
  86. package/lib/labs/VEmptyState/VEmptyState.css +3 -3
  87. package/lib/labs/VFab/VFab.css +1 -0
  88. package/lib/labs/VFab/VFab.mjs +3 -2
  89. package/lib/labs/VFab/VFab.mjs.map +1 -1
  90. package/lib/labs/VFab/VFab.sass +1 -0
  91. package/lib/labs/VFab/index.d.mts +10 -0
  92. package/lib/labs/VNumberInput/VNumberInput.mjs +79 -24
  93. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  94. package/lib/labs/VNumberInput/index.d.mts +56 -29
  95. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +112 -0
  96. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs.map +1 -0
  97. package/lib/labs/VSnackbarQueue/index.d.mts +2693 -0
  98. package/lib/labs/VSnackbarQueue/index.mjs +2 -0
  99. package/lib/labs/VSnackbarQueue/index.mjs.map +1 -0
  100. package/lib/labs/VSpeedDial/VSpeedDial.mjs +1 -2
  101. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
  102. package/lib/labs/VTimePicker/VTimePickerClock.mjs +1 -3
  103. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  104. package/lib/labs/VTimePicker/index.d.mts +6 -13
  105. package/lib/labs/components.d.mts +2893 -282
  106. package/lib/labs/components.mjs +1 -0
  107. package/lib/labs/components.mjs.map +1 -1
  108. package/lib/locale/af.mjs +1 -0
  109. package/lib/locale/af.mjs.map +1 -1
  110. package/lib/locale/ar.mjs +1 -0
  111. package/lib/locale/ar.mjs.map +1 -1
  112. package/lib/locale/az.mjs +1 -0
  113. package/lib/locale/az.mjs.map +1 -1
  114. package/lib/locale/bg.mjs +1 -0
  115. package/lib/locale/bg.mjs.map +1 -1
  116. package/lib/locale/ca.mjs +1 -0
  117. package/lib/locale/ca.mjs.map +1 -1
  118. package/lib/locale/ckb.mjs +1 -0
  119. package/lib/locale/ckb.mjs.map +1 -1
  120. package/lib/locale/cs.mjs +1 -0
  121. package/lib/locale/cs.mjs.map +1 -1
  122. package/lib/locale/da.mjs +1 -0
  123. package/lib/locale/da.mjs.map +1 -1
  124. package/lib/locale/de.mjs +1 -0
  125. package/lib/locale/de.mjs.map +1 -1
  126. package/lib/locale/el.mjs +1 -0
  127. package/lib/locale/el.mjs.map +1 -1
  128. package/lib/locale/en.mjs +1 -0
  129. package/lib/locale/en.mjs.map +1 -1
  130. package/lib/locale/es.mjs +1 -0
  131. package/lib/locale/es.mjs.map +1 -1
  132. package/lib/locale/et.mjs +1 -0
  133. package/lib/locale/et.mjs.map +1 -1
  134. package/lib/locale/fa.mjs +1 -0
  135. package/lib/locale/fa.mjs.map +1 -1
  136. package/lib/locale/fi.mjs +1 -0
  137. package/lib/locale/fi.mjs.map +1 -1
  138. package/lib/locale/fr.mjs +1 -0
  139. package/lib/locale/fr.mjs.map +1 -1
  140. package/lib/locale/he.mjs +1 -0
  141. package/lib/locale/he.mjs.map +1 -1
  142. package/lib/locale/hr.mjs +1 -0
  143. package/lib/locale/hr.mjs.map +1 -1
  144. package/lib/locale/hu.mjs +1 -0
  145. package/lib/locale/hu.mjs.map +1 -1
  146. package/lib/locale/id.mjs +1 -0
  147. package/lib/locale/id.mjs.map +1 -1
  148. package/lib/locale/index.d.mts +43 -0
  149. package/lib/locale/it.mjs +1 -0
  150. package/lib/locale/it.mjs.map +1 -1
  151. package/lib/locale/ja.mjs +1 -0
  152. package/lib/locale/ja.mjs.map +1 -1
  153. package/lib/locale/km.mjs +1 -0
  154. package/lib/locale/km.mjs.map +1 -1
  155. package/lib/locale/ko.mjs +9 -8
  156. package/lib/locale/ko.mjs.map +1 -1
  157. package/lib/locale/lt.mjs +1 -0
  158. package/lib/locale/lt.mjs.map +1 -1
  159. package/lib/locale/lv.mjs +1 -0
  160. package/lib/locale/lv.mjs.map +1 -1
  161. package/lib/locale/nl.mjs +1 -0
  162. package/lib/locale/nl.mjs.map +1 -1
  163. package/lib/locale/no.mjs +1 -0
  164. package/lib/locale/no.mjs.map +1 -1
  165. package/lib/locale/pl.mjs +1 -0
  166. package/lib/locale/pl.mjs.map +1 -1
  167. package/lib/locale/pt.mjs +1 -0
  168. package/lib/locale/pt.mjs.map +1 -1
  169. package/lib/locale/ro.mjs +1 -0
  170. package/lib/locale/ro.mjs.map +1 -1
  171. package/lib/locale/ru.mjs +1 -0
  172. package/lib/locale/ru.mjs.map +1 -1
  173. package/lib/locale/sk.mjs +1 -0
  174. package/lib/locale/sk.mjs.map +1 -1
  175. package/lib/locale/sl.mjs +1 -0
  176. package/lib/locale/sl.mjs.map +1 -1
  177. package/lib/locale/sr-Cyrl.mjs +1 -0
  178. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  179. package/lib/locale/sr-Latn.mjs +1 -0
  180. package/lib/locale/sr-Latn.mjs.map +1 -1
  181. package/lib/locale/sv.mjs +1 -0
  182. package/lib/locale/sv.mjs.map +1 -1
  183. package/lib/locale/th.mjs +1 -0
  184. package/lib/locale/th.mjs.map +1 -1
  185. package/lib/locale/tr.mjs +1 -0
  186. package/lib/locale/tr.mjs.map +1 -1
  187. package/lib/locale/uk.mjs +1 -0
  188. package/lib/locale/uk.mjs.map +1 -1
  189. package/lib/locale/vi.mjs +1 -0
  190. package/lib/locale/vi.mjs.map +1 -1
  191. package/lib/locale/zh-Hans.mjs +1 -0
  192. package/lib/locale/zh-Hans.mjs.map +1 -1
  193. package/lib/locale/zh-Hant.mjs +1 -0
  194. package/lib/locale/zh-Hant.mjs.map +1 -1
  195. package/lib/styles/main.css +78 -78
  196. package/lib/styles/settings/_variables.scss +21 -14
  197. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, withDirectives as _withDirectives, mergeProps as _mergeProps, vModelText as _vModelText, createVNode as _createVNode } from "vue";
1
+ import { Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VNumberInput.css";
4
4
 
@@ -10,8 +10,8 @@ import { filterFieldProps, makeVFieldProps, VField } from "../../components/VFie
10
10
  import { makeVInputProps, VInput } from "../../components/VInput/VInput.mjs"; // Composables
11
11
  import { makeFocusProps, useFocus } from "../../composables/focus.mjs";
12
12
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
13
- import { computed, ref } from 'vue';
14
- import { filterInputAttrs, genericComponent, only, propsFactory, useRender } from "../../util/index.mjs"; // Types
13
+ import { computed, ref, watchEffect } from 'vue';
14
+ import { clamp, filterInputAttrs, genericComponent, getDecimals, only, propsFactory, useRender } from "../../util/index.mjs"; // Types
15
15
  const makeVNumberInputProps = propsFactory({
16
16
  controlVariant: {
17
17
  type: String,
@@ -19,9 +19,18 @@ const makeVNumberInputProps = propsFactory({
19
19
  },
20
20
  inset: Boolean,
21
21
  hideInput: Boolean,
22
- min: Number,
23
- max: Number,
24
- step: Number,
22
+ min: {
23
+ type: Number,
24
+ default: -Infinity
25
+ },
26
+ max: {
27
+ type: Number,
28
+ default: Infinity
29
+ },
30
+ step: {
31
+ type: Number,
32
+ default: 1
33
+ },
25
34
  ...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
26
35
  ...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
27
36
  ...makeFocusProps()
@@ -32,8 +41,8 @@ export const VNumberInput = genericComponent()({
32
41
  props: {
33
42
  ...makeVNumberInputProps(),
34
43
  modelValue: {
35
- type: [Number, String],
36
- default: 0
44
+ type: Number,
45
+ default: undefined
37
46
  }
38
47
  },
39
48
  emits: {
@@ -52,20 +61,45 @@ export const VNumberInput = genericComponent()({
52
61
  blur
53
62
  } = useFocus(props);
54
63
  const inputRef = ref();
64
+ const stepDecimals = computed(() => getDecimals(props.step));
65
+ const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0);
66
+ const canIncrease = computed(() => {
67
+ if (model.value == null) return true;
68
+ return model.value + props.step <= props.max;
69
+ });
70
+ const canDecrease = computed(() => {
71
+ if (model.value == null) return true;
72
+ return model.value - props.step >= props.min;
73
+ });
74
+ watchEffect(() => {
75
+ if (model.value != null && (model.value < props.min || model.value > props.max)) {
76
+ model.value = clamp(model.value, props.min, props.max);
77
+ }
78
+ });
55
79
  function onFocus() {
56
80
  if (!isFocused.value) focus();
57
81
  }
58
82
  const controlVariant = computed(() => {
59
83
  return props.hideInput ? 'stacked' : props.controlVariant;
60
84
  });
85
+ const incrementSlotProps = computed(() => ({
86
+ click: onClickUp
87
+ }));
88
+ const decrementSlotProps = computed(() => ({
89
+ click: onClickDown
90
+ }));
61
91
  function toggleUpDown() {
62
92
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
93
+ if (model.value == null) {
94
+ model.value = 0;
95
+ return;
96
+ }
97
+ const decimals = Math.max(modelDecimals.value, stepDecimals.value);
63
98
  if (increment) {
64
- inputRef.value?.stepUp();
99
+ if (canIncrease.value) model.value = +(model.value + props.step).toFixed(decimals);
65
100
  } else {
66
- inputRef.value?.stepDown();
101
+ if (canDecrease.value) model.value = +(model.value - props.step).toFixed(decimals);
67
102
  }
68
- if (inputRef.value) model.value = parseInt(inputRef.value.value, 10);
69
103
  }
70
104
  function onClickUp() {
71
105
  toggleUpDown();
@@ -73,12 +107,28 @@ export const VNumberInput = genericComponent()({
73
107
  function onClickDown() {
74
108
  toggleUpDown(false);
75
109
  }
76
- const incrementSlotProps = computed(() => ({
77
- click: onClickUp
78
- }));
79
- const decrementSlotProps = computed(() => ({
80
- click: onClickDown
81
- }));
110
+ function onKeydown(e) {
111
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace'].includes(e.key) || e.ctrlKey) return;
112
+ if (['ArrowDown'].includes(e.key)) {
113
+ e.preventDefault();
114
+ toggleUpDown(false);
115
+ return;
116
+ }
117
+ if (['ArrowUp'].includes(e.key)) {
118
+ e.preventDefault();
119
+ toggleUpDown();
120
+ return;
121
+ }
122
+
123
+ // Only numbers, +, - & . are allowed
124
+ if (!/^[0-9\-+.]+$/.test(e.key)) {
125
+ e.preventDefault();
126
+ }
127
+ }
128
+ function onInput(e) {
129
+ const el = e.target;
130
+ model.value = el.value ? +el.value : undefined;
131
+ }
82
132
  useRender(() => {
83
133
  const fieldProps = filterFieldProps(props);
84
134
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
@@ -91,9 +141,11 @@ export const VNumberInput = genericComponent()({
91
141
  return _createVNode("div", {
92
142
  "class": "v-number-input__control"
93
143
  }, [!slots.decrement ? _createVNode(VBtn, {
144
+ "disabled": !canDecrease.value,
94
145
  "flat": true,
95
146
  "key": "decrement-btn",
96
147
  "height": defaultHeight,
148
+ "name": "decrement-btn",
97
149
  "icon": "$expand",
98
150
  "size": "small",
99
151
  "onClick": onClickDown
@@ -101,6 +153,7 @@ export const VNumberInput = genericComponent()({
101
153
  "key": "decrement-defaults",
102
154
  "defaults": {
103
155
  VBtn: {
156
+ disabled: !canDecrease.value,
104
157
  flat: true,
105
158
  height: defaultHeight,
106
159
  size: 'small',
@@ -112,9 +165,11 @@ export const VNumberInput = genericComponent()({
112
165
  }), _createVNode(VDivider, {
113
166
  "vertical": controlVariant.value !== 'stacked'
114
167
  }, null), !slots.increment ? _createVNode(VBtn, {
168
+ "disabled": !canIncrease.value,
115
169
  "flat": true,
116
170
  "key": "increment-btn",
117
171
  "height": defaultHeight,
172
+ "name": "increment-btn",
118
173
  "icon": "$collapse",
119
174
  "onClick": onClickUp,
120
175
  "size": "small"
@@ -122,6 +177,7 @@ export const VNumberInput = genericComponent()({
122
177
  "key": "increment-defaults",
123
178
  "defaults": {
124
179
  VBtn: {
180
+ disabled: !canIncrease.value,
125
181
  flat: true,
126
182
  height: defaultHeight,
127
183
  size: 'small',
@@ -163,17 +219,16 @@ export const VNumberInput = genericComponent()({
163
219
  ...slotProps
164
220
  }
165
221
  } = _ref2;
166
- return _withDirectives(_createVNode("input", _mergeProps({
222
+ return _createVNode("input", _mergeProps({
167
223
  "ref": inputRef,
168
- "type": "number",
169
- "onUpdate:modelValue": $event => model.value = $event,
224
+ "type": "text",
225
+ "value": model.value,
226
+ "onInput": onInput,
227
+ "onKeydown": onKeydown,
170
228
  "class": fieldClass,
171
- "max": props.max,
172
- "min": props.min,
173
- "step": props.step,
174
229
  "onFocus": onFocus,
175
230
  "onBlur": blur
176
- }, inputAttrs), null), [[_vModelText, model.value]]);
231
+ }, inputAttrs), null);
177
232
  },
178
233
  'append-inner': controlVariant.value === 'split' ? () => _createVNode("div", {
179
234
  "class": "v-number-input__control"
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","makeFocusProps","useFocus","useProxiedModel","computed","ref","filterInputAttrs","genericComponent","only","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","max","step","VNumberInput","name","inheritAttrs","props","modelValue","emits","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","inputRef","onFocus","value","toggleUpDown","increment","arguments","length","undefined","stepUp","stepDown","parseInt","onClickUp","onClickDown","incrementSlotProps","click","decrementSlotProps","fieldProps","rootAttrs","inputAttrs","_","inputProps","filterProps","controlNode","defaultHeight","_createVNode","decrement","flat","height","size","icon","dividerNode","_mergeProps","reverse","class","style","_ref2","fieldClass","slotProps","_withDirectives","$event","_vModelText","_Fragment"],"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 { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\ntype ControlSlot = {\n click: () => void\n}\n\ntype VNumberInputSlots = Omit<VInputSlots & VFieldSlots, '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: Number,\n max: Number,\n step: Number,\n\n ...only(makeVInputProps(), [\n 'density',\n 'disabled',\n 'focused',\n 'hideDetails',\n 'hint',\n 'label',\n 'persistentHint',\n 'readonly',\n ]),\n ...only(makeVFieldProps(), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'reverse',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n ...makeFocusProps(),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n inheritAttrs: false,\n\n props: {\n ...makeVNumberInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\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 const { isFocused, focus, blur } = useFocus(props)\n const inputRef = ref<HTMLInputElement>()\n\n function onFocus () {\n if (!isFocused.value) focus()\n }\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n function toggleUpDown (increment = true) {\n if (increment) {\n inputRef.value?.stepUp()\n } else {\n inputRef.value?.stepDown()\n }\n\n if (inputRef.value) model.value = parseInt(inputRef.value.value, 10)\n }\n\n function onClickUp () {\n toggleUpDown()\n }\n\n function onClickDown () {\n toggleUpDown(false)\n }\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n useRender(() => {\n const fieldProps = filterFieldProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.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 flat\n key=\"decrement-btn\"\n height={ defaultHeight }\n icon=\"$expand\"\n size=\"small\"\n onClick={ onClickDown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\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 flat\n key=\"increment-btn\"\n height={ defaultHeight }\n icon=\"$collapse\"\n onClick={ onClickUp }\n size=\"small\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\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 return (\n <VInput\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 { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n style={ props.style }\n >\n {{\n ...slots,\n default: () => (\n <VField\n { ...fieldProps }\n active\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <input\n ref={ inputRef }\n type=\"number\"\n v-model={ model.value }\n class={ fieldClass }\n max={ props.max }\n min={ props.min }\n step={ props.step }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...inputAttrs }\n />\n ),\n 'append-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n <VBtn\n flat\n height=\"100%\"\n icon=\"$plus\"\n tile\n onClick={ onClickUp }\n />\n </div>\n ) : (!props.reverse\n ? () => <>{ dividerNode() }{ controlNode() }</>\n : undefined),\n 'prepend-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VBtn\n flat\n height=\"100%\"\n icon=\"$minus\"\n tile\n onClick={ onClickDown }\n />\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? () => <>{ controlNode() }{ dividerNode() }</>\n : undefined),\n }}\n </VField>\n ),\n }}\n </VInput>\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","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","makeFocusProps","useFocus","useProxiedModel","computed","ref","watchEffect","clamp","filterInputAttrs","genericComponent","getDecimals","only","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","Infinity","max","step","VNumberInput","name","inheritAttrs","props","modelValue","undefined","emits","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","inputRef","stepDecimals","modelDecimals","value","canIncrease","canDecrease","onFocus","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","toggleUpDown","increment","arguments","length","decimals","Math","toFixed","onKeydown","e","includes","key","ctrlKey","preventDefault","test","onInput","el","target","fieldProps","rootAttrs","inputAttrs","_","inputProps","filterProps","controlNode","defaultHeight","_createVNode","decrement","disabled","flat","height","size","icon","dividerNode","_mergeProps","reverse","class","style","_ref2","fieldClass","slotProps","_Fragment"],"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 { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, watchEffect } from 'vue'\nimport { clamp, filterInputAttrs, genericComponent, getDecimals, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\ntype ControlSlot = {\n click: () => void\n}\n\ntype VNumberInputSlots = Omit<VInputSlots & VFieldSlots, '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 ...only(makeVInputProps(), [\n 'density',\n 'disabled',\n 'focused',\n 'hideDetails',\n 'hint',\n 'label',\n 'persistentHint',\n 'readonly',\n ]),\n ...only(makeVFieldProps(), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'reverse',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n ...makeFocusProps(),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n inheritAttrs: false,\n\n props: {\n ...makeVNumberInputProps(),\n\n modelValue: {\n type: Number,\n default: undefined,\n },\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 const { isFocused, focus, blur } = useFocus(props)\n const inputRef = ref<HTMLInputElement>()\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 function onFocus () {\n if (!isFocused.value) focus()\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 () {\n toggleUpDown()\n }\n\n function onClickDown () {\n toggleUpDown(false)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace'].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 onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value ? +(el.value) : undefined\n }\n\n useRender(() => {\n const fieldProps = filterFieldProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.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 onClick={ onClickDown }\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 size=\"small\"\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 return (\n <VInput\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 { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n style={ props.style }\n >\n {{\n ...slots,\n default: () => (\n <VField\n { ...fieldProps }\n active\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <input\n ref={ inputRef }\n type=\"text\"\n value={ model.value }\n onInput={ onInput }\n onKeydown={ onKeydown }\n class={ fieldClass }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...inputAttrs }\n />\n ),\n 'append-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n <VBtn\n flat\n height=\"100%\"\n icon=\"$plus\"\n tile\n onClick={ onClickUp }\n />\n </div>\n ) : (!props.reverse\n ? () => <>{ dividerNode() }{ controlNode() }</>\n : undefined),\n 'prepend-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VBtn\n flat\n height=\"100%\"\n icon=\"$minus\"\n tile\n onClick={ onClickDown }\n />\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? () => <>{ controlNode() }{ dividerNode() }</>\n : undefined),\n }}\n </VField>\n ),\n }}\n </VInput>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
@@ -50,11 +50,13 @@ declare const VNumberInput: {
50
50
  disabled: boolean;
51
51
  focused: boolean;
52
52
  readonly: boolean | null;
53
- modelValue: string | number;
54
53
  variant: "underlined" | "filled" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
55
54
  inset: boolean;
56
55
  density: Density;
56
+ max: number;
57
57
  persistentHint: boolean;
58
+ min: number;
59
+ step: number;
58
60
  controlVariant: ControlVariant;
59
61
  hideInput: boolean;
60
62
  } & {
@@ -64,14 +66,12 @@ declare const VNumberInput: {
64
66
  color?: string | undefined;
65
67
  loading?: string | boolean | undefined;
66
68
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
69
+ modelValue?: number | undefined;
67
70
  rounded?: string | number | boolean | undefined;
68
- max?: number | undefined;
69
71
  bgColor?: string | undefined;
70
72
  baseColor?: string | undefined;
71
73
  hint?: string | undefined;
72
74
  hideDetails?: boolean | "auto" | undefined;
73
- min?: number | undefined;
74
- step?: number | undefined;
75
75
  } & {
76
76
  $children?: {} | vue.VNodeChild | {
77
77
  clear?: ((arg: DefaultInputSlot & {
@@ -137,11 +137,13 @@ declare const VNumberInput: {
137
137
  disabled: boolean;
138
138
  focused: boolean;
139
139
  readonly: boolean | null;
140
- modelValue: string | number;
141
140
  variant: "underlined" | "filled" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
142
141
  inset: boolean;
143
142
  density: Density;
143
+ max: number;
144
144
  persistentHint: boolean;
145
+ min: number;
146
+ step: number;
145
147
  controlVariant: ControlVariant;
146
148
  hideInput: boolean;
147
149
  } & {
@@ -151,14 +153,12 @@ declare const VNumberInput: {
151
153
  color?: string | undefined;
152
154
  loading?: string | boolean | undefined;
153
155
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
156
+ modelValue?: number | undefined;
154
157
  rounded?: string | number | boolean | undefined;
155
- max?: number | undefined;
156
158
  bgColor?: string | undefined;
157
159
  baseColor?: string | undefined;
158
160
  hint?: string | undefined;
159
161
  hideDetails?: boolean | "auto" | undefined;
160
- min?: number | undefined;
161
- step?: number | undefined;
162
162
  } & {
163
163
  $children?: {} | vue.VNodeChild | {
164
164
  clear?: ((arg: DefaultInputSlot & {
@@ -222,12 +222,15 @@ declare const VNumberInput: {
222
222
  disabled: boolean;
223
223
  focused: boolean;
224
224
  readonly: boolean | null;
225
- modelValue: string | number;
225
+ modelValue: number;
226
226
  rounded: string | number | boolean;
227
227
  variant: "underlined" | "filled" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
228
228
  inset: boolean;
229
229
  density: Density;
230
+ max: number;
230
231
  persistentHint: boolean;
232
+ min: number;
233
+ step: number;
231
234
  controlVariant: ControlVariant;
232
235
  hideInput: boolean;
233
236
  }, true, {}, vue.SlotsType<Partial<{
@@ -283,11 +286,13 @@ declare const VNumberInput: {
283
286
  disabled: boolean;
284
287
  focused: boolean;
285
288
  readonly: boolean | null;
286
- modelValue: string | number;
287
289
  variant: "underlined" | "filled" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
288
290
  inset: boolean;
289
291
  density: Density;
292
+ max: number;
290
293
  persistentHint: boolean;
294
+ min: number;
295
+ step: number;
291
296
  controlVariant: ControlVariant;
292
297
  hideInput: boolean;
293
298
  } & {
@@ -297,14 +302,12 @@ declare const VNumberInput: {
297
302
  color?: string | undefined;
298
303
  loading?: string | boolean | undefined;
299
304
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
305
+ modelValue?: number | undefined;
300
306
  rounded?: string | number | boolean | undefined;
301
- max?: number | undefined;
302
307
  bgColor?: string | undefined;
303
308
  baseColor?: string | undefined;
304
309
  hint?: string | undefined;
305
310
  hideDetails?: boolean | "auto" | undefined;
306
- min?: number | undefined;
307
- step?: number | undefined;
308
311
  } & {
309
312
  $children?: {} | vue.VNodeChild | {
310
313
  clear?: ((arg: DefaultInputSlot & {
@@ -368,12 +371,15 @@ declare const VNumberInput: {
368
371
  disabled: boolean;
369
372
  focused: boolean;
370
373
  readonly: boolean | null;
371
- modelValue: string | number;
374
+ modelValue: number;
372
375
  rounded: string | number | boolean;
373
376
  variant: "underlined" | "filled" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
374
377
  inset: boolean;
375
378
  density: Density;
379
+ max: number;
376
380
  persistentHint: boolean;
381
+ min: number;
382
+ step: number;
377
383
  controlVariant: ControlVariant;
378
384
  hideInput: boolean;
379
385
  }>;
@@ -387,11 +393,13 @@ declare const VNumberInput: {
387
393
  disabled: boolean;
388
394
  focused: boolean;
389
395
  readonly: boolean | null;
390
- modelValue: string | number;
391
396
  variant: "underlined" | "filled" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
392
397
  inset: boolean;
393
398
  density: Density;
399
+ max: number;
394
400
  persistentHint: boolean;
401
+ min: number;
402
+ step: number;
395
403
  controlVariant: ControlVariant;
396
404
  hideInput: boolean;
397
405
  } & {
@@ -401,14 +409,12 @@ declare const VNumberInput: {
401
409
  color?: string | undefined;
402
410
  loading?: string | boolean | undefined;
403
411
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
412
+ modelValue?: number | undefined;
404
413
  rounded?: string | number | boolean | undefined;
405
- max?: number | undefined;
406
414
  bgColor?: string | undefined;
407
415
  baseColor?: string | undefined;
408
416
  hint?: string | undefined;
409
417
  hideDetails?: boolean | "auto" | undefined;
410
- min?: number | undefined;
411
- step?: number | undefined;
412
418
  } & {
413
419
  $children?: {} | vue.VNodeChild | {
414
420
  clear?: ((arg: DefaultInputSlot & {
@@ -474,12 +480,15 @@ declare const VNumberInput: {
474
480
  disabled: boolean;
475
481
  focused: boolean;
476
482
  readonly: boolean | null;
477
- modelValue: string | number;
483
+ modelValue: number;
478
484
  rounded: string | number | boolean;
479
485
  variant: "underlined" | "filled" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
480
486
  inset: boolean;
481
487
  density: Density;
488
+ max: number;
482
489
  persistentHint: boolean;
490
+ min: number;
491
+ step: number;
483
492
  controlVariant: ControlVariant;
484
493
  hideInput: boolean;
485
494
  }, {}, string, vue.SlotsType<Partial<{
@@ -523,8 +532,8 @@ declare const VNumberInput: {
523
532
  }>[];
524
533
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
525
534
  modelValue: {
526
- type: (StringConstructor | NumberConstructor)[];
527
- default: number;
535
+ type: NumberConstructor;
536
+ default: undefined;
528
537
  };
529
538
  focused: BooleanConstructor;
530
539
  'onUpdate:focused': PropType<(args_0: boolean) => void>;
@@ -572,13 +581,22 @@ declare const VNumberInput: {
572
581
  };
573
582
  inset: BooleanConstructor;
574
583
  hideInput: BooleanConstructor;
575
- min: NumberConstructor;
576
- max: NumberConstructor;
577
- step: NumberConstructor;
584
+ min: {
585
+ type: NumberConstructor;
586
+ default: number;
587
+ };
588
+ max: {
589
+ type: NumberConstructor;
590
+ default: number;
591
+ };
592
+ step: {
593
+ type: NumberConstructor;
594
+ default: number;
595
+ };
578
596
  }, vue.ExtractPropTypes<{
579
597
  modelValue: {
580
- type: (StringConstructor | NumberConstructor)[];
581
- default: number;
598
+ type: NumberConstructor;
599
+ default: undefined;
582
600
  };
583
601
  focused: BooleanConstructor;
584
602
  'onUpdate:focused': PropType<(args_0: boolean) => void>;
@@ -626,9 +644,18 @@ declare const VNumberInput: {
626
644
  };
627
645
  inset: BooleanConstructor;
628
646
  hideInput: BooleanConstructor;
629
- min: NumberConstructor;
630
- max: NumberConstructor;
631
- step: NumberConstructor;
647
+ min: {
648
+ type: NumberConstructor;
649
+ default: number;
650
+ };
651
+ max: {
652
+ type: NumberConstructor;
653
+ default: number;
654
+ };
655
+ step: {
656
+ type: NumberConstructor;
657
+ default: number;
658
+ };
632
659
  }>>;
633
660
  type VNumberInput = InstanceType<typeof VNumberInput>;
634
661
 
@@ -0,0 +1,112 @@
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
+ // Components
3
+ import { VBtn } from "../../components/VBtn/index.mjs";
4
+ import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs";
5
+ import { makeVSnackbarProps, VSnackbar } from "../../components/VSnackbar/VSnackbar.mjs"; // Composables
6
+ import { useLocale } from "../../composables/locale.mjs"; // Utilities
7
+ import { computed, nextTick, shallowRef, watch } from 'vue';
8
+ import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
9
+ export const makeVSnackbarQueueProps = propsFactory({
10
+ // TODO: Port this to Snackbar on dev
11
+ closable: [Boolean, String],
12
+ closeText: {
13
+ type: String,
14
+ default: '$vuetify.dismiss'
15
+ },
16
+ modelValue: {
17
+ type: Array,
18
+ default: () => []
19
+ },
20
+ ...omit(makeVSnackbarProps(), ['modelValue'])
21
+ }, 'VSnackbarQueue');
22
+ export const VSnackbarQueue = genericComponent()({
23
+ name: 'VSnackbarQueue',
24
+ props: makeVSnackbarQueueProps(),
25
+ emits: {
26
+ 'update:modelValue': val => true
27
+ },
28
+ setup(props, _ref) {
29
+ let {
30
+ emit,
31
+ slots
32
+ } = _ref;
33
+ const {
34
+ t
35
+ } = useLocale();
36
+ const isActive = shallowRef(false);
37
+ const isVisible = shallowRef(false);
38
+ const current = shallowRef();
39
+ watch(() => props.modelValue.length, (val, oldVal) => {
40
+ if (!isVisible.value && val > oldVal) {
41
+ showNext();
42
+ }
43
+ });
44
+ watch(isActive, val => {
45
+ if (val) isVisible.value = true;
46
+ });
47
+ function onAfterLeave() {
48
+ if (props.modelValue.length) {
49
+ showNext();
50
+ } else {
51
+ current.value = undefined;
52
+ isVisible.value = false;
53
+ }
54
+ }
55
+ function showNext() {
56
+ const [next, ...rest] = props.modelValue;
57
+ emit('update:modelValue', rest);
58
+ current.value = typeof next === 'string' ? {
59
+ text: next
60
+ } : next;
61
+ nextTick(() => {
62
+ isActive.value = true;
63
+ });
64
+ }
65
+ function onClickClose() {
66
+ isActive.value = false;
67
+ }
68
+ const btnProps = computed(() => ({
69
+ color: typeof props.closable === 'string' ? props.closable : undefined,
70
+ text: t(props.closeText)
71
+ }));
72
+ useRender(() => {
73
+ const hasActions = !!(props.closable || slots.actions);
74
+ const {
75
+ modelValue: _,
76
+ ...snackbarProps
77
+ } = VSnackbar.filterProps(props);
78
+ return _createVNode(_Fragment, null, [isVisible.value && !!current.value && (slots.default ? _createVNode(VDefaultsProvider, {
79
+ "defaults": {
80
+ VSnackbar: current.value
81
+ }
82
+ }, {
83
+ default: () => [slots.default({
84
+ item: current.value
85
+ })]
86
+ }) : _createVNode(VSnackbar, _mergeProps(snackbarProps, current.value, {
87
+ "modelValue": isActive.value,
88
+ "onUpdate:modelValue": $event => isActive.value = $event,
89
+ "onAfterLeave": onAfterLeave
90
+ }), {
91
+ text: slots.text ? () => slots.text?.({
92
+ item: current.value
93
+ }) : undefined,
94
+ actions: hasActions ? () => _createVNode(_Fragment, null, [!slots.actions ? _createVNode(VBtn, _mergeProps(btnProps.value, {
95
+ "onClick": onClickClose
96
+ }), null) : _createVNode(VDefaultsProvider, {
97
+ "defaults": {
98
+ VBtn: btnProps.value
99
+ }
100
+ }, {
101
+ default: () => [slots.actions({
102
+ item: current.value,
103
+ props: {
104
+ onClick: onClickClose
105
+ }
106
+ })]
107
+ })]) : undefined
108
+ }))]);
109
+ });
110
+ }
111
+ });
112
+ //# sourceMappingURL=VSnackbarQueue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSnackbarQueue.mjs","names":["VBtn","VDefaultsProvider","makeVSnackbarProps","VSnackbar","useLocale","computed","nextTick","shallowRef","watch","genericComponent","omit","propsFactory","useRender","makeVSnackbarQueueProps","closable","Boolean","String","closeText","type","default","modelValue","Array","VSnackbarQueue","name","props","emits","val","setup","_ref","emit","slots","t","isActive","isVisible","current","length","oldVal","value","showNext","onAfterLeave","undefined","next","rest","text","onClickClose","btnProps","color","hasActions","actions","_","snackbarProps","filterProps","_createVNode","_Fragment","item","_mergeProps","$event","onClick"],"sources":["../../../src/labs/VSnackbarQueue/VSnackbarQueue.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVSnackbarProps, VSnackbar } from '@/components/VSnackbar/VSnackbar'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, nextTick, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type VSnackbarQueueSlots<T extends string | SnackbarMessage> = {\n default: { item: T }\n text: { item: T }\n actions: {\n item: T\n props: {\n onClick: () => void\n }\n }\n}\n\nexport type SnackbarMessage = Omit<\n VSnackbar['$props'],\n | '$children'\n | 'modelValue'\n | 'onUpdate:modelValue'\n | 'activator'\n | 'activatorProps'\n | 'closeDelay'\n | 'openDelay'\n | 'openOnClick'\n | 'openOnFocus'\n | 'openOnHover'\n>\n\nexport const makeVSnackbarQueueProps = propsFactory({\n // TODO: Port this to Snackbar on dev\n closable: [Boolean, String],\n closeText: {\n type: String,\n default: '$vuetify.dismiss',\n },\n modelValue: {\n type: Array as PropType<readonly (string | SnackbarMessage)[]>,\n default: () => [],\n },\n\n ...omit(makeVSnackbarProps(), ['modelValue']),\n}, 'VSnackbarQueue')\n\nexport const VSnackbarQueue = genericComponent<new <T extends readonly (string | SnackbarMessage)[]> (\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => void\n },\n slots: VSnackbarQueueSlots<T[number]>,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSnackbarQueue',\n\n props: makeVSnackbarQueueProps(),\n\n emits: {\n 'update:modelValue': (val: (string | SnackbarMessage)[]) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n\n const isActive = shallowRef(false)\n const isVisible = shallowRef(false)\n const current = shallowRef<SnackbarMessage>()\n\n watch(() => props.modelValue.length, (val, oldVal) => {\n if (!isVisible.value && val > oldVal) {\n showNext()\n }\n })\n watch(isActive, val => {\n if (val) isVisible.value = true\n })\n\n function onAfterLeave () {\n if (props.modelValue.length) {\n showNext()\n } else {\n current.value = undefined\n isVisible.value = false\n }\n }\n function showNext () {\n const [next, ...rest] = props.modelValue\n emit('update:modelValue', rest)\n current.value = typeof next === 'string' ? { text: next } : next\n nextTick(() => {\n isActive.value = true\n })\n }\n function onClickClose () {\n isActive.value = false\n }\n\n const btnProps = computed(() => ({\n color: typeof props.closable === 'string' ? props.closable : undefined,\n text: t(props.closeText),\n }))\n\n useRender(() => {\n const hasActions = !!(props.closable || slots.actions)\n const { modelValue: _, ...snackbarProps } = VSnackbar.filterProps(props as any)\n\n return (\n <>\n { isVisible.value && !!current.value && (\n slots.default\n ? (\n <VDefaultsProvider defaults={{ VSnackbar: current.value }}>\n { slots.default({ item: current.value }) }\n </VDefaultsProvider>\n ) : (\n <VSnackbar\n { ...snackbarProps }\n { ...current.value }\n v-model={ isActive.value }\n onAfterLeave={ onAfterLeave }\n >\n {{\n text: slots.text ? () => slots.text?.({ item: current.value! }) : undefined,\n actions: hasActions ? () => (\n <>\n { !slots.actions ? (\n <VBtn\n { ...btnProps.value }\n onClick={ onClickClose }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: btnProps.value,\n }}\n >\n { slots.actions({\n item: current.value!,\n props: { onClick: onClickClose },\n })}\n </VDefaultsProvider>\n )}\n </>\n ) : undefined,\n }}\n </VSnackbar>\n )\n )}\n </>\n )\n })\n },\n})\n\nexport type VSnackbarQueue = InstanceType<typeof VSnackbarQueue>\n"],"mappings":"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","ignoreList":[]}