vuetify 3.7.14 → 3.7.16

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 (198) hide show
  1. package/dist/json/attributes.json +3550 -3550
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +162 -162
  4. package/dist/json/tags.json +3 -3
  5. package/dist/json/web-types.json +6475 -6452
  6. package/dist/vuetify-labs.css +5395 -5391
  7. package/dist/vuetify-labs.d.ts +453 -215
  8. package/dist/vuetify-labs.esm.js +254 -151
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +253 -150
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +3635 -3635
  13. package/dist/vuetify.d.ts +389 -209
  14. package/dist/vuetify.esm.js +105 -70
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +104 -69
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +229 -227
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAppBar/index.d.mts +15 -6
  22. package/lib/components/VAutocomplete/index.d.mts +23 -8
  23. package/lib/components/VBadge/VBadge.mjs +2 -2
  24. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  25. package/lib/components/VBtn/VBtn.mjs +6 -3
  26. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  27. package/lib/components/VBtn/index.d.mts +15 -6
  28. package/lib/components/VCard/VCard.mjs +12 -3
  29. package/lib/components/VCard/VCard.mjs.map +1 -1
  30. package/lib/components/VCard/VCardItem.mjs +11 -4
  31. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  32. package/lib/components/VCard/index.d.mts +75 -30
  33. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  34. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  35. package/lib/components/VChip/VChip.mjs +6 -3
  36. package/lib/components/VChip/VChip.mjs.map +1 -1
  37. package/lib/components/VChip/index.d.mts +15 -6
  38. package/lib/components/VCombobox/index.d.mts +23 -8
  39. package/lib/components/VDataIterator/index.d.mts +2 -2
  40. package/lib/components/VDataTable/composables/headers.mjs +3 -1
  41. package/lib/components/VDataTable/composables/headers.mjs.map +1 -1
  42. package/lib/components/VDataTable/composables/paginate.mjs +2 -2
  43. package/lib/components/VDataTable/composables/paginate.mjs.map +1 -1
  44. package/lib/components/VDataTable/index.d.mts +34 -34
  45. package/lib/components/VDataTable/types.mjs.map +1 -1
  46. package/lib/components/VDatePicker/VDatePickerMonth.mjs +12 -21
  47. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  48. package/lib/components/VDatePicker/index.d.mts +3 -3
  49. package/lib/components/VDialog/index.d.mts +21 -6
  50. package/lib/components/VFab/index.d.mts +15 -6
  51. package/lib/components/VList/VListItem.mjs +13 -5
  52. package/lib/components/VList/VListItem.mjs.map +1 -1
  53. package/lib/components/VList/index.d.mts +32 -14
  54. package/lib/components/VMenu/index.d.mts +21 -6
  55. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  56. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  57. package/lib/components/VOverlay/VOverlay.mjs +10 -1
  58. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  59. package/lib/components/VOverlay/index.d.mts +6 -0
  60. package/lib/components/VPagination/VPagination.mjs +3 -3
  61. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  62. package/lib/components/VParallax/VParallax.mjs +1 -1
  63. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  64. package/lib/components/VRating/VRating.mjs +1 -1
  65. package/lib/components/VRating/VRating.mjs.map +1 -1
  66. package/lib/components/VSelect/index.d.mts +23 -8
  67. package/lib/components/VSlider/slider.mjs +2 -1
  68. package/lib/components/VSlider/slider.mjs.map +1 -1
  69. package/lib/components/VSnackbar/index.d.mts +21 -6
  70. package/lib/components/VSparkline/VBarline.mjs +1 -1
  71. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  72. package/lib/components/VTabs/index.d.mts +39 -24
  73. package/lib/components/VTextarea/VTextarea.mjs +2 -2
  74. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  75. package/lib/components/VTooltip/index.d.mts +21 -6
  76. package/lib/components/index.d.mts +333 -153
  77. package/lib/composables/stack.mjs +2 -2
  78. package/lib/composables/stack.mjs.map +1 -1
  79. package/lib/composables/validation.mjs +2 -2
  80. package/lib/composables/validation.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 +56 -56
  84. package/lib/labs/VDateInput/VDateInput.mjs +5 -4
  85. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  86. package/lib/labs/VDateInput/index.d.mts +10 -10
  87. package/lib/labs/VFileUpload/VFileUpload.css +5 -1
  88. package/lib/labs/VFileUpload/VFileUpload.mjs +3 -2
  89. package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -1
  90. package/lib/labs/VFileUpload/VFileUpload.sass +4 -0
  91. package/lib/labs/VFileUpload/_variables.scss +1 -1
  92. package/lib/labs/VFileUpload/index.d.mts +32 -14
  93. package/lib/labs/VNumberInput/VNumberInput.mjs +60 -24
  94. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  95. package/lib/labs/VNumberInput/hold.mjs +31 -0
  96. package/lib/labs/VNumberInput/hold.mjs.map +1 -0
  97. package/lib/labs/VNumberInput/index.d.mts +1 -7
  98. package/lib/labs/VSnackbarQueue/index.d.mts +21 -6
  99. package/lib/labs/VTimePicker/VTimePicker.mjs +30 -31
  100. package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -1
  101. package/lib/labs/VTimePicker/VTimePickerControls.mjs +14 -13
  102. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  103. package/lib/labs/VTimePicker/index.d.mts +35 -13
  104. package/lib/labs/VTimePicker/shared.mjs +2 -0
  105. package/lib/labs/VTimePicker/shared.mjs.map +1 -0
  106. package/lib/labs/VTreeview/VTreeviewItem.mjs +11 -4
  107. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  108. package/lib/labs/VTreeview/index.d.mts +46 -22
  109. package/lib/labs/components.d.mts +143 -70
  110. package/lib/locale/adapters/vuetify.mjs +1 -1
  111. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  112. package/lib/locale/af.mjs +42 -42
  113. package/lib/locale/af.mjs.map +1 -1
  114. package/lib/locale/az.mjs +7 -7
  115. package/lib/locale/az.mjs.map +1 -1
  116. package/lib/locale/bg.mjs +7 -7
  117. package/lib/locale/bg.mjs.map +1 -1
  118. package/lib/locale/ca.mjs +25 -25
  119. package/lib/locale/ca.mjs.map +1 -1
  120. package/lib/locale/ckb.mjs +29 -29
  121. package/lib/locale/ckb.mjs.map +1 -1
  122. package/lib/locale/cs.mjs +13 -13
  123. package/lib/locale/cs.mjs.map +1 -1
  124. package/lib/locale/da.mjs +22 -22
  125. package/lib/locale/da.mjs.map +1 -1
  126. package/lib/locale/el.mjs +41 -41
  127. package/lib/locale/el.mjs.map +1 -1
  128. package/lib/locale/es.mjs +26 -26
  129. package/lib/locale/es.mjs.map +1 -1
  130. package/lib/locale/et.mjs +29 -29
  131. package/lib/locale/et.mjs.map +1 -1
  132. package/lib/locale/fa.mjs +5 -5
  133. package/lib/locale/fa.mjs.map +1 -1
  134. package/lib/locale/fi.mjs +22 -22
  135. package/lib/locale/fi.mjs.map +1 -1
  136. package/lib/locale/fr.mjs +6 -6
  137. package/lib/locale/fr.mjs.map +1 -1
  138. package/lib/locale/he.mjs +29 -29
  139. package/lib/locale/he.mjs.map +1 -1
  140. package/lib/locale/hr.mjs +28 -28
  141. package/lib/locale/hr.mjs.map +1 -1
  142. package/lib/locale/hu.mjs +10 -10
  143. package/lib/locale/hu.mjs.map +1 -1
  144. package/lib/locale/id.mjs +30 -30
  145. package/lib/locale/id.mjs.map +1 -1
  146. package/lib/locale/it.mjs +7 -7
  147. package/lib/locale/it.mjs.map +1 -1
  148. package/lib/locale/ja.mjs +9 -9
  149. package/lib/locale/ja.mjs.map +1 -1
  150. package/lib/locale/km.mjs +6 -6
  151. package/lib/locale/km.mjs.map +1 -1
  152. package/lib/locale/ko.mjs +27 -27
  153. package/lib/locale/ko.mjs.map +1 -1
  154. package/lib/locale/lt.mjs +5 -5
  155. package/lib/locale/lt.mjs.map +1 -1
  156. package/lib/locale/lv.mjs +33 -33
  157. package/lib/locale/lv.mjs.map +1 -1
  158. package/lib/locale/nl.mjs +10 -10
  159. package/lib/locale/nl.mjs.map +1 -1
  160. package/lib/locale/no.mjs +11 -11
  161. package/lib/locale/no.mjs.map +1 -1
  162. package/lib/locale/pl.mjs +7 -7
  163. package/lib/locale/pl.mjs.map +1 -1
  164. package/lib/locale/pt.mjs +11 -11
  165. package/lib/locale/pt.mjs.map +1 -1
  166. package/lib/locale/ro.mjs +9 -9
  167. package/lib/locale/ro.mjs.map +1 -1
  168. package/lib/locale/ru.mjs +6 -6
  169. package/lib/locale/ru.mjs.map +1 -1
  170. package/lib/locale/sk.mjs +5 -5
  171. package/lib/locale/sk.mjs.map +1 -1
  172. package/lib/locale/sl.mjs +4 -4
  173. package/lib/locale/sl.mjs.map +1 -1
  174. package/lib/locale/sr-Cyrl.mjs +30 -30
  175. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  176. package/lib/locale/sr-Latn.mjs +28 -28
  177. package/lib/locale/sr-Latn.mjs.map +1 -1
  178. package/lib/locale/sv.mjs +17 -17
  179. package/lib/locale/sv.mjs.map +1 -1
  180. package/lib/locale/th.mjs +30 -30
  181. package/lib/locale/th.mjs.map +1 -1
  182. package/lib/locale/tr.mjs +31 -31
  183. package/lib/locale/tr.mjs.map +1 -1
  184. package/lib/locale/uk.mjs +29 -29
  185. package/lib/locale/uk.mjs.map +1 -1
  186. package/lib/locale/vi.mjs +28 -28
  187. package/lib/locale/vi.mjs.map +1 -1
  188. package/lib/locale/zh-Hans.mjs +31 -31
  189. package/lib/locale/zh-Hans.mjs.map +1 -1
  190. package/lib/locale/zh-Hant.mjs +31 -31
  191. package/lib/locale/zh-Hant.mjs.map +1 -1
  192. package/lib/util/animation.mjs +8 -8
  193. package/lib/util/animation.mjs.map +1 -1
  194. package/lib/util/helpers.mjs +6 -4
  195. package/lib/util/helpers.mjs.map +1 -1
  196. package/package.json +7 -2
  197. package/lib/labs/VTimePicker/SelectingTimes.mjs +0 -10
  198. package/lib/labs/VTimePicker/SelectingTimes.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.7.14
2
+ * Vuetify v3.7.16
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, reactive, computed, watchEffect, toRefs, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, onBeforeUnmount, watch, readonly, onMounted, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, computed, watchEffect, toRefs, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, onBeforeUnmount, watch, readonly, onMounted, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -151,12 +151,14 @@ function convertToUnit(str) {
151
151
  let unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'px';
152
152
  if (str == null || str === '') {
153
153
  return undefined;
154
- } else if (isNaN(+str)) {
154
+ }
155
+ const num = Number(str);
156
+ if (isNaN(num)) {
155
157
  return String(str);
156
- } else if (!isFinite(+str)) {
158
+ } else if (!isFinite(num)) {
157
159
  return undefined;
158
160
  } else {
159
- return `${Number(str)}${unit}`;
161
+ return `${num}${unit}`;
160
162
  }
161
163
  }
162
164
  function isObject(obj) {
@@ -690,16 +692,16 @@ function nullifyTransforms(el) {
690
692
  let ta, sx, sy, dx, dy;
691
693
  if (tx.startsWith('matrix3d(')) {
692
694
  ta = tx.slice(9, -1).split(/, /);
693
- sx = +ta[0];
694
- sy = +ta[5];
695
- dx = +ta[12];
696
- dy = +ta[13];
695
+ sx = Number(ta[0]);
696
+ sy = Number(ta[5]);
697
+ dx = Number(ta[12]);
698
+ dy = Number(ta[13]);
697
699
  } else if (tx.startsWith('matrix(')) {
698
700
  ta = tx.slice(7, -1).split(/, /);
699
- sx = +ta[0];
700
- sy = +ta[3];
701
- dx = +ta[4];
702
- dy = +ta[5];
701
+ sx = Number(ta[0]);
702
+ sy = Number(ta[3]);
703
+ dx = Number(ta[4]);
704
+ dy = Number(ta[5]);
703
705
  } else {
704
706
  return new Box(rect);
705
707
  }
@@ -2075,7 +2077,7 @@ var en = {
2075
2077
  const LANG_PREFIX = '$vuetify.';
2076
2078
  const replace = (str, params) => {
2077
2079
  return str.replace(/\{(\d+)\}/g, (match, index) => {
2078
- return String(params[+index]);
2080
+ return String(params[Number(index)]);
2079
2081
  });
2080
2082
  };
2081
2083
  const createTranslateFunction = (current, fallback, messages) => {
@@ -5572,7 +5574,10 @@ const makeVBtnProps = propsFactory({
5572
5574
  type: [Boolean, Object],
5573
5575
  default: true
5574
5576
  },
5575
- text: String,
5577
+ text: {
5578
+ type: [String, Number, Boolean],
5579
+ default: undefined
5580
+ },
5576
5581
  ...makeBorderProps(),
5577
5582
  ...makeComponentProps(),
5578
5583
  ...makeDensityProps(),
@@ -5728,7 +5733,7 @@ const VBtn = genericComponent()({
5728
5733
  }
5729
5734
  }
5730
5735
  }, {
5731
- default: () => [slots.default?.() ?? props.text]
5736
+ default: () => [slots.default?.() ?? toDisplayString(props.text)]
5732
5737
  })]), !props.icon && hasAppend && createVNode("span", {
5733
5738
  "key": "append",
5734
5739
  "class": "v-btn__append"
@@ -6736,7 +6741,7 @@ function useValidation(props) {
6736
6741
  const isPristine = shallowRef(true);
6737
6742
  const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
6738
6743
  const errorMessages = computed(() => {
6739
- return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6744
+ return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors))) : internalErrorMessages.value;
6740
6745
  });
6741
6746
  const validateOn = computed(() => {
6742
6747
  let value = (props.validateOn ?? form.validateOn?.value) || 'input';
@@ -6827,7 +6832,7 @@ function useValidation(props) {
6827
6832
  const results = [];
6828
6833
  isValidating.value = true;
6829
6834
  for (const rule of props.rules) {
6830
- if (results.length >= +(props.maxErrors ?? 1)) {
6835
+ if (results.length >= Number(props.maxErrors ?? 1)) {
6831
6836
  break;
6832
6837
  }
6833
6838
  const handler = typeof rule === 'function' ? rule : () => rule;
@@ -7888,7 +7893,10 @@ const makeVChipProps = propsFactory({
7888
7893
  type: [Boolean, Object],
7889
7894
  default: true
7890
7895
  },
7891
- text: String,
7896
+ text: {
7897
+ type: [String, Number, Boolean],
7898
+ default: undefined
7899
+ },
7892
7900
  modelValue: {
7893
7901
  type: Boolean,
7894
7902
  default: true
@@ -8057,7 +8065,7 @@ const VChip = genericComponent()({
8057
8065
  toggle: group?.toggle,
8058
8066
  value: group?.value.value,
8059
8067
  disabled: props.disabled
8060
- }) ?? props.text]), hasAppend && createVNode("div", {
8068
+ }) ?? toDisplayString(props.text)]), hasAppend && createVNode("div", {
8061
8069
  "key": "append",
8062
8070
  "class": "v-chip__append"
8063
8071
  }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
@@ -8936,8 +8944,14 @@ const makeVListItemProps = propsFactory({
8936
8944
  default: true
8937
8945
  },
8938
8946
  slim: Boolean,
8939
- subtitle: [String, Number],
8940
- title: [String, Number],
8947
+ subtitle: {
8948
+ type: [String, Number, Boolean],
8949
+ default: undefined
8950
+ },
8951
+ title: {
8952
+ type: [String, Number, Boolean],
8953
+ default: undefined
8954
+ },
8941
8955
  value: null,
8942
8956
  onClick: EventProp(),
8943
8957
  onClickOnce: EventProp(),
@@ -9056,6 +9070,8 @@ const VListItem = genericComponent()({
9056
9070
  }
9057
9071
  }
9058
9072
  function onKeyDown(e) {
9073
+ const target = e.target;
9074
+ if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9059
9075
  if (e.key === 'Enter' || e.key === ' ') {
9060
9076
  e.preventDefault();
9061
9077
  e.target.dispatchEvent(new MouseEvent('click', e));
@@ -9128,13 +9144,13 @@ const VListItem = genericComponent()({
9128
9144
  }, {
9129
9145
  default: () => [slots.title?.({
9130
9146
  title: props.title
9131
- }) ?? props.title]
9147
+ }) ?? toDisplayString(props.title)]
9132
9148
  }), hasSubtitle && createVNode(VListItemSubtitle, {
9133
9149
  "key": "subtitle"
9134
9150
  }, {
9135
9151
  default: () => [slots.subtitle?.({
9136
9152
  subtitle: props.subtitle
9137
- }) ?? props.subtitle]
9153
+ }) ?? toDisplayString(props.subtitle)]
9138
9154
  }), slots.default?.(slotProps.value)]), hasAppend && createVNode("div", {
9139
9155
  "key": "append",
9140
9156
  "class": "v-list-item__append"
@@ -10735,10 +10751,10 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10735
10751
  activeChildren: new Set()
10736
10752
  });
10737
10753
  provide(StackSymbol, stack);
10738
- const _zIndex = shallowRef(+zIndex.value);
10754
+ const _zIndex = shallowRef(Number(zIndex.value));
10739
10755
  useToggleScope(isActive, () => {
10740
10756
  const lastZIndex = globalStack.at(-1)?.[1];
10741
- _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
10757
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10742
10758
  if (createStackEntry) {
10743
10759
  globalStack.push([vm.uid, _zIndex.value]);
10744
10760
  }
@@ -10947,6 +10963,7 @@ const VOverlay = genericComponent()({
10947
10963
  emits: {
10948
10964
  'click:outside': e => true,
10949
10965
  'update:modelValue': value => true,
10966
+ keydown: e => true,
10950
10967
  afterEnter: () => true,
10951
10968
  afterLeave: () => true
10952
10969
  },
@@ -11059,6 +11076,9 @@ const VOverlay = genericComponent()({
11059
11076
  });
11060
11077
  function onKeydown(e) {
11061
11078
  if (e.key === 'Escape' && globalTop.value) {
11079
+ if (!contentEl.value?.contains(document.activeElement)) {
11080
+ emit('keydown', e);
11081
+ }
11062
11082
  if (!props.persistent) {
11063
11083
  isActive.value = false;
11064
11084
  if (contentEl.value?.contains(document.activeElement)) {
@@ -11067,6 +11087,10 @@ const VOverlay = genericComponent()({
11067
11087
  } else animateClick();
11068
11088
  }
11069
11089
  }
11090
+ function onKeydownSelf(e) {
11091
+ if (e.key === 'Escape' && !globalTop.value) return;
11092
+ emit('keydown', e);
11093
+ }
11070
11094
  const router = useRouter();
11071
11095
  useToggleScope(() => props.closeOnBack, () => {
11072
11096
  useBackButton(router, next => {
@@ -11129,7 +11153,8 @@ const VOverlay = genericComponent()({
11129
11153
  '--v-overlay-opacity': props.opacity,
11130
11154
  top: convertToUnit(top.value)
11131
11155
  }, props.style],
11132
- "ref": root
11156
+ "ref": root,
11157
+ "onKeydown": onKeydownSelf
11133
11158
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
11134
11159
  "color": scrimColor,
11135
11160
  "modelValue": isActive.value && !!props.scrim,
@@ -13520,11 +13545,11 @@ const VBadge = genericComponent()({
13520
13545
  locationStyles
13521
13546
  } = useLocation(props, true, side => {
13522
13547
  const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
13523
- return base + (['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0) : 0);
13548
+ return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
13524
13549
  });
13525
13550
  useRender(() => {
13526
13551
  const value = Number(props.content);
13527
- const content = !props.max || isNaN(value) ? props.content : value <= +props.max ? value : `${props.max}+`;
13552
+ const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
13528
13553
  const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);
13529
13554
  return createVNode(props.tag, mergeProps({
13530
13555
  "class": ['v-badge', {
@@ -14223,8 +14248,14 @@ const makeCardItemProps = propsFactory({
14223
14248
  appendIcon: IconValue,
14224
14249
  prependAvatar: String,
14225
14250
  prependIcon: IconValue,
14226
- subtitle: [String, Number],
14227
- title: [String, Number],
14251
+ subtitle: {
14252
+ type: [String, Number, Boolean],
14253
+ default: undefined
14254
+ },
14255
+ title: {
14256
+ type: [String, Number, Boolean],
14257
+ default: undefined
14258
+ },
14228
14259
  ...makeComponentProps(),
14229
14260
  ...makeDensityProps()
14230
14261
  }, 'VCardItem');
@@ -14274,11 +14305,11 @@ const VCardItem = genericComponent()({
14274
14305
  }, [hasTitle && createVNode(VCardTitle, {
14275
14306
  "key": "title"
14276
14307
  }, {
14277
- default: () => [slots.title?.() ?? props.title]
14308
+ default: () => [slots.title?.() ?? toDisplayString(props.title)]
14278
14309
  }), hasSubtitle && createVNode(VCardSubtitle, {
14279
14310
  "key": "subtitle"
14280
14311
  }, {
14281
- default: () => [slots.subtitle?.() ?? props.subtitle]
14312
+ default: () => [slots.subtitle?.() ?? toDisplayString(props.subtitle)]
14282
14313
  }), slots.default?.()]), hasAppend && createVNode("div", {
14283
14314
  "key": "append",
14284
14315
  "class": "v-card-item__append"
@@ -14350,9 +14381,18 @@ const makeVCardProps = propsFactory({
14350
14381
  type: [Boolean, Object],
14351
14382
  default: true
14352
14383
  },
14353
- subtitle: [String, Number],
14354
- text: [String, Number],
14355
- title: [String, Number],
14384
+ subtitle: {
14385
+ type: [String, Number, Boolean],
14386
+ default: undefined
14387
+ },
14388
+ text: {
14389
+ type: [String, Number, Boolean],
14390
+ default: undefined
14391
+ },
14392
+ title: {
14393
+ type: [String, Number, Boolean],
14394
+ default: undefined
14395
+ },
14356
14396
  ...makeBorderProps(),
14357
14397
  ...makeComponentProps(),
14358
14398
  ...makeDensityProps(),
@@ -14821,7 +14861,7 @@ const VCarousel = genericComponent()({
14821
14861
  onMounted(startTimeout);
14822
14862
  function startTimeout() {
14823
14863
  if (!props.cycle || !windowRef.value) return;
14824
- slideTimeout = window.setTimeout(windowRef.value.group.next, +props.interval > 0 ? +props.interval : 6000);
14864
+ slideTimeout = window.setTimeout(windowRef.value.group.next, Number(props.interval) > 0 ? Number(props.interval) : 6000);
14825
14865
  }
14826
14866
  function restartTimeout() {
14827
14867
  window.clearTimeout(slideTimeout);
@@ -15547,7 +15587,7 @@ const makeSliderProps = propsFactory({
15547
15587
  const useSteps = props => {
15548
15588
  const min = computed(() => parseFloat(props.min));
15549
15589
  const max = computed(() => parseFloat(props.max));
15550
- const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
15590
+ const step = computed(() => Number(props.step) > 0 ? parseFloat(props.step) : 0);
15551
15591
  const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
15552
15592
  function roundValue(value) {
15553
15593
  value = parseFloat(value);
@@ -15681,6 +15721,7 @@ const useSlider = _ref => {
15681
15721
  });
15682
15722
  }
15683
15723
  function onSliderMousedown(e) {
15724
+ if (e.button !== 0) return;
15684
15725
  e.preventDefault();
15685
15726
  handleStart(e);
15686
15727
  window.addEventListener('mousemove', onMouseMove, moveListenerOptions);
@@ -18501,8 +18542,8 @@ const makeDataTablePaginateProps = propsFactory({
18501
18542
  }, 'DataTable-paginate');
18502
18543
  const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
18503
18544
  function createPagination(props) {
18504
- const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
18505
- const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
18545
+ const page = useProxiedModel(props, 'page', undefined, value => Number(value ?? 1));
18546
+ const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => Number(value ?? 10));
18506
18547
  return {
18507
18548
  page,
18508
18549
  itemsPerPage
@@ -19291,7 +19332,7 @@ const VPagination = genericComponent()({
19291
19332
  const minButtons = props.showFirstLastPage ? 5 : 3;
19292
19333
  return Math.max(0, Math.floor(
19293
19334
  // Round to two decimal places to avoid floating point errors
19294
- +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));
19335
+ Number(((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2))));
19295
19336
  }
19296
19337
  const range = computed(() => {
19297
19338
  if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];
@@ -19362,7 +19403,7 @@ const VPagination = genericComponent()({
19362
19403
  ref,
19363
19404
  ellipsis: false,
19364
19405
  icon: true,
19365
- disabled: !!props.disabled || +props.length < 2,
19406
+ disabled: !!props.disabled || Number(props.length) < 2,
19366
19407
  color: isActive ? props.activeColor : props.color,
19367
19408
  'aria-current': isActive,
19368
19409
  'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),
@@ -19411,7 +19452,7 @@ const VPagination = genericComponent()({
19411
19452
  refs.value[currentIndex]?.$el.focus();
19412
19453
  }
19413
19454
  function onKeydown(e) {
19414
- if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {
19455
+ if (e.key === keyValues.left && !props.disabled && page.value > Number(props.start)) {
19415
19456
  page.value = page.value - 1;
19416
19457
  nextTick(updateFocus);
19417
19458
  } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {
@@ -19744,8 +19785,10 @@ function parseFixedColumns(items) {
19744
19785
  } else {
19745
19786
  if (!seenFixed) {
19746
19787
  item.lastFixed = true;
19747
- } else if (isNaN(+item.width)) {
19788
+ } else if (isNaN(Number(item.width))) {
19748
19789
  consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
19790
+ } else {
19791
+ item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0);
19749
19792
  }
19750
19793
  seenFixed = true;
19751
19794
  }
@@ -21878,7 +21921,7 @@ const VDatePickerMonth = genericComponent()({
21878
21921
  model.value = [value];
21879
21922
  }
21880
21923
  }
21881
- return () => createVNode("div", {
21924
+ useRender(() => createVNode("div", {
21882
21925
  "class": "v-date-picker-month"
21883
21926
  }, [props.showWeek && createVNode("div", {
21884
21927
  "key": "weeks",
@@ -21900,6 +21943,13 @@ const VDatePickerMonth = genericComponent()({
21900
21943
  }, [weekDay])), daysInMonth.value.map((item, i) => {
21901
21944
  const slotProps = {
21902
21945
  props: {
21946
+ class: 'v-date-picker-month__day-btn',
21947
+ color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
21948
+ disabled: item.isDisabled,
21949
+ icon: true,
21950
+ ripple: false,
21951
+ text: item.localized,
21952
+ variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
21903
21953
  onClick: () => onClick(item.date)
21904
21954
  },
21905
21955
  item,
@@ -21917,24 +21967,9 @@ const VDatePickerMonth = genericComponent()({
21917
21967
  'v-date-picker-month__day--week-start': item.isWeekStart
21918
21968
  }],
21919
21969
  "data-v-date": !item.isDisabled ? item.isoDate : undefined
21920
- }, [(props.showAdjacentMonths || !item.isAdjacent) && createVNode(VDefaultsProvider, {
21921
- "defaults": {
21922
- VBtn: {
21923
- class: 'v-date-picker-month__day-btn',
21924
- color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
21925
- disabled: item.isDisabled,
21926
- icon: true,
21927
- ripple: false,
21928
- text: item.localized,
21929
- variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
21930
- onClick: () => onClick(item.date)
21931
- }
21932
- }
21933
- }, {
21934
- default: () => [slots.day?.(slotProps) ?? createVNode(VBtn, slotProps.props, null)]
21935
- })]);
21970
+ }, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? createVNode(VBtn, slotProps.props, null))]);
21936
21971
  })])]
21937
- })]);
21972
+ })]));
21938
21973
  }
21939
21974
  });
21940
21975
 
@@ -24595,7 +24630,7 @@ const VOtpInput = genericComponent()({
24595
24630
  "disabled": props.disabled,
24596
24631
  "inputmode": props.type === 'number' ? 'numeric' : 'text',
24597
24632
  "min": props.type === 'number' ? 0 : undefined,
24598
- "maxlength": "1",
24633
+ "maxlength": i === 0 ? length.value : '1',
24599
24634
  "placeholder": props.placeholder,
24600
24635
  "type": props.type === 'number' ? 'text' : props.type,
24601
24636
  "value": model.value[i],
@@ -24691,7 +24726,7 @@ const VParallax = genericComponent()({
24691
24726
  watch(displayHeight, onScroll);
24692
24727
  watch(() => contentRect.value?.height, onScroll);
24693
24728
  const scale = computed(() => {
24694
- return 1 - clamp(+props.scale);
24729
+ return 1 - clamp(Number(props.scale));
24695
24730
  });
24696
24731
  let frame = -1;
24697
24732
  function onScroll() {
@@ -25112,7 +25147,7 @@ const VRating = genericComponent()({
25112
25147
  themeClasses
25113
25148
  } = provideTheme(props);
25114
25149
  const rating = useProxiedModel(props, 'modelValue');
25115
- const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length));
25150
+ const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, Number(props.length)));
25116
25151
  const range = computed(() => createRange(Number(props.length), 1));
25117
25152
  const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
25118
25153
  const hoverIndex = shallowRef(-1);
@@ -25723,7 +25758,7 @@ const VBarline = genericComponent()({
25723
25758
  const height = Math.abs(gridY * value);
25724
25759
  return {
25725
25760
  x: minX + index * gridX,
25726
- y: horizonY - height + +(value < 0) * height,
25761
+ y: horizonY - height + Number(value < 0) * height,
25727
25762
  height,
25728
25763
  value
25729
25764
  };
@@ -27161,10 +27196,10 @@ const VTextarea = genericComponent()({
27161
27196
  }
27162
27197
  }
27163
27198
  const sizerRef = ref();
27164
- const rows = ref(+props.rows);
27199
+ const rows = ref(Number(props.rows));
27165
27200
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
27166
27201
  watchEffect(() => {
27167
- if (!props.autoGrow) rows.value = +props.rows;
27202
+ if (!props.autoGrow) rows.value = Number(props.rows);
27168
27203
  });
27169
27204
  function calculateInputHeight() {
27170
27205
  if (!props.autoGrow) return;
@@ -28211,8 +28246,8 @@ const makeVDateInputProps = propsFactory({
28211
28246
  prependIcon: '$calendar'
28212
28247
  }),
28213
28248
  ...omit(makeVDatePickerProps({
28214
- weeksInMonth: 'dynamic',
28215
- hideHeader: true
28249
+ hideHeader: true,
28250
+ showAdjacentMonths: true
28216
28251
  }), ['active', 'location', 'rounded'])
28217
28252
  }, 'VDateInput');
28218
28253
  const VDateInput = genericComponent()({
@@ -28246,9 +28281,9 @@ const VDateInput = genericComponent()({
28246
28281
  if (props.multiple === 'range') {
28247
28282
  const start = value[0];
28248
28283
  const end = value[value.length - 1];
28249
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}` : '';
28284
+ return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
28250
28285
  }
28251
- return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : '';
28286
+ return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
28252
28287
  });
28253
28288
  const isInteractive = computed(() => !props.disabled && !props.readonly);
28254
28289
  function onKeydown(e) {
@@ -28296,6 +28331,7 @@ const VDateInput = genericComponent()({
28296
28331
  "onUpdate:modelValue": $event => menu.value = $event,
28297
28332
  "activator": "parent",
28298
28333
  "min-width": "0",
28334
+ "eager": isFocused.value,
28299
28335
  "location": props.location,
28300
28336
  "closeOnContentClick": false,
28301
28337
  "openOnClick": false
@@ -28535,8 +28571,9 @@ const VFileUpload = genericComponent()({
28535
28571
  inputRef.value?.click();
28536
28572
  }
28537
28573
  function onClickRemove(index) {
28538
- model.value = model.value.filter((_, i) => i !== index);
28539
- if (model.value.length > 0 || !inputRef.value) return;
28574
+ const newValue = model.value.filter((_, i) => i !== index);
28575
+ model.value = newValue;
28576
+ if (newValue.length > 0 || !inputRef.value) return;
28540
28577
  inputRef.value.value = '';
28541
28578
  }
28542
28579
  useRender(() => {
@@ -28654,6 +28691,36 @@ const VFileUpload = genericComponent()({
28654
28691
  }
28655
28692
  });
28656
28693
 
28694
+ // Utilities
28695
+ const HOLD_REPEAT = 50;
28696
+ const HOLD_DELAY = 500;
28697
+ function useHold(_ref) {
28698
+ let {
28699
+ toggleUpDown
28700
+ } = _ref;
28701
+ let timeout = -1;
28702
+ let interval = -1;
28703
+ onScopeDispose(holdStop);
28704
+ function holdStart(value) {
28705
+ holdStop();
28706
+ tick(value);
28707
+ timeout = window.setTimeout(() => {
28708
+ interval = window.setInterval(() => tick(value), HOLD_REPEAT);
28709
+ }, HOLD_DELAY);
28710
+ }
28711
+ function holdStop() {
28712
+ window.clearTimeout(timeout);
28713
+ window.clearInterval(interval);
28714
+ }
28715
+ function tick(value) {
28716
+ toggleUpDown(value === 'up');
28717
+ }
28718
+ return {
28719
+ holdStart,
28720
+ holdStop
28721
+ };
28722
+ }
28723
+
28657
28724
  // Types
28658
28725
 
28659
28726
  const makeVNumberInputProps = propsFactory({
@@ -28683,7 +28750,7 @@ const makeVNumberInputProps = propsFactory({
28683
28750
  type: Number,
28684
28751
  default: 0
28685
28752
  },
28686
- ...omit(makeVTextFieldProps({}), ['modelValue'])
28753
+ ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
28687
28754
  }, 'VNumberInput');
28688
28755
  const VNumberInput = genericComponent()({
28689
28756
  name: 'VNumberInput',
@@ -28698,16 +28765,26 @@ const VNumberInput = genericComponent()({
28698
28765
  slots
28699
28766
  } = _ref;
28700
28767
  const vTextFieldRef = ref();
28768
+ const {
28769
+ holdStart,
28770
+ holdStop
28771
+ } = useHold({
28772
+ toggleUpDown
28773
+ });
28701
28774
  const form = useForm(props);
28702
28775
  const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28703
- const isFocused = ref(false);
28776
+ const {
28777
+ isFocused,
28778
+ focus,
28779
+ blur
28780
+ } = useFocus(props);
28704
28781
  function correctPrecision(val) {
28705
28782
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
28706
28783
  const fixed = precision == null ? String(val) : val.toFixed(precision);
28707
28784
  return isFocused.value ? Number(fixed).toString() // trim zeros
28708
28785
  : fixed;
28709
28786
  }
28710
- const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28787
+ const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
28711
28788
  const _inputText = shallowRef(null);
28712
28789
  watchEffect(() => {
28713
28790
  if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
@@ -28722,8 +28799,8 @@ const VNumberInput = genericComponent()({
28722
28799
  if (val === null || val === '') {
28723
28800
  model.value = null;
28724
28801
  _inputText.value = null;
28725
- } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
28726
- model.value = +val;
28802
+ } else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
28803
+ model.value = Number(val);
28727
28804
  _inputText.value = val;
28728
28805
  }
28729
28806
  }
@@ -28744,10 +28821,18 @@ const VNumberInput = genericComponent()({
28744
28821
  const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small');
28745
28822
  const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
28746
28823
  const incrementSlotProps = computed(() => ({
28747
- click: onClickUp
28824
+ props: {
28825
+ onClick: onControlClick,
28826
+ onPointerup: onControlMouseup,
28827
+ onPointerdown: onUpControlMousedown
28828
+ }
28748
28829
  }));
28749
28830
  const decrementSlotProps = computed(() => ({
28750
- click: onClickDown
28831
+ props: {
28832
+ onClick: onControlClick,
28833
+ onPointerup: onControlMouseup,
28834
+ onPointerdown: onDownControlMousedown
28835
+ }
28751
28836
  }));
28752
28837
  watch(() => props.precision, () => formatInputValue());
28753
28838
  onMounted(() => {
@@ -28774,14 +28859,6 @@ const VNumberInput = genericComponent()({
28774
28859
  if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
28775
28860
  }
28776
28861
  }
28777
- function onClickUp(e) {
28778
- e.stopPropagation();
28779
- toggleUpDown();
28780
- }
28781
- function onClickDown(e) {
28782
- e.stopPropagation();
28783
- toggleUpDown(false);
28784
- }
28785
28862
  function onBeforeinput(e) {
28786
28863
  if (!e.data) return;
28787
28864
  const existingTxt = e.target?.value;
@@ -28819,15 +28896,36 @@ const VNumberInput = genericComponent()({
28819
28896
  }
28820
28897
  }
28821
28898
  }
28822
- function onControlMousedown(e) {
28899
+ function onControlClick(e) {
28900
+ e.stopPropagation();
28901
+ }
28902
+ function onControlMouseup(e) {
28903
+ const el = e.currentTarget;
28904
+ el?.releasePointerCapture(e.pointerId);
28905
+ e.preventDefault();
28906
+ e.stopPropagation();
28907
+ holdStop();
28908
+ }
28909
+ function onUpControlMousedown(e) {
28910
+ const el = e.currentTarget;
28911
+ el?.setPointerCapture(e.pointerId);
28912
+ e.preventDefault();
28823
28913
  e.stopPropagation();
28914
+ holdStart('up');
28915
+ }
28916
+ function onDownControlMousedown(e) {
28917
+ const el = e.currentTarget;
28918
+ el?.setPointerCapture(e.pointerId);
28919
+ e.preventDefault();
28920
+ e.stopPropagation();
28921
+ holdStart('down');
28824
28922
  }
28825
28923
  function clampModel() {
28826
28924
  if (controlsDisabled.value) return;
28827
28925
  if (!vTextFieldRef.value) return;
28828
28926
  const actualText = vTextFieldRef.value.value;
28829
- if (actualText && !isNaN(+actualText)) {
28830
- inputText.value = correctPrecision(clamp(+actualText, props.min, props.max));
28927
+ if (actualText && !isNaN(Number(actualText))) {
28928
+ inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
28831
28929
  } else {
28832
28930
  inputText.value = null;
28833
28931
  }
@@ -28849,11 +28947,11 @@ const VNumberInput = genericComponent()({
28849
28947
  inputText.value = model.value.toString();
28850
28948
  }
28851
28949
  function onFocus() {
28852
- isFocused.value = true;
28950
+ focus();
28853
28951
  trimDecimalZeros();
28854
28952
  }
28855
28953
  function onBlur() {
28856
- isFocused.value = false;
28954
+ blur();
28857
28955
  clampModel();
28858
28956
  }
28859
28957
  useRender(() => {
@@ -28870,8 +28968,9 @@ const VNumberInput = genericComponent()({
28870
28968
  "data-testid": "increment",
28871
28969
  "aria-hidden": "true",
28872
28970
  "icon": incrementIcon.value,
28873
- "onClick": onClickUp,
28874
- "onMousedown": onControlMousedown,
28971
+ "onClick": onControlClick,
28972
+ "onPointerup": onControlMouseup,
28973
+ "onPointerdown": onUpControlMousedown,
28875
28974
  "size": controlNodeSize.value,
28876
28975
  "tabindex": "-1"
28877
28976
  }, null) : createVNode(VDefaultsProvider, {
@@ -28900,8 +28999,9 @@ const VNumberInput = genericComponent()({
28900
28999
  "icon": decrementIcon.value,
28901
29000
  "size": controlNodeSize.value,
28902
29001
  "tabindex": "-1",
28903
- "onClick": onClickDown,
28904
- "onMousedown": onControlMousedown
29002
+ "onClick": onControlClick,
29003
+ "onPointerup": onControlMouseup,
29004
+ "onPointerdown": onDownControlMousedown
28905
29005
  }, null) : createVNode(VDefaultsProvider, {
28906
29006
  "key": "decrement-defaults",
28907
29007
  "defaults": {
@@ -28945,6 +29045,7 @@ const VNumberInput = genericComponent()({
28945
29045
  "ref": vTextFieldRef,
28946
29046
  "modelValue": inputText.value,
28947
29047
  "onUpdate:modelValue": $event => inputText.value = $event,
29048
+ "validationValue": model.value,
28948
29049
  "onBeforeinput": onBeforeinput,
28949
29050
  "onFocus": onFocus,
28950
29051
  "onBlur": onBlur,
@@ -29698,14 +29799,7 @@ const VTimePickerClock = genericComponent()({
29698
29799
  }
29699
29800
  });
29700
29801
 
29701
- // @ts-nocheck
29702
- /* eslint-disable */
29703
- var SelectingTimes = /*#__PURE__*/function (SelectingTimes) {
29704
- SelectingTimes[SelectingTimes["Hour"] = 1] = "Hour";
29705
- SelectingTimes[SelectingTimes["Minute"] = 2] = "Minute";
29706
- SelectingTimes[SelectingTimes["Second"] = 3] = "Second";
29707
- return SelectingTimes;
29708
- }(SelectingTimes || {});
29802
+ // Types
29709
29803
 
29710
29804
  const makeVTimePickerControlsProps = propsFactory({
29711
29805
  ampm: Boolean,
@@ -29719,15 +29813,15 @@ const makeVTimePickerControlsProps = propsFactory({
29719
29813
  period: String,
29720
29814
  readonly: Boolean,
29721
29815
  useSeconds: Boolean,
29722
- selecting: Number,
29723
- value: Number
29816
+ value: Number,
29817
+ viewMode: String
29724
29818
  }, 'VTimePickerControls');
29725
29819
  const VTimePickerControls = genericComponent()({
29726
29820
  name: 'VTimePickerControls',
29727
29821
  props: makeVTimePickerControlsProps(),
29728
29822
  emits: {
29729
29823
  'update:period': data => true,
29730
- 'update:selecting': data => true
29824
+ 'update:viewMode': data => true
29731
29825
  },
29732
29826
  setup(props, _ref) {
29733
29827
  let {
@@ -29750,8 +29844,8 @@ const VTimePickerControls = genericComponent()({
29750
29844
  'v-time-picker-controls__time--with-seconds': props.useSeconds
29751
29845
  }
29752
29846
  }, [createVNode(VBtn, {
29753
- "active": props.selecting === 1,
29754
- "color": props.selecting === 1 ? props.color : undefined,
29847
+ "active": props.viewMode === 'hour',
29848
+ "color": props.viewMode === 'hour' ? props.color : undefined,
29755
29849
  "disabled": props.disabled,
29756
29850
  "variant": "tonal",
29757
29851
  "class": {
@@ -29760,24 +29854,24 @@ const VTimePickerControls = genericComponent()({
29760
29854
  'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
29761
29855
  },
29762
29856
  "text": props.hour == null ? '--' : pad(`${hour}`),
29763
- "onClick": () => emit('update:selecting', SelectingTimes.Hour)
29857
+ "onClick": () => emit('update:viewMode', 'hour')
29764
29858
  }, null), createVNode("span", {
29765
29859
  "class": ['v-time-picker-controls__time__separator', {
29766
29860
  'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
29767
29861
  }]
29768
29862
  }, [createTextVNode(":")]), createVNode(VBtn, {
29769
- "active": props.selecting === 2,
29770
- "color": props.selecting === 2 ? props.color : undefined,
29863
+ "active": props.viewMode === 'minute',
29864
+ "color": props.viewMode === 'minute' ? props.color : undefined,
29771
29865
  "class": {
29772
29866
  'v-time-picker-controls__time__btn': true,
29773
- 'v-time-picker-controls__time__btn__active': props.selecting === 2,
29867
+ 'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',
29774
29868
  'v-time-picker-controls__time--with-ampm__btn': props.ampm,
29775
29869
  'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
29776
29870
  },
29777
29871
  "disabled": props.disabled,
29778
29872
  "variant": "tonal",
29779
29873
  "text": props.minute == null ? '--' : pad(props.minute),
29780
- "onClick": () => emit('update:selecting', SelectingTimes.Minute)
29874
+ "onClick": () => emit('update:viewMode', 'minute')
29781
29875
  }, null), props.useSeconds && createVNode("span", {
29782
29876
  "class": ['v-time-picker-controls__time__separator', {
29783
29877
  'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
@@ -29785,11 +29879,13 @@ const VTimePickerControls = genericComponent()({
29785
29879
  "key": "secondsDivider"
29786
29880
  }, [createTextVNode(":")]), props.useSeconds && createVNode(VBtn, {
29787
29881
  "key": "secondsVal",
29882
+ "active": props.viewMode === 'second',
29883
+ "color": props.viewMode === 'second' ? props.color : undefined,
29788
29884
  "variant": "tonal",
29789
- "onClick": () => emit('update:selecting', SelectingTimes.Second),
29885
+ "onClick": () => emit('update:viewMode', 'second'),
29790
29886
  "class": {
29791
29887
  'v-time-picker-controls__time__btn': true,
29792
- 'v-time-picker-controls__time__btn__active': props.selecting === 3,
29888
+ 'v-time-picker-controls__time__btn__active': props.viewMode === 'second',
29793
29889
  'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
29794
29890
  },
29795
29891
  "disabled": props.disabled,
@@ -29834,11 +29930,6 @@ const rangeHours24 = createRange(24);
29834
29930
  const rangeHours12am = createRange(12);
29835
29931
  const rangeHours12pm = rangeHours12am.map(v => v + 12);
29836
29932
  createRange(60);
29837
- const selectingNames = {
29838
- 1: 'hour',
29839
- 2: 'minute',
29840
- 3: 'second'
29841
- };
29842
29933
  const makeVTimePickerProps = propsFactory({
29843
29934
  allowedHours: [Function, Array],
29844
29935
  allowedMinutes: [Function, Array],
@@ -29851,6 +29942,10 @@ const makeVTimePickerProps = propsFactory({
29851
29942
  },
29852
29943
  max: String,
29853
29944
  min: String,
29945
+ viewMode: {
29946
+ type: String,
29947
+ default: 'hour'
29948
+ },
29854
29949
  modelValue: null,
29855
29950
  readonly: Boolean,
29856
29951
  scrollable: Boolean,
@@ -29867,7 +29962,8 @@ const VTimePicker = genericComponent()({
29867
29962
  'update:minute': val => true,
29868
29963
  'update:period': val => true,
29869
29964
  'update:second': val => true,
29870
- 'update:modelValue': val => true
29965
+ 'update:modelValue': val => true,
29966
+ 'update:viewMode': val => true
29871
29967
  },
29872
29968
  setup(props, _ref) {
29873
29969
  let {
@@ -29884,7 +29980,7 @@ const VTimePicker = genericComponent()({
29884
29980
  const lazyInputMinute = ref(null);
29885
29981
  const lazyInputSecond = ref(null);
29886
29982
  const period = ref('am');
29887
- const selecting = ref(SelectingTimes.Hour);
29983
+ const viewMode = useProxiedModel(props, 'viewMode', 'hour');
29888
29984
  const controlsRef = ref(null);
29889
29985
  const clockRef = ref(null);
29890
29986
  const isAllowedHourCb = computed(() => {
@@ -29898,7 +29994,7 @@ const VTimePicker = genericComponent()({
29898
29994
  const minHour = props.min ? Number(props.min.split(':')[0]) : 0;
29899
29995
  const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;
29900
29996
  return val => {
29901
- return val >= minHour * 1 && val <= maxHour * 1 && (!cb || cb(val));
29997
+ return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));
29902
29998
  };
29903
29999
  });
29904
30000
  const isAllowedMinuteCb = computed(() => {
@@ -29914,8 +30010,8 @@ const VTimePicker = genericComponent()({
29914
30010
  }
29915
30011
  const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];
29916
30012
  const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];
29917
- const minTime = minHour * 60 + minMinute * 1;
29918
- const maxTime = maxHour * 60 + maxMinute * 1;
30013
+ const minTime = minHour * 60 + Number(minMinute);
30014
+ const maxTime = maxHour * 60 + Number(maxMinute);
29919
30015
  return val => {
29920
30016
  const time = 60 * inputHour.value + val;
29921
30017
  return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));
@@ -29935,8 +30031,8 @@ const VTimePicker = genericComponent()({
29935
30031
  }
29936
30032
  const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];
29937
30033
  const [maxHour, maxMinute, maxSecond] = props.max ? props.max.split(':').map(Number) : [23, 59, 59];
29938
- const minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0) * 1;
29939
- const maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0) * 1;
30034
+ const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);
30035
+ const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);
29940
30036
  return val => {
29941
30037
  const time = 3600 * inputHour.value + 60 * inputMinute.value + val;
29942
30038
  return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));
@@ -30002,16 +30098,16 @@ const VTimePicker = genericComponent()({
30002
30098
  return true;
30003
30099
  }
30004
30100
  function onInput(value) {
30005
- if (selecting.value === SelectingTimes.Hour) {
30101
+ if (viewMode.value === 'hour') {
30006
30102
  inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;
30007
- } else if (selecting.value === SelectingTimes.Minute) {
30103
+ } else if (viewMode.value === 'minute') {
30008
30104
  inputMinute.value = value;
30009
30105
  } else {
30010
30106
  inputSecond.value = value;
30011
30107
  }
30012
30108
  }
30013
30109
  function onChange(value) {
30014
- switch (selectingNames[selecting.value]) {
30110
+ switch (viewMode.value || 'hour') {
30015
30111
  case 'hour':
30016
30112
  emit('update:hour', value);
30017
30113
  break;
@@ -30023,10 +30119,10 @@ const VTimePicker = genericComponent()({
30023
30119
  break;
30024
30120
  }
30025
30121
  const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);
30026
- if (selecting.value === SelectingTimes.Hour) {
30027
- selecting.value = SelectingTimes.Minute;
30028
- } else if (props.useSeconds && selecting.value === SelectingTimes.Minute) {
30029
- selecting.value = SelectingTimes.Second;
30122
+ if (viewMode.value === 'hour') {
30123
+ viewMode.value = 'minute';
30124
+ } else if (props.useSeconds && viewMode.value === 'minute') {
30125
+ viewMode.value = 'second';
30030
30126
  }
30031
30127
  if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;
30032
30128
  const time = genValue();
@@ -30055,20 +30151,20 @@ const VTimePicker = genericComponent()({
30055
30151
  "minute": inputMinute.value,
30056
30152
  "period": period.value,
30057
30153
  "second": inputSecond.value,
30058
- "selecting": selecting.value,
30154
+ "viewMode": viewMode.value,
30059
30155
  "onUpdate:period": val => setPeriod(val),
30060
- "onUpdate:selecting": value => selecting.value = value,
30156
+ "onUpdate:viewMode": value => viewMode.value = value,
30061
30157
  "ref": controlsRef
30062
30158
  }), null),
30063
30159
  default: () => createVNode(VTimePickerClock, mergeProps(timePickerClockProps, {
30064
- "allowedValues": selecting.value === SelectingTimes.Hour ? isAllowedHourCb.value : selecting.value === SelectingTimes.Minute ? isAllowedMinuteCb.value : isAllowedSecondCb.value,
30065
- "double": selecting.value === SelectingTimes.Hour && !isAmPm.value,
30066
- "format": selecting.value === SelectingTimes.Hour ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),
30067
- "max": selecting.value === SelectingTimes.Hour ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,
30068
- "min": selecting.value === SelectingTimes.Hour && isAmPm.value && period.value === 'pm' ? 12 : 0,
30160
+ "allowedValues": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,
30161
+ "double": viewMode.value === 'hour' && !isAmPm.value,
30162
+ "format": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),
30163
+ "max": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,
30164
+ "min": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,
30069
30165
  "size": 20,
30070
- "step": selecting.value === SelectingTimes.Hour ? 1 : 5,
30071
- "modelValue": selecting.value === SelectingTimes.Hour ? inputHour.value : selecting.value === SelectingTimes.Minute ? inputMinute.value : inputSecond.value,
30166
+ "step": viewMode.value === 'hour' ? 1 : 5,
30167
+ "modelValue": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,
30072
30168
  "onChange": onChange,
30073
30169
  "onInput": onInput,
30074
30170
  "ref": clockRef
@@ -30129,7 +30225,6 @@ const VTreeviewSymbol = Symbol.for('vuetify:v-treeview');
30129
30225
 
30130
30226
  const makeVTreeviewItemProps = propsFactory({
30131
30227
  loading: Boolean,
30132
- onToggleExpand: EventProp(),
30133
30228
  toggleIcon: IconValue,
30134
30229
  ...makeVListItemProps({
30135
30230
  slim: true
@@ -30138,9 +30233,13 @@ const makeVTreeviewItemProps = propsFactory({
30138
30233
  const VTreeviewItem = genericComponent()({
30139
30234
  name: 'VTreeviewItem',
30140
30235
  props: makeVTreeviewItemProps(),
30236
+ emits: {
30237
+ toggleExpand: value => true
30238
+ },
30141
30239
  setup(props, _ref) {
30142
30240
  let {
30143
- slots
30241
+ slots,
30242
+ emit
30144
30243
  } = _ref;
30145
30244
  const visibleIds = inject$1(VTreeviewSymbol, {
30146
30245
  visibleIds: ref()
@@ -30155,6 +30254,10 @@ const VTreeviewItem = genericComponent()({
30155
30254
  vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
30156
30255
  }
30157
30256
  }
30257
+ function onClickAction(e) {
30258
+ e.preventDefault();
30259
+ emit('toggleExpand', e);
30260
+ }
30158
30261
  useRender(() => {
30159
30262
  const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
30160
30263
  const hasPrepend = slots.prepend || props.toggleIcon;
@@ -30179,7 +30282,7 @@ const VTreeviewItem = genericComponent()({
30179
30282
  "icon": props.toggleIcon,
30180
30283
  "loading": props.loading,
30181
30284
  "variant": "text",
30182
- "onClick": props.onToggleExpand
30285
+ "onClick": onClickAction
30183
30286
  }, {
30184
30287
  loader() {
30185
30288
  return createVNode(VProgressCircular, {
@@ -30974,7 +31077,7 @@ function createVuetify$1() {
30974
31077
  goTo
30975
31078
  };
30976
31079
  }
30977
- const version$1 = "3.7.14";
31080
+ const version$1 = "3.7.16";
30978
31081
  createVuetify$1.version = version$1;
30979
31082
 
30980
31083
  // Vue's inject() can only be used in setup
@@ -31227,7 +31330,7 @@ var index = /*#__PURE__*/Object.freeze({
31227
31330
 
31228
31331
  /* eslint-disable local-rules/sort-imports */
31229
31332
 
31230
- const version = "3.7.14";
31333
+ const version = "3.7.16";
31231
31334
 
31232
31335
  /* eslint-disable local-rules/sort-imports */
31233
31336