@vuetify/nightly 3.7.15-master.2025-03-05 → 3.7.15-master.2025-03-07

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 (92) hide show
  1. package/CHANGELOG.md +29 -3
  2. package/dist/json/attributes.json +2581 -2577
  3. package/dist/json/importMap-labs.json +12 -12
  4. package/dist/json/importMap.json +160 -160
  5. package/dist/json/tags.json +3 -2
  6. package/dist/json/web-types.json +4799 -4778
  7. package/dist/vuetify-labs.css +2627 -2627
  8. package/dist/vuetify-labs.d.ts +301 -129
  9. package/dist/vuetify-labs.esm.js +129 -106
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +128 -105
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +2604 -2604
  14. package/dist/vuetify.d.ts +258 -144
  15. package/dist/vuetify.esm.js +80 -51
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +79 -50
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +219 -217
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAppBar/index.d.mts +15 -6
  23. package/lib/components/VAutocomplete/index.d.mts +2 -2
  24. package/lib/components/VBadge/VBadge.mjs +2 -2
  25. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  26. package/lib/components/VBtn/VBtn.mjs +6 -3
  27. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  28. package/lib/components/VBtn/index.d.mts +15 -6
  29. package/lib/components/VCard/VCard.mjs +12 -3
  30. package/lib/components/VCard/VCard.mjs.map +1 -1
  31. package/lib/components/VCard/VCardItem.mjs +11 -4
  32. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  33. package/lib/components/VCard/index.d.mts +75 -30
  34. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  35. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  36. package/lib/components/VChip/VChip.mjs +6 -3
  37. package/lib/components/VChip/VChip.mjs.map +1 -1
  38. package/lib/components/VChip/index.d.mts +15 -6
  39. package/lib/components/VCombobox/index.d.mts +2 -2
  40. package/lib/components/VDataTable/composables/headers.mjs +2 -2
  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/VFab/index.d.mts +15 -6
  45. package/lib/components/VList/VListItem.mjs +11 -5
  46. package/lib/components/VList/VListItem.mjs.map +1 -1
  47. package/lib/components/VList/index.d.mts +32 -14
  48. package/lib/components/VPagination/VPagination.mjs +3 -3
  49. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  50. package/lib/components/VParallax/VParallax.mjs +1 -1
  51. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  52. package/lib/components/VRating/VRating.mjs +1 -1
  53. package/lib/components/VRating/VRating.mjs.map +1 -1
  54. package/lib/components/VSelect/index.d.mts +2 -2
  55. package/lib/components/VSlider/slider.mjs +1 -1
  56. package/lib/components/VSlider/slider.mjs.map +1 -1
  57. package/lib/components/VSparkline/VBarline.mjs +1 -1
  58. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  59. package/lib/components/VTabs/index.d.mts +39 -24
  60. package/lib/components/VTextarea/VTextarea.mjs +2 -2
  61. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  62. package/lib/components/index.d.mts +206 -92
  63. package/lib/composables/stack.mjs +2 -2
  64. package/lib/composables/stack.mjs.map +1 -1
  65. package/lib/composables/validation.mjs +2 -2
  66. package/lib/composables/validation.mjs.map +1 -1
  67. package/lib/entry-bundler.mjs +1 -1
  68. package/lib/framework.mjs +1 -1
  69. package/lib/index.d.mts +52 -52
  70. package/lib/labs/VFileUpload/VFileUpload.mjs +3 -2
  71. package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -1
  72. package/lib/labs/VFileUpload/index.d.mts +32 -14
  73. package/lib/labs/VNumberInput/VNumberInput.mjs +5 -5
  74. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  75. package/lib/labs/VTimePicker/VTimePicker.mjs +30 -31
  76. package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -1
  77. package/lib/labs/VTimePicker/VTimePickerControls.mjs +12 -13
  78. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  79. package/lib/labs/VTimePicker/index.d.mts +35 -13
  80. package/lib/labs/VTimePicker/shared.mjs +2 -0
  81. package/lib/labs/VTimePicker/shared.mjs.map +1 -0
  82. package/lib/labs/VTreeview/index.d.mts +32 -14
  83. package/lib/labs/components.d.mts +97 -39
  84. package/lib/locale/adapters/vuetify.mjs +1 -1
  85. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  86. package/lib/util/animation.mjs +8 -8
  87. package/lib/util/animation.mjs.map +1 -1
  88. package/lib/util/helpers.mjs +6 -4
  89. package/lib/util/helpers.mjs.map +1 -1
  90. package/package.json +1 -1
  91. package/lib/labs/VTimePicker/SelectingTimes.mjs +0 -10
  92. package/lib/labs/VTimePicker/SelectingTimes.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.7.15-master.2025-03-05
2
+ * Vuetify v3.7.15-master.2025-03-07
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(),
@@ -9130,13 +9144,13 @@ const VListItem = genericComponent()({
9130
9144
  }, {
9131
9145
  default: () => [slots.title?.({
9132
9146
  title: props.title
9133
- }) ?? props.title]
9147
+ }) ?? toDisplayString(props.title)]
9134
9148
  }), hasSubtitle && createVNode(VListItemSubtitle, {
9135
9149
  "key": "subtitle"
9136
9150
  }, {
9137
9151
  default: () => [slots.subtitle?.({
9138
9152
  subtitle: props.subtitle
9139
- }) ?? props.subtitle]
9153
+ }) ?? toDisplayString(props.subtitle)]
9140
9154
  }), slots.default?.(slotProps.value)]), hasAppend && createVNode("div", {
9141
9155
  "key": "append",
9142
9156
  "class": "v-list-item__append"
@@ -10737,10 +10751,10 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10737
10751
  activeChildren: new Set()
10738
10752
  });
10739
10753
  provide(StackSymbol, stack);
10740
- const _zIndex = shallowRef(+zIndex.value);
10754
+ const _zIndex = shallowRef(Number(zIndex.value));
10741
10755
  useToggleScope(isActive, () => {
10742
10756
  const lastZIndex = globalStack.at(-1)?.[1];
10743
- _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
10757
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10744
10758
  if (createStackEntry) {
10745
10759
  globalStack.push([vm.uid, _zIndex.value]);
10746
10760
  }
@@ -13522,11 +13536,11 @@ const VBadge = genericComponent()({
13522
13536
  locationStyles
13523
13537
  } = useLocation(props, true, side => {
13524
13538
  const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
13525
- return base + (['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0) : 0);
13539
+ return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
13526
13540
  });
13527
13541
  useRender(() => {
13528
13542
  const value = Number(props.content);
13529
- const content = !props.max || isNaN(value) ? props.content : value <= +props.max ? value : `${props.max}+`;
13543
+ const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
13530
13544
  const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);
13531
13545
  return createVNode(props.tag, mergeProps({
13532
13546
  "class": ['v-badge', {
@@ -14225,8 +14239,14 @@ const makeCardItemProps = propsFactory({
14225
14239
  appendIcon: IconValue,
14226
14240
  prependAvatar: String,
14227
14241
  prependIcon: IconValue,
14228
- subtitle: [String, Number],
14229
- title: [String, Number],
14242
+ subtitle: {
14243
+ type: [String, Number, Boolean],
14244
+ default: undefined
14245
+ },
14246
+ title: {
14247
+ type: [String, Number, Boolean],
14248
+ default: undefined
14249
+ },
14230
14250
  ...makeComponentProps(),
14231
14251
  ...makeDensityProps()
14232
14252
  }, 'VCardItem');
@@ -14276,11 +14296,11 @@ const VCardItem = genericComponent()({
14276
14296
  }, [hasTitle && createVNode(VCardTitle, {
14277
14297
  "key": "title"
14278
14298
  }, {
14279
- default: () => [slots.title?.() ?? props.title]
14299
+ default: () => [slots.title?.() ?? toDisplayString(props.title)]
14280
14300
  }), hasSubtitle && createVNode(VCardSubtitle, {
14281
14301
  "key": "subtitle"
14282
14302
  }, {
14283
- default: () => [slots.subtitle?.() ?? props.subtitle]
14303
+ default: () => [slots.subtitle?.() ?? toDisplayString(props.subtitle)]
14284
14304
  }), slots.default?.()]), hasAppend && createVNode("div", {
14285
14305
  "key": "append",
14286
14306
  "class": "v-card-item__append"
@@ -14352,9 +14372,18 @@ const makeVCardProps = propsFactory({
14352
14372
  type: [Boolean, Object],
14353
14373
  default: true
14354
14374
  },
14355
- subtitle: [String, Number],
14356
- text: [String, Number],
14357
- title: [String, Number],
14375
+ subtitle: {
14376
+ type: [String, Number, Boolean],
14377
+ default: undefined
14378
+ },
14379
+ text: {
14380
+ type: [String, Number, Boolean],
14381
+ default: undefined
14382
+ },
14383
+ title: {
14384
+ type: [String, Number, Boolean],
14385
+ default: undefined
14386
+ },
14358
14387
  ...makeBorderProps(),
14359
14388
  ...makeComponentProps(),
14360
14389
  ...makeDensityProps(),
@@ -14823,7 +14852,7 @@ const VCarousel = genericComponent()({
14823
14852
  onMounted(startTimeout);
14824
14853
  function startTimeout() {
14825
14854
  if (!props.cycle || !windowRef.value) return;
14826
- slideTimeout = window.setTimeout(windowRef.value.group.next, +props.interval > 0 ? +props.interval : 6000);
14855
+ slideTimeout = window.setTimeout(windowRef.value.group.next, Number(props.interval) > 0 ? Number(props.interval) : 6000);
14827
14856
  }
14828
14857
  function restartTimeout() {
14829
14858
  window.clearTimeout(slideTimeout);
@@ -15549,7 +15578,7 @@ const makeSliderProps = propsFactory({
15549
15578
  const useSteps = props => {
15550
15579
  const min = computed(() => parseFloat(props.min));
15551
15580
  const max = computed(() => parseFloat(props.max));
15552
- const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
15581
+ const step = computed(() => Number(props.step) > 0 ? parseFloat(props.step) : 0);
15553
15582
  const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
15554
15583
  function roundValue(value) {
15555
15584
  value = parseFloat(value);
@@ -18504,8 +18533,8 @@ const makeDataTablePaginateProps = propsFactory({
18504
18533
  }, 'DataTable-paginate');
18505
18534
  const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
18506
18535
  function createPagination(props) {
18507
- const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
18508
- const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
18536
+ const page = useProxiedModel(props, 'page', undefined, value => Number(value ?? 1));
18537
+ const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => Number(value ?? 10));
18509
18538
  return {
18510
18539
  page,
18511
18540
  itemsPerPage
@@ -19294,7 +19323,7 @@ const VPagination = genericComponent()({
19294
19323
  const minButtons = props.showFirstLastPage ? 5 : 3;
19295
19324
  return Math.max(0, Math.floor(
19296
19325
  // Round to two decimal places to avoid floating point errors
19297
- +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));
19326
+ Number(((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2))));
19298
19327
  }
19299
19328
  const range = computed(() => {
19300
19329
  if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];
@@ -19365,7 +19394,7 @@ const VPagination = genericComponent()({
19365
19394
  ref,
19366
19395
  ellipsis: false,
19367
19396
  icon: true,
19368
- disabled: !!props.disabled || +props.length < 2,
19397
+ disabled: !!props.disabled || Number(props.length) < 2,
19369
19398
  color: isActive ? props.activeColor : props.color,
19370
19399
  'aria-current': isActive,
19371
19400
  'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),
@@ -19414,7 +19443,7 @@ const VPagination = genericComponent()({
19414
19443
  refs.value[currentIndex]?.$el.focus();
19415
19444
  }
19416
19445
  function onKeydown(e) {
19417
- if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {
19446
+ if (e.key === keyValues.left && !props.disabled && page.value > Number(props.start)) {
19418
19447
  page.value = page.value - 1;
19419
19448
  nextTick(updateFocus);
19420
19449
  } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {
@@ -19747,10 +19776,10 @@ function parseFixedColumns(items) {
19747
19776
  } else {
19748
19777
  if (!seenFixed) {
19749
19778
  item.lastFixed = true;
19750
- } else if (isNaN(+item.width)) {
19779
+ } else if (isNaN(Number(item.width))) {
19751
19780
  consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
19752
19781
  } else {
19753
- item.minWidth = Math.max(+item.width || 0, +item.minWidth || 0);
19782
+ item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0);
19754
19783
  }
19755
19784
  seenFixed = true;
19756
19785
  }
@@ -24696,7 +24725,7 @@ const VParallax = genericComponent()({
24696
24725
  watch(displayHeight, onScroll);
24697
24726
  watch(() => contentRect.value?.height, onScroll);
24698
24727
  const scale = computed(() => {
24699
- return 1 - clamp(+props.scale);
24728
+ return 1 - clamp(Number(props.scale));
24700
24729
  });
24701
24730
  let frame = -1;
24702
24731
  function onScroll() {
@@ -25117,7 +25146,7 @@ const VRating = genericComponent()({
25117
25146
  themeClasses
25118
25147
  } = provideTheme(props);
25119
25148
  const rating = useProxiedModel(props, 'modelValue');
25120
- const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length));
25149
+ const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, Number(props.length)));
25121
25150
  const range = computed(() => createRange(Number(props.length), 1));
25122
25151
  const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
25123
25152
  const hoverIndex = shallowRef(-1);
@@ -25728,7 +25757,7 @@ const VBarline = genericComponent()({
25728
25757
  const height = Math.abs(gridY * value);
25729
25758
  return {
25730
25759
  x: minX + index * gridX,
25731
- y: horizonY - height + +(value < 0) * height,
25760
+ y: horizonY - height + Number(value < 0) * height,
25732
25761
  height,
25733
25762
  value
25734
25763
  };
@@ -27166,10 +27195,10 @@ const VTextarea = genericComponent()({
27166
27195
  }
27167
27196
  }
27168
27197
  const sizerRef = ref();
27169
- const rows = ref(+props.rows);
27198
+ const rows = ref(Number(props.rows));
27170
27199
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
27171
27200
  watchEffect(() => {
27172
- if (!props.autoGrow) rows.value = +props.rows;
27201
+ if (!props.autoGrow) rows.value = Number(props.rows);
27173
27202
  });
27174
27203
  function calculateInputHeight() {
27175
27204
  if (!props.autoGrow) return;
@@ -28540,8 +28569,9 @@ const VFileUpload = genericComponent()({
28540
28569
  inputRef.value?.click();
28541
28570
  }
28542
28571
  function onClickRemove(index) {
28543
- model.value = model.value.filter((_, i) => i !== index);
28544
- if (model.value.length > 0 || !inputRef.value) return;
28572
+ const newValue = model.value.filter((_, i) => i !== index);
28573
+ model.value = newValue;
28574
+ if (newValue.length > 0 || !inputRef.value) return;
28545
28575
  inputRef.value.value = '';
28546
28576
  }
28547
28577
  useRender(() => {
@@ -28752,7 +28782,7 @@ const VNumberInput = genericComponent()({
28752
28782
  return isFocused.value ? Number(fixed).toString() // trim zeros
28753
28783
  : fixed;
28754
28784
  }
28755
- const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28785
+ const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
28756
28786
  const _inputText = shallowRef(null);
28757
28787
  watchEffect(() => {
28758
28788
  if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
@@ -28767,8 +28797,8 @@ const VNumberInput = genericComponent()({
28767
28797
  if (val === null || val === '') {
28768
28798
  model.value = null;
28769
28799
  _inputText.value = null;
28770
- } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
28771
- model.value = +val;
28800
+ } else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
28801
+ model.value = Number(val);
28772
28802
  _inputText.value = val;
28773
28803
  }
28774
28804
  }
@@ -28892,8 +28922,8 @@ const VNumberInput = genericComponent()({
28892
28922
  if (controlsDisabled.value) return;
28893
28923
  if (!vTextFieldRef.value) return;
28894
28924
  const actualText = vTextFieldRef.value.value;
28895
- if (actualText && !isNaN(+actualText)) {
28896
- inputText.value = correctPrecision(clamp(+actualText, props.min, props.max));
28925
+ if (actualText && !isNaN(Number(actualText))) {
28926
+ inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
28897
28927
  } else {
28898
28928
  inputText.value = null;
28899
28929
  }
@@ -29767,14 +29797,7 @@ const VTimePickerClock = genericComponent()({
29767
29797
  }
29768
29798
  });
29769
29799
 
29770
- // @ts-nocheck
29771
- /* eslint-disable */
29772
- var SelectingTimes = /*#__PURE__*/function (SelectingTimes) {
29773
- SelectingTimes[SelectingTimes["Hour"] = 1] = "Hour";
29774
- SelectingTimes[SelectingTimes["Minute"] = 2] = "Minute";
29775
- SelectingTimes[SelectingTimes["Second"] = 3] = "Second";
29776
- return SelectingTimes;
29777
- }(SelectingTimes || {});
29800
+ // Types
29778
29801
 
29779
29802
  const makeVTimePickerControlsProps = propsFactory({
29780
29803
  ampm: Boolean,
@@ -29788,15 +29811,15 @@ const makeVTimePickerControlsProps = propsFactory({
29788
29811
  period: String,
29789
29812
  readonly: Boolean,
29790
29813
  useSeconds: Boolean,
29791
- selecting: Number,
29792
- value: Number
29814
+ value: Number,
29815
+ viewMode: String
29793
29816
  }, 'VTimePickerControls');
29794
29817
  const VTimePickerControls = genericComponent()({
29795
29818
  name: 'VTimePickerControls',
29796
29819
  props: makeVTimePickerControlsProps(),
29797
29820
  emits: {
29798
29821
  'update:period': data => true,
29799
- 'update:selecting': data => true
29822
+ 'update:viewMode': data => true
29800
29823
  },
29801
29824
  setup(props, _ref) {
29802
29825
  let {
@@ -29819,8 +29842,8 @@ const VTimePickerControls = genericComponent()({
29819
29842
  'v-time-picker-controls__time--with-seconds': props.useSeconds
29820
29843
  }
29821
29844
  }, [createVNode(VBtn, {
29822
- "active": props.selecting === 1,
29823
- "color": props.selecting === 1 ? props.color : undefined,
29845
+ "active": props.viewMode === 'hour',
29846
+ "color": props.viewMode === 'hour' ? props.color : undefined,
29824
29847
  "disabled": props.disabled,
29825
29848
  "variant": "tonal",
29826
29849
  "class": {
@@ -29829,24 +29852,24 @@ const VTimePickerControls = genericComponent()({
29829
29852
  'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
29830
29853
  },
29831
29854
  "text": props.hour == null ? '--' : pad(`${hour}`),
29832
- "onClick": () => emit('update:selecting', SelectingTimes.Hour)
29855
+ "onClick": () => emit('update:viewMode', 'hour')
29833
29856
  }, null), createVNode("span", {
29834
29857
  "class": ['v-time-picker-controls__time__separator', {
29835
29858
  'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
29836
29859
  }]
29837
29860
  }, [createTextVNode(":")]), createVNode(VBtn, {
29838
- "active": props.selecting === 2,
29839
- "color": props.selecting === 2 ? props.color : undefined,
29861
+ "active": props.viewMode === 'minute',
29862
+ "color": props.viewMode === 'minute' ? props.color : undefined,
29840
29863
  "class": {
29841
29864
  'v-time-picker-controls__time__btn': true,
29842
- 'v-time-picker-controls__time__btn__active': props.selecting === 2,
29865
+ 'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',
29843
29866
  'v-time-picker-controls__time--with-ampm__btn': props.ampm,
29844
29867
  'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
29845
29868
  },
29846
29869
  "disabled": props.disabled,
29847
29870
  "variant": "tonal",
29848
29871
  "text": props.minute == null ? '--' : pad(props.minute),
29849
- "onClick": () => emit('update:selecting', SelectingTimes.Minute)
29872
+ "onClick": () => emit('update:viewMode', 'minute')
29850
29873
  }, null), props.useSeconds && createVNode("span", {
29851
29874
  "class": ['v-time-picker-controls__time__separator', {
29852
29875
  'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
@@ -29855,10 +29878,10 @@ const VTimePickerControls = genericComponent()({
29855
29878
  }, [createTextVNode(":")]), props.useSeconds && createVNode(VBtn, {
29856
29879
  "key": "secondsVal",
29857
29880
  "variant": "tonal",
29858
- "onClick": () => emit('update:selecting', SelectingTimes.Second),
29881
+ "onClick": () => emit('update:viewMode', 'second'),
29859
29882
  "class": {
29860
29883
  'v-time-picker-controls__time__btn': true,
29861
- 'v-time-picker-controls__time__btn__active': props.selecting === 3,
29884
+ 'v-time-picker-controls__time__btn__active': props.viewMode === 'second',
29862
29885
  'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
29863
29886
  },
29864
29887
  "disabled": props.disabled,
@@ -29903,11 +29926,6 @@ const rangeHours24 = createRange(24);
29903
29926
  const rangeHours12am = createRange(12);
29904
29927
  const rangeHours12pm = rangeHours12am.map(v => v + 12);
29905
29928
  createRange(60);
29906
- const selectingNames = {
29907
- 1: 'hour',
29908
- 2: 'minute',
29909
- 3: 'second'
29910
- };
29911
29929
  const makeVTimePickerProps = propsFactory({
29912
29930
  allowedHours: [Function, Array],
29913
29931
  allowedMinutes: [Function, Array],
@@ -29920,6 +29938,10 @@ const makeVTimePickerProps = propsFactory({
29920
29938
  },
29921
29939
  max: String,
29922
29940
  min: String,
29941
+ viewMode: {
29942
+ type: String,
29943
+ default: 'hour'
29944
+ },
29923
29945
  modelValue: null,
29924
29946
  readonly: Boolean,
29925
29947
  scrollable: Boolean,
@@ -29936,7 +29958,8 @@ const VTimePicker = genericComponent()({
29936
29958
  'update:minute': val => true,
29937
29959
  'update:period': val => true,
29938
29960
  'update:second': val => true,
29939
- 'update:modelValue': val => true
29961
+ 'update:modelValue': val => true,
29962
+ 'update:viewMode': val => true
29940
29963
  },
29941
29964
  setup(props, _ref) {
29942
29965
  let {
@@ -29953,7 +29976,7 @@ const VTimePicker = genericComponent()({
29953
29976
  const lazyInputMinute = ref(null);
29954
29977
  const lazyInputSecond = ref(null);
29955
29978
  const period = ref('am');
29956
- const selecting = ref(SelectingTimes.Hour);
29979
+ const viewMode = useProxiedModel(props, 'viewMode', 'hour');
29957
29980
  const controlsRef = ref(null);
29958
29981
  const clockRef = ref(null);
29959
29982
  const isAllowedHourCb = computed(() => {
@@ -29967,7 +29990,7 @@ const VTimePicker = genericComponent()({
29967
29990
  const minHour = props.min ? Number(props.min.split(':')[0]) : 0;
29968
29991
  const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;
29969
29992
  return val => {
29970
- return val >= minHour * 1 && val <= maxHour * 1 && (!cb || cb(val));
29993
+ return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));
29971
29994
  };
29972
29995
  });
29973
29996
  const isAllowedMinuteCb = computed(() => {
@@ -29983,8 +30006,8 @@ const VTimePicker = genericComponent()({
29983
30006
  }
29984
30007
  const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];
29985
30008
  const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];
29986
- const minTime = minHour * 60 + minMinute * 1;
29987
- const maxTime = maxHour * 60 + maxMinute * 1;
30009
+ const minTime = minHour * 60 + Number(minMinute);
30010
+ const maxTime = maxHour * 60 + Number(maxMinute);
29988
30011
  return val => {
29989
30012
  const time = 60 * inputHour.value + val;
29990
30013
  return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));
@@ -30004,8 +30027,8 @@ const VTimePicker = genericComponent()({
30004
30027
  }
30005
30028
  const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];
30006
30029
  const [maxHour, maxMinute, maxSecond] = props.max ? props.max.split(':').map(Number) : [23, 59, 59];
30007
- const minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0) * 1;
30008
- const maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0) * 1;
30030
+ const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);
30031
+ const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);
30009
30032
  return val => {
30010
30033
  const time = 3600 * inputHour.value + 60 * inputMinute.value + val;
30011
30034
  return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));
@@ -30071,16 +30094,16 @@ const VTimePicker = genericComponent()({
30071
30094
  return true;
30072
30095
  }
30073
30096
  function onInput(value) {
30074
- if (selecting.value === SelectingTimes.Hour) {
30097
+ if (viewMode.value === 'hour') {
30075
30098
  inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;
30076
- } else if (selecting.value === SelectingTimes.Minute) {
30099
+ } else if (viewMode.value === 'minute') {
30077
30100
  inputMinute.value = value;
30078
30101
  } else {
30079
30102
  inputSecond.value = value;
30080
30103
  }
30081
30104
  }
30082
30105
  function onChange(value) {
30083
- switch (selectingNames[selecting.value]) {
30106
+ switch (viewMode.value || 'hour') {
30084
30107
  case 'hour':
30085
30108
  emit('update:hour', value);
30086
30109
  break;
@@ -30092,10 +30115,10 @@ const VTimePicker = genericComponent()({
30092
30115
  break;
30093
30116
  }
30094
30117
  const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);
30095
- if (selecting.value === SelectingTimes.Hour) {
30096
- selecting.value = SelectingTimes.Minute;
30097
- } else if (props.useSeconds && selecting.value === SelectingTimes.Minute) {
30098
- selecting.value = SelectingTimes.Second;
30118
+ if (viewMode.value === 'hour') {
30119
+ viewMode.value = 'minute';
30120
+ } else if (props.useSeconds && viewMode.value === 'minute') {
30121
+ viewMode.value = 'second';
30099
30122
  }
30100
30123
  if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;
30101
30124
  const time = genValue();
@@ -30124,20 +30147,20 @@ const VTimePicker = genericComponent()({
30124
30147
  "minute": inputMinute.value,
30125
30148
  "period": period.value,
30126
30149
  "second": inputSecond.value,
30127
- "selecting": selecting.value,
30150
+ "viewMode": viewMode.value,
30128
30151
  "onUpdate:period": val => setPeriod(val),
30129
- "onUpdate:selecting": value => selecting.value = value,
30152
+ "onUpdate:viewMode": value => viewMode.value = value,
30130
30153
  "ref": controlsRef
30131
30154
  }), null),
30132
30155
  default: () => createVNode(VTimePickerClock, mergeProps(timePickerClockProps, {
30133
- "allowedValues": selecting.value === SelectingTimes.Hour ? isAllowedHourCb.value : selecting.value === SelectingTimes.Minute ? isAllowedMinuteCb.value : isAllowedSecondCb.value,
30134
- "double": selecting.value === SelectingTimes.Hour && !isAmPm.value,
30135
- "format": selecting.value === SelectingTimes.Hour ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),
30136
- "max": selecting.value === SelectingTimes.Hour ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,
30137
- "min": selecting.value === SelectingTimes.Hour && isAmPm.value && period.value === 'pm' ? 12 : 0,
30156
+ "allowedValues": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,
30157
+ "double": viewMode.value === 'hour' && !isAmPm.value,
30158
+ "format": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),
30159
+ "max": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,
30160
+ "min": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,
30138
30161
  "size": 20,
30139
- "step": selecting.value === SelectingTimes.Hour ? 1 : 5,
30140
- "modelValue": selecting.value === SelectingTimes.Hour ? inputHour.value : selecting.value === SelectingTimes.Minute ? inputMinute.value : inputSecond.value,
30162
+ "step": viewMode.value === 'hour' ? 1 : 5,
30163
+ "modelValue": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,
30141
30164
  "onChange": onChange,
30142
30165
  "onInput": onInput,
30143
30166
  "ref": clockRef
@@ -31050,7 +31073,7 @@ function createVuetify$1() {
31050
31073
  goTo
31051
31074
  };
31052
31075
  }
31053
- const version$1 = "3.7.15-master.2025-03-05";
31076
+ const version$1 = "3.7.15-master.2025-03-07";
31054
31077
  createVuetify$1.version = version$1;
31055
31078
 
31056
31079
  // Vue's inject() can only be used in setup
@@ -31303,7 +31326,7 @@ var index = /*#__PURE__*/Object.freeze({
31303
31326
 
31304
31327
  /* eslint-disable local-rules/sort-imports */
31305
31328
 
31306
- const version = "3.7.15-master.2025-03-05";
31329
+ const version = "3.7.15-master.2025-03-07";
31307
31330
 
31308
31331
  /* eslint-disable local-rules/sort-imports */
31309
31332