@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,10 +1,10 @@
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
  */
6
6
 
7
- import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, shallowRef, readonly, unref, warn, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, watch, nextTick, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, Suspense, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, withDirectives, resolveDirective, vShow, onMounted, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, readonly, unref, warn, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, watch, nextTick, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, Suspense, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, withDirectives, resolveDirective, vShow, onMounted, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -70,7 +70,7 @@ function propsFactory(props, source) {
70
70
 
71
71
  // Composables
72
72
  const makeComponentProps = propsFactory({
73
- class: [String, Array],
73
+ class: [String, Array, Object],
74
74
  style: {
75
75
  type: [String, Array, Object],
76
76
  default: null
@@ -557,6 +557,22 @@ function isClickInsideElement(event, targetDiv) {
557
557
  const divBottom = divRect.bottom;
558
558
  return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;
559
559
  }
560
+ function templateRef() {
561
+ const el = shallowRef();
562
+ const fn = target => {
563
+ el.value = target;
564
+ };
565
+ Object.defineProperty(fn, 'value', {
566
+ enumerable: true,
567
+ get: () => el.value,
568
+ set: val => el.value = val
569
+ });
570
+ Object.defineProperty(fn, 'el', {
571
+ enumerable: true,
572
+ get: () => refElement(el.value)
573
+ });
574
+ return fn;
575
+ }
560
576
 
561
577
  // Utilities
562
578
  const block = ['top', 'bottom'];
@@ -1565,7 +1581,7 @@ function useRender(render) {
1565
1581
 
1566
1582
  function useResizeObserver(callback) {
1567
1583
  let box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'content';
1568
- const resizeRef = ref();
1584
+ const resizeRef = templateRef();
1569
1585
  const contentRect = ref();
1570
1586
  if (IN_BROWSER) {
1571
1587
  const observer = new ResizeObserver(entries => {
@@ -1580,12 +1596,12 @@ function useResizeObserver(callback) {
1580
1596
  onBeforeUnmount(() => {
1581
1597
  observer.disconnect();
1582
1598
  });
1583
- watch(resizeRef, (newValue, oldValue) => {
1599
+ watch(() => resizeRef.el, (newValue, oldValue) => {
1584
1600
  if (oldValue) {
1585
- observer.unobserve(refElement(oldValue));
1601
+ observer.unobserve(oldValue);
1586
1602
  contentRect.value = undefined;
1587
1603
  }
1588
- if (newValue) observer.observe(refElement(newValue));
1604
+ if (newValue) observer.observe(newValue);
1589
1605
  }, {
1590
1606
  flush: 'post'
1591
1607
  });
@@ -3001,7 +3017,7 @@ function useAspectStyles(props) {
3001
3017
  }
3002
3018
  const makeVResponsiveProps = propsFactory({
3003
3019
  aspectRatio: [String, Number],
3004
- contentClass: String,
3020
+ contentClass: null,
3005
3021
  inline: Boolean,
3006
3022
  ...makeComponentProps(),
3007
3023
  ...makeDimensionProps()
@@ -7384,7 +7400,7 @@ const VSlideGroup = genericComponent()({
7384
7400
  const goTo = useGoTo();
7385
7401
  const goToOptions = computed(() => {
7386
7402
  return {
7387
- container: containerRef.value,
7403
+ container: containerRef.el,
7388
7404
  duration: 200,
7389
7405
  easing: 'easeOutQuart'
7390
7406
  };
@@ -7408,9 +7424,9 @@ const VSlideGroup = genericComponent()({
7408
7424
  contentSize.value = contentRect.value[sizeProperty];
7409
7425
  isOverflowing.value = containerSize.value + 1 < contentSize.value;
7410
7426
  }
7411
- if (firstSelectedIndex.value >= 0 && contentRef.value) {
7427
+ if (firstSelectedIndex.value >= 0 && contentRef.el) {
7412
7428
  // TODO: Is this too naive? Should we store element references in group composable?
7413
- const selectedElement = contentRef.value.children[lastSelectedIndex.value];
7429
+ const selectedElement = contentRef.el.children[lastSelectedIndex.value];
7414
7430
  scrollToChildren(selectedElement, props.centerActive);
7415
7431
  }
7416
7432
  });
@@ -7421,13 +7437,13 @@ const VSlideGroup = genericComponent()({
7421
7437
  let target = 0;
7422
7438
  if (center) {
7423
7439
  target = calculateCenteredTarget({
7424
- containerElement: containerRef.value,
7440
+ containerElement: containerRef.el,
7425
7441
  isHorizontal: isHorizontal.value,
7426
7442
  selectedElement: children
7427
7443
  });
7428
7444
  } else {
7429
7445
  target = calculateUpdatedTarget({
7430
- containerElement: containerRef.value,
7446
+ containerElement: containerRef.el,
7431
7447
  isHorizontal: isHorizontal.value,
7432
7448
  isRtl: isRtl.value,
7433
7449
  selectedElement: children
@@ -7436,18 +7452,18 @@ const VSlideGroup = genericComponent()({
7436
7452
  scrollToPosition(target);
7437
7453
  }
7438
7454
  function scrollToPosition(newPosition) {
7439
- if (!IN_BROWSER || !containerRef.value) return;
7440
- const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value);
7441
- const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value);
7442
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7455
+ if (!IN_BROWSER || !containerRef.el) return;
7456
+ const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);
7457
+ const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);
7458
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7443
7459
  if (scrollSize <= offsetSize ||
7444
7460
  // Prevent scrolling by only a couple of pixels, which doesn't look smooth
7445
7461
  Math.abs(newPosition - scrollPosition) < 16) return;
7446
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7462
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7447
7463
  const {
7448
7464
  scrollWidth,
7449
7465
  offsetWidth: containerWidth
7450
- } = containerRef.value;
7466
+ } = containerRef.el;
7451
7467
  newPosition = scrollWidth - containerWidth - newPosition;
7452
7468
  }
7453
7469
  if (isHorizontal.value) {
@@ -7465,12 +7481,12 @@ const VSlideGroup = genericComponent()({
7465
7481
  }
7466
7482
  function onFocusin(e) {
7467
7483
  isFocused.value = true;
7468
- if (!isOverflowing.value || !contentRef.value) return;
7484
+ if (!isOverflowing.value || !contentRef.el) return;
7469
7485
 
7470
7486
  // Focused element is likely to be the root of an item, so a
7471
7487
  // breadth-first search will probably find it in the first iteration
7472
7488
  for (const el of e.composedPath()) {
7473
- for (const item of contentRef.value.children) {
7489
+ for (const item of contentRef.el.children) {
7474
7490
  if (item === el) {
7475
7491
  scrollToChildren(item);
7476
7492
  return;
@@ -7485,14 +7501,14 @@ const VSlideGroup = genericComponent()({
7485
7501
  // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren
7486
7502
  let ignoreFocusEvent = false;
7487
7503
  function onFocus(e) {
7488
- if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
7504
+ if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();
7489
7505
  ignoreFocusEvent = false;
7490
7506
  }
7491
7507
  function onFocusAffixes() {
7492
7508
  ignoreFocusEvent = true;
7493
7509
  }
7494
7510
  function onKeydown(e) {
7495
- if (!contentRef.value) return;
7511
+ if (!contentRef.el) return;
7496
7512
  function toFocus(location) {
7497
7513
  e.preventDefault();
7498
7514
  focus(location);
@@ -7517,21 +7533,21 @@ const VSlideGroup = genericComponent()({
7517
7533
  }
7518
7534
  }
7519
7535
  function focus(location) {
7520
- if (!contentRef.value) return;
7536
+ if (!contentRef.el) return;
7521
7537
  let el;
7522
7538
  if (!location) {
7523
- const focusable = focusableChildren(contentRef.value);
7539
+ const focusable = focusableChildren(contentRef.el);
7524
7540
  el = focusable[0];
7525
7541
  } else if (location === 'next') {
7526
- el = contentRef.value.querySelector(':focus')?.nextElementSibling;
7542
+ el = contentRef.el.querySelector(':focus')?.nextElementSibling;
7527
7543
  if (!el) return focus('first');
7528
7544
  } else if (location === 'prev') {
7529
- el = contentRef.value.querySelector(':focus')?.previousElementSibling;
7545
+ el = contentRef.el.querySelector(':focus')?.previousElementSibling;
7530
7546
  if (!el) return focus('last');
7531
7547
  } else if (location === 'first') {
7532
- el = contentRef.value.firstElementChild;
7548
+ el = contentRef.el.firstElementChild;
7533
7549
  } else if (location === 'last') {
7534
- el = contentRef.value.lastElementChild;
7550
+ el = contentRef.el.lastElementChild;
7535
7551
  }
7536
7552
  if (el) {
7537
7553
  el.focus({
@@ -7545,11 +7561,11 @@ const VSlideGroup = genericComponent()({
7545
7561
  let newPosition = scrollOffset.value + offsetStep;
7546
7562
 
7547
7563
  // TODO: improve it
7548
- if (isHorizontal.value && isRtl.value && containerRef.value) {
7564
+ if (isHorizontal.value && isRtl.value && containerRef.el) {
7549
7565
  const {
7550
7566
  scrollWidth,
7551
7567
  offsetWidth: containerWidth
7552
- } = containerRef.value;
7568
+ } = containerRef.el;
7553
7569
  newPosition += scrollWidth - containerWidth;
7554
7570
  }
7555
7571
  scrollToPosition(newPosition);
@@ -7592,8 +7608,8 @@ const VSlideGroup = genericComponent()({
7592
7608
  });
7593
7609
  const hasNext = computed(() => {
7594
7610
  if (!containerRef.value) return false;
7595
- const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
7596
- const clientSize = getClientSize(isHorizontal.value, containerRef.value);
7611
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
7612
+ const clientSize = getClientSize(isHorizontal.value, containerRef.el);
7597
7613
  const scrollSizeMax = scrollSize - clientSize;
7598
7614
 
7599
7615
  // 1 pixel in reserve, may be lost after rounding
@@ -8017,14 +8033,16 @@ const independentActiveStrategy = mandatory => {
8017
8033
  },
8018
8034
  in: (v, children, parents) => {
8019
8035
  let set = new Set();
8020
- for (const id of v || []) {
8021
- set = strategy.activate({
8022
- id,
8023
- value: true,
8024
- activated: new Set(set),
8025
- children,
8026
- parents
8027
- });
8036
+ if (v != null) {
8037
+ for (const id of wrapInArray(v)) {
8038
+ set = strategy.activate({
8039
+ id,
8040
+ value: true,
8041
+ activated: new Set(set),
8042
+ children,
8043
+ parents
8044
+ });
8045
+ }
8028
8046
  }
8029
8047
  return set;
8030
8048
  },
@@ -8053,8 +8071,11 @@ const independentSingleActiveStrategy = mandatory => {
8053
8071
  },
8054
8072
  in: (v, children, parents) => {
8055
8073
  let set = new Set();
8056
- if (v?.length) {
8057
- set = parentStrategy.in(v.slice(0, 1), children, parents);
8074
+ if (v != null) {
8075
+ const arr = wrapInArray(v);
8076
+ if (arr.length) {
8077
+ set = parentStrategy.in(arr.slice(0, 1), children, parents);
8078
+ }
8058
8079
  }
8059
8080
  return set;
8060
8081
  },
@@ -8398,12 +8419,12 @@ const emptyNested = {
8398
8419
  const makeNestedProps = propsFactory({
8399
8420
  activatable: Boolean,
8400
8421
  selectable: Boolean,
8401
- activeStrategy: [String, Function],
8402
- selectStrategy: [String, Function],
8422
+ activeStrategy: [String, Function, Object],
8423
+ selectStrategy: [String, Function, Object],
8403
8424
  openStrategy: [String, Object],
8404
- opened: Array,
8405
- activated: Array,
8406
- selected: Array,
8425
+ opened: null,
8426
+ activated: null,
8427
+ selected: null,
8407
8428
  mandatory: Boolean
8408
8429
  }, 'nested');
8409
8430
  const useNested = props => {
@@ -8413,6 +8434,7 @@ const useNested = props => {
8413
8434
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8414
8435
  const activeStrategy = computed(() => {
8415
8436
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8437
+ if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
8416
8438
  switch (props.activeStrategy) {
8417
8439
  case 'leaf':
8418
8440
  return leafActiveStrategy(props.mandatory);
@@ -8427,6 +8449,7 @@ const useNested = props => {
8427
8449
  });
8428
8450
  const selectStrategy = computed(() => {
8429
8451
  if (typeof props.selectStrategy === 'object') return props.selectStrategy;
8452
+ if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory);
8430
8453
  switch (props.selectStrategy) {
8431
8454
  case 'single-leaf':
8432
8455
  return leafSingleSelectStrategy(props.mandatory);
@@ -8755,7 +8778,7 @@ const makeVListItemProps = propsFactory({
8755
8778
  appendIcon: IconValue,
8756
8779
  baseColor: String,
8757
8780
  disabled: Boolean,
8758
- lines: String,
8781
+ lines: [Boolean, String],
8759
8782
  link: {
8760
8783
  type: Boolean,
8761
8784
  default: undefined
@@ -8866,8 +8889,9 @@ const VListItem = genericComponent()({
8866
8889
  }));
8867
8890
  function onClick(e) {
8868
8891
  emit('click', e);
8869
- if (isGroupActivator || !isClickable.value) return;
8892
+ if (!isClickable.value) return;
8870
8893
  link.navigate?.(e);
8894
+ if (isGroupActivator) return;
8871
8895
  if (root.activatable.value) {
8872
8896
  activate(!isActivated.value, e);
8873
8897
  } else if (root.selectable.value) {
@@ -10326,17 +10350,17 @@ function useActivator(props, _ref) {
10326
10350
  }, {
10327
10351
  flush: 'post'
10328
10352
  });
10329
- const activatorRef = ref();
10353
+ const activatorRef = templateRef();
10330
10354
  watchEffect(() => {
10331
10355
  if (!activatorRef.value) return;
10332
10356
  nextTick(() => {
10333
- activatorEl.value = refElement(activatorRef.value);
10357
+ activatorEl.value = activatorRef.el;
10334
10358
  });
10335
10359
  });
10336
- const targetRef = ref();
10360
+ const targetRef = templateRef();
10337
10361
  const target = computed(() => {
10338
10362
  if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;
10339
- if (targetRef.value) return refElement(targetRef.value);
10363
+ if (targetRef.value) return targetRef.el;
10340
10364
  return getTarget(props.target, vm) || activatorEl.value;
10341
10365
  });
10342
10366
  const targetEl = computed(() => {
@@ -10681,10 +10705,7 @@ const makeVOverlayProps = propsFactory({
10681
10705
  disabled: Boolean,
10682
10706
  opacity: [Number, String],
10683
10707
  noClickAnimation: Boolean,
10684
- modelValue: {
10685
- type: Boolean,
10686
- default: null
10687
- },
10708
+ modelValue: Boolean,
10688
10709
  persistent: Boolean,
10689
10710
  scrim: {
10690
10711
  type: [Boolean, String],
@@ -10727,7 +10748,7 @@ const VOverlay = genericComponent()({
10727
10748
  } = _ref;
10728
10749
  const model = useProxiedModel(props, 'modelValue');
10729
10750
  const isActive = computed({
10730
- get: () => Boolean(model.value),
10751
+ get: () => model.value,
10731
10752
  set: v => {
10732
10753
  if (!(v && props.disabled)) model.value = v;
10733
10754
  }
@@ -12964,7 +12985,7 @@ const VAutocomplete = genericComponent()({
12964
12985
  select(displayItems.value[0]);
12965
12986
  }
12966
12987
  menu.value = false;
12967
- search.value = '';
12988
+ if (props.multiple || hasSelectionSlot.value) search.value = '';
12968
12989
  selectionIndex.value = -1;
12969
12990
  }
12970
12991
  });
@@ -14808,7 +14829,7 @@ const VColorPickerCanvas = defineComponent({
14808
14829
  const {
14809
14830
  resizeRef
14810
14831
  } = useResizeObserver(entries => {
14811
- if (!resizeRef.value?.offsetParent) return;
14832
+ if (!resizeRef.el?.offsetParent) return;
14812
14833
  const {
14813
14834
  width,
14814
14835
  height
@@ -18431,6 +18452,7 @@ function provideSelection(props, _ref9) {
18431
18452
  });
18432
18453
  return !!items.length && isSelected(items);
18433
18454
  });
18455
+ const showSelectAll = computed(() => selectStrategy.value.showSelectAll);
18434
18456
  const data = {
18435
18457
  toggleSelect,
18436
18458
  select,
@@ -18439,7 +18461,7 @@ function provideSelection(props, _ref9) {
18439
18461
  isSomeSelected,
18440
18462
  someSelected,
18441
18463
  allSelected,
18442
- showSelectAll: selectStrategy.value.showSelectAll
18464
+ showSelectAll
18443
18465
  };
18444
18466
  provide(VDataTableSelectionSymbol, data);
18445
18467
  return data;
@@ -19710,7 +19732,7 @@ const VDataTableHeaders = genericComponent()({
19710
19732
  };
19711
19733
  if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
19712
19734
  if (column.key === 'data-table-select') {
19713
- return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll && createVNode(VCheckboxBtn, {
19735
+ return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && createVNode(VCheckboxBtn, {
19714
19736
  "modelValue": allSelected.value,
19715
19737
  "indeterminate": someSelected.value && !allSelected.value,
19716
19738
  "onUpdate:modelValue": selectAll
@@ -21679,10 +21701,10 @@ const VDatePickerYears = genericComponent()({
21679
21701
  watchEffect(() => {
21680
21702
  model.value = model.value ?? adapter.getYear(adapter.date());
21681
21703
  });
21682
- const yearRef = ref();
21704
+ const yearRef = templateRef();
21683
21705
  onMounted(async () => {
21684
21706
  await nextTick();
21685
- yearRef.value?.$el.scrollIntoView({
21707
+ yearRef.el?.scrollIntoView({
21686
21708
  block: 'center'
21687
21709
  });
21688
21710
  });
@@ -22559,7 +22581,7 @@ const VFileInput = genericComponent()({
22559
22581
  const {
22560
22582
  t
22561
22583
  } = useLocale();
22562
- const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
22584
+ const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0] ?? null);
22563
22585
  const {
22564
22586
  isFocused,
22565
22587
  focus,
@@ -23008,7 +23030,7 @@ const VInfiniteScroll = genericComponent()({
23008
23030
  function intersecting(side) {
23009
23031
  if (props.mode !== 'manual' && !isIntersecting.value) return;
23010
23032
  const status = getStatus(side);
23011
- if (!rootEl.value || status === 'loading') return;
23033
+ if (!rootEl.value || ['empty', 'loading'].includes(status)) return;
23012
23034
  previousScrollSize = getScrollSize();
23013
23035
  setStatus(side, 'loading');
23014
23036
  function done(status) {
@@ -25903,7 +25925,8 @@ const VStepperWindow = genericComponent()({
25903
25925
  }, windowProps, {
25904
25926
  "modelValue": model.value,
25905
25927
  "onUpdate:modelValue": $event => model.value = $event,
25906
- "class": "v-stepper-window",
25928
+ "class": ['v-stepper-window', props.class],
25929
+ "style": props.style,
25907
25930
  "mandatory": false,
25908
25931
  "touch": false
25909
25932
  }), slots);
@@ -25927,7 +25950,8 @@ const VStepperWindowItem = genericComponent()({
25927
25950
  return createVNode(VWindowItem, mergeProps({
25928
25951
  "_as": "VStepperWindowItem"
25929
25952
  }, windowItemProps, {
25930
- "class": "v-stepper-window-item"
25953
+ "class": ['v-stepper-window-item', props.class],
25954
+ "style": props.style
25931
25955
  }), slots);
25932
25956
  });
25933
25957
  return {};
@@ -26426,7 +26450,8 @@ const VTabsWindow = genericComponent()({
26426
26450
  }, windowProps, {
26427
26451
  "modelValue": model.value,
26428
26452
  "onUpdate:modelValue": $event => model.value = $event,
26429
- "class": "v-tabs-window",
26453
+ "class": ['v-tabs-window', props.class],
26454
+ "style": props.style,
26430
26455
  "mandatory": false,
26431
26456
  "touch": false
26432
26457
  }), slots);
@@ -27844,19 +27869,13 @@ const makeVNumberInputProps = propsFactory({
27844
27869
  type: Number,
27845
27870
  default: 1
27846
27871
  },
27847
- ...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
27848
- ...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
27849
- ...makeFocusProps()
27872
+ ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
27850
27873
  }, 'VNumberInput');
27851
27874
  const VNumberInput = genericComponent()({
27852
27875
  name: 'VNumberInput',
27853
27876
  inheritAttrs: false,
27854
27877
  props: {
27855
- ...makeVNumberInputProps(),
27856
- modelValue: {
27857
- type: Number,
27858
- default: undefined
27859
- }
27878
+ ...makeVNumberInputProps()
27860
27879
  },
27861
27880
  emits: {
27862
27881
  'update:modelValue': val => true
@@ -27868,12 +27887,6 @@ const VNumberInput = genericComponent()({
27868
27887
  slots
27869
27888
  } = _ref;
27870
27889
  const model = useProxiedModel(props, 'modelValue');
27871
- const {
27872
- isFocused,
27873
- focus,
27874
- blur
27875
- } = useFocus(props);
27876
- const inputRef = ref();
27877
27890
  const stepDecimals = computed(() => getDecimals(props.step));
27878
27891
  const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0);
27879
27892
  const canIncrease = computed(() => {
@@ -27889,9 +27902,6 @@ const VNumberInput = genericComponent()({
27889
27902
  model.value = clamp(model.value, props.min, props.max);
27890
27903
  }
27891
27904
  });
27892
- function onFocus() {
27893
- if (!isFocused.value) focus();
27894
- }
27895
27905
  const controlVariant = computed(() => {
27896
27906
  return props.hideInput ? 'stacked' : props.controlVariant;
27897
27907
  });
@@ -27921,7 +27931,7 @@ const VNumberInput = genericComponent()({
27921
27931
  toggleUpDown(false);
27922
27932
  }
27923
27933
  function onKeydown(e) {
27924
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace'].includes(e.key) || e.ctrlKey) return;
27934
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) || e.ctrlKey) return;
27925
27935
  if (['ArrowDown'].includes(e.key)) {
27926
27936
  e.preventDefault();
27927
27937
  toggleUpDown(false);
@@ -27938,17 +27948,14 @@ const VNumberInput = genericComponent()({
27938
27948
  e.preventDefault();
27939
27949
  }
27940
27950
  }
27941
- function onInput(e) {
27942
- const el = e.target;
27943
- model.value = el.value ? +el.value : undefined;
27951
+ function onModelUpdate(v) {
27952
+ model.value = v ? +v : undefined;
27944
27953
  }
27945
27954
  useRender(() => {
27946
- const fieldProps = filterFieldProps(props);
27947
- const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
27948
27955
  const {
27949
27956
  modelValue: _,
27950
- ...inputProps
27951
- } = VInput.filterProps(props);
27957
+ ...textFieldProps
27958
+ } = VTextField.filterProps(props);
27952
27959
  function controlNode() {
27953
27960
  const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%';
27954
27961
  return createVNode("div", {
@@ -27961,6 +27968,7 @@ const VNumberInput = genericComponent()({
27961
27968
  "name": "decrement-btn",
27962
27969
  "icon": "$expand",
27963
27970
  "size": "small",
27971
+ "tabindex": "-1",
27964
27972
  "onClick": onClickDown
27965
27973
  }, null) : createVNode(VDefaultsProvider, {
27966
27974
  "key": "decrement-defaults",
@@ -27985,7 +27993,8 @@ const VNumberInput = genericComponent()({
27985
27993
  "name": "increment-btn",
27986
27994
  "icon": "$collapse",
27987
27995
  "onClick": onClickUp,
27988
- "size": "small"
27996
+ "size": "small",
27997
+ "tabindex": "-1"
27989
27998
  }, null) : createVNode(VDefaultsProvider, {
27990
27999
  "key": "increment-defaults",
27991
28000
  "defaults": {
@@ -28006,7 +28015,36 @@ const VNumberInput = genericComponent()({
28006
28015
  "vertical": true
28007
28016
  }, null) : undefined;
28008
28017
  }
28009
- return createVNode(VInput, mergeProps({
28018
+ const appendInnerControl = controlVariant.value === 'split' ? createVNode("div", {
28019
+ "class": "v-number-input__control"
28020
+ }, [createVNode(VDivider, {
28021
+ "vertical": true
28022
+ }, null), createVNode(VBtn, {
28023
+ "flat": true,
28024
+ "height": "100%",
28025
+ "icon": "$plus",
28026
+ "tile": true,
28027
+ "tabindex": "-1",
28028
+ "onClick": onClickUp
28029
+ }, null)]) : !props.reverse ? createVNode(Fragment, null, [dividerNode(), controlNode()]) : undefined;
28030
+ const hasAppendInner = slots['append-inner'] || appendInnerControl;
28031
+ const prependInnerControl = controlVariant.value === 'split' ? createVNode("div", {
28032
+ "class": "v-number-input__control"
28033
+ }, [createVNode(VBtn, {
28034
+ "flat": true,
28035
+ "height": "100%",
28036
+ "icon": "$minus",
28037
+ "tile": true,
28038
+ "tabindex": "-1",
28039
+ "onClick": onClickDown
28040
+ }, null), createVNode(VDivider, {
28041
+ "vertical": true
28042
+ }, null)]) : props.reverse ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28043
+ const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28044
+ return createVNode(VTextField, mergeProps({
28045
+ "modelValue": model.value,
28046
+ "onUpdate:modelValue": onModelUpdate,
28047
+ "onKeydown": onKeydown,
28010
28048
  "class": ['v-number-input', {
28011
28049
  'v-number-input--default': controlVariant.value === 'default',
28012
28050
  'v-number-input--hide-input': props.hideInput,
@@ -28015,57 +28053,22 @@ const VNumberInput = genericComponent()({
28015
28053
  'v-number-input--split': controlVariant.value === 'split',
28016
28054
  'v-number-input--stacked': controlVariant.value === 'stacked'
28017
28055
  }, props.class]
28018
- }, rootAttrs, inputProps, {
28019
- "focused": isFocused.value,
28056
+ }, textFieldProps, {
28020
28057
  "style": props.style
28021
28058
  }), {
28022
28059
  ...slots,
28023
- default: () => createVNode(VField, mergeProps(fieldProps, {
28024
- "active": true,
28025
- "focused": isFocused.value
28026
- }), {
28027
- ...slots,
28028
- default: _ref2 => {
28029
- let {
28030
- props: {
28031
- class: fieldClass,
28032
- ...slotProps
28033
- }
28034
- } = _ref2;
28035
- return createVNode("input", mergeProps({
28036
- "ref": inputRef,
28037
- "type": "text",
28038
- "value": model.value,
28039
- "onInput": onInput,
28040
- "onKeydown": onKeydown,
28041
- "class": fieldClass,
28042
- "onFocus": onFocus,
28043
- "onBlur": blur
28044
- }, inputAttrs), null);
28045
- },
28046
- 'append-inner': controlVariant.value === 'split' ? () => createVNode("div", {
28047
- "class": "v-number-input__control"
28048
- }, [createVNode(VDivider, {
28049
- "vertical": true
28050
- }, null), createVNode(VBtn, {
28051
- "flat": true,
28052
- "height": "100%",
28053
- "icon": "$plus",
28054
- "tile": true,
28055
- "onClick": onClickUp
28056
- }, null)]) : !props.reverse ? () => createVNode(Fragment, null, [dividerNode(), controlNode()]) : undefined,
28057
- 'prepend-inner': controlVariant.value === 'split' ? () => createVNode("div", {
28058
- "class": "v-number-input__control"
28059
- }, [createVNode(VBtn, {
28060
- "flat": true,
28061
- "height": "100%",
28062
- "icon": "$minus",
28063
- "tile": true,
28064
- "onClick": onClickDown
28065
- }, null), createVNode(VDivider, {
28066
- "vertical": true
28067
- }, null)]) : props.reverse ? () => createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined
28068
- })
28060
+ 'append-inner': hasAppendInner ? function () {
28061
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28062
+ args[_key] = arguments[_key];
28063
+ }
28064
+ return createVNode(Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
28065
+ } : undefined,
28066
+ 'prepend-inner': hasPrependInner ? function () {
28067
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
28068
+ args[_key2] = arguments[_key2];
28069
+ }
28070
+ return createVNode(Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
28071
+ } : undefined
28069
28072
  });
28070
28073
  });
28071
28074
  }
@@ -29768,7 +29771,7 @@ function createVuetify$1() {
29768
29771
  goTo
29769
29772
  };
29770
29773
  }
29771
- const version$1 = "3.6.3-master.2024-05-06";
29774
+ const version$1 = "3.6.4-master.2024-05-08";
29772
29775
  createVuetify$1.version = version$1;
29773
29776
 
29774
29777
  // Vue's inject() can only be used in setup
@@ -30021,7 +30024,7 @@ var index = /*#__PURE__*/Object.freeze({
30021
30024
 
30022
30025
  /* eslint-disable local-rules/sort-imports */
30023
30026
 
30024
- const version = "3.6.3-master.2024-05-06";
30027
+ const version = "3.6.4-master.2024-05-08";
30025
30028
 
30026
30029
  /* eslint-disable local-rules/sort-imports */
30027
30030