@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
package/dist/vuetify.js CHANGED
@@ -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
  */
@@ -502,6 +502,11 @@
502
502
  });
503
503
  return fn;
504
504
  }
505
+ function checkPrintable(e) {
506
+ const isPrintableChar = e.key.length === 1;
507
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
508
+ return isPrintableChar && noModifier;
509
+ }
505
510
 
506
511
  // Utilities
507
512
  const block = ['top', 'bottom'];
@@ -9980,12 +9985,6 @@
9980
9985
  // el.style.removeProperty('max-width')
9981
9986
  // el.style.removeProperty('max-height')
9982
9987
 
9983
- if (isRtl) {
9984
- el.style.removeProperty('left');
9985
- } else {
9986
- el.style.removeProperty('right');
9987
- }
9988
-
9989
9988
  /* eslint-disable-next-line sonarjs/prefer-immediate-return */
9990
9989
  const contentBox = nullifyTransforms(el);
9991
9990
  if (isRtl) {
@@ -11377,23 +11376,25 @@
11377
11376
  const id = vue.computed(() => props.id || `v-menu-${uid}`);
11378
11377
  const overlay = vue.ref();
11379
11378
  const parent = vue.inject(VMenuSymbol, null);
11380
- const openChildren = vue.shallowRef(0);
11379
+ const openChildren = vue.shallowRef(new Set());
11381
11380
  vue.provide(VMenuSymbol, {
11382
11381
  register() {
11383
- ++openChildren.value;
11382
+ openChildren.value.add(uid);
11384
11383
  },
11385
11384
  unregister() {
11386
- --openChildren.value;
11385
+ openChildren.value.delete(uid);
11387
11386
  },
11388
11387
  closeParents(e) {
11389
11388
  setTimeout(() => {
11390
- if (!openChildren.value && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11389
+ if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11391
11390
  isActive.value = false;
11392
11391
  parent?.closeParents();
11393
11392
  }
11394
11393
  }, 40);
11395
11394
  }
11396
11395
  });
11396
+ vue.onBeforeUnmount(() => parent?.unregister());
11397
+ vue.onDeactivated(() => isActive.value = false);
11397
11398
  async function onFocusIn(e) {
11398
11399
  const before = e.relatedTarget;
11399
11400
  const after = e.target;
@@ -12305,6 +12306,7 @@
12305
12306
  deep: true
12306
12307
  });
12307
12308
  return {
12309
+ calculateVisibleItems,
12308
12310
  containerRef,
12309
12311
  markerRef,
12310
12312
  computedItems,
@@ -12368,6 +12370,7 @@
12368
12370
  dimensionStyles
12369
12371
  } = useDimension(props);
12370
12372
  const {
12373
+ calculateVisibleItems,
12371
12374
  containerRef,
12372
12375
  markerRef,
12373
12376
  handleScroll,
@@ -12439,6 +12442,7 @@
12439
12442
  }, [children])]);
12440
12443
  });
12441
12444
  return {
12445
+ calculateVisibleItems,
12442
12446
  scrollToIndex
12443
12447
  };
12444
12448
  }
@@ -12507,9 +12511,9 @@
12507
12511
  }
12508
12512
  }
12509
12513
  return {
12510
- onListScroll,
12511
- onListKeydown
12512
- };
12514
+ onScrollPassive: onListScroll,
12515
+ onKeydown: onListKeydown
12516
+ }; // typescript doesn't know about vue's event merging
12513
12517
  }
12514
12518
 
12515
12519
  // Types
@@ -12584,7 +12588,7 @@
12584
12588
  const menu = vue.computed({
12585
12589
  get: () => _menu.value,
12586
12590
  set: v => {
12587
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12591
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12588
12592
  _menu.value = v;
12589
12593
  }
12590
12594
  });
@@ -12623,10 +12627,7 @@
12623
12627
  };
12624
12628
  });
12625
12629
  const listRef = vue.ref();
12626
- const {
12627
- onListScroll,
12628
- onListKeydown
12629
- } = useScrolling(listRef, vTextFieldRef);
12630
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12630
12631
  function onClear(e) {
12631
12632
  if (props.openOnClear) {
12632
12633
  menu.value = true;
@@ -12636,6 +12637,11 @@
12636
12637
  if (menuDisabled.value) return;
12637
12638
  menu.value = !menu.value;
12638
12639
  }
12640
+ function onListKeydown(e) {
12641
+ if (checkPrintable(e)) {
12642
+ onKeydown(e);
12643
+ }
12644
+ }
12639
12645
  function onKeydown(e) {
12640
12646
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12641
12647
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12656,11 +12662,6 @@
12656
12662
  // html select hotkeys
12657
12663
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12658
12664
 
12659
- function checkPrintable(e) {
12660
- const isPrintableChar = e.key.length === 1;
12661
- const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
12662
- return isPrintableChar && noModifier;
12663
- }
12664
12665
  if (props.multiple || !checkPrintable(e)) return;
12665
12666
  const now = performance.now();
12666
12667
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12705,6 +12706,11 @@
12705
12706
  menu.value = false;
12706
12707
  }
12707
12708
  }
12709
+ function onAfterEnter() {
12710
+ if (props.eager) {
12711
+ vVirtualScrollRef.value?.calculateVisibleItems();
12712
+ }
12713
+ }
12708
12714
  function onAfterLeave() {
12709
12715
  if (isFocused.value) {
12710
12716
  vTextFieldRef.value?.focus();
@@ -12783,6 +12789,7 @@
12783
12789
  "openOnClick": false,
12784
12790
  "closeOnContentClick": false,
12785
12791
  "transition": props.transition,
12792
+ "onAfterEnter": onAfterEnter,
12786
12793
  "onAfterLeave": onAfterLeave
12787
12794
  }, computedMenuProps.value), {
12788
12795
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -12792,11 +12799,10 @@
12792
12799
  "onMousedown": e => e.preventDefault(),
12793
12800
  "onKeydown": onListKeydown,
12794
12801
  "onFocusin": onFocusin,
12795
- "onScrollPassive": onListScroll,
12796
12802
  "tabindex": "-1",
12797
12803
  "aria-live": "polite",
12798
12804
  "color": props.itemColor ?? props.color
12799
- }, props.listProps), {
12805
+ }, listEvents, props.listProps), {
12800
12806
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
12801
12807
  "title": t(props.noDataText)
12802
12808
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -13091,7 +13097,7 @@
13091
13097
  const menu = vue.computed({
13092
13098
  get: () => _menu.value,
13093
13099
  set: v => {
13094
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
13100
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13095
13101
  _menu.value = v;
13096
13102
  }
13097
13103
  });
@@ -13135,10 +13141,7 @@
13135
13141
  });
13136
13142
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
13137
13143
  const listRef = vue.ref();
13138
- const {
13139
- onListScroll,
13140
- onListKeydown
13141
- } = useScrolling(listRef, vTextFieldRef);
13144
+ const listEvents = useScrolling(listRef, vTextFieldRef);
13142
13145
  function onClear(e) {
13143
13146
  if (props.openOnClear) {
13144
13147
  menu.value = true;
@@ -13157,6 +13160,11 @@
13157
13160
  }
13158
13161
  menu.value = !menu.value;
13159
13162
  }
13163
+ function onListKeydown(e) {
13164
+ if (checkPrintable(e)) {
13165
+ vTextFieldRef.value?.focus();
13166
+ }
13167
+ }
13160
13168
  function onKeydown(e) {
13161
13169
  if (props.readonly || form?.isReadonly.value) return;
13162
13170
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -13221,6 +13229,11 @@
13221
13229
  }
13222
13230
  }
13223
13231
  }
13232
+ function onAfterEnter() {
13233
+ if (props.eager) {
13234
+ vVirtualScrollRef.value?.calculateVisibleItems();
13235
+ }
13236
+ }
13224
13237
  function onAfterLeave() {
13225
13238
  if (isFocused.value) {
13226
13239
  isPristine.value = true;
@@ -13349,6 +13362,7 @@
13349
13362
  "openOnClick": false,
13350
13363
  "closeOnContentClick": false,
13351
13364
  "transition": props.transition,
13365
+ "onAfterEnter": onAfterEnter,
13352
13366
  "onAfterLeave": onAfterLeave
13353
13367
  }, props.menuProps), {
13354
13368
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -13359,11 +13373,10 @@
13359
13373
  "onKeydown": onListKeydown,
13360
13374
  "onFocusin": onFocusin,
13361
13375
  "onFocusout": onFocusout,
13362
- "onScrollPassive": onListScroll,
13363
13376
  "tabindex": "-1",
13364
13377
  "aria-live": "polite",
13365
13378
  "color": props.itemColor ?? props.color
13366
- }, props.listProps), {
13379
+ }, listEvents, props.listProps), {
13367
13380
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
13368
13381
  "title": t(props.noDataText)
13369
13382
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -16924,7 +16937,7 @@
16924
16937
  const menu = vue.computed({
16925
16938
  get: () => _menu.value,
16926
16939
  set: v => {
16927
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16940
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16928
16941
  _menu.value = v;
16929
16942
  }
16930
16943
  });
@@ -17007,10 +17020,7 @@
17007
17020
  });
17008
17021
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
17009
17022
  const listRef = vue.ref();
17010
- const {
17011
- onListScroll,
17012
- onListKeydown
17013
- } = useScrolling(listRef, vTextFieldRef);
17023
+ const listEvents = useScrolling(listRef, vTextFieldRef);
17014
17024
  function onClear(e) {
17015
17025
  cleared = true;
17016
17026
  if (props.openOnClear) {
@@ -17029,6 +17039,11 @@
17029
17039
  }
17030
17040
  menu.value = !menu.value;
17031
17041
  }
17042
+ function onListKeydown(e) {
17043
+ if (checkPrintable(e)) {
17044
+ vTextFieldRef.value?.focus();
17045
+ }
17046
+ }
17032
17047
  // eslint-disable-next-line complexity
17033
17048
  function onKeydown(e) {
17034
17049
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -17093,6 +17108,11 @@
17093
17108
  }
17094
17109
  }
17095
17110
  }
17111
+ function onAfterEnter() {
17112
+ if (props.eager) {
17113
+ vVirtualScrollRef.value?.calculateVisibleItems();
17114
+ }
17115
+ }
17096
17116
  function onAfterLeave() {
17097
17117
  if (isFocused.value) {
17098
17118
  isPristine.value = true;
@@ -17217,6 +17237,7 @@
17217
17237
  "openOnClick": false,
17218
17238
  "closeOnContentClick": false,
17219
17239
  "transition": props.transition,
17240
+ "onAfterEnter": onAfterEnter,
17220
17241
  "onAfterLeave": onAfterLeave
17221
17242
  }, props.menuProps), {
17222
17243
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -17227,11 +17248,10 @@
17227
17248
  "onKeydown": onListKeydown,
17228
17249
  "onFocusin": onFocusin,
17229
17250
  "onFocusout": onFocusout,
17230
- "onScrollPassive": onListScroll,
17231
17251
  "tabindex": "-1",
17232
17252
  "aria-live": "polite",
17233
17253
  "color": props.itemColor ?? props.color
17234
- }, props.listProps), {
17254
+ }, listEvents, props.listProps), {
17235
17255
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
17236
17256
  "title": t(props.noDataText)
17237
17257
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -28159,7 +28179,7 @@
28159
28179
  goTo
28160
28180
  };
28161
28181
  }
28162
- const version$1 = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
28182
+ const version$1 = "3.6.13-3.7.0-beta.0.0-dev.2024-07-25";
28163
28183
  createVuetify$1.version = version$1;
28164
28184
 
28165
28185
  // Vue's inject() can only be used in setup
@@ -28184,7 +28204,7 @@
28184
28204
  ...options
28185
28205
  });
28186
28206
  };
28187
- const version = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
28207
+ const version = "3.6.13-3.7.0-beta.0.0-dev.2024-07-25";
28188
28208
  createVuetify.version = version;
28189
28209
 
28190
28210
  exports.blueprints = index;