@vuetify/nightly 3.6.3-master.2024-05-06 → 3.6.4-master.2024-05-08

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 (105) hide show
  1. package/CHANGELOG.md +2 -11
  2. package/dist/json/attributes.json +178 -38
  3. package/dist/json/importMap-labs.json +16 -16
  4. package/dist/json/importMap.json +96 -96
  5. package/dist/json/tags.json +36 -1
  6. package/dist/json/web-types.json +495 -85
  7. package/dist/vuetify-labs.css +5373 -5349
  8. package/dist/vuetify-labs.d.ts +1626 -1283
  9. package/dist/vuetify-labs.esm.js +150 -147
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +149 -146
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +2102 -2082
  14. package/dist/vuetify.d.ts +1195 -1208
  15. package/dist/vuetify.esm.js +97 -72
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +96 -71
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +981 -977
  21. package/dist/vuetify.min.js.map +1 -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/VBottomSheet/index.d.mts +42 -42
  26. package/lib/components/VCarousel/index.d.mts +6 -6
  27. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -1
  28. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  29. package/lib/components/VCombobox/index.d.mts +187 -158
  30. package/lib/components/VDataIterator/index.d.mts +1 -1
  31. package/lib/components/VDataTable/VDataTable.css +1 -1
  32. package/lib/components/VDataTable/VDataTable.sass +2 -1
  33. package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
  34. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  35. package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
  36. package/lib/components/VDataTable/composables/select.mjs +2 -1
  37. package/lib/components/VDataTable/composables/select.mjs.map +1 -1
  38. package/lib/components/VDataTable/index.d.mts +10 -5
  39. package/lib/components/VDatePicker/VDatePickerYears.mjs +4 -4
  40. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  41. package/lib/components/VDialog/index.d.mts +126 -126
  42. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  43. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  44. package/lib/components/VFileInput/index.d.mts +9 -9
  45. package/lib/components/VImg/index.d.mts +6 -6
  46. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
  47. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  48. package/lib/components/VList/VList.mjs.map +1 -1
  49. package/lib/components/VList/VListItem.mjs +3 -2
  50. package/lib/components/VList/VListItem.mjs.map +1 -1
  51. package/lib/components/VList/index.d.mts +76 -52
  52. package/lib/components/VMenu/index.d.mts +126 -126
  53. package/lib/components/VOverlay/VOverlay.mjs +2 -5
  54. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  55. package/lib/components/VOverlay/index.d.mts +42 -42
  56. package/lib/components/VOverlay/useActivator.mjs +5 -5
  57. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  58. package/lib/components/VResponsive/VResponsive.mjs +1 -1
  59. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  60. package/lib/components/VResponsive/index.d.mts +6 -6
  61. package/lib/components/VSelect/index.d.mts +187 -158
  62. package/lib/components/VSheet/VSheet.css +1 -1
  63. package/lib/components/VSheet/_variables.scss +1 -1
  64. package/lib/components/VSlideGroup/VSlideGroup.mjs +25 -25
  65. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  66. package/lib/components/VSlider/VSliderThumb.css +5 -0
  67. package/lib/components/VSlider/VSliderThumb.sass +3 -0
  68. package/lib/components/VSlider/VSliderTrack.css +15 -0
  69. package/lib/components/VSlider/VSliderTrack.sass +9 -0
  70. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  71. package/lib/components/VSnackbar/index.d.mts +126 -126
  72. package/lib/components/VSpeedDial/index.d.mts +42 -42
  73. package/lib/components/VStepper/VStepperWindow.mjs +2 -1
  74. package/lib/components/VStepper/VStepperWindow.mjs.map +1 -1
  75. package/lib/components/VStepper/VStepperWindowItem.mjs +2 -1
  76. package/lib/components/VStepper/VStepperWindowItem.mjs.map +1 -1
  77. package/lib/components/VTabs/VTabsWindow.mjs +2 -1
  78. package/lib/components/VTabs/VTabsWindow.mjs.map +1 -1
  79. package/lib/components/VTooltip/index.d.mts +126 -126
  80. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  81. package/lib/components/index.d.mts +1162 -1175
  82. package/lib/composables/component.mjs +1 -1
  83. package/lib/composables/component.mjs.map +1 -1
  84. package/lib/composables/nested/activeStrategies.mjs +16 -10
  85. package/lib/composables/nested/activeStrategies.mjs.map +1 -1
  86. package/lib/composables/nested/nested.mjs +7 -5
  87. package/lib/composables/nested/nested.mjs.map +1 -1
  88. package/lib/composables/resizeObserver.mjs +5 -5
  89. package/lib/composables/resizeObserver.mjs.map +1 -1
  90. package/lib/entry-bundler.mjs +1 -1
  91. package/lib/framework.mjs +1 -1
  92. package/lib/index.d.mts +33 -33
  93. package/lib/labs/VCalendar/VCalendar.css +5 -1
  94. package/lib/labs/VCalendar/VCalendar.sass +3 -2
  95. package/lib/labs/VCalendar/_variables.scss +8 -0
  96. package/lib/labs/VNumberInput/VNumberInput.mjs +57 -81
  97. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  98. package/lib/labs/VNumberInput/index.d.mts +402 -34
  99. package/lib/labs/VSnackbarQueue/index.d.mts +138 -138
  100. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  101. package/lib/labs/VTreeview/index.d.mts +88 -64
  102. package/lib/labs/components.d.mts +620 -235
  103. package/lib/util/helpers.mjs +16 -0
  104. package/lib/util/helpers.mjs.map +1 -1
  105. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.3-master.2024-05-06
2
+ * Vuetify v3.6.4-master.2024-05-08
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()
@@ -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
@@ -18435,6 +18456,7 @@
18435
18456
  });
18436
18457
  return !!items.length && isSelected(items);
18437
18458
  });
18459
+ const showSelectAll = vue.computed(() => selectStrategy.value.showSelectAll);
18438
18460
  const data = {
18439
18461
  toggleSelect,
18440
18462
  select,
@@ -18443,7 +18465,7 @@
18443
18465
  isSomeSelected,
18444
18466
  someSelected,
18445
18467
  allSelected,
18446
- showSelectAll: selectStrategy.value.showSelectAll
18468
+ showSelectAll
18447
18469
  };
18448
18470
  vue.provide(VDataTableSelectionSymbol, data);
18449
18471
  return data;
@@ -19714,7 +19736,7 @@
19714
19736
  };
19715
19737
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
19716
19738
  if (column.key === 'data-table-select') {
19717
- return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll && vue.createVNode(VCheckboxBtn, {
19739
+ return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && vue.createVNode(VCheckboxBtn, {
19718
19740
  "modelValue": allSelected.value,
19719
19741
  "indeterminate": someSelected.value && !allSelected.value,
19720
19742
  "onUpdate:modelValue": selectAll
@@ -21683,10 +21705,10 @@
21683
21705
  vue.watchEffect(() => {
21684
21706
  model.value = model.value ?? adapter.getYear(adapter.date());
21685
21707
  });
21686
- const yearRef = vue.ref();
21708
+ const yearRef = templateRef();
21687
21709
  vue.onMounted(async () => {
21688
21710
  await vue.nextTick();
21689
- yearRef.value?.$el.scrollIntoView({
21711
+ yearRef.el?.scrollIntoView({
21690
21712
  block: 'center'
21691
21713
  });
21692
21714
  });
@@ -22563,7 +22585,7 @@
22563
22585
  const {
22564
22586
  t
22565
22587
  } = useLocale();
22566
- 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);
22567
22589
  const {
22568
22590
  isFocused,
22569
22591
  focus,
@@ -23012,7 +23034,7 @@
23012
23034
  function intersecting(side) {
23013
23035
  if (props.mode !== 'manual' && !isIntersecting.value) return;
23014
23036
  const status = getStatus(side);
23015
- if (!rootEl.value || status === 'loading') return;
23037
+ if (!rootEl.value || ['empty', 'loading'].includes(status)) return;
23016
23038
  previousScrollSize = getScrollSize();
23017
23039
  setStatus(side, 'loading');
23018
23040
  function done(status) {
@@ -25907,7 +25929,8 @@
25907
25929
  }, windowProps, {
25908
25930
  "modelValue": model.value,
25909
25931
  "onUpdate:modelValue": $event => model.value = $event,
25910
- "class": "v-stepper-window",
25932
+ "class": ['v-stepper-window', props.class],
25933
+ "style": props.style,
25911
25934
  "mandatory": false,
25912
25935
  "touch": false
25913
25936
  }), slots);
@@ -25931,7 +25954,8 @@
25931
25954
  return vue.createVNode(VWindowItem, vue.mergeProps({
25932
25955
  "_as": "VStepperWindowItem"
25933
25956
  }, windowItemProps, {
25934
- "class": "v-stepper-window-item"
25957
+ "class": ['v-stepper-window-item', props.class],
25958
+ "style": props.style
25935
25959
  }), slots);
25936
25960
  });
25937
25961
  return {};
@@ -26430,7 +26454,8 @@
26430
26454
  }, windowProps, {
26431
26455
  "modelValue": model.value,
26432
26456
  "onUpdate:modelValue": $event => model.value = $event,
26433
- "class": "v-tabs-window",
26457
+ "class": ['v-tabs-window', props.class],
26458
+ "style": props.style,
26434
26459
  "mandatory": false,
26435
26460
  "touch": false
26436
26461
  }), slots);
@@ -27848,19 +27873,13 @@
27848
27873
  type: Number,
27849
27874
  default: 1
27850
27875
  },
27851
- ...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
27852
- ...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
27853
- ...makeFocusProps()
27876
+ ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
27854
27877
  }, 'VNumberInput');
27855
27878
  const VNumberInput = genericComponent()({
27856
27879
  name: 'VNumberInput',
27857
27880
  inheritAttrs: false,
27858
27881
  props: {
27859
- ...makeVNumberInputProps(),
27860
- modelValue: {
27861
- type: Number,
27862
- default: undefined
27863
- }
27882
+ ...makeVNumberInputProps()
27864
27883
  },
27865
27884
  emits: {
27866
27885
  'update:modelValue': val => true
@@ -27872,12 +27891,6 @@
27872
27891
  slots
27873
27892
  } = _ref;
27874
27893
  const model = useProxiedModel(props, 'modelValue');
27875
- const {
27876
- isFocused,
27877
- focus,
27878
- blur
27879
- } = useFocus(props);
27880
- const inputRef = vue.ref();
27881
27894
  const stepDecimals = vue.computed(() => getDecimals(props.step));
27882
27895
  const modelDecimals = vue.computed(() => model.value != null ? getDecimals(model.value) : 0);
27883
27896
  const canIncrease = vue.computed(() => {
@@ -27893,9 +27906,6 @@
27893
27906
  model.value = clamp(model.value, props.min, props.max);
27894
27907
  }
27895
27908
  });
27896
- function onFocus() {
27897
- if (!isFocused.value) focus();
27898
- }
27899
27909
  const controlVariant = vue.computed(() => {
27900
27910
  return props.hideInput ? 'stacked' : props.controlVariant;
27901
27911
  });
@@ -27925,7 +27935,7 @@
27925
27935
  toggleUpDown(false);
27926
27936
  }
27927
27937
  function onKeydown(e) {
27928
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace'].includes(e.key) || e.ctrlKey) return;
27938
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) || e.ctrlKey) return;
27929
27939
  if (['ArrowDown'].includes(e.key)) {
27930
27940
  e.preventDefault();
27931
27941
  toggleUpDown(false);
@@ -27942,17 +27952,14 @@
27942
27952
  e.preventDefault();
27943
27953
  }
27944
27954
  }
27945
- function onInput(e) {
27946
- const el = e.target;
27947
- model.value = el.value ? +el.value : undefined;
27955
+ function onModelUpdate(v) {
27956
+ model.value = v ? +v : undefined;
27948
27957
  }
27949
27958
  useRender(() => {
27950
- const fieldProps = filterFieldProps(props);
27951
- const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
27952
27959
  const {
27953
27960
  modelValue: _,
27954
- ...inputProps
27955
- } = VInput.filterProps(props);
27961
+ ...textFieldProps
27962
+ } = VTextField.filterProps(props);
27956
27963
  function controlNode() {
27957
27964
  const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%';
27958
27965
  return vue.createVNode("div", {
@@ -27965,6 +27972,7 @@
27965
27972
  "name": "decrement-btn",
27966
27973
  "icon": "$expand",
27967
27974
  "size": "small",
27975
+ "tabindex": "-1",
27968
27976
  "onClick": onClickDown
27969
27977
  }, null) : vue.createVNode(VDefaultsProvider, {
27970
27978
  "key": "decrement-defaults",
@@ -27989,7 +27997,8 @@
27989
27997
  "name": "increment-btn",
27990
27998
  "icon": "$collapse",
27991
27999
  "onClick": onClickUp,
27992
- "size": "small"
28000
+ "size": "small",
28001
+ "tabindex": "-1"
27993
28002
  }, null) : vue.createVNode(VDefaultsProvider, {
27994
28003
  "key": "increment-defaults",
27995
28004
  "defaults": {
@@ -28010,7 +28019,36 @@
28010
28019
  "vertical": true
28011
28020
  }, null) : undefined;
28012
28021
  }
28013
- 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,
28014
28052
  "class": ['v-number-input', {
28015
28053
  'v-number-input--default': controlVariant.value === 'default',
28016
28054
  'v-number-input--hide-input': props.hideInput,
@@ -28019,57 +28057,22 @@
28019
28057
  'v-number-input--split': controlVariant.value === 'split',
28020
28058
  'v-number-input--stacked': controlVariant.value === 'stacked'
28021
28059
  }, props.class]
28022
- }, rootAttrs, inputProps, {
28023
- "focused": isFocused.value,
28060
+ }, textFieldProps, {
28024
28061
  "style": props.style
28025
28062
  }), {
28026
28063
  ...slots,
28027
- default: () => vue.createVNode(VField, vue.mergeProps(fieldProps, {
28028
- "active": true,
28029
- "focused": isFocused.value
28030
- }), {
28031
- ...slots,
28032
- default: _ref2 => {
28033
- let {
28034
- props: {
28035
- class: fieldClass,
28036
- ...slotProps
28037
- }
28038
- } = _ref2;
28039
- return vue.createVNode("input", vue.mergeProps({
28040
- "ref": inputRef,
28041
- "type": "text",
28042
- "value": model.value,
28043
- "onInput": onInput,
28044
- "onKeydown": onKeydown,
28045
- "class": fieldClass,
28046
- "onFocus": onFocus,
28047
- "onBlur": blur
28048
- }, inputAttrs), null);
28049
- },
28050
- 'append-inner': controlVariant.value === 'split' ? () => vue.createVNode("div", {
28051
- "class": "v-number-input__control"
28052
- }, [vue.createVNode(VDivider, {
28053
- "vertical": true
28054
- }, null), vue.createVNode(VBtn, {
28055
- "flat": true,
28056
- "height": "100%",
28057
- "icon": "$plus",
28058
- "tile": true,
28059
- "onClick": onClickUp
28060
- }, null)]) : !props.reverse ? () => vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]) : undefined,
28061
- 'prepend-inner': controlVariant.value === 'split' ? () => vue.createVNode("div", {
28062
- "class": "v-number-input__control"
28063
- }, [vue.createVNode(VBtn, {
28064
- "flat": true,
28065
- "height": "100%",
28066
- "icon": "$minus",
28067
- "tile": true,
28068
- "onClick": onClickDown
28069
- }, null), vue.createVNode(VDivider, {
28070
- "vertical": true
28071
- }, null)]) : props.reverse ? () => vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined
28072
- })
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
28073
28076
  });
28074
28077
  });
28075
28078
  }
@@ -29772,7 +29775,7 @@
29772
29775
  goTo
29773
29776
  };
29774
29777
  }
29775
- const version$1 = "3.6.3-master.2024-05-06";
29778
+ const version$1 = "3.6.4-master.2024-05-08";
29776
29779
  createVuetify$1.version = version$1;
29777
29780
 
29778
29781
  // Vue's inject() can only be used in setup
@@ -30025,7 +30028,7 @@
30025
30028
 
30026
30029
  /* eslint-disable local-rules/sort-imports */
30027
30030
 
30028
- const version = "3.6.3-master.2024-05-06";
30031
+ const version = "3.6.4-master.2024-05-08";
30029
30032
 
30030
30033
  /* eslint-disable local-rules/sort-imports */
30031
30034