vuetify 3.5.9 → 3.5.11

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 (147) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +106 -6
  3. package/dist/json/importMap-labs.json +10 -6
  4. package/dist/json/importMap.json +128 -128
  5. package/dist/json/tags.json +30 -0
  6. package/dist/json/web-types.json +582 -15
  7. package/dist/vuetify-labs.css +3076 -3034
  8. package/dist/vuetify-labs.d.ts +2711 -1996
  9. package/dist/vuetify-labs.esm.js +518 -40
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +518 -39
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +1609 -1604
  14. package/dist/vuetify.d.ts +1885 -1832
  15. package/dist/vuetify.esm.js +605 -330
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +604 -328
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +1106 -1098
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/index.d.mts +15 -15
  23. package/lib/components/VApp/index.d.mts +8 -8
  24. package/lib/components/VAppBar/index.d.mts +7 -7
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/index.d.mts +94 -94
  28. package/lib/components/VAvatar/index.d.mts +8 -8
  29. package/lib/components/VBadge/index.d.mts +7 -7
  30. package/lib/components/VBanner/index.d.mts +20 -20
  31. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  32. package/lib/components/VBreadcrumbs/index.d.mts +27 -26
  33. package/lib/components/VBtnGroup/index.d.mts +8 -8
  34. package/lib/components/VCard/index.d.mts +32 -32
  35. package/lib/components/VCarousel/index.d.mts +6 -6
  36. package/lib/components/VCheckbox/index.d.mts +44 -44
  37. package/lib/components/VChip/index.d.mts +7 -7
  38. package/lib/components/VCode/index.d.mts +8 -8
  39. package/lib/components/VCombobox/VCombobox.mjs +5 -4
  40. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  41. package/lib/components/VCombobox/index.d.mts +94 -94
  42. package/lib/components/VDataTable/index.d.mts +6 -6
  43. package/lib/components/VDatePicker/VDatePickerMonth.mjs +10 -4
  44. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  45. package/lib/components/VDatePicker/index.d.mts +10 -10
  46. package/lib/components/VDefaultsProvider/index.d.mts +8 -8
  47. package/lib/components/VDialog/index.d.mts +12 -6
  48. package/lib/components/VDivider/index.d.mts +8 -8
  49. package/lib/components/VExpansionPanel/index.d.mts +19 -19
  50. package/lib/components/VField/VField.css +2 -0
  51. package/lib/components/VField/VField.mjs +1 -1
  52. package/lib/components/VField/VField.mjs.map +1 -1
  53. package/lib/components/VField/VField.sass +2 -0
  54. package/lib/components/VField/index.d.mts +28 -28
  55. package/lib/components/VFileInput/index.d.mts +133 -133
  56. package/lib/components/VFooter/index.d.mts +8 -8
  57. package/lib/components/VGrid/index.d.mts +32 -32
  58. package/lib/components/VIcon/VIcon.css +4 -0
  59. package/lib/components/VIcon/VIcon.mjs +7 -3
  60. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  61. package/lib/components/VIcon/VIcon.sass +4 -0
  62. package/lib/components/VIcon/_variables.scss +1 -0
  63. package/lib/components/VIcon/index.d.mts +25 -16
  64. package/lib/components/VImg/index.d.mts +4 -4
  65. package/lib/components/VInput/index.d.mts +21 -21
  66. package/lib/components/VKbd/index.d.mts +8 -8
  67. package/lib/components/VLabel/index.d.mts +8 -8
  68. package/lib/components/VLayout/index.d.mts +16 -16
  69. package/lib/components/VLazy/index.d.mts +8 -8
  70. package/lib/components/VList/VListItem.mjs +2 -2
  71. package/lib/components/VList/VListItem.mjs.map +1 -1
  72. package/lib/components/VList/index.d.mts +48 -48
  73. package/lib/components/VLocaleProvider/index.d.mts +12 -12
  74. package/lib/components/VMain/index.d.mts +8 -8
  75. package/lib/components/VMenu/VMenu.mjs +3 -0
  76. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  77. package/lib/components/VMenu/index.d.mts +14 -8
  78. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +1 -1
  79. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +22 -8
  80. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  81. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -1
  82. package/lib/components/VNavigationDrawer/index.d.mts +11 -11
  83. package/lib/components/VOtpInput/VOtpInput.mjs +7 -2
  84. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  85. package/lib/components/VOtpInput/index.d.mts +31 -31
  86. package/lib/components/VOverlay/VOverlay.mjs +8 -3
  87. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  88. package/lib/components/VOverlay/index.d.mts +3 -0
  89. package/lib/components/VOverlay/scrollStrategies.mjs +2 -2
  90. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  91. package/lib/components/VPagination/index.d.mts +7 -7
  92. package/lib/components/VProgressLinear/VProgressLinear.css +0 -1
  93. package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
  94. package/lib/components/VProgressLinear/index.d.mts +7 -7
  95. package/lib/components/VRadioGroup/index.d.mts +44 -44
  96. package/lib/components/VRangeSlider/index.d.mts +47 -47
  97. package/lib/components/VRating/index.d.mts +7 -7
  98. package/lib/components/VResponsive/index.d.mts +8 -8
  99. package/lib/components/VSelect/index.d.mts +94 -94
  100. package/lib/components/VSheet/index.d.mts +8 -8
  101. package/lib/components/VSkeletonLoader/index.d.mts +8 -8
  102. package/lib/components/VSlider/index.d.mts +47 -47
  103. package/lib/components/VSnackbar/index.d.mts +25 -19
  104. package/lib/components/VStepper/index.d.mts +41 -41
  105. package/lib/components/VSwitch/index.d.mts +39 -39
  106. package/lib/components/VSystemBar/index.d.mts +8 -8
  107. package/lib/components/VTabs/index.d.mts +15 -15
  108. package/lib/components/VTextField/index.d.mts +173 -173
  109. package/lib/components/VTextarea/index.d.mts +119 -119
  110. package/lib/components/VThemeProvider/index.d.mts +8 -8
  111. package/lib/components/VTimeline/index.d.mts +8 -8
  112. package/lib/components/VToolbar/index.d.mts +8 -8
  113. package/lib/components/VTooltip/index.d.mts +14 -8
  114. package/lib/components/VWindow/index.d.mts +10 -10
  115. package/lib/components/index.d.mts +1869 -1832
  116. package/lib/components/transitions/index.d.mts +128 -128
  117. package/lib/composables/date/adapters/vuetify.mjs +1 -1
  118. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  119. package/lib/composables/theme.mjs +1 -1
  120. package/lib/composables/theme.mjs.map +1 -1
  121. package/lib/entry-bundler.mjs +3 -2
  122. package/lib/entry-bundler.mjs.map +1 -1
  123. package/lib/framework.mjs +1 -1
  124. package/lib/framework.mjs.map +1 -1
  125. package/lib/index.d.mts +40 -39
  126. package/lib/labs/VCalendar/index.d.mts +32 -32
  127. package/lib/labs/VFab/index.d.mts +15 -15
  128. package/lib/labs/VNumberInput/VNumberInput.css +38 -0
  129. package/lib/labs/VNumberInput/VNumberInput.mjs +209 -0
  130. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -0
  131. package/lib/labs/VNumberInput/VNumberInput.sass +47 -0
  132. package/lib/labs/VNumberInput/_variables.scss +1 -0
  133. package/lib/labs/VNumberInput/index.d.mts +607 -0
  134. package/lib/labs/VNumberInput/index.mjs +2 -0
  135. package/lib/labs/VNumberInput/index.mjs.map +1 -0
  136. package/lib/labs/VPicker/index.d.mts +8 -8
  137. package/lib/labs/VSparkline/index.d.mts +7 -7
  138. package/lib/labs/VSpeedDial/VSpeedDial.mjs +9 -5
  139. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
  140. package/lib/labs/VSpeedDial/index.d.mts +120 -24
  141. package/lib/labs/VTreeview/index.d.mts +8 -8
  142. package/lib/labs/components.d.mts +788 -95
  143. package/lib/labs/components.mjs +1 -0
  144. package/lib/labs/components.mjs.map +1 -1
  145. package/lib/locale/no.mjs +1 -1
  146. package/lib/locale/no.mjs.map +1 -1
  147. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.9
2
+ * Vuetify v3.5.11
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2388,7 +2388,7 @@ function createTheme(options) {
2388
2388
  const current = computed(() => computedThemes.value[name.value]);
2389
2389
  const styles = computed(() => {
2390
2390
  const lines = [];
2391
- if (current.value.dark) {
2391
+ if (current.value?.dark) {
2392
2392
  createCssClass(lines, ':root', ['color-scheme: dark']);
2393
2393
  }
2394
2394
  createCssClass(lines, ':root', genCssVariables(current.value));
@@ -4568,6 +4568,7 @@ function useSize(props) {
4568
4568
 
4569
4569
  const makeVIconProps = propsFactory({
4570
4570
  color: String,
4571
+ disabled: Boolean,
4571
4572
  start: Boolean,
4572
4573
  end: Boolean,
4573
4574
  icon: IconValue,
@@ -4605,11 +4606,13 @@ const VIcon = genericComponent()({
4605
4606
  if (slotValue) {
4606
4607
  slotIcon.value = flattenFragments(slotValue).filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4607
4608
  }
4609
+ const hasClick = !!(attrs.onClick || attrs.onClickOnce);
4608
4610
  return createVNode(iconData.value.component, {
4609
4611
  "tag": props.tag,
4610
4612
  "icon": iconData.value.icon,
4611
4613
  "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4612
- 'v-icon--clickable': !!attrs.onClick,
4614
+ 'v-icon--clickable': hasClick,
4615
+ 'v-icon--disabled': props.disabled,
4613
4616
  'v-icon--start': props.start,
4614
4617
  'v-icon--end': props.end
4615
4618
  }, props.class],
@@ -4618,8 +4621,9 @@ const VIcon = genericComponent()({
4618
4621
  height: convertToUnit(props.size),
4619
4622
  width: convertToUnit(props.size)
4620
4623
  } : undefined, textColorStyles.value, props.style],
4621
- "role": attrs.onClick ? 'button' : undefined,
4622
- "aria-hidden": !attrs.onClick
4624
+ "role": hasClick ? 'button' : undefined,
4625
+ "aria-hidden": !hasClick,
4626
+ "tabindex": hasClick ? props.disabled ? -1 : 0 : undefined
4623
4627
  }, {
4624
4628
  default: () => [slotValue]
4625
4629
  });
@@ -8616,9 +8620,9 @@ const VListItem = genericComponent()({
8616
8620
  emit('click', e);
8617
8621
  if (isGroupActivator || !isClickable.value) return;
8618
8622
  link.navigate?.(e);
8619
- if (root.activatable) {
8623
+ if (root.activatable.value) {
8620
8624
  activate(!isActivated.value, e);
8621
- } else if (root.selectable) {
8625
+ } else if (root.selectable.value) {
8622
8626
  select(!isSelected.value, e);
8623
8627
  } else if (props.value != null) {
8624
8628
  select(!isSelected.value, e);
@@ -9757,7 +9761,7 @@ function useScrollStrategies(props, data) {
9757
9761
  scope?.stop();
9758
9762
  if (!(data.isActive.value && props.scrollStrategy)) return;
9759
9763
  scope = effectScope();
9760
- await nextTick();
9764
+ await new Promise(resolve => setTimeout(resolve));
9761
9765
  scope.active && scope.run(() => {
9762
9766
  if (typeof props.scrollStrategy === 'function') {
9763
9767
  props.scrollStrategy(data, props, scope);
@@ -10506,6 +10510,7 @@ const VOverlay = genericComponent()({
10506
10510
  if (v) isActive.value = false;
10507
10511
  });
10508
10512
  const root = ref();
10513
+ const scrimEl = ref();
10509
10514
  const contentEl = ref();
10510
10515
  const {
10511
10516
  contentStyles,
@@ -10527,8 +10532,10 @@ const VOverlay = genericComponent()({
10527
10532
  emit('click:outside', e);
10528
10533
  if (!props.persistent) isActive.value = false;else animateClick();
10529
10534
  }
10530
- function closeConditional() {
10531
- return isActive.value && globalTop.value;
10535
+ function closeConditional(e) {
10536
+ return isActive.value && globalTop.value && (
10537
+ // If using scrim, only close if clicking on it rather than anything opened on top
10538
+ !props.scrim || e.target === scrimEl.value);
10532
10539
  }
10533
10540
  IN_BROWSER && watch(isActive, val => {
10534
10541
  if (val) {
@@ -10615,7 +10622,8 @@ const VOverlay = genericComponent()({
10615
10622
  "ref": root
10616
10623
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
10617
10624
  "color": scrimColor,
10618
- "modelValue": isActive.value && !!props.scrim
10625
+ "modelValue": isActive.value && !!props.scrim,
10626
+ "ref": scrimEl
10619
10627
  }, scrimEvents.value), null), createVNode(MaybeTransition, {
10620
10628
  "appear": true,
10621
10629
  "persisted": true,
@@ -10638,6 +10646,7 @@ const VOverlay = genericComponent()({
10638
10646
  })]));
10639
10647
  return {
10640
10648
  activatorEl,
10649
+ scrimEl,
10641
10650
  target,
10642
10651
  animateClick,
10643
10652
  contentEl,
@@ -10833,6 +10842,9 @@ const VMenu = genericComponent()({
10833
10842
  isActive.value = false;
10834
10843
  overlay.value?.activatorEl?.focus();
10835
10844
  }
10845
+ } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
10846
+ isActive.value = false;
10847
+ parent?.closeParents();
10836
10848
  }
10837
10849
  }
10838
10850
  function onActivatorKeydown(e) {
@@ -11110,7 +11122,7 @@ const VField = genericComponent()({
11110
11122
  }
11111
11123
  useRender(() => {
11112
11124
  const isOutlined = props.variant === 'outlined';
11113
- const hasPrepend = slots['prepend-inner'] || props.prependInnerIcon;
11125
+ const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);
11114
11126
  const hasClear = !!(props.clearable || slots.clear);
11115
11127
  const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);
11116
11128
  const label = () => slots.label ? slots.label({
@@ -12534,8 +12546,8 @@ const VAutocomplete = genericComponent()({
12534
12546
  if (e.key === 'ArrowDown' && highlightFirst.value) {
12535
12547
  listRef.value?.focus('next');
12536
12548
  }
12537
- if (!props.multiple) return;
12538
12549
  if (['Backspace', 'Delete'].includes(e.key)) {
12550
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
12539
12551
  if (selectionIndex.value < 0) {
12540
12552
  if (e.key === 'Backspace' && !search.value) {
12541
12553
  selectionIndex.value = length - 1;
@@ -12543,10 +12555,10 @@ const VAutocomplete = genericComponent()({
12543
12555
  return;
12544
12556
  }
12545
12557
  const originalSelectionIndex = selectionIndex.value;
12546
- const selectedItem = model.value[selectionIndex.value];
12547
- if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
12558
+ select(model.value[selectionIndex.value], false);
12548
12559
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12549
12560
  }
12561
+ if (!props.multiple) return;
12550
12562
  if (e.key === 'ArrowLeft') {
12551
12563
  if (selectionIndex.value < 0 && selectionStart > 0) return;
12552
12564
  const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
@@ -12599,7 +12611,7 @@ const VAutocomplete = genericComponent()({
12599
12611
  /** @param set - null means toggle */
12600
12612
  function select(item) {
12601
12613
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12602
- if (item.props.disabled) return;
12614
+ if (!item || item.props.disabled) return;
12603
12615
  if (props.multiple) {
12604
12616
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12605
12617
  const add = set == null ? !~index : set;
@@ -16320,6 +16332,7 @@ const VCombobox = genericComponent()({
16320
16332
  }
16321
16333
  menu.value = !menu.value;
16322
16334
  }
16335
+ // eslint-disable-next-line complexity
16323
16336
  function onKeydown(e) {
16324
16337
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
16325
16338
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -16346,8 +16359,8 @@ const VCombobox = genericComponent()({
16346
16359
  select(transformItem$3(props, search.value));
16347
16360
  if (hasSelectionSlot.value) _search.value = '';
16348
16361
  }
16349
- if (!props.multiple) return;
16350
16362
  if (['Backspace', 'Delete'].includes(e.key)) {
16363
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
16351
16364
  if (selectionIndex.value < 0) {
16352
16365
  if (e.key === 'Backspace' && !search.value) {
16353
16366
  selectionIndex.value = length - 1;
@@ -16355,10 +16368,10 @@ const VCombobox = genericComponent()({
16355
16368
  return;
16356
16369
  }
16357
16370
  const originalSelectionIndex = selectionIndex.value;
16358
- const selectedItem = model.value[selectionIndex.value];
16359
- if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
16371
+ select(model.value[selectionIndex.value], false);
16360
16372
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
16361
16373
  }
16374
+ if (!props.multiple) return;
16362
16375
  if (e.key === 'ArrowLeft') {
16363
16376
  if (selectionIndex.value < 0 && selectionStart > 0) return;
16364
16377
  const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
@@ -16389,7 +16402,7 @@ const VCombobox = genericComponent()({
16389
16402
  /** @param set - null means toggle */
16390
16403
  function select(item) {
16391
16404
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
16392
- if (item.props.disabled) return;
16405
+ if (!item || item.props.disabled) return;
16393
16406
  if (props.multiple) {
16394
16407
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
16395
16408
  const add = set == null ? !~index : set;
@@ -17617,7 +17630,7 @@ function setYear(date, year) {
17617
17630
  return d;
17618
17631
  }
17619
17632
  function startOfDay(date) {
17620
- return new Date(date.getFullYear(), date.getMonth(), date.getDate());
17633
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);
17621
17634
  }
17622
17635
  function endOfDay(date) {
17623
17636
  return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
@@ -20770,6 +20783,12 @@ const VDatePickerMonth = genericComponent()({
20770
20783
  const adapter = useDate();
20771
20784
  const rangeStart = shallowRef();
20772
20785
  const rangeStop = shallowRef();
20786
+ if (props.multiple === 'range' && model.value.length > 0) {
20787
+ rangeStart.value = model.value[0];
20788
+ if (model.value.length > 1) {
20789
+ rangeStop.value = model.value[model.value.length - 1];
20790
+ }
20791
+ }
20773
20792
  const atMax = computed(() => {
20774
20793
  const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;
20775
20794
  return model.value.length >= max;
@@ -20780,15 +20799,15 @@ const VDatePickerMonth = genericComponent()({
20780
20799
  rangeStart.value = _value;
20781
20800
  model.value = [rangeStart.value];
20782
20801
  } else if (!rangeStop.value) {
20783
- if (adapter.isSameDay(value, rangeStart.value)) {
20802
+ if (adapter.isSameDay(_value, rangeStart.value)) {
20784
20803
  rangeStart.value = undefined;
20785
20804
  model.value = [];
20786
20805
  return;
20787
- } else if (adapter.isBefore(value, rangeStart.value)) {
20788
- rangeStop.value = rangeStart.value;
20806
+ } else if (adapter.isBefore(_value, rangeStart.value)) {
20807
+ rangeStop.value = adapter.endOfDay(rangeStart.value);
20789
20808
  rangeStart.value = _value;
20790
20809
  } else {
20791
- rangeStop.value = _value;
20810
+ rangeStop.value = adapter.endOfDay(_value);
20792
20811
  }
20793
20812
  const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
20794
20813
  const datesInRange = [rangeStart.value];
@@ -22955,12 +22974,24 @@ const VNavigationDrawer = genericComponent()({
22955
22974
  default: () => [hasImage && createVNode("div", {
22956
22975
  "key": "image",
22957
22976
  "class": "v-navigation-drawer__img"
22958
- }, [slots.image ? slots.image?.({
22959
- image: props.image
22960
- }) : createVNode("img", {
22961
- "src": props.image,
22962
- "alt": ""
22963
- }, null)]), slots.prepend && createVNode("div", {
22977
+ }, [!slots.image ? createVNode(VImg, {
22978
+ "key": "image-img",
22979
+ "alt": "",
22980
+ "cover": true,
22981
+ "height": "inherit",
22982
+ "src": props.image
22983
+ }, null) : createVNode(VDefaultsProvider, {
22984
+ "key": "image-defaults",
22985
+ "disabled": !props.image,
22986
+ "defaults": {
22987
+ VImg: {
22988
+ alt: '',
22989
+ cover: true,
22990
+ height: 'inherit',
22991
+ src: props.image
22992
+ }
22993
+ }
22994
+ }, slots.image)]), slots.prepend && createVNode("div", {
22964
22995
  "class": "v-navigation-drawer__prepend"
22965
22996
  }, [slots.prepend?.()]), createVNode("div", {
22966
22997
  "class": "v-navigation-drawer__content"
@@ -23061,7 +23092,7 @@ const VOtpInput = genericComponent()({
23061
23092
  function onInput() {
23062
23093
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
23063
23094
  // The following logic simulates the behavior of a number input.
23064
- if (props.type === 'number' && /[^0-9]/g.test(current.value.value)) {
23095
+ if (isValidNumber(current.value.value)) {
23065
23096
  current.value.value = '';
23066
23097
  return;
23067
23098
  }
@@ -23107,7 +23138,9 @@ const VOtpInput = genericComponent()({
23107
23138
  function onPaste(index, e) {
23108
23139
  e.preventDefault();
23109
23140
  e.stopPropagation();
23110
- model.value = (e?.clipboardData?.getData('Text') ?? '').split('');
23141
+ const clipboardText = e?.clipboardData?.getData('Text') ?? '';
23142
+ if (isValidNumber(clipboardText)) return;
23143
+ model.value = clipboardText.split('');
23111
23144
  inputRef.value?.[index].blur();
23112
23145
  }
23113
23146
  function reset() {
@@ -23121,6 +23154,9 @@ const VOtpInput = genericComponent()({
23121
23154
  blur();
23122
23155
  focusIndex.value = -1;
23123
23156
  }
23157
+ function isValidNumber(value) {
23158
+ return props.type === 'number' && /[^0-9]/g.test(value);
23159
+ }
23124
23160
  provideDefaults({
23125
23161
  VField: {
23126
23162
  color: computed(() => props.color),
@@ -26372,6 +26408,203 @@ const VFab = genericComponent()({
26372
26408
  }
26373
26409
  });
26374
26410
 
26411
+ // Types
26412
+
26413
+ const makeVNumberInputProps = propsFactory({
26414
+ controlVariant: {
26415
+ type: String,
26416
+ default: 'default'
26417
+ },
26418
+ inset: Boolean,
26419
+ hideInput: Boolean,
26420
+ min: Number,
26421
+ max: Number,
26422
+ step: Number,
26423
+ ...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
26424
+ ...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
26425
+ ...makeFocusProps()
26426
+ }, 'VNumberInput');
26427
+ const VNumberInput = genericComponent()({
26428
+ name: 'VNumberInput',
26429
+ inheritAttrs: false,
26430
+ props: {
26431
+ ...makeVNumberInputProps(),
26432
+ modelValue: {
26433
+ type: [Number, String],
26434
+ default: 0
26435
+ }
26436
+ },
26437
+ emits: {
26438
+ 'update:modelValue': val => true
26439
+ },
26440
+ setup(props, _ref) {
26441
+ let {
26442
+ attrs,
26443
+ emit,
26444
+ slots
26445
+ } = _ref;
26446
+ const model = useProxiedModel(props, 'modelValue');
26447
+ const {
26448
+ isFocused,
26449
+ focus,
26450
+ blur
26451
+ } = useFocus(props);
26452
+ const inputRef = ref();
26453
+ function onFocus() {
26454
+ if (!isFocused.value) focus();
26455
+ }
26456
+ const controlVariant = computed(() => {
26457
+ return props.hideInput ? 'stacked' : props.controlVariant;
26458
+ });
26459
+ function toggleUpDown() {
26460
+ let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
26461
+ if (increment) {
26462
+ inputRef.value?.stepUp();
26463
+ } else {
26464
+ inputRef.value?.stepDown();
26465
+ }
26466
+ if (inputRef.value) model.value = parseInt(inputRef.value.value, 10);
26467
+ }
26468
+ function onClickUp() {
26469
+ toggleUpDown();
26470
+ }
26471
+ function onClickDown() {
26472
+ toggleUpDown(false);
26473
+ }
26474
+ const incrementSlotProps = computed(() => ({
26475
+ click: onClickUp
26476
+ }));
26477
+ const decrementSlotProps = computed(() => ({
26478
+ click: onClickDown
26479
+ }));
26480
+ useRender(() => {
26481
+ const fieldProps = filterFieldProps(props);
26482
+ const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
26483
+ const {
26484
+ modelValue: _,
26485
+ ...inputProps
26486
+ } = VInput.filterProps(props);
26487
+ function controlNode() {
26488
+ const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%';
26489
+ return createVNode("div", {
26490
+ "class": "v-number-input__control"
26491
+ }, [!slots.decrement ? createVNode(VBtn, {
26492
+ "flat": true,
26493
+ "key": "decrement-btn",
26494
+ "height": defaultHeight,
26495
+ "icon": "$expand",
26496
+ "rounded": "0",
26497
+ "size": "small",
26498
+ "onClick": onClickDown
26499
+ }, null) : createVNode(VDefaultsProvider, {
26500
+ "key": "decrement-defaults",
26501
+ "defaults": {
26502
+ VBtn: {
26503
+ flat: true,
26504
+ rounded: '0',
26505
+ height: defaultHeight,
26506
+ size: 'small',
26507
+ icon: '$expand'
26508
+ }
26509
+ }
26510
+ }, {
26511
+ default: () => [slots.decrement(decrementSlotProps.value)]
26512
+ }), createVNode(VDivider, {
26513
+ "vertical": controlVariant.value !== 'stacked'
26514
+ }, null), !slots.increment ? createVNode(VBtn, {
26515
+ "flat": true,
26516
+ "key": "increment-btn",
26517
+ "height": defaultHeight,
26518
+ "icon": "$collapse",
26519
+ "onClick": onClickUp,
26520
+ "rounded": "0",
26521
+ "size": "small"
26522
+ }, null) : createVNode(VDefaultsProvider, {
26523
+ "key": "increment-defaults",
26524
+ "defaults": {
26525
+ VBtn: {
26526
+ flat: true,
26527
+ height: defaultHeight,
26528
+ rounded: '0',
26529
+ size: 'small',
26530
+ icon: '$collapse'
26531
+ }
26532
+ }
26533
+ }, {
26534
+ default: () => [slots.increment(incrementSlotProps.value)]
26535
+ })]);
26536
+ }
26537
+ function dividerNode() {
26538
+ return !props.hideInput && !props.inset ? createVNode(VDivider, {
26539
+ "vertical": true
26540
+ }, null) : undefined;
26541
+ }
26542
+ return createVNode(VInput, mergeProps({
26543
+ "class": ['v-number-input', {
26544
+ 'v-number-input--default': controlVariant.value === 'default',
26545
+ 'v-number-input--hide-input': props.hideInput,
26546
+ 'v-number-input--inset': props.inset,
26547
+ 'v-number-input--reverse': props.reverse,
26548
+ 'v-number-input--split': controlVariant.value === 'split',
26549
+ 'v-number-input--stacked': controlVariant.value === 'stacked'
26550
+ }, props.class]
26551
+ }, rootAttrs, inputProps, {
26552
+ "focused": isFocused.value,
26553
+ "style": props.style
26554
+ }), {
26555
+ ...slots,
26556
+ default: () => createVNode(VField, mergeProps(fieldProps, {
26557
+ "active": true,
26558
+ "focused": isFocused.value
26559
+ }), {
26560
+ ...slots,
26561
+ default: _ref2 => {
26562
+ let {
26563
+ props: {
26564
+ class: fieldClass,
26565
+ ...slotProps
26566
+ }
26567
+ } = _ref2;
26568
+ return createVNode("input", mergeProps({
26569
+ "ref": inputRef,
26570
+ "type": "number",
26571
+ "value": model.value,
26572
+ "class": fieldClass,
26573
+ "max": props.max,
26574
+ "min": props.min,
26575
+ "step": props.step,
26576
+ "onFocus": onFocus,
26577
+ "onBlur": blur
26578
+ }, inputAttrs), null);
26579
+ },
26580
+ 'append-inner': controlVariant.value === 'split' ? () => createVNode("div", {
26581
+ "class": "v-number-input__control"
26582
+ }, [createVNode(VDivider, {
26583
+ "vertical": true
26584
+ }, null), createVNode(VBtn, {
26585
+ "flat": true,
26586
+ "height": "100%",
26587
+ "icon": "$plus",
26588
+ "tile": true,
26589
+ "onClick": onClickUp
26590
+ }, null)]) : !props.reverse ? () => createVNode(Fragment, null, [dividerNode(), controlNode()]) : undefined,
26591
+ 'prepend-inner': controlVariant.value === 'split' ? () => createVNode("div", {
26592
+ "class": "v-number-input__control"
26593
+ }, [createVNode(VBtn, {
26594
+ "flat": true,
26595
+ "height": "100%",
26596
+ "icon": "$minus",
26597
+ "tile": true,
26598
+ "onClick": onClickDown
26599
+ }, null), createVNode(VDivider, {
26600
+ "vertical": true
26601
+ }, null)]) : props.reverse ? () => createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined
26602
+ })
26603
+ });
26604
+ });
26605
+ }
26606
+ });
26607
+
26375
26608
  // Utilities
26376
26609
 
26377
26610
  // Types
@@ -26819,6 +27052,8 @@ const VSparkline = genericComponent()({
26819
27052
  }
26820
27053
  });
26821
27054
 
27055
+ // Types
27056
+
26822
27057
  const makeVSpeedDialProps = propsFactory({
26823
27058
  ...makeComponentProps(),
26824
27059
  ...makeVMenuProps({
@@ -26837,14 +27072,17 @@ const VSpeedDial = genericComponent()({
26837
27072
  let {
26838
27073
  slots
26839
27074
  } = _ref;
27075
+ const menuRef = ref();
26840
27076
  useRender(() => {
26841
27077
  const menuProps = VMenu.filterProps(props);
26842
27078
  return createVNode(VMenu, mergeProps(menuProps, {
26843
27079
  "class": props.class,
26844
27080
  "style": props.style,
26845
- "contentClass": "v-speed-dial__content"
27081
+ "contentClass": "v-speed-dial__content",
27082
+ "ref": menuRef
26846
27083
  }), {
26847
- default: () => [createVNode(VDefaultsProvider, {
27084
+ ...slots,
27085
+ default: slotProps => createVNode(VDefaultsProvider, {
26848
27086
  "defaults": {
26849
27087
  VBtn: {
26850
27088
  size: 'small'
@@ -26856,9 +27094,9 @@ const VSpeedDial = genericComponent()({
26856
27094
  "group": true,
26857
27095
  "transition": props.transition
26858
27096
  }, {
26859
- default: () => [slots.default?.()]
27097
+ default: () => [slots.default?.(slotProps)]
26860
27098
  })]
26861
- })]
27099
+ })
26862
27100
  });
26863
27101
  });
26864
27102
  return {};
@@ -27334,6 +27572,7 @@ var components = /*#__PURE__*/Object.freeze({
27334
27572
  VMessages: VMessages,
27335
27573
  VNavigationDrawer: VNavigationDrawer,
27336
27574
  VNoSsr: VNoSsr,
27575
+ VNumberInput: VNumberInput,
27337
27576
  VOtpInput: VOtpInput,
27338
27577
  VOverlay: VOverlay,
27339
27578
  VPagination: VPagination,
@@ -27619,7 +27858,7 @@ function createVuetify$1() {
27619
27858
  goTo
27620
27859
  };
27621
27860
  }
27622
- const version$1 = "3.5.9";
27861
+ const version$1 = "3.5.11";
27623
27862
  createVuetify$1.version = version$1;
27624
27863
 
27625
27864
  // Vue's inject() can only be used in setup
@@ -27631,9 +27870,248 @@ function inject(key) {
27631
27870
  }
27632
27871
  }
27633
27872
 
27873
+ // Icons
27874
+
27875
+ // Types
27876
+
27877
+ const md1 = {
27878
+ defaults: {
27879
+ global: {
27880
+ rounded: 'sm'
27881
+ },
27882
+ VAvatar: {
27883
+ rounded: 'circle'
27884
+ },
27885
+ VAutocomplete: {
27886
+ variant: 'underlined'
27887
+ },
27888
+ VBanner: {
27889
+ color: 'primary'
27890
+ },
27891
+ VBtn: {
27892
+ color: 'primary',
27893
+ rounded: 0
27894
+ },
27895
+ VCheckbox: {
27896
+ color: 'secondary'
27897
+ },
27898
+ VCombobox: {
27899
+ variant: 'underlined'
27900
+ },
27901
+ VSelect: {
27902
+ variant: 'underlined'
27903
+ },
27904
+ VSlider: {
27905
+ color: 'primary'
27906
+ },
27907
+ VTabs: {
27908
+ color: 'primary'
27909
+ },
27910
+ VTextarea: {
27911
+ variant: 'underlined'
27912
+ },
27913
+ VTextField: {
27914
+ variant: 'underlined'
27915
+ },
27916
+ VToolbar: {
27917
+ VBtn: {
27918
+ color: null
27919
+ }
27920
+ }
27921
+ },
27922
+ icons: {
27923
+ defaultSet: 'mdi',
27924
+ sets: {
27925
+ mdi
27926
+ }
27927
+ },
27928
+ theme: {
27929
+ themes: {
27930
+ light: {
27931
+ colors: {
27932
+ primary: '#3F51B5',
27933
+ 'primary-darken-1': '#303F9F',
27934
+ 'primary-lighten-1': '#C5CAE9',
27935
+ secondary: '#FF4081',
27936
+ 'secondary-darken-1': '#F50057',
27937
+ 'secondary-lighten-1': '#FF80AB',
27938
+ accent: '#009688'
27939
+ }
27940
+ }
27941
+ }
27942
+ }
27943
+ };
27944
+
27945
+ // Icons
27946
+
27947
+ // Types
27948
+
27949
+ const md2 = {
27950
+ defaults: {
27951
+ global: {
27952
+ rounded: 'md'
27953
+ },
27954
+ VAvatar: {
27955
+ rounded: 'circle'
27956
+ },
27957
+ VAutocomplete: {
27958
+ variant: 'filled'
27959
+ },
27960
+ VBanner: {
27961
+ color: 'primary'
27962
+ },
27963
+ VBtn: {
27964
+ color: 'primary'
27965
+ },
27966
+ VCheckbox: {
27967
+ color: 'secondary'
27968
+ },
27969
+ VCombobox: {
27970
+ variant: 'filled'
27971
+ },
27972
+ VSelect: {
27973
+ variant: 'filled'
27974
+ },
27975
+ VSlider: {
27976
+ color: 'primary'
27977
+ },
27978
+ VTabs: {
27979
+ color: 'primary'
27980
+ },
27981
+ VTextarea: {
27982
+ variant: 'filled'
27983
+ },
27984
+ VTextField: {
27985
+ variant: 'filled'
27986
+ },
27987
+ VToolbar: {
27988
+ VBtn: {
27989
+ color: null
27990
+ }
27991
+ }
27992
+ },
27993
+ icons: {
27994
+ defaultSet: 'mdi',
27995
+ sets: {
27996
+ mdi
27997
+ }
27998
+ },
27999
+ theme: {
28000
+ themes: {
28001
+ light: {
28002
+ colors: {
28003
+ primary: '#6200EE',
28004
+ 'primary-darken-1': '#3700B3',
28005
+ secondary: '#03DAC6',
28006
+ 'secondary-darken-1': '#018786',
28007
+ error: '#B00020'
28008
+ }
28009
+ }
28010
+ }
28011
+ }
28012
+ };
28013
+
28014
+ // Icons
28015
+
28016
+ // Types
28017
+
28018
+ const md3 = {
28019
+ defaults: {
28020
+ VAppBar: {
28021
+ flat: true
28022
+ },
28023
+ VAutocomplete: {
28024
+ variant: 'filled'
28025
+ },
28026
+ VBanner: {
28027
+ color: 'primary'
28028
+ },
28029
+ VBottomSheet: {
28030
+ contentClass: 'rounded-t-xl overflow-hidden'
28031
+ },
28032
+ VBtn: {
28033
+ color: 'primary',
28034
+ rounded: 'xl'
28035
+ },
28036
+ VBtnGroup: {
28037
+ rounded: 'xl',
28038
+ VBtn: {
28039
+ rounded: null
28040
+ }
28041
+ },
28042
+ VCard: {
28043
+ rounded: 'lg'
28044
+ },
28045
+ VCheckbox: {
28046
+ color: 'secondary',
28047
+ inset: true
28048
+ },
28049
+ VChip: {
28050
+ rounded: 'sm'
28051
+ },
28052
+ VCombobox: {
28053
+ variant: 'filled'
28054
+ },
28055
+ VNavigationDrawer: {
28056
+ // VList: {
28057
+ // nav: true,
28058
+ // VListItem: {
28059
+ // rounded: 'xl',
28060
+ // },
28061
+ // },
28062
+ },
28063
+ VSelect: {
28064
+ variant: 'filled'
28065
+ },
28066
+ VSlider: {
28067
+ color: 'primary'
28068
+ },
28069
+ VTabs: {
28070
+ color: 'primary'
28071
+ },
28072
+ VTextarea: {
28073
+ variant: 'filled'
28074
+ },
28075
+ VTextField: {
28076
+ variant: 'filled'
28077
+ },
28078
+ VToolbar: {
28079
+ VBtn: {
28080
+ color: null
28081
+ }
28082
+ }
28083
+ },
28084
+ icons: {
28085
+ defaultSet: 'mdi',
28086
+ sets: {
28087
+ mdi
28088
+ }
28089
+ },
28090
+ theme: {
28091
+ themes: {
28092
+ light: {
28093
+ colors: {
28094
+ primary: '#6750a4',
28095
+ secondary: '#b4b0bb',
28096
+ tertiary: '#7d5260',
28097
+ error: '#b3261e',
28098
+ surface: '#fffbfe'
28099
+ }
28100
+ }
28101
+ }
28102
+ }
28103
+ };
28104
+
28105
+ var index = /*#__PURE__*/Object.freeze({
28106
+ __proto__: null,
28107
+ md1: md1,
28108
+ md2: md2,
28109
+ md3: md3
28110
+ });
28111
+
27634
28112
  /* eslint-disable local-rules/sort-imports */
27635
28113
 
27636
- const version = "3.5.9";
28114
+ const version = "3.5.11";
27637
28115
 
27638
28116
  /* eslint-disable local-rules/sort-imports */
27639
28117
 
@@ -27646,5 +28124,5 @@ const createVuetify = function () {
27646
28124
  });
27647
28125
  };
27648
28126
 
27649
- export { components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
28127
+ export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
27650
28128
  //# sourceMappingURL=vuetify-labs.esm.js.map