@vuetify/nightly 3.6.13-3.7.0-beta.0.0-dev.2024-07-24 → 3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce

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 (58) hide show
  1. package/dist/json/attributes.json +107 -99
  2. package/dist/json/importMap-labs.json +12 -12
  3. package/dist/json/importMap.json +116 -116
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +212 -193
  6. package/dist/vuetify-labs.css +1815 -1815
  7. package/dist/vuetify-labs.d.ts +196 -109
  8. package/dist/vuetify-labs.esm.js +89 -43
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +89 -43
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1373 -1373
  13. package/dist/vuetify.d.ts +237 -150
  14. package/dist/vuetify.esm.js +89 -43
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +89 -43
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +1004 -1004
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +15 -8
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/index.d.mts +42 -24
  24. package/lib/components/VCombobox/VCombobox.mjs +15 -8
  25. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  26. package/lib/components/VCombobox/index.d.mts +42 -24
  27. package/lib/components/VDialog/index.d.mts +3 -3
  28. package/lib/components/VMenu/VMenu.mjs +27 -6
  29. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  30. package/lib/components/VMenu/index.d.mts +30 -15
  31. package/lib/components/VOverlay/VOverlay.mjs +5 -4
  32. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  33. package/lib/components/VOverlay/useActivator.mjs +3 -2
  34. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  35. package/lib/components/VSelect/VSelect.mjs +15 -13
  36. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  37. package/lib/components/VSelect/index.d.mts +42 -24
  38. package/lib/components/VSelect/useScrolling.mjs +3 -3
  39. package/lib/components/VSelect/useScrolling.mjs.map +1 -1
  40. package/lib/components/VSnackbar/index.d.mts +3 -3
  41. package/lib/components/VSpeedDial/index.d.mts +28 -13
  42. package/lib/components/VTooltip/index.d.mts +3 -3
  43. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +2 -0
  44. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  45. package/lib/components/VVirtualScroll/index.d.mts +3 -0
  46. package/lib/components/index.d.mts +196 -109
  47. package/lib/composables/virtual.mjs +1 -0
  48. package/lib/composables/virtual.mjs.map +1 -1
  49. package/lib/entry-bundler.mjs +1 -1
  50. package/lib/entry-bundler.mjs.map +1 -1
  51. package/lib/framework.mjs +1 -1
  52. package/lib/framework.mjs.map +1 -1
  53. package/lib/index.d.mts +41 -41
  54. package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
  55. package/lib/labs/components.d.mts +3 -3
  56. package/lib/util/helpers.mjs +5 -0
  57. package/lib/util/helpers.mjs.map +1 -1
  58. 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-pr-20092.dc840ce
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -575,6 +575,11 @@ function templateRef() {
575
575
  });
576
576
  return fn;
577
577
  }
578
+ function checkPrintable(e) {
579
+ const isPrintableChar = e.key.length === 1;
580
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
581
+ return isPrintableChar && noModifier;
582
+ }
578
583
 
579
584
  // Utilities
580
585
  const block = ['top', 'bottom'];
@@ -10276,7 +10281,8 @@ const makeActivatorProps = propsFactory({
10276
10281
  function useActivator(props, _ref) {
10277
10282
  let {
10278
10283
  isActive,
10279
- isTop
10284
+ isTop,
10285
+ contentEl
10280
10286
  } = _ref;
10281
10287
  const vm = getCurrentInstance('useActivator');
10282
10288
  const activatorEl = ref();
@@ -10393,7 +10399,7 @@ function useActivator(props, _ref) {
10393
10399
  return events;
10394
10400
  });
10395
10401
  watch(isTop, val => {
10396
- if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
10402
+ if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {
10397
10403
  isActive.value = false;
10398
10404
  }
10399
10405
  });
@@ -10799,6 +10805,9 @@ const VOverlay = genericComponent()({
10799
10805
  attrs,
10800
10806
  emit
10801
10807
  } = _ref;
10808
+ const root = ref();
10809
+ const scrimEl = ref();
10810
+ const contentEl = ref();
10802
10811
  const model = useProxiedModel(props, 'modelValue');
10803
10812
  const isActive = computed({
10804
10813
  get: () => model.value,
@@ -10836,7 +10845,8 @@ const VOverlay = genericComponent()({
10836
10845
  scrimEvents
10837
10846
  } = useActivator(props, {
10838
10847
  isActive,
10839
- isTop: localTop
10848
+ isTop: localTop,
10849
+ contentEl
10840
10850
  });
10841
10851
  const {
10842
10852
  teleportTarget
@@ -10857,9 +10867,6 @@ const VOverlay = genericComponent()({
10857
10867
  watch(() => props.disabled, v => {
10858
10868
  if (v) isActive.value = false;
10859
10869
  });
10860
- const root = ref();
10861
- const scrimEl = ref();
10862
- const contentEl = ref();
10863
10870
  const {
10864
10871
  contentStyles,
10865
10872
  updateLocation
@@ -11110,10 +11117,12 @@ const makeVMenuProps = propsFactory({
11110
11117
  // TODO
11111
11118
  // disableKeys: Boolean,
11112
11119
  id: String,
11120
+ submenu: Boolean,
11113
11121
  ...omit(makeVOverlayProps({
11114
11122
  closeDelay: 250,
11115
11123
  closeOnContentClick: true,
11116
11124
  locationStrategy: 'connected',
11125
+ location: undefined,
11117
11126
  openDelay: 300,
11118
11127
  scrim: false,
11119
11128
  scrollStrategy: 'reposition',
@@ -11136,27 +11145,32 @@ const VMenu = genericComponent()({
11136
11145
  const {
11137
11146
  scopeId
11138
11147
  } = useScopeId();
11148
+ const {
11149
+ isRtl
11150
+ } = useRtl();
11139
11151
  const uid = getUid();
11140
11152
  const id = computed(() => props.id || `v-menu-${uid}`);
11141
11153
  const overlay = ref();
11142
11154
  const parent = inject$1(VMenuSymbol, null);
11143
- const openChildren = shallowRef(0);
11155
+ const openChildren = shallowRef(new Set());
11144
11156
  provide(VMenuSymbol, {
11145
11157
  register() {
11146
- ++openChildren.value;
11158
+ openChildren.value.add(uid);
11147
11159
  },
11148
11160
  unregister() {
11149
- --openChildren.value;
11161
+ openChildren.value.delete(uid);
11150
11162
  },
11151
11163
  closeParents(e) {
11152
11164
  setTimeout(() => {
11153
- if (!openChildren.value && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11165
+ if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11154
11166
  isActive.value = false;
11155
11167
  parent?.closeParents();
11156
11168
  }
11157
11169
  }, 40);
11158
11170
  }
11159
11171
  });
11172
+ onBeforeUnmount(() => parent?.unregister());
11173
+ onDeactivated(() => isActive.value = false);
11160
11174
  async function onFocusIn(e) {
11161
11175
  const before = e.relatedTarget;
11162
11176
  const after = e.target;
@@ -11199,6 +11213,9 @@ const VMenu = genericComponent()({
11199
11213
  } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
11200
11214
  isActive.value = false;
11201
11215
  parent?.closeParents();
11216
+ } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11217
+ isActive.value = false;
11218
+ overlay.value?.activatorEl?.focus();
11202
11219
  }
11203
11220
  }
11204
11221
  function onActivatorKeydown(e) {
@@ -11207,12 +11224,21 @@ const VMenu = genericComponent()({
11207
11224
  if (el && isActive.value) {
11208
11225
  if (e.key === 'ArrowDown') {
11209
11226
  e.preventDefault();
11227
+ e.stopImmediatePropagation();
11210
11228
  focusChild(el, 'next');
11211
11229
  } else if (e.key === 'ArrowUp') {
11212
11230
  e.preventDefault();
11231
+ e.stopImmediatePropagation();
11213
11232
  focusChild(el, 'prev');
11233
+ } else if (props.submenu) {
11234
+ if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11235
+ isActive.value = false;
11236
+ } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
11237
+ e.preventDefault();
11238
+ focusChild(el, 'first');
11239
+ }
11214
11240
  }
11215
- } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
11241
+ } else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
11216
11242
  isActive.value = true;
11217
11243
  e.preventDefault();
11218
11244
  setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
@@ -11236,6 +11262,7 @@ const VMenu = genericComponent()({
11236
11262
  "onUpdate:modelValue": $event => isActive.value = $event,
11237
11263
  "absolute": true,
11238
11264
  "activatorProps": activatorProps.value,
11265
+ "location": props.location ?? (props.submenu ? 'end' : 'bottom'),
11239
11266
  "onClick:outside": onClickOutside,
11240
11267
  "onKeydown": onKeydown
11241
11268
  }, scopeId), {
@@ -12068,6 +12095,7 @@ function useVirtual(props, items) {
12068
12095
  deep: true
12069
12096
  });
12070
12097
  return {
12098
+ calculateVisibleItems,
12071
12099
  containerRef,
12072
12100
  markerRef,
12073
12101
  computedItems,
@@ -12131,6 +12159,7 @@ const VVirtualScroll = genericComponent()({
12131
12159
  dimensionStyles
12132
12160
  } = useDimension(props);
12133
12161
  const {
12162
+ calculateVisibleItems,
12134
12163
  containerRef,
12135
12164
  markerRef,
12136
12165
  handleScroll,
@@ -12202,6 +12231,7 @@ const VVirtualScroll = genericComponent()({
12202
12231
  }, [children])]);
12203
12232
  });
12204
12233
  return {
12234
+ calculateVisibleItems,
12205
12235
  scrollToIndex
12206
12236
  };
12207
12237
  }
@@ -12270,9 +12300,9 @@ function useScrolling(listRef, textFieldRef) {
12270
12300
  }
12271
12301
  }
12272
12302
  return {
12273
- onListScroll,
12274
- onListKeydown
12275
- };
12303
+ onScrollPassive: onListScroll,
12304
+ onKeydown: onListKeydown
12305
+ }; // typescript doesn't know about vue's event merging
12276
12306
  }
12277
12307
 
12278
12308
  // Types
@@ -12347,7 +12377,7 @@ const VSelect = genericComponent()({
12347
12377
  const menu = computed({
12348
12378
  get: () => _menu.value,
12349
12379
  set: v => {
12350
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12380
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12351
12381
  _menu.value = v;
12352
12382
  }
12353
12383
  });
@@ -12386,10 +12416,7 @@ const VSelect = genericComponent()({
12386
12416
  };
12387
12417
  });
12388
12418
  const listRef = ref();
12389
- const {
12390
- onListScroll,
12391
- onListKeydown
12392
- } = useScrolling(listRef, vTextFieldRef);
12419
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12393
12420
  function onClear(e) {
12394
12421
  if (props.openOnClear) {
12395
12422
  menu.value = true;
@@ -12399,6 +12426,11 @@ const VSelect = genericComponent()({
12399
12426
  if (menuDisabled.value) return;
12400
12427
  menu.value = !menu.value;
12401
12428
  }
12429
+ function onListKeydown(e) {
12430
+ if (checkPrintable(e)) {
12431
+ onKeydown(e);
12432
+ }
12433
+ }
12402
12434
  function onKeydown(e) {
12403
12435
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12404
12436
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12419,11 +12451,6 @@ const VSelect = genericComponent()({
12419
12451
  // html select hotkeys
12420
12452
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12421
12453
 
12422
- function checkPrintable(e) {
12423
- const isPrintableChar = e.key.length === 1;
12424
- const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
12425
- return isPrintableChar && noModifier;
12426
- }
12427
12454
  if (props.multiple || !checkPrintable(e)) return;
12428
12455
  const now = performance.now();
12429
12456
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12468,6 +12495,11 @@ const VSelect = genericComponent()({
12468
12495
  menu.value = false;
12469
12496
  }
12470
12497
  }
12498
+ function onAfterEnter() {
12499
+ if (props.eager) {
12500
+ vVirtualScrollRef.value?.calculateVisibleItems();
12501
+ }
12502
+ }
12471
12503
  function onAfterLeave() {
12472
12504
  if (isFocused.value) {
12473
12505
  vTextFieldRef.value?.focus();
@@ -12546,6 +12578,7 @@ const VSelect = genericComponent()({
12546
12578
  "openOnClick": false,
12547
12579
  "closeOnContentClick": false,
12548
12580
  "transition": props.transition,
12581
+ "onAfterEnter": onAfterEnter,
12549
12582
  "onAfterLeave": onAfterLeave
12550
12583
  }, computedMenuProps.value), {
12551
12584
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -12555,11 +12588,10 @@ const VSelect = genericComponent()({
12555
12588
  "onMousedown": e => e.preventDefault(),
12556
12589
  "onKeydown": onListKeydown,
12557
12590
  "onFocusin": onFocusin,
12558
- "onScrollPassive": onListScroll,
12559
12591
  "tabindex": "-1",
12560
12592
  "aria-live": "polite",
12561
12593
  "color": props.itemColor ?? props.color
12562
- }, props.listProps), {
12594
+ }, listEvents, props.listProps), {
12563
12595
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
12564
12596
  "title": t(props.noDataText)
12565
12597
  }, null)), createVNode(VVirtualScroll, {
@@ -12854,7 +12886,7 @@ const VAutocomplete = genericComponent()({
12854
12886
  const menu = computed({
12855
12887
  get: () => _menu.value,
12856
12888
  set: v => {
12857
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12889
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12858
12890
  _menu.value = v;
12859
12891
  }
12860
12892
  });
@@ -12898,10 +12930,7 @@ const VAutocomplete = genericComponent()({
12898
12930
  });
12899
12931
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12900
12932
  const listRef = ref();
12901
- const {
12902
- onListScroll,
12903
- onListKeydown
12904
- } = useScrolling(listRef, vTextFieldRef);
12933
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12905
12934
  function onClear(e) {
12906
12935
  if (props.openOnClear) {
12907
12936
  menu.value = true;
@@ -12920,6 +12949,11 @@ const VAutocomplete = genericComponent()({
12920
12949
  }
12921
12950
  menu.value = !menu.value;
12922
12951
  }
12952
+ function onListKeydown(e) {
12953
+ if (checkPrintable(e)) {
12954
+ vTextFieldRef.value?.focus();
12955
+ }
12956
+ }
12923
12957
  function onKeydown(e) {
12924
12958
  if (props.readonly || form?.isReadonly.value) return;
12925
12959
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -12984,6 +13018,11 @@ const VAutocomplete = genericComponent()({
12984
13018
  }
12985
13019
  }
12986
13020
  }
13021
+ function onAfterEnter() {
13022
+ if (props.eager) {
13023
+ vVirtualScrollRef.value?.calculateVisibleItems();
13024
+ }
13025
+ }
12987
13026
  function onAfterLeave() {
12988
13027
  if (isFocused.value) {
12989
13028
  isPristine.value = true;
@@ -13112,6 +13151,7 @@ const VAutocomplete = genericComponent()({
13112
13151
  "openOnClick": false,
13113
13152
  "closeOnContentClick": false,
13114
13153
  "transition": props.transition,
13154
+ "onAfterEnter": onAfterEnter,
13115
13155
  "onAfterLeave": onAfterLeave
13116
13156
  }, props.menuProps), {
13117
13157
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -13122,11 +13162,10 @@ const VAutocomplete = genericComponent()({
13122
13162
  "onKeydown": onListKeydown,
13123
13163
  "onFocusin": onFocusin,
13124
13164
  "onFocusout": onFocusout,
13125
- "onScrollPassive": onListScroll,
13126
13165
  "tabindex": "-1",
13127
13166
  "aria-live": "polite",
13128
13167
  "color": props.itemColor ?? props.color
13129
- }, props.listProps), {
13168
+ }, listEvents, props.listProps), {
13130
13169
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
13131
13170
  "title": t(props.noDataText)
13132
13171
  }, null)), createVNode(VVirtualScroll, {
@@ -16687,7 +16726,7 @@ const VCombobox = genericComponent()({
16687
16726
  const menu = computed({
16688
16727
  get: () => _menu.value,
16689
16728
  set: v => {
16690
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16729
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16691
16730
  _menu.value = v;
16692
16731
  }
16693
16732
  });
@@ -16770,10 +16809,7 @@ const VCombobox = genericComponent()({
16770
16809
  });
16771
16810
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
16772
16811
  const listRef = ref();
16773
- const {
16774
- onListScroll,
16775
- onListKeydown
16776
- } = useScrolling(listRef, vTextFieldRef);
16812
+ const listEvents = useScrolling(listRef, vTextFieldRef);
16777
16813
  function onClear(e) {
16778
16814
  cleared = true;
16779
16815
  if (props.openOnClear) {
@@ -16792,6 +16828,11 @@ const VCombobox = genericComponent()({
16792
16828
  }
16793
16829
  menu.value = !menu.value;
16794
16830
  }
16831
+ function onListKeydown(e) {
16832
+ if (checkPrintable(e)) {
16833
+ vTextFieldRef.value?.focus();
16834
+ }
16835
+ }
16795
16836
  // eslint-disable-next-line complexity
16796
16837
  function onKeydown(e) {
16797
16838
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -16856,6 +16897,11 @@ const VCombobox = genericComponent()({
16856
16897
  }
16857
16898
  }
16858
16899
  }
16900
+ function onAfterEnter() {
16901
+ if (props.eager) {
16902
+ vVirtualScrollRef.value?.calculateVisibleItems();
16903
+ }
16904
+ }
16859
16905
  function onAfterLeave() {
16860
16906
  if (isFocused.value) {
16861
16907
  isPristine.value = true;
@@ -16980,6 +17026,7 @@ const VCombobox = genericComponent()({
16980
17026
  "openOnClick": false,
16981
17027
  "closeOnContentClick": false,
16982
17028
  "transition": props.transition,
17029
+ "onAfterEnter": onAfterEnter,
16983
17030
  "onAfterLeave": onAfterLeave
16984
17031
  }, props.menuProps), {
16985
17032
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -16990,11 +17037,10 @@ const VCombobox = genericComponent()({
16990
17037
  "onKeydown": onListKeydown,
16991
17038
  "onFocusin": onFocusin,
16992
17039
  "onFocusout": onFocusout,
16993
- "onScrollPassive": onListScroll,
16994
17040
  "tabindex": "-1",
16995
17041
  "aria-live": "polite",
16996
17042
  "color": props.itemColor ?? props.color
16997
- }, props.listProps), {
17043
+ }, listEvents, props.listProps), {
16998
17044
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
16999
17045
  "title": t(props.noDataText)
17000
17046
  }, null)), createVNode(VVirtualScroll, {
@@ -30288,7 +30334,7 @@ function createVuetify$1() {
30288
30334
  goTo
30289
30335
  };
30290
30336
  }
30291
- const version$1 = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
30337
+ const version$1 = "3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce";
30292
30338
  createVuetify$1.version = version$1;
30293
30339
 
30294
30340
  // Vue's inject() can only be used in setup
@@ -30541,7 +30587,7 @@ var index = /*#__PURE__*/Object.freeze({
30541
30587
 
30542
30588
  /* eslint-disable local-rules/sort-imports */
30543
30589
 
30544
- const version = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
30590
+ const version = "3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce";
30545
30591
 
30546
30592
  /* eslint-disable local-rules/sort-imports */
30547
30593