@vuetify/nightly 3.6.13-3.7.0-beta.0.0-dev.2024-07-24 → 3.6.13-3.7.0-beta.0.0-dev.2024-07-25

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 (43) hide show
  1. package/dist/json/importMap-labs.json +28 -28
  2. package/dist/json/importMap.json +142 -142
  3. package/dist/json/web-types.json +1 -1
  4. package/dist/vuetify-labs.css +1853 -1853
  5. package/dist/vuetify-labs.d.ts +6 -3
  6. package/dist/vuetify-labs.esm.js +62 -42
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +62 -42
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +1851 -1851
  11. package/dist/vuetify.d.ts +57 -54
  12. package/dist/vuetify.esm.js +62 -42
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +62 -42
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +984 -985
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/components/VAutocomplete/VAutocomplete.mjs +15 -8
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  21. package/lib/components/VCombobox/VCombobox.mjs +15 -8
  22. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  23. package/lib/components/VMenu/VMenu.mjs +7 -5
  24. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  25. package/lib/components/VMenu/index.d.mts +3 -3
  26. package/lib/components/VOverlay/locationStrategies.mjs +0 -6
  27. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  28. package/lib/components/VSelect/VSelect.mjs +15 -13
  29. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  30. package/lib/components/VSelect/useScrolling.mjs +3 -3
  31. package/lib/components/VSelect/useScrolling.mjs.map +1 -1
  32. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +2 -0
  33. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  34. package/lib/components/VVirtualScroll/index.d.mts +3 -0
  35. package/lib/components/index.d.mts +6 -3
  36. package/lib/composables/virtual.mjs +1 -0
  37. package/lib/composables/virtual.mjs.map +1 -1
  38. package/lib/entry-bundler.mjs +1 -1
  39. package/lib/framework.mjs +1 -1
  40. package/lib/index.d.mts +51 -51
  41. package/lib/util/helpers.mjs +5 -0
  42. package/lib/util/helpers.mjs.map +1 -1
  43. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.13-3.7.0-beta.0.0-dev.2024-07-24
2
+ * Vuetify v3.6.13-3.7.0-beta.0.0-dev.2024-07-25
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -579,6 +579,11 @@
579
579
  });
580
580
  return fn;
581
581
  }
582
+ function checkPrintable(e) {
583
+ const isPrintableChar = e.key.length === 1;
584
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
585
+ return isPrintableChar && noModifier;
586
+ }
582
587
 
583
588
  // Utilities
584
589
  const block = ['top', 'bottom'];
@@ -9747,12 +9752,6 @@
9747
9752
  // el.style.removeProperty('max-width')
9748
9753
  // el.style.removeProperty('max-height')
9749
9754
 
9750
- if (isRtl) {
9751
- el.style.removeProperty('left');
9752
- } else {
9753
- el.style.removeProperty('right');
9754
- }
9755
-
9756
9755
  /* eslint-disable-next-line sonarjs/prefer-immediate-return */
9757
9756
  const contentBox = nullifyTransforms(el);
9758
9757
  if (isRtl) {
@@ -11144,23 +11143,25 @@
11144
11143
  const id = vue.computed(() => props.id || `v-menu-${uid}`);
11145
11144
  const overlay = vue.ref();
11146
11145
  const parent = vue.inject(VMenuSymbol, null);
11147
- const openChildren = vue.shallowRef(0);
11146
+ const openChildren = vue.shallowRef(new Set());
11148
11147
  vue.provide(VMenuSymbol, {
11149
11148
  register() {
11150
- ++openChildren.value;
11149
+ openChildren.value.add(uid);
11151
11150
  },
11152
11151
  unregister() {
11153
- --openChildren.value;
11152
+ openChildren.value.delete(uid);
11154
11153
  },
11155
11154
  closeParents(e) {
11156
11155
  setTimeout(() => {
11157
- if (!openChildren.value && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11156
+ if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11158
11157
  isActive.value = false;
11159
11158
  parent?.closeParents();
11160
11159
  }
11161
11160
  }, 40);
11162
11161
  }
11163
11162
  });
11163
+ vue.onBeforeUnmount(() => parent?.unregister());
11164
+ vue.onDeactivated(() => isActive.value = false);
11164
11165
  async function onFocusIn(e) {
11165
11166
  const before = e.relatedTarget;
11166
11167
  const after = e.target;
@@ -12072,6 +12073,7 @@
12072
12073
  deep: true
12073
12074
  });
12074
12075
  return {
12076
+ calculateVisibleItems,
12075
12077
  containerRef,
12076
12078
  markerRef,
12077
12079
  computedItems,
@@ -12135,6 +12137,7 @@
12135
12137
  dimensionStyles
12136
12138
  } = useDimension(props);
12137
12139
  const {
12140
+ calculateVisibleItems,
12138
12141
  containerRef,
12139
12142
  markerRef,
12140
12143
  handleScroll,
@@ -12206,6 +12209,7 @@
12206
12209
  }, [children])]);
12207
12210
  });
12208
12211
  return {
12212
+ calculateVisibleItems,
12209
12213
  scrollToIndex
12210
12214
  };
12211
12215
  }
@@ -12274,9 +12278,9 @@
12274
12278
  }
12275
12279
  }
12276
12280
  return {
12277
- onListScroll,
12278
- onListKeydown
12279
- };
12281
+ onScrollPassive: onListScroll,
12282
+ onKeydown: onListKeydown
12283
+ }; // typescript doesn't know about vue's event merging
12280
12284
  }
12281
12285
 
12282
12286
  // Types
@@ -12351,7 +12355,7 @@
12351
12355
  const menu = vue.computed({
12352
12356
  get: () => _menu.value,
12353
12357
  set: v => {
12354
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12358
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12355
12359
  _menu.value = v;
12356
12360
  }
12357
12361
  });
@@ -12390,10 +12394,7 @@
12390
12394
  };
12391
12395
  });
12392
12396
  const listRef = vue.ref();
12393
- const {
12394
- onListScroll,
12395
- onListKeydown
12396
- } = useScrolling(listRef, vTextFieldRef);
12397
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12397
12398
  function onClear(e) {
12398
12399
  if (props.openOnClear) {
12399
12400
  menu.value = true;
@@ -12403,6 +12404,11 @@
12403
12404
  if (menuDisabled.value) return;
12404
12405
  menu.value = !menu.value;
12405
12406
  }
12407
+ function onListKeydown(e) {
12408
+ if (checkPrintable(e)) {
12409
+ onKeydown(e);
12410
+ }
12411
+ }
12406
12412
  function onKeydown(e) {
12407
12413
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12408
12414
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12423,11 +12429,6 @@
12423
12429
  // html select hotkeys
12424
12430
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12425
12431
 
12426
- function checkPrintable(e) {
12427
- const isPrintableChar = e.key.length === 1;
12428
- const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
12429
- return isPrintableChar && noModifier;
12430
- }
12431
12432
  if (props.multiple || !checkPrintable(e)) return;
12432
12433
  const now = performance.now();
12433
12434
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12472,6 +12473,11 @@
12472
12473
  menu.value = false;
12473
12474
  }
12474
12475
  }
12476
+ function onAfterEnter() {
12477
+ if (props.eager) {
12478
+ vVirtualScrollRef.value?.calculateVisibleItems();
12479
+ }
12480
+ }
12475
12481
  function onAfterLeave() {
12476
12482
  if (isFocused.value) {
12477
12483
  vTextFieldRef.value?.focus();
@@ -12550,6 +12556,7 @@
12550
12556
  "openOnClick": false,
12551
12557
  "closeOnContentClick": false,
12552
12558
  "transition": props.transition,
12559
+ "onAfterEnter": onAfterEnter,
12553
12560
  "onAfterLeave": onAfterLeave
12554
12561
  }, computedMenuProps.value), {
12555
12562
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -12559,11 +12566,10 @@
12559
12566
  "onMousedown": e => e.preventDefault(),
12560
12567
  "onKeydown": onListKeydown,
12561
12568
  "onFocusin": onFocusin,
12562
- "onScrollPassive": onListScroll,
12563
12569
  "tabindex": "-1",
12564
12570
  "aria-live": "polite",
12565
12571
  "color": props.itemColor ?? props.color
12566
- }, props.listProps), {
12572
+ }, listEvents, props.listProps), {
12567
12573
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
12568
12574
  "title": t(props.noDataText)
12569
12575
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -12858,7 +12864,7 @@
12858
12864
  const menu = vue.computed({
12859
12865
  get: () => _menu.value,
12860
12866
  set: v => {
12861
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12867
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12862
12868
  _menu.value = v;
12863
12869
  }
12864
12870
  });
@@ -12902,10 +12908,7 @@
12902
12908
  });
12903
12909
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12904
12910
  const listRef = vue.ref();
12905
- const {
12906
- onListScroll,
12907
- onListKeydown
12908
- } = useScrolling(listRef, vTextFieldRef);
12911
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12909
12912
  function onClear(e) {
12910
12913
  if (props.openOnClear) {
12911
12914
  menu.value = true;
@@ -12924,6 +12927,11 @@
12924
12927
  }
12925
12928
  menu.value = !menu.value;
12926
12929
  }
12930
+ function onListKeydown(e) {
12931
+ if (checkPrintable(e)) {
12932
+ vTextFieldRef.value?.focus();
12933
+ }
12934
+ }
12927
12935
  function onKeydown(e) {
12928
12936
  if (props.readonly || form?.isReadonly.value) return;
12929
12937
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -12988,6 +12996,11 @@
12988
12996
  }
12989
12997
  }
12990
12998
  }
12999
+ function onAfterEnter() {
13000
+ if (props.eager) {
13001
+ vVirtualScrollRef.value?.calculateVisibleItems();
13002
+ }
13003
+ }
12991
13004
  function onAfterLeave() {
12992
13005
  if (isFocused.value) {
12993
13006
  isPristine.value = true;
@@ -13116,6 +13129,7 @@
13116
13129
  "openOnClick": false,
13117
13130
  "closeOnContentClick": false,
13118
13131
  "transition": props.transition,
13132
+ "onAfterEnter": onAfterEnter,
13119
13133
  "onAfterLeave": onAfterLeave
13120
13134
  }, props.menuProps), {
13121
13135
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -13126,11 +13140,10 @@
13126
13140
  "onKeydown": onListKeydown,
13127
13141
  "onFocusin": onFocusin,
13128
13142
  "onFocusout": onFocusout,
13129
- "onScrollPassive": onListScroll,
13130
13143
  "tabindex": "-1",
13131
13144
  "aria-live": "polite",
13132
13145
  "color": props.itemColor ?? props.color
13133
- }, props.listProps), {
13146
+ }, listEvents, props.listProps), {
13134
13147
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
13135
13148
  "title": t(props.noDataText)
13136
13149
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -16691,7 +16704,7 @@
16691
16704
  const menu = vue.computed({
16692
16705
  get: () => _menu.value,
16693
16706
  set: v => {
16694
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16707
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16695
16708
  _menu.value = v;
16696
16709
  }
16697
16710
  });
@@ -16774,10 +16787,7 @@
16774
16787
  });
16775
16788
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
16776
16789
  const listRef = vue.ref();
16777
- const {
16778
- onListScroll,
16779
- onListKeydown
16780
- } = useScrolling(listRef, vTextFieldRef);
16790
+ const listEvents = useScrolling(listRef, vTextFieldRef);
16781
16791
  function onClear(e) {
16782
16792
  cleared = true;
16783
16793
  if (props.openOnClear) {
@@ -16796,6 +16806,11 @@
16796
16806
  }
16797
16807
  menu.value = !menu.value;
16798
16808
  }
16809
+ function onListKeydown(e) {
16810
+ if (checkPrintable(e)) {
16811
+ vTextFieldRef.value?.focus();
16812
+ }
16813
+ }
16799
16814
  // eslint-disable-next-line complexity
16800
16815
  function onKeydown(e) {
16801
16816
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -16860,6 +16875,11 @@
16860
16875
  }
16861
16876
  }
16862
16877
  }
16878
+ function onAfterEnter() {
16879
+ if (props.eager) {
16880
+ vVirtualScrollRef.value?.calculateVisibleItems();
16881
+ }
16882
+ }
16863
16883
  function onAfterLeave() {
16864
16884
  if (isFocused.value) {
16865
16885
  isPristine.value = true;
@@ -16984,6 +17004,7 @@
16984
17004
  "openOnClick": false,
16985
17005
  "closeOnContentClick": false,
16986
17006
  "transition": props.transition,
17007
+ "onAfterEnter": onAfterEnter,
16987
17008
  "onAfterLeave": onAfterLeave
16988
17009
  }, props.menuProps), {
16989
17010
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -16994,11 +17015,10 @@
16994
17015
  "onKeydown": onListKeydown,
16995
17016
  "onFocusin": onFocusin,
16996
17017
  "onFocusout": onFocusout,
16997
- "onScrollPassive": onListScroll,
16998
17018
  "tabindex": "-1",
16999
17019
  "aria-live": "polite",
17000
17020
  "color": props.itemColor ?? props.color
17001
- }, props.listProps), {
17021
+ }, listEvents, props.listProps), {
17002
17022
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
17003
17023
  "title": t(props.noDataText)
17004
17024
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -30292,7 +30312,7 @@
30292
30312
  goTo
30293
30313
  };
30294
30314
  }
30295
- const version$1 = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
30315
+ const version$1 = "3.6.13-3.7.0-beta.0.0-dev.2024-07-25";
30296
30316
  createVuetify$1.version = version$1;
30297
30317
 
30298
30318
  // Vue's inject() can only be used in setup
@@ -30545,7 +30565,7 @@
30545
30565
 
30546
30566
  /* eslint-disable local-rules/sort-imports */
30547
30567
 
30548
- const version = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
30568
+ const version = "3.6.13-3.7.0-beta.0.0-dev.2024-07-25";
30549
30569
 
30550
30570
  /* eslint-disable local-rules/sort-imports */
30551
30571