vuetify 3.6.2 → 3.6.4

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 (127) hide show
  1. package/dist/json/attributes.json +197 -57
  2. package/dist/json/importMap-labs.json +12 -12
  3. package/dist/json/importMap.json +106 -106
  4. package/dist/json/tags.json +36 -1
  5. package/dist/json/web-types.json +527 -117
  6. package/dist/vuetify-labs.css +2933 -2635
  7. package/dist/vuetify-labs.d.ts +1891 -1542
  8. package/dist/vuetify-labs.esm.js +167 -159
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +166 -158
  11. package/dist/vuetify-labs.min.css +3 -3
  12. package/dist/vuetify.css +1157 -863
  13. package/dist/vuetify.d.ts +1328 -1335
  14. package/dist/vuetify.esm.js +114 -84
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +113 -83
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +3 -3
  19. package/dist/vuetify.min.js +990 -987
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/VAlert.css +3 -1
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/index.d.mts +187 -158
  25. package/lib/components/VAvatar/VAvatar.css +3 -1
  26. package/lib/components/VBanner/index.d.mts +11 -11
  27. package/lib/components/VBottomSheet/index.d.mts +42 -42
  28. package/lib/components/VBtn/VBtn.css +3 -1
  29. package/lib/components/VCard/VCard.css +3 -1
  30. package/lib/components/VCarousel/index.d.mts +6 -6
  31. package/lib/components/VChip/VChip.css +3 -1
  32. package/lib/components/VChipGroup/index.d.mts +11 -11
  33. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -1
  34. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  35. package/lib/components/VCombobox/index.d.mts +187 -158
  36. package/lib/components/VDataIterator/index.d.mts +1 -1
  37. package/lib/components/VDataTable/VDataTable.css +1 -1
  38. package/lib/components/VDataTable/VDataTable.sass +2 -1
  39. package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
  40. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  41. package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
  42. package/lib/components/VDataTable/composables/select.mjs +9 -9
  43. package/lib/components/VDataTable/composables/select.mjs.map +1 -1
  44. package/lib/components/VDataTable/index.d.mts +76 -71
  45. package/lib/components/VDatePicker/VDatePickerYears.mjs +4 -4
  46. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  47. package/lib/components/VDialog/index.d.mts +126 -126
  48. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  49. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  50. package/lib/components/VFileInput/index.d.mts +9 -9
  51. package/lib/components/VImg/index.d.mts +6 -6
  52. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
  53. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  54. package/lib/components/VList/VList.mjs.map +1 -1
  55. package/lib/components/VList/VListItem.css +3 -1
  56. package/lib/components/VList/VListItem.mjs +3 -2
  57. package/lib/components/VList/VListItem.mjs.map +1 -1
  58. package/lib/components/VList/index.d.mts +76 -52
  59. package/lib/components/VMenu/index.d.mts +126 -126
  60. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +3 -1
  61. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  62. package/lib/components/VNavigationDrawer/index.d.mts +19 -13
  63. package/lib/components/VOverlay/VOverlay.mjs +2 -5
  64. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  65. package/lib/components/VOverlay/index.d.mts +42 -42
  66. package/lib/components/VOverlay/useActivator.mjs +5 -5
  67. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  68. package/lib/components/VResponsive/VResponsive.mjs +1 -1
  69. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  70. package/lib/components/VResponsive/index.d.mts +6 -6
  71. package/lib/components/VSelect/index.d.mts +187 -158
  72. package/lib/components/VSheet/VSheet.css +1 -1
  73. package/lib/components/VSheet/_variables.scss +1 -1
  74. package/lib/components/VSlideGroup/VSlideGroup.mjs +25 -25
  75. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  76. package/lib/components/VSlideGroup/index.d.mts +11 -11
  77. package/lib/components/VSlider/VSliderThumb.css +5 -0
  78. package/lib/components/VSlider/VSliderThumb.sass +3 -0
  79. package/lib/components/VSlider/VSliderTrack.css +15 -0
  80. package/lib/components/VSlider/VSliderTrack.sass +9 -0
  81. package/lib/components/VSnackbar/VSnackbar.css +3 -1
  82. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  83. package/lib/components/VSnackbar/index.d.mts +126 -126
  84. package/lib/components/VSpeedDial/index.d.mts +42 -42
  85. package/lib/components/VStepper/VStepperWindow.mjs +2 -1
  86. package/lib/components/VStepper/VStepperWindow.mjs.map +1 -1
  87. package/lib/components/VStepper/VStepperWindowItem.mjs +2 -1
  88. package/lib/components/VStepper/VStepperWindowItem.mjs.map +1 -1
  89. package/lib/components/VTabs/VTabs.mjs +8 -3
  90. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  91. package/lib/components/VTabs/VTabsWindow.mjs +2 -1
  92. package/lib/components/VTabs/VTabsWindow.mjs.map +1 -1
  93. package/lib/components/VTabs/index.d.mts +11 -11
  94. package/lib/components/VToolbar/VToolbar.css +5 -5
  95. package/lib/components/VToolbar/_variables.scss +3 -3
  96. package/lib/components/VTooltip/index.d.mts +126 -126
  97. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  98. package/lib/components/index.d.mts +1291 -1298
  99. package/lib/composables/component.mjs +1 -1
  100. package/lib/composables/component.mjs.map +1 -1
  101. package/lib/composables/display.mjs +1 -1
  102. package/lib/composables/display.mjs.map +1 -1
  103. package/lib/composables/nested/activeStrategies.mjs +16 -10
  104. package/lib/composables/nested/activeStrategies.mjs.map +1 -1
  105. package/lib/composables/nested/nested.mjs +7 -5
  106. package/lib/composables/nested/nested.mjs.map +1 -1
  107. package/lib/composables/resizeObserver.mjs +5 -5
  108. package/lib/composables/resizeObserver.mjs.map +1 -1
  109. package/lib/entry-bundler.mjs +1 -1
  110. package/lib/framework.mjs +1 -1
  111. package/lib/index.d.mts +37 -37
  112. package/lib/labs/VCalendar/VCalendar.css +5 -1
  113. package/lib/labs/VCalendar/VCalendar.sass +3 -2
  114. package/lib/labs/VCalendar/_variables.scss +8 -0
  115. package/lib/labs/VNumberInput/VNumberInput.mjs +57 -81
  116. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  117. package/lib/labs/VNumberInput/index.d.mts +402 -34
  118. package/lib/labs/VSnackbarQueue/index.d.mts +138 -138
  119. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  120. package/lib/labs/VTreeview/index.d.mts +88 -64
  121. package/lib/labs/components.d.mts +620 -235
  122. package/lib/styles/generic/_colors.scss +1 -0
  123. package/lib/styles/main.css +260 -0
  124. package/lib/styles/tools/_variant.sass +3 -1
  125. package/lib/util/helpers.mjs +16 -0
  126. package/lib/util/helpers.mjs.map +1 -1
  127. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.2
2
+ * Vuetify v3.6.4
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -74,7 +74,7 @@
74
74
 
75
75
  // Composables
76
76
  const makeComponentProps = propsFactory({
77
- class: [String, Array],
77
+ class: [String, Array, Object],
78
78
  style: {
79
79
  type: [String, Array, Object],
80
80
  default: null
@@ -561,6 +561,22 @@
561
561
  const divBottom = divRect.bottom;
562
562
  return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;
563
563
  }
564
+ function templateRef() {
565
+ const el = vue.shallowRef();
566
+ const fn = target => {
567
+ el.value = target;
568
+ };
569
+ Object.defineProperty(fn, 'value', {
570
+ enumerable: true,
571
+ get: () => el.value,
572
+ set: val => el.value = val
573
+ });
574
+ Object.defineProperty(fn, 'el', {
575
+ enumerable: true,
576
+ get: () => refElement(el.value)
577
+ });
578
+ return fn;
579
+ }
564
580
 
565
581
  // Utilities
566
582
  const block = ['top', 'bottom'];
@@ -1569,7 +1585,7 @@
1569
1585
 
1570
1586
  function useResizeObserver(callback) {
1571
1587
  let box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'content';
1572
- const resizeRef = vue.ref();
1588
+ const resizeRef = templateRef();
1573
1589
  const contentRect = vue.ref();
1574
1590
  if (IN_BROWSER) {
1575
1591
  const observer = new ResizeObserver(entries => {
@@ -1584,12 +1600,12 @@
1584
1600
  vue.onBeforeUnmount(() => {
1585
1601
  observer.disconnect();
1586
1602
  });
1587
- vue.watch(resizeRef, (newValue, oldValue) => {
1603
+ vue.watch(() => resizeRef.el, (newValue, oldValue) => {
1588
1604
  if (oldValue) {
1589
- observer.unobserve(refElement(oldValue));
1605
+ observer.unobserve(oldValue);
1590
1606
  contentRect.value = undefined;
1591
1607
  }
1592
- if (newValue) observer.observe(refElement(newValue));
1608
+ if (newValue) observer.observe(newValue);
1593
1609
  }, {
1594
1610
  flush: 'post'
1595
1611
  });
@@ -3005,7 +3021,7 @@
3005
3021
  }
3006
3022
  const makeVResponsiveProps = propsFactory({
3007
3023
  aspectRatio: [String, Number],
3008
- contentClass: String,
3024
+ contentClass: null,
3009
3025
  inline: Boolean,
3010
3026
  ...makeComponentProps(),
3011
3027
  ...makeDimensionProps()
@@ -7093,7 +7109,7 @@
7093
7109
  const makeDisplayProps = propsFactory({
7094
7110
  mobile: {
7095
7111
  type: Boolean,
7096
- default: null
7112
+ default: false
7097
7113
  },
7098
7114
  mobileBreakpoint: [Number, String]
7099
7115
  }, 'display');
@@ -7388,7 +7404,7 @@
7388
7404
  const goTo = useGoTo();
7389
7405
  const goToOptions = vue.computed(() => {
7390
7406
  return {
7391
- container: containerRef.value,
7407
+ container: containerRef.el,
7392
7408
  duration: 200,
7393
7409
  easing: 'easeOutQuart'
7394
7410
  };
@@ -7412,9 +7428,9 @@
7412
7428
  contentSize.value = contentRect.value[sizeProperty];
7413
7429
  isOverflowing.value = containerSize.value + 1 < contentSize.value;
7414
7430
  }
7415
- if (firstSelectedIndex.value >= 0 && contentRef.value) {
7431
+ if (firstSelectedIndex.value >= 0 && contentRef.el) {
7416
7432
  // TODO: Is this too naive? Should we store element references in group composable?
7417
- const selectedElement = contentRef.value.children[lastSelectedIndex.value];
7433
+ const selectedElement = contentRef.el.children[lastSelectedIndex.value];
7418
7434
  scrollToChildren(selectedElement, props.centerActive);
7419
7435
  }
7420
7436
  });
@@ -7425,13 +7441,13 @@
7425
7441
  let target = 0;
7426
7442
  if (center) {
7427
7443
  target = calculateCenteredTarget({
7428
- containerElement: containerRef.value,
7444
+ containerElement: containerRef.el,
7429
7445
  isHorizontal: isHorizontal.value,
7430
7446
  selectedElement: children
7431
7447
  });
7432
7448
  } else {
7433
7449
  target = calculateUpdatedTarget({
7434
- containerElement: containerRef.value,
7450
+ containerElement: containerRef.el,
7435
7451
  isHorizontal: isHorizontal.value,
7436
7452
  isRtl: isRtl.value,
7437
7453
  selectedElement: children
@@ -7440,18 +7456,18 @@
7440
7456
  scrollToPosition(target);
7441
7457
  }
7442
7458
  function scrollToPosition(newPosition) {
7443
- if (!IN_BROWSER || !containerRef.value) return;
7444
- const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value);
7445
- const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value);
7446
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7459
+ if (!IN_BROWSER || !containerRef.el) return;
7460
+ const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);
7461
+ const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);
7462
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7447
7463
  if (scrollSize <= offsetSize ||
7448
7464
  // Prevent scrolling by only a couple of pixels, which doesn't look smooth
7449
7465
  Math.abs(newPosition - scrollPosition) < 16) return;
7450
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7466
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7451
7467
  const {
7452
7468
  scrollWidth,
7453
7469
  offsetWidth: containerWidth
7454
- } = containerRef.value;
7470
+ } = containerRef.el;
7455
7471
  newPosition = scrollWidth - containerWidth - newPosition;
7456
7472
  }
7457
7473
  if (isHorizontal.value) {
@@ -7469,12 +7485,12 @@
7469
7485
  }
7470
7486
  function onFocusin(e) {
7471
7487
  isFocused.value = true;
7472
- if (!isOverflowing.value || !contentRef.value) return;
7488
+ if (!isOverflowing.value || !contentRef.el) return;
7473
7489
 
7474
7490
  // Focused element is likely to be the root of an item, so a
7475
7491
  // breadth-first search will probably find it in the first iteration
7476
7492
  for (const el of e.composedPath()) {
7477
- for (const item of contentRef.value.children) {
7493
+ for (const item of contentRef.el.children) {
7478
7494
  if (item === el) {
7479
7495
  scrollToChildren(item);
7480
7496
  return;
@@ -7489,14 +7505,14 @@
7489
7505
  // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren
7490
7506
  let ignoreFocusEvent = false;
7491
7507
  function onFocus(e) {
7492
- if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
7508
+ if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();
7493
7509
  ignoreFocusEvent = false;
7494
7510
  }
7495
7511
  function onFocusAffixes() {
7496
7512
  ignoreFocusEvent = true;
7497
7513
  }
7498
7514
  function onKeydown(e) {
7499
- if (!contentRef.value) return;
7515
+ if (!contentRef.el) return;
7500
7516
  function toFocus(location) {
7501
7517
  e.preventDefault();
7502
7518
  focus(location);
@@ -7521,21 +7537,21 @@
7521
7537
  }
7522
7538
  }
7523
7539
  function focus(location) {
7524
- if (!contentRef.value) return;
7540
+ if (!contentRef.el) return;
7525
7541
  let el;
7526
7542
  if (!location) {
7527
- const focusable = focusableChildren(contentRef.value);
7543
+ const focusable = focusableChildren(contentRef.el);
7528
7544
  el = focusable[0];
7529
7545
  } else if (location === 'next') {
7530
- el = contentRef.value.querySelector(':focus')?.nextElementSibling;
7546
+ el = contentRef.el.querySelector(':focus')?.nextElementSibling;
7531
7547
  if (!el) return focus('first');
7532
7548
  } else if (location === 'prev') {
7533
- el = contentRef.value.querySelector(':focus')?.previousElementSibling;
7549
+ el = contentRef.el.querySelector(':focus')?.previousElementSibling;
7534
7550
  if (!el) return focus('last');
7535
7551
  } else if (location === 'first') {
7536
- el = contentRef.value.firstElementChild;
7552
+ el = contentRef.el.firstElementChild;
7537
7553
  } else if (location === 'last') {
7538
- el = contentRef.value.lastElementChild;
7554
+ el = contentRef.el.lastElementChild;
7539
7555
  }
7540
7556
  if (el) {
7541
7557
  el.focus({
@@ -7549,11 +7565,11 @@
7549
7565
  let newPosition = scrollOffset.value + offsetStep;
7550
7566
 
7551
7567
  // TODO: improve it
7552
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7568
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7553
7569
  const {
7554
7570
  scrollWidth,
7555
7571
  offsetWidth: containerWidth
7556
- } = containerRef.value;
7572
+ } = containerRef.el;
7557
7573
  newPosition += scrollWidth - containerWidth;
7558
7574
  }
7559
7575
  scrollToPosition(newPosition);
@@ -7596,8 +7612,8 @@
7596
7612
  });
7597
7613
  const hasNext = vue.computed(() => {
7598
7614
  if (!containerRef.value) return false;
7599
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7600
- const clientSize = getClientSize(isHorizontal.value, containerRef.value);
7615
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7616
+ const clientSize = getClientSize(isHorizontal.value, containerRef.el);
7601
7617
  const scrollSizeMax = scrollSize - clientSize;
7602
7618
 
7603
7619
  // 1 pixel in reserve, may be lost after rounding
@@ -8021,14 +8037,16 @@
8021
8037
  },
8022
8038
  in: (v, children, parents) => {
8023
8039
  let set = new Set();
8024
- for (const id of v || []) {
8025
- set = strategy.activate({
8026
- id,
8027
- value: true,
8028
- activated: new Set(set),
8029
- children,
8030
- parents
8031
- });
8040
+ if (v != null) {
8041
+ for (const id of wrapInArray(v)) {
8042
+ set = strategy.activate({
8043
+ id,
8044
+ value: true,
8045
+ activated: new Set(set),
8046
+ children,
8047
+ parents
8048
+ });
8049
+ }
8032
8050
  }
8033
8051
  return set;
8034
8052
  },
@@ -8057,8 +8075,11 @@
8057
8075
  },
8058
8076
  in: (v, children, parents) => {
8059
8077
  let set = new Set();
8060
- if (v?.length) {
8061
- set = parentStrategy.in(v.slice(0, 1), children, parents);
8078
+ if (v != null) {
8079
+ const arr = wrapInArray(v);
8080
+ if (arr.length) {
8081
+ set = parentStrategy.in(arr.slice(0, 1), children, parents);
8082
+ }
8062
8083
  }
8063
8084
  return set;
8064
8085
  },
@@ -8402,12 +8423,12 @@
8402
8423
  const makeNestedProps = propsFactory({
8403
8424
  activatable: Boolean,
8404
8425
  selectable: Boolean,
8405
- activeStrategy: [String, Function],
8406
- selectStrategy: [String, Function],
8426
+ activeStrategy: [String, Function, Object],
8427
+ selectStrategy: [String, Function, Object],
8407
8428
  openStrategy: [String, Object],
8408
- opened: Array,
8409
- activated: Array,
8410
- selected: Array,
8429
+ opened: null,
8430
+ activated: null,
8431
+ selected: null,
8411
8432
  mandatory: Boolean
8412
8433
  }, 'nested');
8413
8434
  const useNested = props => {
@@ -8417,6 +8438,7 @@
8417
8438
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8418
8439
  const activeStrategy = vue.computed(() => {
8419
8440
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8441
+ if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
8420
8442
  switch (props.activeStrategy) {
8421
8443
  case 'leaf':
8422
8444
  return leafActiveStrategy(props.mandatory);
@@ -8431,6 +8453,7 @@
8431
8453
  });
8432
8454
  const selectStrategy = vue.computed(() => {
8433
8455
  if (typeof props.selectStrategy === 'object') return props.selectStrategy;
8456
+ if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory);
8434
8457
  switch (props.selectStrategy) {
8435
8458
  case 'single-leaf':
8436
8459
  return leafSingleSelectStrategy(props.mandatory);
@@ -8759,7 +8782,7 @@
8759
8782
  appendIcon: IconValue,
8760
8783
  baseColor: String,
8761
8784
  disabled: Boolean,
8762
- lines: String,
8785
+ lines: [Boolean, String],
8763
8786
  link: {
8764
8787
  type: Boolean,
8765
8788
  default: undefined
@@ -8870,8 +8893,9 @@
8870
8893
  }));
8871
8894
  function onClick(e) {
8872
8895
  emit('click', e);
8873
- if (isGroupActivator || !isClickable.value) return;
8896
+ if (!isClickable.value) return;
8874
8897
  link.navigate?.(e);
8898
+ if (isGroupActivator) return;
8875
8899
  if (root.activatable.value) {
8876
8900
  activate(!isActivated.value, e);
8877
8901
  } else if (root.selectable.value) {
@@ -10330,17 +10354,17 @@
10330
10354
  }, {
10331
10355
  flush: 'post'
10332
10356
  });
10333
- const activatorRef = vue.ref();
10357
+ const activatorRef = templateRef();
10334
10358
  vue.watchEffect(() => {
10335
10359
  if (!activatorRef.value) return;
10336
10360
  vue.nextTick(() => {
10337
- activatorEl.value = refElement(activatorRef.value);
10361
+ activatorEl.value = activatorRef.el;
10338
10362
  });
10339
10363
  });
10340
- const targetRef = vue.ref();
10364
+ const targetRef = templateRef();
10341
10365
  const target = vue.computed(() => {
10342
10366
  if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;
10343
- if (targetRef.value) return refElement(targetRef.value);
10367
+ if (targetRef.value) return targetRef.el;
10344
10368
  return getTarget(props.target, vm) || activatorEl.value;
10345
10369
  });
10346
10370
  const targetEl = vue.computed(() => {
@@ -10685,10 +10709,7 @@
10685
10709
  disabled: Boolean,
10686
10710
  opacity: [Number, String],
10687
10711
  noClickAnimation: Boolean,
10688
- modelValue: {
10689
- type: Boolean,
10690
- default: null
10691
- },
10712
+ modelValue: Boolean,
10692
10713
  persistent: Boolean,
10693
10714
  scrim: {
10694
10715
  type: [Boolean, String],
@@ -10731,7 +10752,7 @@
10731
10752
  } = _ref;
10732
10753
  const model = useProxiedModel(props, 'modelValue');
10733
10754
  const isActive = vue.computed({
10734
- get: () => Boolean(model.value),
10755
+ get: () => model.value,
10735
10756
  set: v => {
10736
10757
  if (!(v && props.disabled)) model.value = v;
10737
10758
  }
@@ -12968,7 +12989,7 @@
12968
12989
  select(displayItems.value[0]);
12969
12990
  }
12970
12991
  menu.value = false;
12971
- search.value = '';
12992
+ if (props.multiple || hasSelectionSlot.value) search.value = '';
12972
12993
  selectionIndex.value = -1;
12973
12994
  }
12974
12995
  });
@@ -14812,7 +14833,7 @@
14812
14833
  const {
14813
14834
  resizeRef
14814
14835
  } = useResizeObserver(entries => {
14815
- if (!resizeRef.value?.offsetParent) return;
14836
+ if (!resizeRef.el?.offsetParent) return;
14816
14837
  const {
14817
14838
  width,
14818
14839
  height
@@ -18286,7 +18307,7 @@
18286
18307
  items,
18287
18308
  value
18288
18309
  } = _ref;
18289
- return new Set(value ? [vue.toRaw(items[0]?.value)] : []);
18310
+ return new Set(value ? [items[0]?.value] : []);
18290
18311
  },
18291
18312
  selectAll: _ref2 => {
18292
18313
  let {
@@ -18310,7 +18331,7 @@
18310
18331
  selected
18311
18332
  } = _ref4;
18312
18333
  for (const item of items) {
18313
- if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
18334
+ if (value) selected.add(item.value);else selected.delete(item.value);
18314
18335
  }
18315
18336
  return selected;
18316
18337
  },
@@ -18342,7 +18363,7 @@
18342
18363
  selected
18343
18364
  } = _ref7;
18344
18365
  for (const item of items) {
18345
- if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
18366
+ if (value) selected.add(item.value);else selected.delete(item.value);
18346
18367
  }
18347
18368
  return selected;
18348
18369
  },
@@ -18402,10 +18423,10 @@
18402
18423
  }
18403
18424
  });
18404
18425
  function isSelected(items) {
18405
- return wrapInArray(items).every(item => selected.value.has(vue.toRaw(item.value)));
18426
+ return wrapInArray(items).every(item => selected.value.has(item.value));
18406
18427
  }
18407
18428
  function isSomeSelected(items) {
18408
- return wrapInArray(items).some(item => selected.value.has(vue.toRaw(item.value)));
18429
+ return wrapInArray(items).some(item => selected.value.has(item.value));
18409
18430
  }
18410
18431
  function select(items, value) {
18411
18432
  const newSelected = selectStrategy.value.select({
@@ -18416,8 +18437,7 @@
18416
18437
  selected.value = newSelected;
18417
18438
  }
18418
18439
  function toggleSelect(item) {
18419
- const newItem = vue.toRef(item);
18420
- select([newItem.value], !isSelected([newItem.value]));
18440
+ select([item], !isSelected([item]));
18421
18441
  }
18422
18442
  function selectAll(value) {
18423
18443
  const newSelected = selectStrategy.value.selectAll({
@@ -18436,6 +18456,7 @@
18436
18456
  });
18437
18457
  return !!items.length && isSelected(items);
18438
18458
  });
18459
+ const showSelectAll = vue.computed(() => selectStrategy.value.showSelectAll);
18439
18460
  const data = {
18440
18461
  toggleSelect,
18441
18462
  select,
@@ -18444,7 +18465,7 @@
18444
18465
  isSomeSelected,
18445
18466
  someSelected,
18446
18467
  allSelected,
18447
- showSelectAll: selectStrategy.value.showSelectAll
18468
+ showSelectAll
18448
18469
  };
18449
18470
  vue.provide(VDataTableSelectionSymbol, data);
18450
18471
  return data;
@@ -19715,7 +19736,7 @@
19715
19736
  };
19716
19737
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
19717
19738
  if (column.key === 'data-table-select') {
19718
- return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll && vue.createVNode(VCheckboxBtn, {
19739
+ return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && vue.createVNode(VCheckboxBtn, {
19719
19740
  "modelValue": allSelected.value,
19720
19741
  "indeterminate": someSelected.value && !allSelected.value,
19721
19742
  "onUpdate:modelValue": selectAll
@@ -21684,10 +21705,10 @@
21684
21705
  vue.watchEffect(() => {
21685
21706
  model.value = model.value ?? adapter.getYear(adapter.date());
21686
21707
  });
21687
- const yearRef = vue.ref();
21708
+ const yearRef = templateRef();
21688
21709
  vue.onMounted(async () => {
21689
21710
  await vue.nextTick();
21690
- yearRef.value?.$el.scrollIntoView({
21711
+ yearRef.el?.scrollIntoView({
21691
21712
  block: 'center'
21692
21713
  });
21693
21714
  });
@@ -22564,7 +22585,7 @@
22564
22585
  const {
22565
22586
  t
22566
22587
  } = useLocale();
22567
- const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
22588
+ const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0] ?? null);
22568
22589
  const {
22569
22590
  isFocused,
22570
22591
  focus,
@@ -23013,7 +23034,7 @@
23013
23034
  function intersecting(side) {
23014
23035
  if (props.mode !== 'manual' && !isIntersecting.value) return;
23015
23036
  const status = getStatus(side);
23016
- if (!rootEl.value || status === 'loading') return;
23037
+ if (!rootEl.value || ['empty', 'loading'].includes(status)) return;
23017
23038
  previousScrollSize = getScrollSize();
23018
23039
  setStatus(side, 'loading');
23019
23040
  function done(status) {
@@ -23759,7 +23780,9 @@
23759
23780
  ...makeBorderProps(),
23760
23781
  ...makeComponentProps(),
23761
23782
  ...makeDelayProps(),
23762
- ...makeDisplayProps(),
23783
+ ...makeDisplayProps({
23784
+ mobile: null
23785
+ }),
23763
23786
  ...makeElevationProps(),
23764
23787
  ...makeLayoutItemProps(),
23765
23788
  ...makeRoundedProps(),
@@ -25906,7 +25929,8 @@
25906
25929
  }, windowProps, {
25907
25930
  "modelValue": model.value,
25908
25931
  "onUpdate:modelValue": $event => model.value = $event,
25909
- "class": "v-stepper-window",
25932
+ "class": ['v-stepper-window', props.class],
25933
+ "style": props.style,
25910
25934
  "mandatory": false,
25911
25935
  "touch": false
25912
25936
  }), slots);
@@ -25930,7 +25954,8 @@
25930
25954
  return vue.createVNode(VWindowItem, vue.mergeProps({
25931
25955
  "_as": "VStepperWindowItem"
25932
25956
  }, windowItemProps, {
25933
- "class": "v-stepper-window-item"
25957
+ "class": ['v-stepper-window-item', props.class],
25958
+ "style": props.style
25934
25959
  }), slots);
25935
25960
  });
25936
25961
  return {};
@@ -26429,7 +26454,8 @@
26429
26454
  }, windowProps, {
26430
26455
  "modelValue": model.value,
26431
26456
  "onUpdate:modelValue": $event => model.value = $event,
26432
- "class": "v-tabs-window",
26457
+ "class": ['v-tabs-window', props.class],
26458
+ "style": props.style,
26433
26459
  "mandatory": false,
26434
26460
  "touch": false
26435
26461
  }), slots);
@@ -26506,6 +26532,7 @@
26506
26532
  },
26507
26533
  setup(props, _ref) {
26508
26534
  let {
26535
+ attrs,
26509
26536
  slots
26510
26537
  } = _ref;
26511
26538
  const model = useProxiedModel(props, 'modelValue');
@@ -26517,6 +26544,9 @@
26517
26544
  backgroundColorClasses,
26518
26545
  backgroundColorStyles
26519
26546
  } = useBackgroundColor(vue.toRef(props, 'bgColor'));
26547
+ const {
26548
+ scopeId
26549
+ } = useScopeId();
26520
26550
  provideDefaults({
26521
26551
  VTab: {
26522
26552
  color: vue.toRef(props, 'color'),
@@ -26543,7 +26573,7 @@
26543
26573
  }, backgroundColorStyles.value, props.style],
26544
26574
  "role": "tablist",
26545
26575
  "symbol": VTabsSymbol
26546
- }), {
26576
+ }, scopeId, attrs), {
26547
26577
  default: () => [slots.default?.() ?? items.value.map(item => slots.tab?.({
26548
26578
  item
26549
26579
  }) ?? vue.createVNode(VTab, vue.mergeProps(item, {
@@ -26554,11 +26584,11 @@
26554
26584
  item
26555
26585
  })
26556
26586
  }))]
26557
- }), hasWindow && vue.createVNode(VTabsWindow, {
26587
+ }), hasWindow && vue.createVNode(VTabsWindow, vue.mergeProps({
26558
26588
  "modelValue": model.value,
26559
26589
  "onUpdate:modelValue": $event => model.value = $event,
26560
26590
  "key": "tabs-window"
26561
- }, {
26591
+ }, scopeId), {
26562
26592
  default: () => [items.value.map(item => slots.item?.({
26563
26593
  item
26564
26594
  }) ?? vue.createVNode(VTabsWindowItem, {
@@ -27843,19 +27873,13 @@
27843
27873
  type: Number,
27844
27874
  default: 1
27845
27875
  },
27846
- ...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
27847
- ...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
27848
- ...makeFocusProps()
27876
+ ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
27849
27877
  }, 'VNumberInput');
27850
27878
  const VNumberInput = genericComponent()({
27851
27879
  name: 'VNumberInput',
27852
27880
  inheritAttrs: false,
27853
27881
  props: {
27854
- ...makeVNumberInputProps(),
27855
- modelValue: {
27856
- type: Number,
27857
- default: undefined
27858
- }
27882
+ ...makeVNumberInputProps()
27859
27883
  },
27860
27884
  emits: {
27861
27885
  'update:modelValue': val => true
@@ -27867,12 +27891,6 @@
27867
27891
  slots
27868
27892
  } = _ref;
27869
27893
  const model = useProxiedModel(props, 'modelValue');
27870
- const {
27871
- isFocused,
27872
- focus,
27873
- blur
27874
- } = useFocus(props);
27875
- const inputRef = vue.ref();
27876
27894
  const stepDecimals = vue.computed(() => getDecimals(props.step));
27877
27895
  const modelDecimals = vue.computed(() => model.value != null ? getDecimals(model.value) : 0);
27878
27896
  const canIncrease = vue.computed(() => {
@@ -27888,9 +27906,6 @@
27888
27906
  model.value = clamp(model.value, props.min, props.max);
27889
27907
  }
27890
27908
  });
27891
- function onFocus() {
27892
- if (!isFocused.value) focus();
27893
- }
27894
27909
  const controlVariant = vue.computed(() => {
27895
27910
  return props.hideInput ? 'stacked' : props.controlVariant;
27896
27911
  });
@@ -27920,7 +27935,7 @@
27920
27935
  toggleUpDown(false);
27921
27936
  }
27922
27937
  function onKeydown(e) {
27923
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace'].includes(e.key) || e.ctrlKey) return;
27938
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) || e.ctrlKey) return;
27924
27939
  if (['ArrowDown'].includes(e.key)) {
27925
27940
  e.preventDefault();
27926
27941
  toggleUpDown(false);
@@ -27937,17 +27952,14 @@
27937
27952
  e.preventDefault();
27938
27953
  }
27939
27954
  }
27940
- function onInput(e) {
27941
- const el = e.target;
27942
- model.value = el.value ? +el.value : undefined;
27955
+ function onModelUpdate(v) {
27956
+ model.value = v ? +v : undefined;
27943
27957
  }
27944
27958
  useRender(() => {
27945
- const fieldProps = filterFieldProps(props);
27946
- const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
27947
27959
  const {
27948
27960
  modelValue: _,
27949
- ...inputProps
27950
- } = VInput.filterProps(props);
27961
+ ...textFieldProps
27962
+ } = VTextField.filterProps(props);
27951
27963
  function controlNode() {
27952
27964
  const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%';
27953
27965
  return vue.createVNode("div", {
@@ -27960,6 +27972,7 @@
27960
27972
  "name": "decrement-btn",
27961
27973
  "icon": "$expand",
27962
27974
  "size": "small",
27975
+ "tabindex": "-1",
27963
27976
  "onClick": onClickDown
27964
27977
  }, null) : vue.createVNode(VDefaultsProvider, {
27965
27978
  "key": "decrement-defaults",
@@ -27984,7 +27997,8 @@
27984
27997
  "name": "increment-btn",
27985
27998
  "icon": "$collapse",
27986
27999
  "onClick": onClickUp,
27987
- "size": "small"
28000
+ "size": "small",
28001
+ "tabindex": "-1"
27988
28002
  }, null) : vue.createVNode(VDefaultsProvider, {
27989
28003
  "key": "increment-defaults",
27990
28004
  "defaults": {
@@ -28005,7 +28019,36 @@
28005
28019
  "vertical": true
28006
28020
  }, null) : undefined;
28007
28021
  }
28008
- return vue.createVNode(VInput, vue.mergeProps({
28022
+ const appendInnerControl = controlVariant.value === 'split' ? vue.createVNode("div", {
28023
+ "class": "v-number-input__control"
28024
+ }, [vue.createVNode(VDivider, {
28025
+ "vertical": true
28026
+ }, null), vue.createVNode(VBtn, {
28027
+ "flat": true,
28028
+ "height": "100%",
28029
+ "icon": "$plus",
28030
+ "tile": true,
28031
+ "tabindex": "-1",
28032
+ "onClick": onClickUp
28033
+ }, null)]) : !props.reverse ? vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]) : undefined;
28034
+ const hasAppendInner = slots['append-inner'] || appendInnerControl;
28035
+ const prependInnerControl = controlVariant.value === 'split' ? vue.createVNode("div", {
28036
+ "class": "v-number-input__control"
28037
+ }, [vue.createVNode(VBtn, {
28038
+ "flat": true,
28039
+ "height": "100%",
28040
+ "icon": "$minus",
28041
+ "tile": true,
28042
+ "tabindex": "-1",
28043
+ "onClick": onClickDown
28044
+ }, null), vue.createVNode(VDivider, {
28045
+ "vertical": true
28046
+ }, null)]) : props.reverse ? vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
28047
+ const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28048
+ return vue.createVNode(VTextField, vue.mergeProps({
28049
+ "modelValue": model.value,
28050
+ "onUpdate:modelValue": onModelUpdate,
28051
+ "onKeydown": onKeydown,
28009
28052
  "class": ['v-number-input', {
28010
28053
  'v-number-input--default': controlVariant.value === 'default',
28011
28054
  'v-number-input--hide-input': props.hideInput,
@@ -28014,57 +28057,22 @@
28014
28057
  'v-number-input--split': controlVariant.value === 'split',
28015
28058
  'v-number-input--stacked': controlVariant.value === 'stacked'
28016
28059
  }, props.class]
28017
- }, rootAttrs, inputProps, {
28018
- "focused": isFocused.value,
28060
+ }, textFieldProps, {
28019
28061
  "style": props.style
28020
28062
  }), {
28021
28063
  ...slots,
28022
- default: () => vue.createVNode(VField, vue.mergeProps(fieldProps, {
28023
- "active": true,
28024
- "focused": isFocused.value
28025
- }), {
28026
- ...slots,
28027
- default: _ref2 => {
28028
- let {
28029
- props: {
28030
- class: fieldClass,
28031
- ...slotProps
28032
- }
28033
- } = _ref2;
28034
- return vue.createVNode("input", vue.mergeProps({
28035
- "ref": inputRef,
28036
- "type": "text",
28037
- "value": model.value,
28038
- "onInput": onInput,
28039
- "onKeydown": onKeydown,
28040
- "class": fieldClass,
28041
- "onFocus": onFocus,
28042
- "onBlur": blur
28043
- }, inputAttrs), null);
28044
- },
28045
- 'append-inner': controlVariant.value === 'split' ? () => vue.createVNode("div", {
28046
- "class": "v-number-input__control"
28047
- }, [vue.createVNode(VDivider, {
28048
- "vertical": true
28049
- }, null), vue.createVNode(VBtn, {
28050
- "flat": true,
28051
- "height": "100%",
28052
- "icon": "$plus",
28053
- "tile": true,
28054
- "onClick": onClickUp
28055
- }, null)]) : !props.reverse ? () => vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]) : undefined,
28056
- 'prepend-inner': controlVariant.value === 'split' ? () => vue.createVNode("div", {
28057
- "class": "v-number-input__control"
28058
- }, [vue.createVNode(VBtn, {
28059
- "flat": true,
28060
- "height": "100%",
28061
- "icon": "$minus",
28062
- "tile": true,
28063
- "onClick": onClickDown
28064
- }, null), vue.createVNode(VDivider, {
28065
- "vertical": true
28066
- }, null)]) : props.reverse ? () => vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined
28067
- })
28064
+ 'append-inner': hasAppendInner ? function () {
28065
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28066
+ args[_key] = arguments[_key];
28067
+ }
28068
+ return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
28069
+ } : undefined,
28070
+ 'prepend-inner': hasPrependInner ? function () {
28071
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
28072
+ args[_key2] = arguments[_key2];
28073
+ }
28074
+ return vue.createVNode(vue.Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
28075
+ } : undefined
28068
28076
  });
28069
28077
  });
28070
28078
  }
@@ -29767,7 +29775,7 @@
29767
29775
  goTo
29768
29776
  };
29769
29777
  }
29770
- const version$1 = "3.6.2";
29778
+ const version$1 = "3.6.4";
29771
29779
  createVuetify$1.version = version$1;
29772
29780
 
29773
29781
  // Vue's inject() can only be used in setup
@@ -30020,7 +30028,7 @@
30020
30028
 
30021
30029
  /* eslint-disable local-rules/sort-imports */
30022
30030
 
30023
- const version = "3.6.2";
30031
+ const version = "3.6.4";
30024
30032
 
30025
30033
  /* eslint-disable local-rules/sort-imports */
30026
30034