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
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
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
  */
@@ -484,6 +484,22 @@
484
484
  const divBottom = divRect.bottom;
485
485
  return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;
486
486
  }
487
+ function templateRef() {
488
+ const el = vue.shallowRef();
489
+ const fn = target => {
490
+ el.value = target;
491
+ };
492
+ Object.defineProperty(fn, 'value', {
493
+ enumerable: true,
494
+ get: () => el.value,
495
+ set: val => el.value = val
496
+ });
497
+ Object.defineProperty(fn, 'el', {
498
+ enumerable: true,
499
+ get: () => refElement(el.value)
500
+ });
501
+ return fn;
502
+ }
487
503
 
488
504
  // Utilities
489
505
  const block = ['top', 'bottom'];
@@ -1226,7 +1242,7 @@
1226
1242
 
1227
1243
  // Composables
1228
1244
  const makeComponentProps = propsFactory({
1229
- class: [String, Array],
1245
+ class: [String, Array, Object],
1230
1246
  style: {
1231
1247
  type: [String, Array, Object],
1232
1248
  default: null
@@ -2009,7 +2025,7 @@
2009
2025
 
2010
2026
  function useResizeObserver(callback) {
2011
2027
  let box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'content';
2012
- const resizeRef = vue.ref();
2028
+ const resizeRef = templateRef();
2013
2029
  const contentRect = vue.ref();
2014
2030
  if (IN_BROWSER) {
2015
2031
  const observer = new ResizeObserver(entries => {
@@ -2024,12 +2040,12 @@
2024
2040
  vue.onBeforeUnmount(() => {
2025
2041
  observer.disconnect();
2026
2042
  });
2027
- vue.watch(resizeRef, (newValue, oldValue) => {
2043
+ vue.watch(() => resizeRef.el, (newValue, oldValue) => {
2028
2044
  if (oldValue) {
2029
- observer.unobserve(refElement(oldValue));
2045
+ observer.unobserve(oldValue);
2030
2046
  contentRect.value = undefined;
2031
2047
  }
2032
- if (newValue) observer.observe(refElement(newValue));
2048
+ if (newValue) observer.observe(newValue);
2033
2049
  }, {
2034
2050
  flush: 'post'
2035
2051
  });
@@ -3445,7 +3461,7 @@
3445
3461
  }
3446
3462
  const makeVResponsiveProps = propsFactory({
3447
3463
  aspectRatio: [String, Number],
3448
- contentClass: String,
3464
+ contentClass: null,
3449
3465
  inline: Boolean,
3450
3466
  ...makeComponentProps(),
3451
3467
  ...makeDimensionProps()
@@ -4561,6 +4577,12 @@
4561
4577
  const isSelected = vue.computed(() => {
4562
4578
  return group.isSelected(id);
4563
4579
  });
4580
+ const isFirst = vue.computed(() => {
4581
+ return group.items.value[0].id === id;
4582
+ });
4583
+ const isLast = vue.computed(() => {
4584
+ return group.items.value[group.items.value.length - 1].id === id;
4585
+ });
4564
4586
  const selectedClass = vue.computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass]);
4565
4587
  vue.watch(isSelected, value => {
4566
4588
  vm.emit('group:selected', {
@@ -4572,6 +4594,8 @@
4572
4594
  return {
4573
4595
  id,
4574
4596
  isSelected,
4597
+ isFirst,
4598
+ isLast,
4575
4599
  toggle: () => group.select(id, !isSelected.value),
4576
4600
  select: value => group.select(id, value),
4577
4601
  selectedClass,
@@ -7326,7 +7350,7 @@
7326
7350
  const makeDisplayProps = propsFactory({
7327
7351
  mobile: {
7328
7352
  type: Boolean,
7329
- default: null
7353
+ default: false
7330
7354
  },
7331
7355
  mobileBreakpoint: [Number, String]
7332
7356
  }, 'display');
@@ -7621,7 +7645,7 @@
7621
7645
  const goTo = useGoTo();
7622
7646
  const goToOptions = vue.computed(() => {
7623
7647
  return {
7624
- container: containerRef.value,
7648
+ container: containerRef.el,
7625
7649
  duration: 200,
7626
7650
  easing: 'easeOutQuart'
7627
7651
  };
@@ -7645,9 +7669,9 @@
7645
7669
  contentSize.value = contentRect.value[sizeProperty];
7646
7670
  isOverflowing.value = containerSize.value + 1 < contentSize.value;
7647
7671
  }
7648
- if (firstSelectedIndex.value >= 0 && contentRef.value) {
7672
+ if (firstSelectedIndex.value >= 0 && contentRef.el) {
7649
7673
  // TODO: Is this too naive? Should we store element references in group composable?
7650
- const selectedElement = contentRef.value.children[lastSelectedIndex.value];
7674
+ const selectedElement = contentRef.el.children[lastSelectedIndex.value];
7651
7675
  scrollToChildren(selectedElement, props.centerActive);
7652
7676
  }
7653
7677
  });
@@ -7658,13 +7682,13 @@
7658
7682
  let target = 0;
7659
7683
  if (center) {
7660
7684
  target = calculateCenteredTarget({
7661
- containerElement: containerRef.value,
7685
+ containerElement: containerRef.el,
7662
7686
  isHorizontal: isHorizontal.value,
7663
7687
  selectedElement: children
7664
7688
  });
7665
7689
  } else {
7666
7690
  target = calculateUpdatedTarget({
7667
- containerElement: containerRef.value,
7691
+ containerElement: containerRef.el,
7668
7692
  isHorizontal: isHorizontal.value,
7669
7693
  isRtl: isRtl.value,
7670
7694
  selectedElement: children
@@ -7673,18 +7697,18 @@
7673
7697
  scrollToPosition(target);
7674
7698
  }
7675
7699
  function scrollToPosition(newPosition) {
7676
- if (!IN_BROWSER || !containerRef.value) return;
7677
- const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value);
7678
- const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value);
7679
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7700
+ if (!IN_BROWSER || !containerRef.el) return;
7701
+ const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);
7702
+ const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);
7703
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7680
7704
  if (scrollSize <= offsetSize ||
7681
7705
  // Prevent scrolling by only a couple of pixels, which doesn't look smooth
7682
7706
  Math.abs(newPosition - scrollPosition) < 16) return;
7683
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7707
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7684
7708
  const {
7685
7709
  scrollWidth,
7686
7710
  offsetWidth: containerWidth
7687
- } = containerRef.value;
7711
+ } = containerRef.el;
7688
7712
  newPosition = scrollWidth - containerWidth - newPosition;
7689
7713
  }
7690
7714
  if (isHorizontal.value) {
@@ -7702,12 +7726,12 @@
7702
7726
  }
7703
7727
  function onFocusin(e) {
7704
7728
  isFocused.value = true;
7705
- if (!isOverflowing.value || !contentRef.value) return;
7729
+ if (!isOverflowing.value || !contentRef.el) return;
7706
7730
 
7707
7731
  // Focused element is likely to be the root of an item, so a
7708
7732
  // breadth-first search will probably find it in the first iteration
7709
7733
  for (const el of e.composedPath()) {
7710
- for (const item of contentRef.value.children) {
7734
+ for (const item of contentRef.el.children) {
7711
7735
  if (item === el) {
7712
7736
  scrollToChildren(item);
7713
7737
  return;
@@ -7722,14 +7746,14 @@
7722
7746
  // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren
7723
7747
  let ignoreFocusEvent = false;
7724
7748
  function onFocus(e) {
7725
- if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
7749
+ if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();
7726
7750
  ignoreFocusEvent = false;
7727
7751
  }
7728
7752
  function onFocusAffixes() {
7729
7753
  ignoreFocusEvent = true;
7730
7754
  }
7731
7755
  function onKeydown(e) {
7732
- if (!contentRef.value) return;
7756
+ if (!contentRef.el) return;
7733
7757
  function toFocus(location) {
7734
7758
  e.preventDefault();
7735
7759
  focus(location);
@@ -7754,21 +7778,21 @@
7754
7778
  }
7755
7779
  }
7756
7780
  function focus(location) {
7757
- if (!contentRef.value) return;
7781
+ if (!contentRef.el) return;
7758
7782
  let el;
7759
7783
  if (!location) {
7760
- const focusable = focusableChildren(contentRef.value);
7784
+ const focusable = focusableChildren(contentRef.el);
7761
7785
  el = focusable[0];
7762
7786
  } else if (location === 'next') {
7763
- el = contentRef.value.querySelector(':focus')?.nextElementSibling;
7787
+ el = contentRef.el.querySelector(':focus')?.nextElementSibling;
7764
7788
  if (!el) return focus('first');
7765
7789
  } else if (location === 'prev') {
7766
- el = contentRef.value.querySelector(':focus')?.previousElementSibling;
7790
+ el = contentRef.el.querySelector(':focus')?.previousElementSibling;
7767
7791
  if (!el) return focus('last');
7768
7792
  } else if (location === 'first') {
7769
- el = contentRef.value.firstElementChild;
7793
+ el = contentRef.el.firstElementChild;
7770
7794
  } else if (location === 'last') {
7771
- el = contentRef.value.lastElementChild;
7795
+ el = contentRef.el.lastElementChild;
7772
7796
  }
7773
7797
  if (el) {
7774
7798
  el.focus({
@@ -7782,11 +7806,11 @@
7782
7806
  let newPosition = scrollOffset.value + offsetStep;
7783
7807
 
7784
7808
  // TODO: improve it
7785
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7809
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7786
7810
  const {
7787
7811
  scrollWidth,
7788
7812
  offsetWidth: containerWidth
7789
- } = containerRef.value;
7813
+ } = containerRef.el;
7790
7814
  newPosition += scrollWidth - containerWidth;
7791
7815
  }
7792
7816
  scrollToPosition(newPosition);
@@ -7829,8 +7853,8 @@
7829
7853
  });
7830
7854
  const hasNext = vue.computed(() => {
7831
7855
  if (!containerRef.value) return false;
7832
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7833
- const clientSize = getClientSize(isHorizontal.value, containerRef.value);
7856
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7857
+ const clientSize = getClientSize(isHorizontal.value, containerRef.el);
7834
7858
  const scrollSizeMax = scrollSize - clientSize;
7835
7859
 
7836
7860
  // 1 pixel in reserve, may be lost after rounding
@@ -8254,14 +8278,16 @@
8254
8278
  },
8255
8279
  in: (v, children, parents) => {
8256
8280
  let set = new Set();
8257
- for (const id of v || []) {
8258
- set = strategy.activate({
8259
- id,
8260
- value: true,
8261
- activated: new Set(set),
8262
- children,
8263
- parents
8264
- });
8281
+ if (v != null) {
8282
+ for (const id of wrapInArray(v)) {
8283
+ set = strategy.activate({
8284
+ id,
8285
+ value: true,
8286
+ activated: new Set(set),
8287
+ children,
8288
+ parents
8289
+ });
8290
+ }
8265
8291
  }
8266
8292
  return set;
8267
8293
  },
@@ -8290,8 +8316,11 @@
8290
8316
  },
8291
8317
  in: (v, children, parents) => {
8292
8318
  let set = new Set();
8293
- if (v?.length) {
8294
- set = parentStrategy.in(v.slice(0, 1), children, parents);
8319
+ if (v != null) {
8320
+ const arr = wrapInArray(v);
8321
+ if (arr.length) {
8322
+ set = parentStrategy.in(arr.slice(0, 1), children, parents);
8323
+ }
8295
8324
  }
8296
8325
  return set;
8297
8326
  },
@@ -8635,12 +8664,12 @@
8635
8664
  const makeNestedProps = propsFactory({
8636
8665
  activatable: Boolean,
8637
8666
  selectable: Boolean,
8638
- activeStrategy: [String, Function],
8639
- selectStrategy: [String, Function],
8667
+ activeStrategy: [String, Function, Object],
8668
+ selectStrategy: [String, Function, Object],
8640
8669
  openStrategy: [String, Object],
8641
- opened: Array,
8642
- activated: Array,
8643
- selected: Array,
8670
+ opened: null,
8671
+ activated: null,
8672
+ selected: null,
8644
8673
  mandatory: Boolean
8645
8674
  }, 'nested');
8646
8675
  const useNested = props => {
@@ -8650,6 +8679,7 @@
8650
8679
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8651
8680
  const activeStrategy = vue.computed(() => {
8652
8681
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8682
+ if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
8653
8683
  switch (props.activeStrategy) {
8654
8684
  case 'leaf':
8655
8685
  return leafActiveStrategy(props.mandatory);
@@ -8664,6 +8694,7 @@
8664
8694
  });
8665
8695
  const selectStrategy = vue.computed(() => {
8666
8696
  if (typeof props.selectStrategy === 'object') return props.selectStrategy;
8697
+ if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory);
8667
8698
  switch (props.selectStrategy) {
8668
8699
  case 'single-leaf':
8669
8700
  return leafSingleSelectStrategy(props.mandatory);
@@ -8992,7 +9023,7 @@
8992
9023
  appendIcon: IconValue,
8993
9024
  baseColor: String,
8994
9025
  disabled: Boolean,
8995
- lines: String,
9026
+ lines: [Boolean, String],
8996
9027
  link: {
8997
9028
  type: Boolean,
8998
9029
  default: undefined
@@ -9103,8 +9134,9 @@
9103
9134
  }));
9104
9135
  function onClick(e) {
9105
9136
  emit('click', e);
9106
- if (isGroupActivator || !isClickable.value) return;
9137
+ if (!isClickable.value) return;
9107
9138
  link.navigate?.(e);
9139
+ if (isGroupActivator) return;
9108
9140
  if (root.activatable.value) {
9109
9141
  activate(!isActivated.value, e);
9110
9142
  } else if (root.selectable.value) {
@@ -10563,17 +10595,17 @@
10563
10595
  }, {
10564
10596
  flush: 'post'
10565
10597
  });
10566
- const activatorRef = vue.ref();
10598
+ const activatorRef = templateRef();
10567
10599
  vue.watchEffect(() => {
10568
10600
  if (!activatorRef.value) return;
10569
10601
  vue.nextTick(() => {
10570
- activatorEl.value = refElement(activatorRef.value);
10602
+ activatorEl.value = activatorRef.el;
10571
10603
  });
10572
10604
  });
10573
- const targetRef = vue.ref();
10605
+ const targetRef = templateRef();
10574
10606
  const target = vue.computed(() => {
10575
10607
  if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;
10576
- if (targetRef.value) return refElement(targetRef.value);
10608
+ if (targetRef.value) return targetRef.el;
10577
10609
  return getTarget(props.target, vm) || activatorEl.value;
10578
10610
  });
10579
10611
  const targetEl = vue.computed(() => {
@@ -10918,10 +10950,7 @@
10918
10950
  disabled: Boolean,
10919
10951
  opacity: [Number, String],
10920
10952
  noClickAnimation: Boolean,
10921
- modelValue: {
10922
- type: Boolean,
10923
- default: null
10924
- },
10953
+ modelValue: Boolean,
10925
10954
  persistent: Boolean,
10926
10955
  scrim: {
10927
10956
  type: [Boolean, String],
@@ -10964,7 +10993,7 @@
10964
10993
  } = _ref;
10965
10994
  const model = useProxiedModel(props, 'modelValue');
10966
10995
  const isActive = vue.computed({
10967
- get: () => Boolean(model.value),
10996
+ get: () => model.value,
10968
10997
  set: v => {
10969
10998
  if (!(v && props.disabled)) model.value = v;
10970
10999
  }
@@ -13201,7 +13230,7 @@
13201
13230
  select(displayItems.value[0]);
13202
13231
  }
13203
13232
  menu.value = false;
13204
- search.value = '';
13233
+ if (props.multiple || hasSelectionSlot.value) search.value = '';
13205
13234
  selectionIndex.value = -1;
13206
13235
  }
13207
13236
  });
@@ -15045,7 +15074,7 @@
15045
15074
  const {
15046
15075
  resizeRef
15047
15076
  } = useResizeObserver(entries => {
15048
- if (!resizeRef.value?.offsetParent) return;
15077
+ if (!resizeRef.el?.offsetParent) return;
15049
15078
  const {
15050
15079
  width,
15051
15080
  height
@@ -18668,6 +18697,7 @@
18668
18697
  });
18669
18698
  return !!items.length && isSelected(items);
18670
18699
  });
18700
+ const showSelectAll = vue.computed(() => selectStrategy.value.showSelectAll);
18671
18701
  const data = {
18672
18702
  toggleSelect,
18673
18703
  select,
@@ -18676,7 +18706,7 @@
18676
18706
  isSomeSelected,
18677
18707
  someSelected,
18678
18708
  allSelected,
18679
- showSelectAll: selectStrategy.value.showSelectAll
18709
+ showSelectAll
18680
18710
  };
18681
18711
  vue.provide(VDataTableSelectionSymbol, data);
18682
18712
  return data;
@@ -19947,7 +19977,7 @@
19947
19977
  };
19948
19978
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
19949
19979
  if (column.key === 'data-table-select') {
19950
- return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll && vue.createVNode(VCheckboxBtn, {
19980
+ return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && vue.createVNode(VCheckboxBtn, {
19951
19981
  "modelValue": allSelected.value,
19952
19982
  "indeterminate": someSelected.value && !allSelected.value,
19953
19983
  "onUpdate:modelValue": selectAll
@@ -20466,6 +20496,8 @@
20466
20496
 
20467
20497
  const makeDataTableProps = propsFactory({
20468
20498
  ...makeVDataTableRowsProps(),
20499
+ hideDefaultFooter: Boolean,
20500
+ hideDefaultHeader: Boolean,
20469
20501
  width: [String, Number],
20470
20502
  search: String,
20471
20503
  ...makeDataTableExpandProps(),
@@ -20648,10 +20680,12 @@
20648
20680
  "style": props.style
20649
20681
  }, tableProps), {
20650
20682
  top: () => slots.top?.(slotProps.value),
20651
- default: () => slots.default ? slots.default(slotProps.value) : vue.createVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), vue.createVNode("thead", null, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), vue.createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
20683
+ default: () => slots.default ? slots.default(slotProps.value) : vue.createVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createVNode("thead", {
20684
+ "key": "thead"
20685
+ }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), vue.createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
20652
20686
  "items": paginatedItems.value
20653
20687
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
20654
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
20688
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
20655
20689
  prepend: slots['footer.prepend']
20656
20690
  })])
20657
20691
  });
@@ -20819,7 +20853,9 @@
20819
20853
  "style": {
20820
20854
  height: convertToUnit(props.height)
20821
20855
  }
20822
- }, [vue.createVNode("table", null, [slots.colgroup?.(slotProps.value), vue.createVNode("thead", null, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
20856
+ }, [vue.createVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createVNode("thead", {
20857
+ "key": "thead"
20858
+ }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
20823
20859
  "sticky": props.fixedHeader
20824
20860
  }), slots)]), vue.createVNode("tbody", null, [vue.createVNode("tr", {
20825
20861
  "ref": markerRef,
@@ -21024,7 +21060,8 @@
21024
21060
  "style": props.style
21025
21061
  }, tableProps), {
21026
21062
  top: () => slots.top?.(slotProps.value),
21027
- default: () => slots.default ? slots.default(slotProps.value) : vue.createVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), vue.createVNode("thead", {
21063
+ default: () => slots.default ? slots.default(slotProps.value) : vue.createVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createVNode("thead", {
21064
+ "key": "thead",
21028
21065
  "class": "v-data-table__thead",
21029
21066
  "role": "rowgroup"
21030
21067
  }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
@@ -21035,7 +21072,7 @@
21035
21072
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
21036
21073
  "items": flatItems.value
21037
21074
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
21038
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
21075
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
21039
21076
  prepend: slots['footer.prepend']
21040
21077
  })])
21041
21078
  });
@@ -21916,10 +21953,10 @@
21916
21953
  vue.watchEffect(() => {
21917
21954
  model.value = model.value ?? adapter.getYear(adapter.date());
21918
21955
  });
21919
- const yearRef = vue.ref();
21956
+ const yearRef = templateRef();
21920
21957
  vue.onMounted(async () => {
21921
21958
  await vue.nextTick();
21922
- yearRef.value?.$el.scrollIntoView({
21959
+ yearRef.el?.scrollIntoView({
21923
21960
  block: 'center'
21924
21961
  });
21925
21962
  });
@@ -22579,7 +22616,9 @@
22579
22616
  }), slots.default?.()]
22580
22617
  });
22581
22618
  });
22582
- return {};
22619
+ return {
22620
+ groupItem
22621
+ };
22583
22622
  }
22584
22623
  });
22585
22624
 
@@ -22608,7 +22647,10 @@
22608
22647
  let {
22609
22648
  slots
22610
22649
  } = _ref;
22611
- useGroup(props, VExpansionPanelSymbol);
22650
+ const {
22651
+ next,
22652
+ prev
22653
+ } = useGroup(props, VExpansionPanelSymbol);
22612
22654
  const {
22613
22655
  themeClasses
22614
22656
  } = provideTheme(props);
@@ -22635,8 +22677,16 @@
22635
22677
  'v-expansion-panels--tile': props.tile
22636
22678
  }, themeClasses.value, variantClass.value, props.class],
22637
22679
  "style": props.style
22638
- }, slots));
22639
- return {};
22680
+ }, {
22681
+ default: () => [slots.default?.({
22682
+ prev,
22683
+ next
22684
+ })]
22685
+ }));
22686
+ return {
22687
+ next,
22688
+ prev
22689
+ };
22640
22690
  }
22641
22691
  });
22642
22692
 
@@ -22796,7 +22846,7 @@
22796
22846
  const {
22797
22847
  t
22798
22848
  } = useLocale();
22799
- const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
22849
+ const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0] ?? null);
22800
22850
  const {
22801
22851
  isFocused,
22802
22852
  focus,
@@ -22900,7 +22950,7 @@
22900
22950
  }, fieldProps, {
22901
22951
  "id": id.value,
22902
22952
  "active": isActive.value || isDirty.value,
22903
- "dirty": isDirty.value,
22953
+ "dirty": isDirty.value || props.dirty,
22904
22954
  "disabled": isDisabled.value,
22905
22955
  "focused": isFocused.value,
22906
22956
  "error": isValid.value === false
@@ -23245,7 +23295,7 @@
23245
23295
  function intersecting(side) {
23246
23296
  if (props.mode !== 'manual' && !isIntersecting.value) return;
23247
23297
  const status = getStatus(side);
23248
- if (!rootEl.value || status === 'loading') return;
23298
+ if (!rootEl.value || ['empty', 'loading'].includes(status)) return;
23249
23299
  previousScrollSize = getScrollSize();
23250
23300
  setStatus(side, 'loading');
23251
23301
  function done(status) {
@@ -23991,7 +24041,9 @@
23991
24041
  ...makeBorderProps(),
23992
24042
  ...makeComponentProps(),
23993
24043
  ...makeDelayProps(),
23994
- ...makeDisplayProps(),
24044
+ ...makeDisplayProps({
24045
+ mobile: null
24046
+ }),
23995
24047
  ...makeElevationProps(),
23996
24048
  ...makeLayoutItemProps(),
23997
24049
  ...makeRoundedProps(),
@@ -25997,7 +26049,7 @@
25997
26049
 
25998
26050
  // Types
25999
26051
 
26000
- const makeVStepperItemProps = propsFactory({
26052
+ const makeStepperItemProps = propsFactory({
26001
26053
  color: String,
26002
26054
  title: String,
26003
26055
  subtitle: String,
@@ -26024,7 +26076,10 @@
26024
26076
  rules: {
26025
26077
  type: Array,
26026
26078
  default: () => []
26027
- },
26079
+ }
26080
+ }, 'StepperItem');
26081
+ const makeVStepperItemProps = propsFactory({
26082
+ ...makeStepperItemProps(),
26028
26083
  ...makeGroupItemProps()
26029
26084
  }, 'VStepperItem');
26030
26085
  const VStepperItem = genericComponent()({
@@ -26043,13 +26098,14 @@
26043
26098
  const group = useGroupItem(props, VStepperSymbol, true);
26044
26099
  const step = vue.computed(() => group?.value.value ?? props.value);
26045
26100
  const isValid = vue.computed(() => props.rules.every(handler => handler() === true));
26101
+ const isClickable = vue.computed(() => !props.disabled && props.editable);
26046
26102
  const canEdit = vue.computed(() => !props.disabled && props.editable);
26047
26103
  const hasError = vue.computed(() => props.error || !isValid.value);
26048
26104
  const hasCompleted = vue.computed(() => props.complete || props.rules.length > 0 && isValid.value);
26049
26105
  const icon = vue.computed(() => {
26050
26106
  if (hasError.value) return props.errorIcon;
26051
26107
  if (hasCompleted.value) return props.completeIcon;
26052
- if (props.editable) return props.editIcon;
26108
+ if (group.isSelected.value && props.editable) return props.editIcon;
26053
26109
  return props.icon;
26054
26110
  });
26055
26111
  const slotProps = vue.computed(() => ({
@@ -26076,7 +26132,7 @@
26076
26132
  }, group?.selectedClass.value],
26077
26133
  "disabled": !props.editable,
26078
26134
  "onClick": onClick
26079
- }, [vue.createVNode(VAvatar, {
26135
+ }, [isClickable.value && genOverlays(true, 'v-stepper-item'), vue.createVNode(VAvatar, {
26080
26136
  "key": "stepper-avatar",
26081
26137
  "class": "v-stepper-item__avatar",
26082
26138
  "color": hasColor ? props.color : undefined,
@@ -26138,7 +26194,8 @@
26138
26194
  }, windowProps, {
26139
26195
  "modelValue": model.value,
26140
26196
  "onUpdate:modelValue": $event => model.value = $event,
26141
- "class": "v-stepper-window",
26197
+ "class": ['v-stepper-window', props.class],
26198
+ "style": props.style,
26142
26199
  "mandatory": false,
26143
26200
  "touch": false
26144
26201
  }), slots);
@@ -26162,7 +26219,8 @@
26162
26219
  return vue.createVNode(VWindowItem, vue.mergeProps({
26163
26220
  "_as": "VStepperWindowItem"
26164
26221
  }, windowItemProps, {
26165
- "class": "v-stepper-window-item"
26222
+ "class": ['v-stepper-window-item', props.class],
26223
+ "style": props.style
26166
26224
  }), slots);
26167
26225
  });
26168
26226
  return {};
@@ -26172,7 +26230,7 @@
26172
26230
  // Types
26173
26231
 
26174
26232
  const VStepperSymbol = Symbol.for('vuetify:v-stepper');
26175
- const makeVStepperProps = propsFactory({
26233
+ const makeStepperProps = propsFactory({
26176
26234
  altLabels: Boolean,
26177
26235
  bgColor: String,
26178
26236
  editable: Boolean,
@@ -26191,7 +26249,10 @@
26191
26249
  },
26192
26250
  mobile: Boolean,
26193
26251
  nonLinear: Boolean,
26194
- flat: Boolean,
26252
+ flat: Boolean
26253
+ }, 'Stepper');
26254
+ const makeVStepperProps = propsFactory({
26255
+ ...makeStepperProps(),
26195
26256
  ...makeGroupProps({
26196
26257
  mandatory: 'force',
26197
26258
  selectedClass: 'v-stepper-item--selected'
@@ -26270,12 +26331,18 @@
26270
26331
  default: () => [hasHeader && vue.createVNode(VStepperHeader, {
26271
26332
  "key": "stepper-header"
26272
26333
  }, {
26273
- default: () => [items.value.map((item, index) => vue.createVNode(vue.Fragment, null, [!!index && vue.createVNode(VDivider, null, null), vue.createVNode(VStepperItem, item, {
26274
- default: slots[`header-item.${item.value}`] ?? slots.header,
26275
- icon: slots.icon,
26276
- title: slots.title,
26277
- subtitle: slots.subtitle
26278
- })]))]
26334
+ default: () => [items.value.map((_ref2, index) => {
26335
+ let {
26336
+ raw,
26337
+ ...item
26338
+ } = _ref2;
26339
+ return vue.createVNode(vue.Fragment, null, [!!index && vue.createVNode(VDivider, null, null), vue.createVNode(VStepperItem, item, {
26340
+ default: slots[`header-item.${item.value}`] ?? slots.header,
26341
+ icon: slots.icon,
26342
+ title: slots.title,
26343
+ subtitle: slots.subtitle
26344
+ })]);
26345
+ })]
26279
26346
  }), hasWindow && vue.createVNode(VStepperWindow, {
26280
26347
  "key": "stepper-window"
26281
26348
  }, {
@@ -26661,7 +26728,8 @@
26661
26728
  }, windowProps, {
26662
26729
  "modelValue": model.value,
26663
26730
  "onUpdate:modelValue": $event => model.value = $event,
26664
- "class": "v-tabs-window",
26731
+ "class": ['v-tabs-window', props.class],
26732
+ "style": props.style,
26665
26733
  "mandatory": false,
26666
26734
  "touch": false
26667
26735
  }), slots);
@@ -26738,6 +26806,7 @@
26738
26806
  },
26739
26807
  setup(props, _ref) {
26740
26808
  let {
26809
+ attrs,
26741
26810
  slots
26742
26811
  } = _ref;
26743
26812
  const model = useProxiedModel(props, 'modelValue');
@@ -26749,6 +26818,9 @@
26749
26818
  backgroundColorClasses,
26750
26819
  backgroundColorStyles
26751
26820
  } = useBackgroundColor(vue.toRef(props, 'bgColor'));
26821
+ const {
26822
+ scopeId
26823
+ } = useScopeId();
26752
26824
  provideDefaults({
26753
26825
  VTab: {
26754
26826
  color: vue.toRef(props, 'color'),
@@ -26775,7 +26847,7 @@
26775
26847
  }, backgroundColorStyles.value, props.style],
26776
26848
  "role": "tablist",
26777
26849
  "symbol": VTabsSymbol
26778
- }), {
26850
+ }, scopeId, attrs), {
26779
26851
  default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({
26780
26852
  item
26781
26853
  }) ?? vue.createVNode(VTab, vue.mergeProps(item, {
@@ -26786,11 +26858,11 @@
26786
26858
  item
26787
26859
  })
26788
26860
  }))]
26789
- }), hasWindow && vue.createVNode(VTabsWindow, {
26861
+ }), hasWindow && vue.createVNode(VTabsWindow, vue.mergeProps({
26790
26862
  "modelValue": model.value,
26791
26863
  "onUpdate:modelValue": $event => model.value = $event,
26792
26864
  "key": "tabs-window"
26793
- }, {
26865
+ }, scopeId), {
26794
26866
  default: () => [items.value.map(item => slots.item?.({
26795
26867
  item
26796
26868
  }) ?? vue.createVNode(VTabsWindowItem, {
@@ -27926,7 +27998,7 @@
27926
27998
  goTo
27927
27999
  };
27928
28000
  }
27929
- const version$1 = "3.6.3";
28001
+ const version$1 = "3.6.5";
27930
28002
  createVuetify$1.version = version$1;
27931
28003
 
27932
28004
  // Vue's inject() can only be used in setup
@@ -27951,7 +28023,7 @@
27951
28023
  ...options
27952
28024
  });
27953
28025
  };
27954
- const version = "3.6.3";
28026
+ const version = "3.6.5";
27955
28027
  createVuetify.version = version;
27956
28028
 
27957
28029
  exports.blueprints = index;