@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
  */
@@ -498,6 +498,11 @@ function templateRef() {
498
498
  });
499
499
  return fn;
500
500
  }
501
+ function checkPrintable(e) {
502
+ const isPrintableChar = e.key.length === 1;
503
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
504
+ return isPrintableChar && noModifier;
505
+ }
501
506
 
502
507
  // Utilities
503
508
  const block = ['top', 'bottom'];
@@ -10509,7 +10514,8 @@ const makeActivatorProps = propsFactory({
10509
10514
  function useActivator(props, _ref) {
10510
10515
  let {
10511
10516
  isActive,
10512
- isTop
10517
+ isTop,
10518
+ contentEl
10513
10519
  } = _ref;
10514
10520
  const vm = getCurrentInstance('useActivator');
10515
10521
  const activatorEl = ref();
@@ -10626,7 +10632,7 @@ function useActivator(props, _ref) {
10626
10632
  return events;
10627
10633
  });
10628
10634
  watch(isTop, val => {
10629
- if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
10635
+ if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {
10630
10636
  isActive.value = false;
10631
10637
  }
10632
10638
  });
@@ -11032,6 +11038,9 @@ const VOverlay = genericComponent()({
11032
11038
  attrs,
11033
11039
  emit
11034
11040
  } = _ref;
11041
+ const root = ref();
11042
+ const scrimEl = ref();
11043
+ const contentEl = ref();
11035
11044
  const model = useProxiedModel(props, 'modelValue');
11036
11045
  const isActive = computed({
11037
11046
  get: () => model.value,
@@ -11069,7 +11078,8 @@ const VOverlay = genericComponent()({
11069
11078
  scrimEvents
11070
11079
  } = useActivator(props, {
11071
11080
  isActive,
11072
- isTop: localTop
11081
+ isTop: localTop,
11082
+ contentEl
11073
11083
  });
11074
11084
  const {
11075
11085
  teleportTarget
@@ -11090,9 +11100,6 @@ const VOverlay = genericComponent()({
11090
11100
  watch(() => props.disabled, v => {
11091
11101
  if (v) isActive.value = false;
11092
11102
  });
11093
- const root = ref();
11094
- const scrimEl = ref();
11095
- const contentEl = ref();
11096
11103
  const {
11097
11104
  contentStyles,
11098
11105
  updateLocation
@@ -11343,10 +11350,12 @@ const makeVMenuProps = propsFactory({
11343
11350
  // TODO
11344
11351
  // disableKeys: Boolean,
11345
11352
  id: String,
11353
+ submenu: Boolean,
11346
11354
  ...omit(makeVOverlayProps({
11347
11355
  closeDelay: 250,
11348
11356
  closeOnContentClick: true,
11349
11357
  locationStrategy: 'connected',
11358
+ location: undefined,
11350
11359
  openDelay: 300,
11351
11360
  scrim: false,
11352
11361
  scrollStrategy: 'reposition',
@@ -11369,27 +11378,32 @@ const VMenu = genericComponent()({
11369
11378
  const {
11370
11379
  scopeId
11371
11380
  } = useScopeId();
11381
+ const {
11382
+ isRtl
11383
+ } = useRtl();
11372
11384
  const uid = getUid();
11373
11385
  const id = computed(() => props.id || `v-menu-${uid}`);
11374
11386
  const overlay = ref();
11375
11387
  const parent = inject$1(VMenuSymbol, null);
11376
- const openChildren = shallowRef(0);
11388
+ const openChildren = shallowRef(new Set());
11377
11389
  provide(VMenuSymbol, {
11378
11390
  register() {
11379
- ++openChildren.value;
11391
+ openChildren.value.add(uid);
11380
11392
  },
11381
11393
  unregister() {
11382
- --openChildren.value;
11394
+ openChildren.value.delete(uid);
11383
11395
  },
11384
11396
  closeParents(e) {
11385
11397
  setTimeout(() => {
11386
- if (!openChildren.value && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11398
+ if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11387
11399
  isActive.value = false;
11388
11400
  parent?.closeParents();
11389
11401
  }
11390
11402
  }, 40);
11391
11403
  }
11392
11404
  });
11405
+ onBeforeUnmount(() => parent?.unregister());
11406
+ onDeactivated(() => isActive.value = false);
11393
11407
  async function onFocusIn(e) {
11394
11408
  const before = e.relatedTarget;
11395
11409
  const after = e.target;
@@ -11432,6 +11446,9 @@ const VMenu = genericComponent()({
11432
11446
  } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
11433
11447
  isActive.value = false;
11434
11448
  parent?.closeParents();
11449
+ } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11450
+ isActive.value = false;
11451
+ overlay.value?.activatorEl?.focus();
11435
11452
  }
11436
11453
  }
11437
11454
  function onActivatorKeydown(e) {
@@ -11440,12 +11457,21 @@ const VMenu = genericComponent()({
11440
11457
  if (el && isActive.value) {
11441
11458
  if (e.key === 'ArrowDown') {
11442
11459
  e.preventDefault();
11460
+ e.stopImmediatePropagation();
11443
11461
  focusChild(el, 'next');
11444
11462
  } else if (e.key === 'ArrowUp') {
11445
11463
  e.preventDefault();
11464
+ e.stopImmediatePropagation();
11446
11465
  focusChild(el, 'prev');
11466
+ } else if (props.submenu) {
11467
+ if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11468
+ isActive.value = false;
11469
+ } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
11470
+ e.preventDefault();
11471
+ focusChild(el, 'first');
11472
+ }
11447
11473
  }
11448
- } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
11474
+ } else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
11449
11475
  isActive.value = true;
11450
11476
  e.preventDefault();
11451
11477
  setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
@@ -11469,6 +11495,7 @@ const VMenu = genericComponent()({
11469
11495
  "onUpdate:modelValue": $event => isActive.value = $event,
11470
11496
  "absolute": true,
11471
11497
  "activatorProps": activatorProps.value,
11498
+ "location": props.location ?? (props.submenu ? 'end' : 'bottom'),
11472
11499
  "onClick:outside": onClickOutside,
11473
11500
  "onKeydown": onKeydown
11474
11501
  }, scopeId), {
@@ -12301,6 +12328,7 @@ function useVirtual(props, items) {
12301
12328
  deep: true
12302
12329
  });
12303
12330
  return {
12331
+ calculateVisibleItems,
12304
12332
  containerRef,
12305
12333
  markerRef,
12306
12334
  computedItems,
@@ -12364,6 +12392,7 @@ const VVirtualScroll = genericComponent()({
12364
12392
  dimensionStyles
12365
12393
  } = useDimension(props);
12366
12394
  const {
12395
+ calculateVisibleItems,
12367
12396
  containerRef,
12368
12397
  markerRef,
12369
12398
  handleScroll,
@@ -12435,6 +12464,7 @@ const VVirtualScroll = genericComponent()({
12435
12464
  }, [children])]);
12436
12465
  });
12437
12466
  return {
12467
+ calculateVisibleItems,
12438
12468
  scrollToIndex
12439
12469
  };
12440
12470
  }
@@ -12503,9 +12533,9 @@ function useScrolling(listRef, textFieldRef) {
12503
12533
  }
12504
12534
  }
12505
12535
  return {
12506
- onListScroll,
12507
- onListKeydown
12508
- };
12536
+ onScrollPassive: onListScroll,
12537
+ onKeydown: onListKeydown
12538
+ }; // typescript doesn't know about vue's event merging
12509
12539
  }
12510
12540
 
12511
12541
  // Types
@@ -12580,7 +12610,7 @@ const VSelect = genericComponent()({
12580
12610
  const menu = computed({
12581
12611
  get: () => _menu.value,
12582
12612
  set: v => {
12583
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12613
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12584
12614
  _menu.value = v;
12585
12615
  }
12586
12616
  });
@@ -12619,10 +12649,7 @@ const VSelect = genericComponent()({
12619
12649
  };
12620
12650
  });
12621
12651
  const listRef = ref();
12622
- const {
12623
- onListScroll,
12624
- onListKeydown
12625
- } = useScrolling(listRef, vTextFieldRef);
12652
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12626
12653
  function onClear(e) {
12627
12654
  if (props.openOnClear) {
12628
12655
  menu.value = true;
@@ -12632,6 +12659,11 @@ const VSelect = genericComponent()({
12632
12659
  if (menuDisabled.value) return;
12633
12660
  menu.value = !menu.value;
12634
12661
  }
12662
+ function onListKeydown(e) {
12663
+ if (checkPrintable(e)) {
12664
+ onKeydown(e);
12665
+ }
12666
+ }
12635
12667
  function onKeydown(e) {
12636
12668
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12637
12669
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12652,11 +12684,6 @@ const VSelect = genericComponent()({
12652
12684
  // html select hotkeys
12653
12685
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12654
12686
 
12655
- function checkPrintable(e) {
12656
- const isPrintableChar = e.key.length === 1;
12657
- const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
12658
- return isPrintableChar && noModifier;
12659
- }
12660
12687
  if (props.multiple || !checkPrintable(e)) return;
12661
12688
  const now = performance.now();
12662
12689
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12701,6 +12728,11 @@ const VSelect = genericComponent()({
12701
12728
  menu.value = false;
12702
12729
  }
12703
12730
  }
12731
+ function onAfterEnter() {
12732
+ if (props.eager) {
12733
+ vVirtualScrollRef.value?.calculateVisibleItems();
12734
+ }
12735
+ }
12704
12736
  function onAfterLeave() {
12705
12737
  if (isFocused.value) {
12706
12738
  vTextFieldRef.value?.focus();
@@ -12779,6 +12811,7 @@ const VSelect = genericComponent()({
12779
12811
  "openOnClick": false,
12780
12812
  "closeOnContentClick": false,
12781
12813
  "transition": props.transition,
12814
+ "onAfterEnter": onAfterEnter,
12782
12815
  "onAfterLeave": onAfterLeave
12783
12816
  }, computedMenuProps.value), {
12784
12817
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -12788,11 +12821,10 @@ const VSelect = genericComponent()({
12788
12821
  "onMousedown": e => e.preventDefault(),
12789
12822
  "onKeydown": onListKeydown,
12790
12823
  "onFocusin": onFocusin,
12791
- "onScrollPassive": onListScroll,
12792
12824
  "tabindex": "-1",
12793
12825
  "aria-live": "polite",
12794
12826
  "color": props.itemColor ?? props.color
12795
- }, props.listProps), {
12827
+ }, listEvents, props.listProps), {
12796
12828
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
12797
12829
  "title": t(props.noDataText)
12798
12830
  }, null)), createVNode(VVirtualScroll, {
@@ -13087,7 +13119,7 @@ const VAutocomplete = genericComponent()({
13087
13119
  const menu = computed({
13088
13120
  get: () => _menu.value,
13089
13121
  set: v => {
13090
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
13122
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
13091
13123
  _menu.value = v;
13092
13124
  }
13093
13125
  });
@@ -13131,10 +13163,7 @@ const VAutocomplete = genericComponent()({
13131
13163
  });
13132
13164
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
13133
13165
  const listRef = ref();
13134
- const {
13135
- onListScroll,
13136
- onListKeydown
13137
- } = useScrolling(listRef, vTextFieldRef);
13166
+ const listEvents = useScrolling(listRef, vTextFieldRef);
13138
13167
  function onClear(e) {
13139
13168
  if (props.openOnClear) {
13140
13169
  menu.value = true;
@@ -13153,6 +13182,11 @@ const VAutocomplete = genericComponent()({
13153
13182
  }
13154
13183
  menu.value = !menu.value;
13155
13184
  }
13185
+ function onListKeydown(e) {
13186
+ if (checkPrintable(e)) {
13187
+ vTextFieldRef.value?.focus();
13188
+ }
13189
+ }
13156
13190
  function onKeydown(e) {
13157
13191
  if (props.readonly || form?.isReadonly.value) return;
13158
13192
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -13217,6 +13251,11 @@ const VAutocomplete = genericComponent()({
13217
13251
  }
13218
13252
  }
13219
13253
  }
13254
+ function onAfterEnter() {
13255
+ if (props.eager) {
13256
+ vVirtualScrollRef.value?.calculateVisibleItems();
13257
+ }
13258
+ }
13220
13259
  function onAfterLeave() {
13221
13260
  if (isFocused.value) {
13222
13261
  isPristine.value = true;
@@ -13345,6 +13384,7 @@ const VAutocomplete = genericComponent()({
13345
13384
  "openOnClick": false,
13346
13385
  "closeOnContentClick": false,
13347
13386
  "transition": props.transition,
13387
+ "onAfterEnter": onAfterEnter,
13348
13388
  "onAfterLeave": onAfterLeave
13349
13389
  }, props.menuProps), {
13350
13390
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -13355,11 +13395,10 @@ const VAutocomplete = genericComponent()({
13355
13395
  "onKeydown": onListKeydown,
13356
13396
  "onFocusin": onFocusin,
13357
13397
  "onFocusout": onFocusout,
13358
- "onScrollPassive": onListScroll,
13359
13398
  "tabindex": "-1",
13360
13399
  "aria-live": "polite",
13361
13400
  "color": props.itemColor ?? props.color
13362
- }, props.listProps), {
13401
+ }, listEvents, props.listProps), {
13363
13402
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
13364
13403
  "title": t(props.noDataText)
13365
13404
  }, null)), createVNode(VVirtualScroll, {
@@ -16920,7 +16959,7 @@ const VCombobox = genericComponent()({
16920
16959
  const menu = computed({
16921
16960
  get: () => _menu.value,
16922
16961
  set: v => {
16923
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16962
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16924
16963
  _menu.value = v;
16925
16964
  }
16926
16965
  });
@@ -17003,10 +17042,7 @@ const VCombobox = genericComponent()({
17003
17042
  });
17004
17043
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
17005
17044
  const listRef = ref();
17006
- const {
17007
- onListScroll,
17008
- onListKeydown
17009
- } = useScrolling(listRef, vTextFieldRef);
17045
+ const listEvents = useScrolling(listRef, vTextFieldRef);
17010
17046
  function onClear(e) {
17011
17047
  cleared = true;
17012
17048
  if (props.openOnClear) {
@@ -17025,6 +17061,11 @@ const VCombobox = genericComponent()({
17025
17061
  }
17026
17062
  menu.value = !menu.value;
17027
17063
  }
17064
+ function onListKeydown(e) {
17065
+ if (checkPrintable(e)) {
17066
+ vTextFieldRef.value?.focus();
17067
+ }
17068
+ }
17028
17069
  // eslint-disable-next-line complexity
17029
17070
  function onKeydown(e) {
17030
17071
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -17089,6 +17130,11 @@ const VCombobox = genericComponent()({
17089
17130
  }
17090
17131
  }
17091
17132
  }
17133
+ function onAfterEnter() {
17134
+ if (props.eager) {
17135
+ vVirtualScrollRef.value?.calculateVisibleItems();
17136
+ }
17137
+ }
17092
17138
  function onAfterLeave() {
17093
17139
  if (isFocused.value) {
17094
17140
  isPristine.value = true;
@@ -17213,6 +17259,7 @@ const VCombobox = genericComponent()({
17213
17259
  "openOnClick": false,
17214
17260
  "closeOnContentClick": false,
17215
17261
  "transition": props.transition,
17262
+ "onAfterEnter": onAfterEnter,
17216
17263
  "onAfterLeave": onAfterLeave
17217
17264
  }, props.menuProps), {
17218
17265
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -17223,11 +17270,10 @@ const VCombobox = genericComponent()({
17223
17270
  "onKeydown": onListKeydown,
17224
17271
  "onFocusin": onFocusin,
17225
17272
  "onFocusout": onFocusout,
17226
- "onScrollPassive": onListScroll,
17227
17273
  "tabindex": "-1",
17228
17274
  "aria-live": "polite",
17229
17275
  "color": props.itemColor ?? props.color
17230
- }, props.listProps), {
17276
+ }, listEvents, props.listProps), {
17231
17277
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
17232
17278
  "title": t(props.noDataText)
17233
17279
  }, null)), createVNode(VVirtualScroll, {
@@ -28155,7 +28201,7 @@ function createVuetify$1() {
28155
28201
  goTo
28156
28202
  };
28157
28203
  }
28158
- const version$1 = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
28204
+ const version$1 = "3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce";
28159
28205
  createVuetify$1.version = version$1;
28160
28206
 
28161
28207
  // Vue's inject() can only be used in setup
@@ -28180,7 +28226,7 @@ const createVuetify = function () {
28180
28226
  ...options
28181
28227
  });
28182
28228
  };
28183
- const version = "3.6.13-3.7.0-beta.0.0-dev.2024-07-24";
28229
+ const version = "3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce";
28184
28230
  createVuetify.version = version;
28185
28231
 
28186
28232
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };