vuetify 3.6.3 → 3.6.5

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 (163) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +489 -61
  3. package/dist/json/importMap-labs.json +30 -18
  4. package/dist/json/importMap.json +168 -168
  5. package/dist/json/tags.json +123 -1
  6. package/dist/json/web-types.json +1915 -198
  7. package/dist/vuetify-labs.css +3151 -2738
  8. package/dist/vuetify-labs.d.ts +3424 -1434
  9. package/dist/vuetify-labs.esm.js +483 -173
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +482 -172
  12. package/dist/vuetify-labs.min.css +3 -3
  13. package/dist/vuetify.css +957 -616
  14. package/dist/vuetify.d.ts +1451 -1380
  15. package/dist/vuetify.esm.js +171 -99
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +170 -98
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +3 -3
  20. package/dist/vuetify.min.js +982 -978
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/VAlert.css +3 -1
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VAutocomplete/index.d.mts +187 -158
  26. package/lib/components/VAvatar/VAvatar.css +3 -1
  27. package/lib/components/VBanner/index.d.mts +11 -11
  28. package/lib/components/VBottomSheet/index.d.mts +42 -42
  29. package/lib/components/VBtn/VBtn.css +3 -1
  30. package/lib/components/VBtn/index.d.mts +2 -0
  31. package/lib/components/VCard/VCard.css +3 -1
  32. package/lib/components/VCarousel/index.d.mts +6 -6
  33. package/lib/components/VChip/VChip.css +3 -1
  34. package/lib/components/VChipGroup/index.d.mts +11 -11
  35. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -1
  36. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  37. package/lib/components/VCombobox/index.d.mts +187 -158
  38. package/lib/components/VDataIterator/index.d.mts +1 -1
  39. package/lib/components/VDataTable/VDataTable.css +1 -1
  40. package/lib/components/VDataTable/VDataTable.mjs +6 -2
  41. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  42. package/lib/components/VDataTable/VDataTable.sass +2 -1
  43. package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
  44. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  45. package/lib/components/VDataTable/VDataTableServer.mjs +3 -2
  46. package/lib/components/VDataTable/VDataTableServer.mjs.map +1 -1
  47. package/lib/components/VDataTable/VDataTableVirtual.mjs +3 -1
  48. package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
  49. package/lib/components/VDataTable/composables/select.mjs +2 -1
  50. package/lib/components/VDataTable/composables/select.mjs.map +1 -1
  51. package/lib/components/VDataTable/index.d.mts +130 -71
  52. package/lib/components/VDatePicker/VDatePickerYears.mjs +4 -4
  53. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  54. package/lib/components/VDialog/index.d.mts +126 -126
  55. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +3 -1
  56. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  57. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +15 -4
  58. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  59. package/lib/components/VExpansionPanel/index.d.mts +82 -27
  60. package/lib/components/VFileInput/VFileInput.mjs +2 -2
  61. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  62. package/lib/components/VFileInput/index.d.mts +9 -9
  63. package/lib/components/VImg/index.d.mts +6 -6
  64. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
  65. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  66. package/lib/components/VList/VList.mjs.map +1 -1
  67. package/lib/components/VList/VListItem.css +3 -1
  68. package/lib/components/VList/VListItem.mjs +3 -2
  69. package/lib/components/VList/VListItem.mjs.map +1 -1
  70. package/lib/components/VList/index.d.mts +76 -52
  71. package/lib/components/VMenu/index.d.mts +126 -126
  72. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +3 -1
  73. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  74. package/lib/components/VNavigationDrawer/index.d.mts +19 -13
  75. package/lib/components/VOverlay/VOverlay.mjs +2 -5
  76. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  77. package/lib/components/VOverlay/index.d.mts +42 -42
  78. package/lib/components/VOverlay/useActivator.mjs +5 -5
  79. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  80. package/lib/components/VResponsive/VResponsive.mjs +1 -1
  81. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  82. package/lib/components/VResponsive/index.d.mts +6 -6
  83. package/lib/components/VSelect/index.d.mts +187 -158
  84. package/lib/components/VSheet/VSheet.css +1 -1
  85. package/lib/components/VSheet/_variables.scss +1 -1
  86. package/lib/components/VSlideGroup/VSlideGroup.mjs +25 -25
  87. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  88. package/lib/components/VSlideGroup/index.d.mts +13 -11
  89. package/lib/components/VSlider/VSliderThumb.css +5 -0
  90. package/lib/components/VSlider/VSliderThumb.sass +3 -0
  91. package/lib/components/VSlider/VSliderTrack.css +15 -0
  92. package/lib/components/VSlider/VSliderTrack.sass +9 -0
  93. package/lib/components/VSnackbar/VSnackbar.css +3 -1
  94. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  95. package/lib/components/VSnackbar/index.d.mts +126 -126
  96. package/lib/components/VSpeedDial/index.d.mts +42 -42
  97. package/lib/components/VStepper/VStepper.mjs +17 -8
  98. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  99. package/lib/components/VStepper/VStepperItem.css +47 -0
  100. package/lib/components/VStepper/VStepperItem.mjs +10 -5
  101. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  102. package/lib/components/VStepper/VStepperItem.sass +18 -0
  103. package/lib/components/VStepper/VStepperWindow.mjs +2 -1
  104. package/lib/components/VStepper/VStepperWindow.mjs.map +1 -1
  105. package/lib/components/VStepper/VStepperWindowItem.mjs +2 -1
  106. package/lib/components/VStepper/VStepperWindowItem.mjs.map +1 -1
  107. package/lib/components/VStepper/index.d.mts +1 -1
  108. package/lib/components/VTabs/VTabs.mjs +8 -3
  109. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  110. package/lib/components/VTabs/VTabsWindow.mjs +2 -1
  111. package/lib/components/VTabs/VTabsWindow.mjs.map +1 -1
  112. package/lib/components/VTabs/index.d.mts +13 -11
  113. package/lib/components/VToolbar/VToolbar.css +5 -5
  114. package/lib/components/VToolbar/_variables.scss +3 -3
  115. package/lib/components/VTooltip/index.d.mts +126 -126
  116. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  117. package/lib/components/VWindow/index.d.mts +2 -0
  118. package/lib/components/index.d.mts +1393 -1325
  119. package/lib/composables/component.mjs +1 -1
  120. package/lib/composables/component.mjs.map +1 -1
  121. package/lib/composables/display.mjs +1 -1
  122. package/lib/composables/display.mjs.map +1 -1
  123. package/lib/composables/group.mjs +8 -0
  124. package/lib/composables/group.mjs.map +1 -1
  125. package/lib/composables/nested/activeStrategies.mjs +16 -10
  126. package/lib/composables/nested/activeStrategies.mjs.map +1 -1
  127. package/lib/composables/nested/nested.mjs +7 -5
  128. package/lib/composables/nested/nested.mjs.map +1 -1
  129. package/lib/composables/resizeObserver.mjs +5 -5
  130. package/lib/composables/resizeObserver.mjs.map +1 -1
  131. package/lib/entry-bundler.mjs +1 -1
  132. package/lib/framework.mjs +1 -1
  133. package/lib/index.d.mts +58 -55
  134. package/lib/labs/VCalendar/VCalendar.css +5 -1
  135. package/lib/labs/VCalendar/VCalendar.sass +3 -2
  136. package/lib/labs/VCalendar/_variables.scss +8 -0
  137. package/lib/labs/VNumberInput/VNumberInput.mjs +57 -81
  138. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  139. package/lib/labs/VNumberInput/index.d.mts +402 -34
  140. package/lib/labs/VSnackbarQueue/index.d.mts +138 -138
  141. package/lib/labs/VStepperVertical/VStepperVertical.mjs +106 -0
  142. package/lib/labs/VStepperVertical/VStepperVertical.mjs.map +1 -0
  143. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +38 -0
  144. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs.map +1 -0
  145. package/lib/labs/VStepperVertical/VStepperVerticalItem.css +69 -0
  146. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +134 -0
  147. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs.map +1 -0
  148. package/lib/labs/VStepperVertical/VStepperVerticalItem.sass +74 -0
  149. package/lib/labs/VStepperVertical/_variables.scss +3 -0
  150. package/lib/labs/VStepperVertical/index.d.mts +1590 -0
  151. package/lib/labs/VStepperVertical/index.mjs +4 -0
  152. package/lib/labs/VStepperVertical/index.mjs.map +1 -0
  153. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  154. package/lib/labs/VTreeview/index.d.mts +88 -64
  155. package/lib/labs/components.d.mts +2303 -339
  156. package/lib/labs/components.mjs +1 -0
  157. package/lib/labs/components.mjs.map +1 -1
  158. package/lib/styles/generic/_colors.scss +1 -0
  159. package/lib/styles/main.css +260 -0
  160. package/lib/styles/tools/_variant.sass +3 -1
  161. package/lib/util/helpers.mjs +16 -0
  162. package/lib/util/helpers.mjs.map +1 -1
  163. package/package.json +3 -3
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.6.3
2
+ * Vuetify v3.6.5
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, shallowRef, readonly, unref, warn, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, watch, nextTick, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, Suspense, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, withDirectives, resolveDirective, vShow, onMounted, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, readonly, unref, warn, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, watch, nextTick, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, Suspense, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, withDirectives, resolveDirective, vShow, onMounted, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -70,7 +70,7 @@ function propsFactory(props, source) {
70
70
 
71
71
  // Composables
72
72
  const makeComponentProps = propsFactory({
73
- class: [String, Array],
73
+ class: [String, Array, Object],
74
74
  style: {
75
75
  type: [String, Array, Object],
76
76
  default: null
@@ -557,6 +557,22 @@ function isClickInsideElement(event, targetDiv) {
557
557
  const divBottom = divRect.bottom;
558
558
  return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;
559
559
  }
560
+ function templateRef() {
561
+ const el = shallowRef();
562
+ const fn = target => {
563
+ el.value = target;
564
+ };
565
+ Object.defineProperty(fn, 'value', {
566
+ enumerable: true,
567
+ get: () => el.value,
568
+ set: val => el.value = val
569
+ });
570
+ Object.defineProperty(fn, 'el', {
571
+ enumerable: true,
572
+ get: () => refElement(el.value)
573
+ });
574
+ return fn;
575
+ }
560
576
 
561
577
  // Utilities
562
578
  const block = ['top', 'bottom'];
@@ -1565,7 +1581,7 @@ function useRender(render) {
1565
1581
 
1566
1582
  function useResizeObserver(callback) {
1567
1583
  let box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'content';
1568
- const resizeRef = ref();
1584
+ const resizeRef = templateRef();
1569
1585
  const contentRect = ref();
1570
1586
  if (IN_BROWSER) {
1571
1587
  const observer = new ResizeObserver(entries => {
@@ -1580,12 +1596,12 @@ function useResizeObserver(callback) {
1580
1596
  onBeforeUnmount(() => {
1581
1597
  observer.disconnect();
1582
1598
  });
1583
- watch(resizeRef, (newValue, oldValue) => {
1599
+ watch(() => resizeRef.el, (newValue, oldValue) => {
1584
1600
  if (oldValue) {
1585
- observer.unobserve(refElement(oldValue));
1601
+ observer.unobserve(oldValue);
1586
1602
  contentRect.value = undefined;
1587
1603
  }
1588
- if (newValue) observer.observe(refElement(newValue));
1604
+ if (newValue) observer.observe(newValue);
1589
1605
  }, {
1590
1606
  flush: 'post'
1591
1607
  });
@@ -3001,7 +3017,7 @@ function useAspectStyles(props) {
3001
3017
  }
3002
3018
  const makeVResponsiveProps = propsFactory({
3003
3019
  aspectRatio: [String, Number],
3004
- contentClass: String,
3020
+ contentClass: null,
3005
3021
  inline: Boolean,
3006
3022
  ...makeComponentProps(),
3007
3023
  ...makeDimensionProps()
@@ -4117,6 +4133,12 @@ function useGroupItem(props, injectKey) {
4117
4133
  const isSelected = computed(() => {
4118
4134
  return group.isSelected(id);
4119
4135
  });
4136
+ const isFirst = computed(() => {
4137
+ return group.items.value[0].id === id;
4138
+ });
4139
+ const isLast = computed(() => {
4140
+ return group.items.value[group.items.value.length - 1].id === id;
4141
+ });
4120
4142
  const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass]);
4121
4143
  watch(isSelected, value => {
4122
4144
  vm.emit('group:selected', {
@@ -4128,6 +4150,8 @@ function useGroupItem(props, injectKey) {
4128
4150
  return {
4129
4151
  id,
4130
4152
  isSelected,
4153
+ isFirst,
4154
+ isLast,
4131
4155
  toggle: () => group.select(id, !isSelected.value),
4132
4156
  select: value => group.select(id, value),
4133
4157
  selectedClass,
@@ -7089,7 +7113,7 @@ function createDisplay(options, ssr) {
7089
7113
  const makeDisplayProps = propsFactory({
7090
7114
  mobile: {
7091
7115
  type: Boolean,
7092
- default: null
7116
+ default: false
7093
7117
  },
7094
7118
  mobileBreakpoint: [Number, String]
7095
7119
  }, 'display');
@@ -7384,7 +7408,7 @@ const VSlideGroup = genericComponent()({
7384
7408
  const goTo = useGoTo();
7385
7409
  const goToOptions = computed(() => {
7386
7410
  return {
7387
- container: containerRef.value,
7411
+ container: containerRef.el,
7388
7412
  duration: 200,
7389
7413
  easing: 'easeOutQuart'
7390
7414
  };
@@ -7408,9 +7432,9 @@ const VSlideGroup = genericComponent()({
7408
7432
  contentSize.value = contentRect.value[sizeProperty];
7409
7433
  isOverflowing.value = containerSize.value + 1 < contentSize.value;
7410
7434
  }
7411
- if (firstSelectedIndex.value >= 0 && contentRef.value) {
7435
+ if (firstSelectedIndex.value >= 0 && contentRef.el) {
7412
7436
  // TODO: Is this too naive? Should we store element references in group composable?
7413
- const selectedElement = contentRef.value.children[lastSelectedIndex.value];
7437
+ const selectedElement = contentRef.el.children[lastSelectedIndex.value];
7414
7438
  scrollToChildren(selectedElement, props.centerActive);
7415
7439
  }
7416
7440
  });
@@ -7421,13 +7445,13 @@ const VSlideGroup = genericComponent()({
7421
7445
  let target = 0;
7422
7446
  if (center) {
7423
7447
  target = calculateCenteredTarget({
7424
- containerElement: containerRef.value,
7448
+ containerElement: containerRef.el,
7425
7449
  isHorizontal: isHorizontal.value,
7426
7450
  selectedElement: children
7427
7451
  });
7428
7452
  } else {
7429
7453
  target = calculateUpdatedTarget({
7430
- containerElement: containerRef.value,
7454
+ containerElement: containerRef.el,
7431
7455
  isHorizontal: isHorizontal.value,
7432
7456
  isRtl: isRtl.value,
7433
7457
  selectedElement: children
@@ -7436,18 +7460,18 @@ const VSlideGroup = genericComponent()({
7436
7460
  scrollToPosition(target);
7437
7461
  }
7438
7462
  function scrollToPosition(newPosition) {
7439
- if (!IN_BROWSER || !containerRef.value) return;
7440
- const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value);
7441
- const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value);
7442
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7463
+ if (!IN_BROWSER || !containerRef.el) return;
7464
+ const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);
7465
+ const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);
7466
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7443
7467
  if (scrollSize <= offsetSize ||
7444
7468
  // Prevent scrolling by only a couple of pixels, which doesn't look smooth
7445
7469
  Math.abs(newPosition - scrollPosition) < 16) return;
7446
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7470
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7447
7471
  const {
7448
7472
  scrollWidth,
7449
7473
  offsetWidth: containerWidth
7450
- } = containerRef.value;
7474
+ } = containerRef.el;
7451
7475
  newPosition = scrollWidth - containerWidth - newPosition;
7452
7476
  }
7453
7477
  if (isHorizontal.value) {
@@ -7465,12 +7489,12 @@ const VSlideGroup = genericComponent()({
7465
7489
  }
7466
7490
  function onFocusin(e) {
7467
7491
  isFocused.value = true;
7468
- if (!isOverflowing.value || !contentRef.value) return;
7492
+ if (!isOverflowing.value || !contentRef.el) return;
7469
7493
 
7470
7494
  // Focused element is likely to be the root of an item, so a
7471
7495
  // breadth-first search will probably find it in the first iteration
7472
7496
  for (const el of e.composedPath()) {
7473
- for (const item of contentRef.value.children) {
7497
+ for (const item of contentRef.el.children) {
7474
7498
  if (item === el) {
7475
7499
  scrollToChildren(item);
7476
7500
  return;
@@ -7485,14 +7509,14 @@ const VSlideGroup = genericComponent()({
7485
7509
  // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren
7486
7510
  let ignoreFocusEvent = false;
7487
7511
  function onFocus(e) {
7488
- if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
7512
+ if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();
7489
7513
  ignoreFocusEvent = false;
7490
7514
  }
7491
7515
  function onFocusAffixes() {
7492
7516
  ignoreFocusEvent = true;
7493
7517
  }
7494
7518
  function onKeydown(e) {
7495
- if (!contentRef.value) return;
7519
+ if (!contentRef.el) return;
7496
7520
  function toFocus(location) {
7497
7521
  e.preventDefault();
7498
7522
  focus(location);
@@ -7517,21 +7541,21 @@ const VSlideGroup = genericComponent()({
7517
7541
  }
7518
7542
  }
7519
7543
  function focus(location) {
7520
- if (!contentRef.value) return;
7544
+ if (!contentRef.el) return;
7521
7545
  let el;
7522
7546
  if (!location) {
7523
- const focusable = focusableChildren(contentRef.value);
7547
+ const focusable = focusableChildren(contentRef.el);
7524
7548
  el = focusable[0];
7525
7549
  } else if (location === 'next') {
7526
- el = contentRef.value.querySelector(':focus')?.nextElementSibling;
7550
+ el = contentRef.el.querySelector(':focus')?.nextElementSibling;
7527
7551
  if (!el) return focus('first');
7528
7552
  } else if (location === 'prev') {
7529
- el = contentRef.value.querySelector(':focus')?.previousElementSibling;
7553
+ el = contentRef.el.querySelector(':focus')?.previousElementSibling;
7530
7554
  if (!el) return focus('last');
7531
7555
  } else if (location === 'first') {
7532
- el = contentRef.value.firstElementChild;
7556
+ el = contentRef.el.firstElementChild;
7533
7557
  } else if (location === 'last') {
7534
- el = contentRef.value.lastElementChild;
7558
+ el = contentRef.el.lastElementChild;
7535
7559
  }
7536
7560
  if (el) {
7537
7561
  el.focus({
@@ -7545,11 +7569,11 @@ const VSlideGroup = genericComponent()({
7545
7569
  let newPosition = scrollOffset.value + offsetStep;
7546
7570
 
7547
7571
  // TODO: improve it
7548
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7572
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7549
7573
  const {
7550
7574
  scrollWidth,
7551
7575
  offsetWidth: containerWidth
7552
- } = containerRef.value;
7576
+ } = containerRef.el;
7553
7577
  newPosition += scrollWidth - containerWidth;
7554
7578
  }
7555
7579
  scrollToPosition(newPosition);
@@ -7592,8 +7616,8 @@ const VSlideGroup = genericComponent()({
7592
7616
  });
7593
7617
  const hasNext = computed(() => {
7594
7618
  if (!containerRef.value) return false;
7595
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7596
- const clientSize = getClientSize(isHorizontal.value, containerRef.value);
7619
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7620
+ const clientSize = getClientSize(isHorizontal.value, containerRef.el);
7597
7621
  const scrollSizeMax = scrollSize - clientSize;
7598
7622
 
7599
7623
  // 1 pixel in reserve, may be lost after rounding
@@ -8017,14 +8041,16 @@ const independentActiveStrategy = mandatory => {
8017
8041
  },
8018
8042
  in: (v, children, parents) => {
8019
8043
  let set = new Set();
8020
- for (const id of v || []) {
8021
- set = strategy.activate({
8022
- id,
8023
- value: true,
8024
- activated: new Set(set),
8025
- children,
8026
- parents
8027
- });
8044
+ if (v != null) {
8045
+ for (const id of wrapInArray(v)) {
8046
+ set = strategy.activate({
8047
+ id,
8048
+ value: true,
8049
+ activated: new Set(set),
8050
+ children,
8051
+ parents
8052
+ });
8053
+ }
8028
8054
  }
8029
8055
  return set;
8030
8056
  },
@@ -8053,8 +8079,11 @@ const independentSingleActiveStrategy = mandatory => {
8053
8079
  },
8054
8080
  in: (v, children, parents) => {
8055
8081
  let set = new Set();
8056
- if (v?.length) {
8057
- set = parentStrategy.in(v.slice(0, 1), children, parents);
8082
+ if (v != null) {
8083
+ const arr = wrapInArray(v);
8084
+ if (arr.length) {
8085
+ set = parentStrategy.in(arr.slice(0, 1), children, parents);
8086
+ }
8058
8087
  }
8059
8088
  return set;
8060
8089
  },
@@ -8398,12 +8427,12 @@ const emptyNested = {
8398
8427
  const makeNestedProps = propsFactory({
8399
8428
  activatable: Boolean,
8400
8429
  selectable: Boolean,
8401
- activeStrategy: [String, Function],
8402
- selectStrategy: [String, Function],
8430
+ activeStrategy: [String, Function, Object],
8431
+ selectStrategy: [String, Function, Object],
8403
8432
  openStrategy: [String, Object],
8404
- opened: Array,
8405
- activated: Array,
8406
- selected: Array,
8433
+ opened: null,
8434
+ activated: null,
8435
+ selected: null,
8407
8436
  mandatory: Boolean
8408
8437
  }, 'nested');
8409
8438
  const useNested = props => {
@@ -8413,6 +8442,7 @@ const useNested = props => {
8413
8442
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8414
8443
  const activeStrategy = computed(() => {
8415
8444
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8445
+ if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
8416
8446
  switch (props.activeStrategy) {
8417
8447
  case 'leaf':
8418
8448
  return leafActiveStrategy(props.mandatory);
@@ -8427,6 +8457,7 @@ const useNested = props => {
8427
8457
  });
8428
8458
  const selectStrategy = computed(() => {
8429
8459
  if (typeof props.selectStrategy === 'object') return props.selectStrategy;
8460
+ if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory);
8430
8461
  switch (props.selectStrategy) {
8431
8462
  case 'single-leaf':
8432
8463
  return leafSingleSelectStrategy(props.mandatory);
@@ -8755,7 +8786,7 @@ const makeVListItemProps = propsFactory({
8755
8786
  appendIcon: IconValue,
8756
8787
  baseColor: String,
8757
8788
  disabled: Boolean,
8758
- lines: String,
8789
+ lines: [Boolean, String],
8759
8790
  link: {
8760
8791
  type: Boolean,
8761
8792
  default: undefined
@@ -8866,8 +8897,9 @@ const VListItem = genericComponent()({
8866
8897
  }));
8867
8898
  function onClick(e) {
8868
8899
  emit('click', e);
8869
- if (isGroupActivator || !isClickable.value) return;
8900
+ if (!isClickable.value) return;
8870
8901
  link.navigate?.(e);
8902
+ if (isGroupActivator) return;
8871
8903
  if (root.activatable.value) {
8872
8904
  activate(!isActivated.value, e);
8873
8905
  } else if (root.selectable.value) {
@@ -10326,17 +10358,17 @@ function useActivator(props, _ref) {
10326
10358
  }, {
10327
10359
  flush: 'post'
10328
10360
  });
10329
- const activatorRef = ref();
10361
+ const activatorRef = templateRef();
10330
10362
  watchEffect(() => {
10331
10363
  if (!activatorRef.value) return;
10332
10364
  nextTick(() => {
10333
- activatorEl.value = refElement(activatorRef.value);
10365
+ activatorEl.value = activatorRef.el;
10334
10366
  });
10335
10367
  });
10336
- const targetRef = ref();
10368
+ const targetRef = templateRef();
10337
10369
  const target = computed(() => {
10338
10370
  if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;
10339
- if (targetRef.value) return refElement(targetRef.value);
10371
+ if (targetRef.value) return targetRef.el;
10340
10372
  return getTarget(props.target, vm) || activatorEl.value;
10341
10373
  });
10342
10374
  const targetEl = computed(() => {
@@ -10681,10 +10713,7 @@ const makeVOverlayProps = propsFactory({
10681
10713
  disabled: Boolean,
10682
10714
  opacity: [Number, String],
10683
10715
  noClickAnimation: Boolean,
10684
- modelValue: {
10685
- type: Boolean,
10686
- default: null
10687
- },
10716
+ modelValue: Boolean,
10688
10717
  persistent: Boolean,
10689
10718
  scrim: {
10690
10719
  type: [Boolean, String],
@@ -10727,7 +10756,7 @@ const VOverlay = genericComponent()({
10727
10756
  } = _ref;
10728
10757
  const model = useProxiedModel(props, 'modelValue');
10729
10758
  const isActive = computed({
10730
- get: () => Boolean(model.value),
10759
+ get: () => model.value,
10731
10760
  set: v => {
10732
10761
  if (!(v && props.disabled)) model.value = v;
10733
10762
  }
@@ -12964,7 +12993,7 @@ const VAutocomplete = genericComponent()({
12964
12993
  select(displayItems.value[0]);
12965
12994
  }
12966
12995
  menu.value = false;
12967
- search.value = '';
12996
+ if (props.multiple || hasSelectionSlot.value) search.value = '';
12968
12997
  selectionIndex.value = -1;
12969
12998
  }
12970
12999
  });
@@ -14808,7 +14837,7 @@ const VColorPickerCanvas = defineComponent({
14808
14837
  const {
14809
14838
  resizeRef
14810
14839
  } = useResizeObserver(entries => {
14811
- if (!resizeRef.value?.offsetParent) return;
14840
+ if (!resizeRef.el?.offsetParent) return;
14812
14841
  const {
14813
14842
  width,
14814
14843
  height
@@ -18431,6 +18460,7 @@ function provideSelection(props, _ref9) {
18431
18460
  });
18432
18461
  return !!items.length && isSelected(items);
18433
18462
  });
18463
+ const showSelectAll = computed(() => selectStrategy.value.showSelectAll);
18434
18464
  const data = {
18435
18465
  toggleSelect,
18436
18466
  select,
@@ -18439,7 +18469,7 @@ function provideSelection(props, _ref9) {
18439
18469
  isSomeSelected,
18440
18470
  someSelected,
18441
18471
  allSelected,
18442
- showSelectAll: selectStrategy.value.showSelectAll
18472
+ showSelectAll
18443
18473
  };
18444
18474
  provide(VDataTableSelectionSymbol, data);
18445
18475
  return data;
@@ -19710,7 +19740,7 @@ const VDataTableHeaders = genericComponent()({
19710
19740
  };
19711
19741
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
19712
19742
  if (column.key === 'data-table-select') {
19713
- return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll && createVNode(VCheckboxBtn, {
19743
+ return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && createVNode(VCheckboxBtn, {
19714
19744
  "modelValue": allSelected.value,
19715
19745
  "indeterminate": someSelected.value && !allSelected.value,
19716
19746
  "onUpdate:modelValue": selectAll
@@ -20229,6 +20259,8 @@ function useDataTableItems(props, columns) {
20229
20259
 
20230
20260
  const makeDataTableProps = propsFactory({
20231
20261
  ...makeVDataTableRowsProps(),
20262
+ hideDefaultFooter: Boolean,
20263
+ hideDefaultHeader: Boolean,
20232
20264
  width: [String, Number],
20233
20265
  search: String,
20234
20266
  ...makeDataTableExpandProps(),
@@ -20411,10 +20443,12 @@ const VDataTable = genericComponent()({
20411
20443
  "style": props.style
20412
20444
  }, tableProps), {
20413
20445
  top: () => slots.top?.(slotProps.value),
20414
- default: () => slots.default ? slots.default(slotProps.value) : createVNode(Fragment, null, [slots.colgroup?.(slotProps.value), createVNode("thead", null, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : createVNode(VDataTableRows, mergeProps(attrs, dataTableRowsProps, {
20446
+ default: () => slots.default ? slots.default(slotProps.value) : createVNode(Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createVNode("thead", {
20447
+ "key": "thead"
20448
+ }, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : createVNode(VDataTableRows, mergeProps(attrs, dataTableRowsProps, {
20415
20449
  "items": paginatedItems.value
20416
20450
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
20417
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : createVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
20451
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && createVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
20418
20452
  prepend: slots['footer.prepend']
20419
20453
  })])
20420
20454
  });
@@ -20582,7 +20616,9 @@ const VDataTableVirtual = genericComponent()({
20582
20616
  "style": {
20583
20617
  height: convertToUnit(props.height)
20584
20618
  }
20585
- }, [createVNode("table", null, [slots.colgroup?.(slotProps.value), createVNode("thead", null, [createVNode(VDataTableHeaders, mergeProps(dataTableHeadersProps, {
20619
+ }, [createVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createVNode("thead", {
20620
+ "key": "thead"
20621
+ }, [createVNode(VDataTableHeaders, mergeProps(dataTableHeadersProps, {
20586
20622
  "sticky": props.fixedHeader
20587
20623
  }), slots)]), createVNode("tbody", null, [createVNode("tr", {
20588
20624
  "ref": markerRef,
@@ -20787,7 +20823,8 @@ const VDataTableServer = genericComponent()({
20787
20823
  "style": props.style
20788
20824
  }, tableProps), {
20789
20825
  top: () => slots.top?.(slotProps.value),
20790
- default: () => slots.default ? slots.default(slotProps.value) : createVNode(Fragment, null, [slots.colgroup?.(slotProps.value), createVNode("thead", {
20826
+ default: () => slots.default ? slots.default(slotProps.value) : createVNode(Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createVNode("thead", {
20827
+ "key": "thead",
20791
20828
  "class": "v-data-table__thead",
20792
20829
  "role": "rowgroup"
20793
20830
  }, [createVNode(VDataTableHeaders, mergeProps(dataTableHeadersProps, {
@@ -20798,7 +20835,7 @@ const VDataTableServer = genericComponent()({
20798
20835
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : createVNode(VDataTableRows, mergeProps(attrs, dataTableRowsProps, {
20799
20836
  "items": flatItems.value
20800
20837
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
20801
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : createVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
20838
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && createVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
20802
20839
  prepend: slots['footer.prepend']
20803
20840
  })])
20804
20841
  });
@@ -21679,10 +21716,10 @@ const VDatePickerYears = genericComponent()({
21679
21716
  watchEffect(() => {
21680
21717
  model.value = model.value ?? adapter.getYear(adapter.date());
21681
21718
  });
21682
- const yearRef = ref();
21719
+ const yearRef = templateRef();
21683
21720
  onMounted(async () => {
21684
21721
  await nextTick();
21685
- yearRef.value?.$el.scrollIntoView({
21722
+ yearRef.el?.scrollIntoView({
21686
21723
  block: 'center'
21687
21724
  });
21688
21725
  });
@@ -22342,7 +22379,9 @@ const VExpansionPanel = genericComponent()({
22342
22379
  }), slots.default?.()]
22343
22380
  });
22344
22381
  });
22345
- return {};
22382
+ return {
22383
+ groupItem
22384
+ };
22346
22385
  }
22347
22386
  });
22348
22387
 
@@ -22371,7 +22410,10 @@ const VExpansionPanels = genericComponent()({
22371
22410
  let {
22372
22411
  slots
22373
22412
  } = _ref;
22374
- useGroup(props, VExpansionPanelSymbol);
22413
+ const {
22414
+ next,
22415
+ prev
22416
+ } = useGroup(props, VExpansionPanelSymbol);
22375
22417
  const {
22376
22418
  themeClasses
22377
22419
  } = provideTheme(props);
@@ -22398,8 +22440,16 @@ const VExpansionPanels = genericComponent()({
22398
22440
  'v-expansion-panels--tile': props.tile
22399
22441
  }, themeClasses.value, variantClass.value, props.class],
22400
22442
  "style": props.style
22401
- }, slots));
22402
- return {};
22443
+ }, {
22444
+ default: () => [slots.default?.({
22445
+ prev,
22446
+ next
22447
+ })]
22448
+ }));
22449
+ return {
22450
+ next,
22451
+ prev
22452
+ };
22403
22453
  }
22404
22454
  });
22405
22455
 
@@ -22559,7 +22609,7 @@ const VFileInput = genericComponent()({
22559
22609
  const {
22560
22610
  t
22561
22611
  } = useLocale();
22562
- const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
22612
+ const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0] ?? null);
22563
22613
  const {
22564
22614
  isFocused,
22565
22615
  focus,
@@ -22663,7 +22713,7 @@ const VFileInput = genericComponent()({
22663
22713
  }, fieldProps, {
22664
22714
  "id": id.value,
22665
22715
  "active": isActive.value || isDirty.value,
22666
- "dirty": isDirty.value,
22716
+ "dirty": isDirty.value || props.dirty,
22667
22717
  "disabled": isDisabled.value,
22668
22718
  "focused": isFocused.value,
22669
22719
  "error": isValid.value === false
@@ -23008,7 +23058,7 @@ const VInfiniteScroll = genericComponent()({
23008
23058
  function intersecting(side) {
23009
23059
  if (props.mode !== 'manual' && !isIntersecting.value) return;
23010
23060
  const status = getStatus(side);
23011
- if (!rootEl.value || status === 'loading') return;
23061
+ if (!rootEl.value || ['empty', 'loading'].includes(status)) return;
23012
23062
  previousScrollSize = getScrollSize();
23013
23063
  setStatus(side, 'loading');
23014
23064
  function done(status) {
@@ -23754,7 +23804,9 @@ const makeVNavigationDrawerProps = propsFactory({
23754
23804
  ...makeBorderProps(),
23755
23805
  ...makeComponentProps(),
23756
23806
  ...makeDelayProps(),
23757
- ...makeDisplayProps(),
23807
+ ...makeDisplayProps({
23808
+ mobile: null
23809
+ }),
23758
23810
  ...makeElevationProps(),
23759
23811
  ...makeLayoutItemProps(),
23760
23812
  ...makeRoundedProps(),
@@ -25760,7 +25812,7 @@ const VStepperHeader = createSimpleFunctional('v-stepper-header');
25760
25812
 
25761
25813
  // Types
25762
25814
 
25763
- const makeVStepperItemProps = propsFactory({
25815
+ const makeStepperItemProps = propsFactory({
25764
25816
  color: String,
25765
25817
  title: String,
25766
25818
  subtitle: String,
@@ -25787,7 +25839,10 @@ const makeVStepperItemProps = propsFactory({
25787
25839
  rules: {
25788
25840
  type: Array,
25789
25841
  default: () => []
25790
- },
25842
+ }
25843
+ }, 'StepperItem');
25844
+ const makeVStepperItemProps = propsFactory({
25845
+ ...makeStepperItemProps(),
25791
25846
  ...makeGroupItemProps()
25792
25847
  }, 'VStepperItem');
25793
25848
  const VStepperItem = genericComponent()({
@@ -25806,13 +25861,14 @@ const VStepperItem = genericComponent()({
25806
25861
  const group = useGroupItem(props, VStepperSymbol, true);
25807
25862
  const step = computed(() => group?.value.value ?? props.value);
25808
25863
  const isValid = computed(() => props.rules.every(handler => handler() === true));
25864
+ const isClickable = computed(() => !props.disabled && props.editable);
25809
25865
  const canEdit = computed(() => !props.disabled && props.editable);
25810
25866
  const hasError = computed(() => props.error || !isValid.value);
25811
25867
  const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value);
25812
25868
  const icon = computed(() => {
25813
25869
  if (hasError.value) return props.errorIcon;
25814
25870
  if (hasCompleted.value) return props.completeIcon;
25815
- if (props.editable) return props.editIcon;
25871
+ if (group.isSelected.value && props.editable) return props.editIcon;
25816
25872
  return props.icon;
25817
25873
  });
25818
25874
  const slotProps = computed(() => ({
@@ -25839,7 +25895,7 @@ const VStepperItem = genericComponent()({
25839
25895
  }, group?.selectedClass.value],
25840
25896
  "disabled": !props.editable,
25841
25897
  "onClick": onClick
25842
- }, [createVNode(VAvatar, {
25898
+ }, [isClickable.value && genOverlays(true, 'v-stepper-item'), createVNode(VAvatar, {
25843
25899
  "key": "stepper-avatar",
25844
25900
  "class": "v-stepper-item__avatar",
25845
25901
  "color": hasColor ? props.color : undefined,
@@ -25901,7 +25957,8 @@ const VStepperWindow = genericComponent()({
25901
25957
  }, windowProps, {
25902
25958
  "modelValue": model.value,
25903
25959
  "onUpdate:modelValue": $event => model.value = $event,
25904
- "class": "v-stepper-window",
25960
+ "class": ['v-stepper-window', props.class],
25961
+ "style": props.style,
25905
25962
  "mandatory": false,
25906
25963
  "touch": false
25907
25964
  }), slots);
@@ -25925,7 +25982,8 @@ const VStepperWindowItem = genericComponent()({
25925
25982
  return createVNode(VWindowItem, mergeProps({
25926
25983
  "_as": "VStepperWindowItem"
25927
25984
  }, windowItemProps, {
25928
- "class": "v-stepper-window-item"
25985
+ "class": ['v-stepper-window-item', props.class],
25986
+ "style": props.style
25929
25987
  }), slots);
25930
25988
  });
25931
25989
  return {};
@@ -25935,7 +25993,7 @@ const VStepperWindowItem = genericComponent()({
25935
25993
  // Types
25936
25994
 
25937
25995
  const VStepperSymbol = Symbol.for('vuetify:v-stepper');
25938
- const makeVStepperProps = propsFactory({
25996
+ const makeStepperProps = propsFactory({
25939
25997
  altLabels: Boolean,
25940
25998
  bgColor: String,
25941
25999
  editable: Boolean,
@@ -25954,7 +26012,10 @@ const makeVStepperProps = propsFactory({
25954
26012
  },
25955
26013
  mobile: Boolean,
25956
26014
  nonLinear: Boolean,
25957
- flat: Boolean,
26015
+ flat: Boolean
26016
+ }, 'Stepper');
26017
+ const makeVStepperProps = propsFactory({
26018
+ ...makeStepperProps(),
25958
26019
  ...makeGroupProps({
25959
26020
  mandatory: 'force',
25960
26021
  selectedClass: 'v-stepper-item--selected'
@@ -26033,12 +26094,18 @@ const VStepper = genericComponent()({
26033
26094
  default: () => [hasHeader && createVNode(VStepperHeader, {
26034
26095
  "key": "stepper-header"
26035
26096
  }, {
26036
- default: () => [items.value.map((item, index) => createVNode(Fragment, null, [!!index && createVNode(VDivider, null, null), createVNode(VStepperItem, item, {
26037
- default: slots[`header-item.${item.value}`] ?? slots.header,
26038
- icon: slots.icon,
26039
- title: slots.title,
26040
- subtitle: slots.subtitle
26041
- })]))]
26097
+ default: () => [items.value.map((_ref2, index) => {
26098
+ let {
26099
+ raw,
26100
+ ...item
26101
+ } = _ref2;
26102
+ return createVNode(Fragment, null, [!!index && createVNode(VDivider, null, null), createVNode(VStepperItem, item, {
26103
+ default: slots[`header-item.${item.value}`] ?? slots.header,
26104
+ icon: slots.icon,
26105
+ title: slots.title,
26106
+ subtitle: slots.subtitle
26107
+ })]);
26108
+ })]
26042
26109
  }), hasWindow && createVNode(VStepperWindow, {
26043
26110
  "key": "stepper-window"
26044
26111
  }, {
@@ -26424,7 +26491,8 @@ const VTabsWindow = genericComponent()({
26424
26491
  }, windowProps, {
26425
26492
  "modelValue": model.value,
26426
26493
  "onUpdate:modelValue": $event => model.value = $event,
26427
- "class": "v-tabs-window",
26494
+ "class": ['v-tabs-window', props.class],
26495
+ "style": props.style,
26428
26496
  "mandatory": false,
26429
26497
  "touch": false
26430
26498
  }), slots);
@@ -26501,6 +26569,7 @@ const VTabs = genericComponent()({
26501
26569
  },
26502
26570
  setup(props, _ref) {
26503
26571
  let {
26572
+ attrs,
26504
26573
  slots
26505
26574
  } = _ref;
26506
26575
  const model = useProxiedModel(props, 'modelValue');
@@ -26512,6 +26581,9 @@ const VTabs = genericComponent()({
26512
26581
  backgroundColorClasses,
26513
26582
  backgroundColorStyles
26514
26583
  } = useBackgroundColor(toRef(props, 'bgColor'));
26584
+ const {
26585
+ scopeId
26586
+ } = useScopeId();
26515
26587
  provideDefaults({
26516
26588
  VTab: {
26517
26589
  color: toRef(props, 'color'),
@@ -26538,7 +26610,7 @@ const VTabs = genericComponent()({
26538
26610
  }, backgroundColorStyles.value, props.style],
26539
26611
  "role": "tablist",
26540
26612
  "symbol": VTabsSymbol
26541
- }), {
26613
+ }, scopeId, attrs), {
26542
26614
  default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({
26543
26615
  item
26544
26616
  }) ?? createVNode(VTab, mergeProps(item, {
@@ -26549,11 +26621,11 @@ const VTabs = genericComponent()({
26549
26621
  item
26550
26622
  })
26551
26623
  }))]
26552
- }), hasWindow && createVNode(VTabsWindow, {
26624
+ }), hasWindow && createVNode(VTabsWindow, mergeProps({
26553
26625
  "modelValue": model.value,
26554
26626
  "onUpdate:modelValue": $event => model.value = $event,
26555
26627
  "key": "tabs-window"
26556
- }, {
26628
+ }, scopeId), {
26557
26629
  default: () => [items.value.map(item => slots.item?.({
26558
26630
  item
26559
26631
  }) ?? createVNode(VTabsWindowItem, {
@@ -27838,19 +27910,13 @@ const makeVNumberInputProps = propsFactory({
27838
27910
  type: Number,
27839
27911
  default: 1
27840
27912
  },
27841
- ...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
27842
- ...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
27843
- ...makeFocusProps()
27913
+ ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
27844
27914
  }, 'VNumberInput');
27845
27915
  const VNumberInput = genericComponent()({
27846
27916
  name: 'VNumberInput',
27847
27917
  inheritAttrs: false,
27848
27918
  props: {
27849
- ...makeVNumberInputProps(),
27850
- modelValue: {
27851
- type: Number,
27852
- default: undefined
27853
- }
27919
+ ...makeVNumberInputProps()
27854
27920
  },
27855
27921
  emits: {
27856
27922
  'update:modelValue': val => true
@@ -27862,12 +27928,6 @@ const VNumberInput = genericComponent()({
27862
27928
  slots
27863
27929
  } = _ref;
27864
27930
  const model = useProxiedModel(props, 'modelValue');
27865
- const {
27866
- isFocused,
27867
- focus,
27868
- blur
27869
- } = useFocus(props);
27870
- const inputRef = ref();
27871
27931
  const stepDecimals = computed(() => getDecimals(props.step));
27872
27932
  const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0);
27873
27933
  const canIncrease = computed(() => {
@@ -27883,9 +27943,6 @@ const VNumberInput = genericComponent()({
27883
27943
  model.value = clamp(model.value, props.min, props.max);
27884
27944
  }
27885
27945
  });
27886
- function onFocus() {
27887
- if (!isFocused.value) focus();
27888
- }
27889
27946
  const controlVariant = computed(() => {
27890
27947
  return props.hideInput ? 'stacked' : props.controlVariant;
27891
27948
  });
@@ -27915,7 +27972,7 @@ const VNumberInput = genericComponent()({
27915
27972
  toggleUpDown(false);
27916
27973
  }
27917
27974
  function onKeydown(e) {
27918
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace'].includes(e.key) || e.ctrlKey) return;
27975
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) || e.ctrlKey) return;
27919
27976
  if (['ArrowDown'].includes(e.key)) {
27920
27977
  e.preventDefault();
27921
27978
  toggleUpDown(false);
@@ -27932,17 +27989,14 @@ const VNumberInput = genericComponent()({
27932
27989
  e.preventDefault();
27933
27990
  }
27934
27991
  }
27935
- function onInput(e) {
27936
- const el = e.target;
27937
- model.value = el.value ? +el.value : undefined;
27992
+ function onModelUpdate(v) {
27993
+ model.value = v ? +v : undefined;
27938
27994
  }
27939
27995
  useRender(() => {
27940
- const fieldProps = filterFieldProps(props);
27941
- const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
27942
27996
  const {
27943
27997
  modelValue: _,
27944
- ...inputProps
27945
- } = VInput.filterProps(props);
27998
+ ...textFieldProps
27999
+ } = VTextField.filterProps(props);
27946
28000
  function controlNode() {
27947
28001
  const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%';
27948
28002
  return createVNode("div", {
@@ -27955,6 +28009,7 @@ const VNumberInput = genericComponent()({
27955
28009
  "name": "decrement-btn",
27956
28010
  "icon": "$expand",
27957
28011
  "size": "small",
28012
+ "tabindex": "-1",
27958
28013
  "onClick": onClickDown
27959
28014
  }, null) : createVNode(VDefaultsProvider, {
27960
28015
  "key": "decrement-defaults",
@@ -27979,7 +28034,8 @@ const VNumberInput = genericComponent()({
27979
28034
  "name": "increment-btn",
27980
28035
  "icon": "$collapse",
27981
28036
  "onClick": onClickUp,
27982
- "size": "small"
28037
+ "size": "small",
28038
+ "tabindex": "-1"
27983
28039
  }, null) : createVNode(VDefaultsProvider, {
27984
28040
  "key": "increment-defaults",
27985
28041
  "defaults": {
@@ -28000,7 +28056,36 @@ const VNumberInput = genericComponent()({
28000
28056
  "vertical": true
28001
28057
  }, null) : undefined;
28002
28058
  }
28003
- return createVNode(VInput, mergeProps({
28059
+ const appendInnerControl = controlVariant.value === 'split' ? createVNode("div", {
28060
+ "class": "v-number-input__control"
28061
+ }, [createVNode(VDivider, {
28062
+ "vertical": true
28063
+ }, null), createVNode(VBtn, {
28064
+ "flat": true,
28065
+ "height": "100%",
28066
+ "icon": "$plus",
28067
+ "tile": true,
28068
+ "tabindex": "-1",
28069
+ "onClick": onClickUp
28070
+ }, null)]) : !props.reverse ? createVNode(Fragment, null, [dividerNode(), controlNode()]) : undefined;
28071
+ const hasAppendInner = slots['append-inner'] || appendInnerControl;
28072
+ const prependInnerControl = controlVariant.value === 'split' ? createVNode("div", {
28073
+ "class": "v-number-input__control"
28074
+ }, [createVNode(VBtn, {
28075
+ "flat": true,
28076
+ "height": "100%",
28077
+ "icon": "$minus",
28078
+ "tile": true,
28079
+ "tabindex": "-1",
28080
+ "onClick": onClickDown
28081
+ }, null), createVNode(VDivider, {
28082
+ "vertical": true
28083
+ }, null)]) : props.reverse ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28084
+ const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28085
+ return createVNode(VTextField, mergeProps({
28086
+ "modelValue": model.value,
28087
+ "onUpdate:modelValue": onModelUpdate,
28088
+ "onKeydown": onKeydown,
28004
28089
  "class": ['v-number-input', {
28005
28090
  'v-number-input--default': controlVariant.value === 'default',
28006
28091
  'v-number-input--hide-input': props.hideInput,
@@ -28009,59 +28094,281 @@ const VNumberInput = genericComponent()({
28009
28094
  'v-number-input--split': controlVariant.value === 'split',
28010
28095
  'v-number-input--stacked': controlVariant.value === 'stacked'
28011
28096
  }, props.class]
28012
- }, rootAttrs, inputProps, {
28013
- "focused": isFocused.value,
28097
+ }, textFieldProps, {
28014
28098
  "style": props.style
28015
28099
  }), {
28016
28100
  ...slots,
28017
- default: () => createVNode(VField, mergeProps(fieldProps, {
28018
- "active": true,
28019
- "focused": isFocused.value
28020
- }), {
28021
- ...slots,
28022
- default: _ref2 => {
28101
+ 'append-inner': hasAppendInner ? function () {
28102
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28103
+ args[_key] = arguments[_key];
28104
+ }
28105
+ return createVNode(Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
28106
+ } : undefined,
28107
+ 'prepend-inner': hasPrependInner ? function () {
28108
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
28109
+ args[_key2] = arguments[_key2];
28110
+ }
28111
+ return createVNode(Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
28112
+ } : undefined
28113
+ });
28114
+ });
28115
+ }
28116
+ });
28117
+
28118
+ // Types
28119
+
28120
+ const makeVStepperVerticalActionsProps = propsFactory({
28121
+ ...makeVStepperActionsProps()
28122
+ }, 'VStepperActions');
28123
+ const VStepperVerticalActions = genericComponent()({
28124
+ name: 'VStepperVerticalActions',
28125
+ props: makeVStepperVerticalActionsProps(),
28126
+ emits: {
28127
+ 'click:prev': () => true,
28128
+ 'click:next': () => true
28129
+ },
28130
+ setup(props, _ref) {
28131
+ let {
28132
+ emit,
28133
+ slots
28134
+ } = _ref;
28135
+ function onClickPrev() {
28136
+ emit('click:prev');
28137
+ }
28138
+ function onClickNext() {
28139
+ emit('click:next');
28140
+ }
28141
+ useRender(() => {
28142
+ const stepperActionsProps = VStepperActions.filterProps(props);
28143
+ return createVNode(VStepperActions, mergeProps({
28144
+ "class": "v-stepper-vertical-actions"
28145
+ }, stepperActionsProps, {
28146
+ "onClick:prev": onClickPrev,
28147
+ "onClick:next": onClickNext
28148
+ }), slots);
28149
+ });
28150
+ return {};
28151
+ }
28152
+ });
28153
+
28154
+ // Types
28155
+
28156
+ const makeVStepperVerticalItemProps = propsFactory({
28157
+ hideActions: Boolean,
28158
+ ...makeStepperItemProps(),
28159
+ ...omit(makeVExpansionPanelProps({
28160
+ expandIcon: '',
28161
+ collapseIcon: ''
28162
+ }), ['hideActions'])
28163
+ }, 'VStepperVerticalItem');
28164
+ const VStepperVerticalItem = genericComponent()({
28165
+ name: 'VStepperVerticalItem',
28166
+ props: makeVStepperVerticalItemProps(),
28167
+ emits: {
28168
+ 'click:next': () => true,
28169
+ 'click:prev': () => true,
28170
+ 'click:finish': () => true
28171
+ },
28172
+ setup(props, _ref) {
28173
+ let {
28174
+ emit,
28175
+ slots
28176
+ } = _ref;
28177
+ const vExpansionPanelRef = ref();
28178
+ const step = computed(() => !isNaN(parseInt(props.value)) ? Number(props.value) : props.value);
28179
+ const groupItem = computed(() => vExpansionPanelRef.value?.groupItem);
28180
+ const isSelected = computed(() => groupItem.value?.isSelected.value ?? false);
28181
+ const isValid = computed(() => isSelected.value ? props.rules.every(handler => handler() === true) : null);
28182
+ const canEdit = computed(() => !props.disabled && props.editable);
28183
+ const hasError = computed(() => props.error || isSelected.value && !isValid.value);
28184
+ const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value === true);
28185
+ const disabled = computed(() => {
28186
+ if (props.disabled) return props.disabled;
28187
+ if (groupItem.value?.isFirst.value) return 'prev';
28188
+ return false;
28189
+ });
28190
+ const icon = computed(() => {
28191
+ if (hasError.value) return props.errorIcon;
28192
+ if (hasCompleted.value) return props.completeIcon;
28193
+ if (groupItem.value?.isSelected.value && props.editable) return props.editIcon;
28194
+ return props.icon;
28195
+ });
28196
+ const slotProps = computed(() => ({
28197
+ canEdit: canEdit.value,
28198
+ hasError: hasError.value,
28199
+ hasCompleted: hasCompleted.value,
28200
+ title: props.title,
28201
+ subtitle: props.subtitle,
28202
+ step: step.value,
28203
+ value: props.value
28204
+ }));
28205
+ const actionProps = computed(() => ({
28206
+ ...slotProps.value,
28207
+ prev: onClickPrev,
28208
+ next: onClickNext
28209
+ }));
28210
+ function onClickNext() {
28211
+ emit('click:next');
28212
+ if (groupItem.value?.isLast.value) return;
28213
+ groupItem.value.group.next();
28214
+ }
28215
+ function onClickPrev() {
28216
+ emit('click:prev');
28217
+ groupItem.value.group.prev();
28218
+ }
28219
+ useRender(() => {
28220
+ const hasColor = (hasCompleted.value || groupItem.value?.isSelected.value) && !hasError.value && !props.disabled;
28221
+ const hasActions = !props.hideActions || !!slots.actions;
28222
+ const expansionPanelProps = VExpansionPanel.filterProps(props);
28223
+ return createVNode(VExpansionPanel, mergeProps({
28224
+ "_as": "VStepperVerticalItem",
28225
+ "ref": vExpansionPanelRef
28226
+ }, expansionPanelProps, {
28227
+ "class": ['v-stepper-vertical-item', {
28228
+ 'v-stepper-vertical-item--complete': hasCompleted.value,
28229
+ 'v-stepper-vertical-item--disabled': props.disabled,
28230
+ 'v-stepper-vertical-item--editable': canEdit.value,
28231
+ 'v-stepper-vertical-item--error': hasError.value
28232
+ }, props.class],
28233
+ "readonly": !props.editable,
28234
+ "style": props.style,
28235
+ "color": "",
28236
+ "hide-actions": false,
28237
+ "value": step.value
28238
+ }), {
28239
+ title: () => createVNode(Fragment, null, [createVNode(VAvatar, {
28240
+ "key": "stepper-avatar",
28241
+ "class": "v-stepper-vertical-item__avatar",
28242
+ "color": hasColor ? props.color : undefined,
28243
+ "size": 24,
28244
+ "start": true
28245
+ }, {
28246
+ default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? createVNode(VIcon, {
28247
+ "icon": icon.value
28248
+ }, null) : step.value)]
28249
+ }), createVNode("div", null, [createVNode("div", {
28250
+ "class": "v-stepper-vertical-item__title"
28251
+ }, [slots.title?.(slotProps.value) ?? props.title]), createVNode("div", {
28252
+ "class": "v-stepper-vertical-item__subtitle"
28253
+ }, [slots.subtitle?.(slotProps.value) ?? props.subtitle])])]),
28254
+ text: () => createVNode(Fragment, null, [slots.default?.(slotProps.value) ?? props.text, hasActions && createVNode(VDefaultsProvider, {
28255
+ "defaults": {
28256
+ VStepperVerticalActions: {
28257
+ disabled: disabled.value,
28258
+ finish: groupItem.value?.isLast.value
28259
+ }
28260
+ }
28261
+ }, {
28262
+ default: () => [slots.actions?.(actionProps.value) ?? createVNode(VStepperVerticalActions, {
28263
+ "onClick:next": onClickNext,
28264
+ "onClick:prev": onClickPrev
28265
+ }, {
28266
+ prev: slots.prev ? () => slots.prev?.(actionProps.value) : undefined,
28267
+ next: slots.next ? () => slots.next?.(actionProps.value) : undefined
28268
+ })]
28269
+ })])
28270
+ });
28271
+ });
28272
+ return {};
28273
+ }
28274
+ });
28275
+
28276
+ // Types
28277
+
28278
+ const makeVStepperVerticalProps = propsFactory({
28279
+ prevText: {
28280
+ type: String,
28281
+ default: '$vuetify.stepper.prev'
28282
+ },
28283
+ nextText: {
28284
+ type: String,
28285
+ default: '$vuetify.stepper.next'
28286
+ },
28287
+ ...makeStepperProps(),
28288
+ ...omit(makeVExpansionPanelsProps({
28289
+ mandatory: 'force',
28290
+ variant: 'accordion'
28291
+ }), ['static'])
28292
+ }, 'VStepperVertical');
28293
+ const VStepperVertical = genericComponent()({
28294
+ name: 'VStepperVertical',
28295
+ props: makeVStepperVerticalProps(),
28296
+ emits: {
28297
+ 'update:modelValue': val => true
28298
+ },
28299
+ setup(props, _ref) {
28300
+ let {
28301
+ slots
28302
+ } = _ref;
28303
+ const vExpansionPanelsRef = ref();
28304
+ const {
28305
+ color,
28306
+ editable,
28307
+ prevText,
28308
+ nextText,
28309
+ hideActions
28310
+ } = toRefs(props);
28311
+ const model = useProxiedModel(props, 'modelValue');
28312
+ const items = computed(() => props.items.map((item, index) => {
28313
+ const title = getPropertyFromItem(item, props.itemTitle, item);
28314
+ const value = getPropertyFromItem(item, props.itemValue, index + 1);
28315
+ return {
28316
+ title,
28317
+ value,
28318
+ raw: item
28319
+ };
28320
+ }));
28321
+ provideDefaults({
28322
+ VStepperVerticalItem: {
28323
+ color,
28324
+ editable,
28325
+ prevText,
28326
+ nextText,
28327
+ hideActions,
28328
+ static: true
28329
+ },
28330
+ VStepperActions: {
28331
+ color
28332
+ }
28333
+ });
28334
+ useRender(() => {
28335
+ const expansionPanelProps = VExpansionPanels.filterProps(props);
28336
+ return createVNode(VExpansionPanels, mergeProps(expansionPanelProps, {
28337
+ "modelValue": model.value,
28338
+ "onUpdate:modelValue": $event => model.value = $event,
28339
+ "ref": vExpansionPanelsRef,
28340
+ "class": ['v-stepper', {
28341
+ 'v-stepper--alt-labels': props.altLabels,
28342
+ 'v-stepper--flat': props.flat,
28343
+ 'v-stepper--non-linear': props.nonLinear,
28344
+ 'v-stepper--mobile': props.mobile
28345
+ }, props.class],
28346
+ "style": props.style
28347
+ }), {
28348
+ ...slots,
28349
+ default: _ref2 => {
28350
+ let {
28351
+ prev,
28352
+ next
28353
+ } = _ref2;
28354
+ return createVNode(Fragment, null, [items.value.map(_ref3 => {
28023
28355
  let {
28024
- props: {
28025
- class: fieldClass,
28026
- ...slotProps
28027
- }
28028
- } = _ref2;
28029
- return createVNode("input", mergeProps({
28030
- "ref": inputRef,
28031
- "type": "text",
28032
- "value": model.value,
28033
- "onInput": onInput,
28034
- "onKeydown": onKeydown,
28035
- "class": fieldClass,
28036
- "onFocus": onFocus,
28037
- "onBlur": blur
28038
- }, inputAttrs), null);
28039
- },
28040
- 'append-inner': controlVariant.value === 'split' ? () => createVNode("div", {
28041
- "class": "v-number-input__control"
28042
- }, [createVNode(VDivider, {
28043
- "vertical": true
28044
- }, null), createVNode(VBtn, {
28045
- "flat": true,
28046
- "height": "100%",
28047
- "icon": "$plus",
28048
- "tile": true,
28049
- "onClick": onClickUp
28050
- }, null)]) : !props.reverse ? () => createVNode(Fragment, null, [dividerNode(), controlNode()]) : undefined,
28051
- 'prepend-inner': controlVariant.value === 'split' ? () => createVNode("div", {
28052
- "class": "v-number-input__control"
28053
- }, [createVNode(VBtn, {
28054
- "flat": true,
28055
- "height": "100%",
28056
- "icon": "$minus",
28057
- "tile": true,
28058
- "onClick": onClickDown
28059
- }, null), createVNode(VDivider, {
28060
- "vertical": true
28061
- }, null)]) : props.reverse ? () => createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined
28062
- })
28356
+ raw,
28357
+ ...item
28358
+ } = _ref3;
28359
+ return createVNode(VStepperVerticalItem, item, {
28360
+ ...slots,
28361
+ default: slots[`item.${item.value}`]
28362
+ });
28363
+ }), slots.default?.({
28364
+ prev,
28365
+ next,
28366
+ step: model.value
28367
+ })]);
28368
+ }
28063
28369
  });
28064
28370
  });
28371
+ return {};
28065
28372
  }
28066
28373
  });
28067
28374
 
@@ -29425,6 +29732,9 @@ var components = /*#__PURE__*/Object.freeze({
29425
29732
  VStepperActions: VStepperActions,
29426
29733
  VStepperHeader: VStepperHeader,
29427
29734
  VStepperItem: VStepperItem,
29735
+ VStepperVertical: VStepperVertical,
29736
+ VStepperVerticalActions: VStepperVerticalActions,
29737
+ VStepperVerticalItem: VStepperVerticalItem,
29428
29738
  VStepperWindow: VStepperWindow,
29429
29739
  VStepperWindowItem: VStepperWindowItem,
29430
29740
  VSvgIcon: VSvgIcon,
@@ -29762,7 +30072,7 @@ function createVuetify$1() {
29762
30072
  goTo
29763
30073
  };
29764
30074
  }
29765
- const version$1 = "3.6.3";
30075
+ const version$1 = "3.6.5";
29766
30076
  createVuetify$1.version = version$1;
29767
30077
 
29768
30078
  // Vue's inject() can only be used in setup
@@ -30015,7 +30325,7 @@ var index = /*#__PURE__*/Object.freeze({
30015
30325
 
30016
30326
  /* eslint-disable local-rules/sort-imports */
30017
30327
 
30018
- const version = "3.6.3";
30328
+ const version = "3.6.5";
30019
30329
 
30020
30330
  /* eslint-disable local-rules/sort-imports */
30021
30331