@vuetify/nightly 3.1.2 → 3.1.3-dev-20230125.0

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 (63) hide show
  1. package/CHANGELOG.md +8 -20
  2. package/dist/json/importMap.json +56 -56
  3. package/dist/vuetify-labs.css +630 -630
  4. package/dist/vuetify-labs.d.ts +191 -168
  5. package/dist/vuetify-labs.esm.js +183 -131
  6. package/dist/vuetify-labs.esm.js.map +1 -1
  7. package/dist/vuetify-labs.js +182 -130
  8. package/dist/vuetify-labs.min.css +2 -2
  9. package/dist/vuetify.css +954 -954
  10. package/dist/vuetify.d.ts +207 -184
  11. package/dist/vuetify.esm.js +183 -131
  12. package/dist/vuetify.esm.js.map +1 -1
  13. package/dist/vuetify.js +182 -130
  14. package/dist/vuetify.js.map +1 -1
  15. package/dist/vuetify.min.css +2 -2
  16. package/dist/vuetify.min.js +725 -717
  17. package/dist/vuetify.min.js.map +1 -1
  18. package/lib/blueprints/index.d.ts +2 -2
  19. package/lib/blueprints/md1.d.ts +2 -2
  20. package/lib/blueprints/md2.d.ts +2 -2
  21. package/lib/blueprints/md3.d.ts +2 -2
  22. package/lib/components/VAutocomplete/index.d.ts +43 -20
  23. package/lib/components/VCombobox/index.d.ts +43 -20
  24. package/lib/components/VDefaultsProvider/index.d.ts +5 -4
  25. package/lib/components/VDialog/VDialog.mjs +6 -5
  26. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  27. package/lib/components/VDialog/index.d.ts +57 -34
  28. package/lib/components/VField/VField.mjs +29 -26
  29. package/lib/components/VField/VField.mjs.map +1 -1
  30. package/lib/components/VList/VList.mjs +4 -1
  31. package/lib/components/VList/VList.mjs.map +1 -1
  32. package/lib/components/VList/VListItem.mjs +29 -19
  33. package/lib/components/VList/VListItem.mjs.map +1 -1
  34. package/lib/components/VMenu/VMenu.mjs +6 -5
  35. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  36. package/lib/components/VMenu/index.d.ts +57 -34
  37. package/lib/components/VOverlay/index.d.ts +34 -11
  38. package/lib/components/VOverlay/locationStrategies.mjs +40 -29
  39. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  40. package/lib/components/VOverlay/scrollStrategies.mjs +25 -16
  41. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  42. package/lib/components/VSelect/index.d.ts +43 -20
  43. package/lib/components/VSnackbar/index.d.ts +42 -19
  44. package/lib/components/VTable/VTable.css +4 -4
  45. package/lib/components/VTable/VTable.sass +2 -2
  46. package/lib/components/VTooltip/VTooltip.mjs +4 -3
  47. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  48. package/lib/components/VTooltip/index.d.ts +57 -34
  49. package/lib/components/index.d.ts +192 -168
  50. package/lib/composables/defaults.mjs +1 -1
  51. package/lib/composables/defaults.mjs.map +1 -1
  52. package/lib/composables/toggleScope.mjs +14 -7
  53. package/lib/composables/toggleScope.mjs.map +1 -1
  54. package/lib/entry-bundler.mjs +1 -1
  55. package/lib/entry-bundler.mjs.map +1 -1
  56. package/lib/framework.mjs +1 -1
  57. package/lib/framework.mjs.map +1 -1
  58. package/lib/index.d.ts +18 -18
  59. package/lib/util/defineComponent.mjs +21 -18
  60. package/lib/util/defineComponent.mjs.map +1 -1
  61. package/lib/util/helpers.mjs +5 -1
  62. package/lib/util/helpers.mjs.map +1 -1
  63. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.2
2
+ * Vuetify v3.1.3-dev-20230125.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -262,8 +262,12 @@
262
262
  }
263
263
  function toKebabCase() {
264
264
  let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
265
- return str.replace(/[^a-z]/gi, '-').replace(/\B([A-Z])/g, '-$1').toLowerCase();
265
+ if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str);
266
+ const kebab = str.replace(/[^a-z]/gi, '-').replace(/\B([A-Z])/g, '-$1').toLowerCase();
267
+ toKebabCase.cache.set(str, kebab);
268
+ return kebab;
266
269
  }
270
+ toKebabCase.cache = new Map();
267
271
  function findChildrenWithProvide(key, vnode) {
268
272
  if (!vnode || typeof vnode !== 'object') return [];
269
273
  if (Array.isArray(vnode)) {
@@ -890,7 +894,7 @@
890
894
 
891
895
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
892
896
  function createDefaults(options) {
893
- return vue.ref(options ?? {});
897
+ return vue.ref(options);
894
898
  }
895
899
  function useDefaults() {
896
900
  const defaults = vue.inject(DefaultsSymbol);
@@ -922,23 +926,30 @@
922
926
  return newDefaults;
923
927
  }
924
928
 
925
- function useToggleScope(source, cb) {
929
+ function useToggleScope(source, fn) {
926
930
  let scope;
931
+ function start() {
932
+ scope = vue.effectScope();
933
+ scope.run(() => fn.length ? fn(() => {
934
+ var _scope;
935
+ (_scope = scope) == null ? void 0 : _scope.stop();
936
+ start();
937
+ }) : fn());
938
+ }
927
939
  vue.watch(source, active => {
928
940
  if (active && !scope) {
929
- scope = vue.effectScope();
930
- scope.run(cb);
941
+ start();
931
942
  } else if (!active) {
932
- var _scope;
933
- (_scope = scope) == null ? void 0 : _scope.stop();
943
+ var _scope2;
944
+ (_scope2 = scope) == null ? void 0 : _scope2.stop();
934
945
  scope = undefined;
935
946
  }
936
947
  }, {
937
948
  immediate: true
938
949
  });
939
950
  vue.onScopeDispose(() => {
940
- var _scope2;
941
- (_scope2 = scope) == null ? void 0 : _scope2.stop();
951
+ var _scope3;
952
+ (_scope3 = scope) == null ? void 0 : _scope3.stop();
942
953
  });
943
954
  }
944
955
 
@@ -1007,33 +1018,36 @@
1007
1018
  options.props = propsFactory(options.props, toKebabCase(options.name))();
1008
1019
  options.props._as = String;
1009
1020
  options.setup = function setup(props, ctx) {
1010
- const vm = vue.getCurrentInstance();
1011
1021
  const defaults = useDefaults();
1012
- const _subcomponentDefaults = vue.shallowRef();
1013
- const _props = vue.shallowReactive({
1014
- ...vue.toRaw(props)
1022
+
1023
+ // Skip props proxy if defaults are not provided
1024
+ if (!defaults.value) return options._setup(props, ctx);
1025
+ const vm = vue.getCurrentInstance();
1026
+ const componentDefaults = vue.computed(() => defaults.value[props._as ?? options.name]);
1027
+ const _props = new Proxy(props, {
1028
+ get(target, prop) {
1029
+ if (!propIsDefined(vm.vnode, prop)) {
1030
+ var _componentDefaults$va, _global;
1031
+ return ((_componentDefaults$va = componentDefaults.value) == null ? void 0 : _componentDefaults$va[prop]) ?? ((_global = defaults.value.global) == null ? void 0 : _global[prop]) ?? target[prop];
1032
+ }
1033
+ return Reflect.get(target, prop);
1034
+ }
1015
1035
  });
1036
+ const _subcomponentDefaults = vue.shallowRef();
1016
1037
  vue.watchEffect(() => {
1017
- const globalDefaults = defaults.value.global;
1018
- const componentDefaults = defaults.value[props._as ?? options.name];
1019
- if (componentDefaults) {
1020
- const subComponents = Object.entries(componentDefaults).filter(_ref => {
1038
+ if (componentDefaults.value) {
1039
+ const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1021
1040
  let [key] = _ref;
1022
1041
  return key.startsWith(key[0].toUpperCase());
1023
1042
  });
1024
1043
  if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1025
1044
  }
1026
- for (const prop of Object.keys(props)) {
1027
- let newVal = props[prop];
1028
- if (!propIsDefined(vm.vnode, prop)) {
1029
- newVal = (componentDefaults == null ? void 0 : componentDefaults[prop]) ?? (globalDefaults == null ? void 0 : globalDefaults[prop]) ?? props[prop];
1030
- }
1031
- if (_props[prop] !== newVal) {
1032
- _props[prop] = newVal;
1033
- }
1034
- }
1035
1045
  });
1036
1046
  const setupBindings = options._setup(_props, ctx);
1047
+
1048
+ // If subcomponent defaults are provided, override any
1049
+ // subcomponents provided by the component's setup function.
1050
+ // This uses injectSelf so must be done after the original setup to work.
1037
1051
  useToggleScope(_subcomponentDefaults, () => {
1038
1052
  var _injectSelf;
1039
1053
  provideDefaults(mergeDeep(((_injectSelf = injectSelf(DefaultsSymbol)) == null ? void 0 : _injectSelf.value) ?? {}, _subcomponentDefaults.value));
@@ -5363,32 +5377,35 @@
5363
5377
  if (hasLabel.value) {
5364
5378
  const el = labelRef.value.$el;
5365
5379
  const targetEl = floatingLabelRef.value.$el;
5366
- const rect = nullifyTransforms(el);
5367
- const targetRect = targetEl.getBoundingClientRect();
5368
- const x = targetRect.x - rect.x;
5369
- const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
5370
- const targetWidth = targetRect.width / 0.75;
5371
- const width = Math.abs(targetWidth - rect.width) > 1 ? {
5372
- maxWidth: convertToUnit(targetWidth)
5373
- } : undefined;
5374
- const style = getComputedStyle(el);
5375
- const targetStyle = getComputedStyle(targetEl);
5376
- const duration = parseFloat(style.transitionDuration) * 1000 || 150;
5377
- const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
5378
- const color = targetStyle.getPropertyValue('color');
5379
- el.style.visibility = 'visible';
5380
- targetEl.style.visibility = 'hidden';
5381
- animate(el, {
5382
- transform: `translate(${x}px, ${y}px) scale(${scale})`,
5383
- color,
5384
- ...width
5385
- }, {
5386
- duration,
5387
- easing: standardEasing,
5388
- direction: val ? 'normal' : 'reverse'
5389
- }).finished.then(() => {
5390
- el.style.removeProperty('visibility');
5391
- targetEl.style.removeProperty('visibility');
5380
+ requestAnimationFrame(() => {
5381
+ const rect = nullifyTransforms(el);
5382
+ const targetRect = targetEl.getBoundingClientRect();
5383
+ const x = targetRect.x - rect.x;
5384
+ const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
5385
+ const targetWidth = targetRect.width / 0.75;
5386
+ const width = Math.abs(targetWidth - rect.width) > 1 ? {
5387
+ maxWidth: convertToUnit(targetWidth)
5388
+ } : undefined;
5389
+ const style = getComputedStyle(el);
5390
+ const targetStyle = getComputedStyle(targetEl);
5391
+ const duration = parseFloat(style.transitionDuration) * 1000 || 150;
5392
+ const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
5393
+ const color = targetStyle.getPropertyValue('color');
5394
+ el.style.visibility = 'visible';
5395
+ targetEl.style.visibility = 'hidden';
5396
+ animate(el, {
5397
+ transform: `translate(${x}px, ${y}px) scale(${scale})`,
5398
+ color,
5399
+ ...width
5400
+ }, {
5401
+ duration,
5402
+ easing: standardEasing,
5403
+ direction: val ? 'normal' : 'reverse',
5404
+ fill: 'both'
5405
+ }).finished.then(() => {
5406
+ el.style.removeProperty('visibility');
5407
+ targetEl.style.removeProperty('visibility');
5408
+ });
5392
5409
  });
5393
5410
  }
5394
5411
  }, {
@@ -7710,7 +7727,7 @@
7710
7727
  }
7711
7728
  }
7712
7729
  useRender(() => {
7713
- var _slots$prepend, _slots$title, _slots$subtitle, _slots$default, _slots$append;
7730
+ var _slots$title, _slots$subtitle, _slots$default;
7714
7731
  const Tag = isLink.value ? 'a' : props.tag;
7715
7732
  const hasColor = !list || isSelected.value || isActive.value;
7716
7733
  const hasTitle = slots.title || props.title;
@@ -7733,7 +7750,18 @@
7733
7750
  "onClick": onClick,
7734
7751
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
7735
7752
  }, {
7736
- default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode(VDefaultsProvider, {
7753
+ default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
7754
+ "key": "prepend",
7755
+ "class": "v-list-item__prepend"
7756
+ }, [props.prependAvatar && vue.createVNode(VAvatar, {
7757
+ "key": "prepend-avatar",
7758
+ "density": props.density,
7759
+ "image": props.prependAvatar
7760
+ }, null), props.prependIcon && vue.createVNode(VIcon, {
7761
+ "key": "prepend-icon",
7762
+ "density": props.density,
7763
+ "icon": props.prependIcon
7764
+ }, null), slots.prepend && vue.createVNode(VDefaultsProvider, {
7737
7765
  "key": "prepend",
7738
7766
  "defaults": {
7739
7767
  VAvatar: {
@@ -7749,14 +7777,8 @@
7749
7777
  }
7750
7778
  }
7751
7779
  }, {
7752
- default: () => [vue.createVNode("div", {
7753
- "class": "v-list-item__prepend"
7754
- }, [props.prependAvatar && vue.createVNode(VAvatar, {
7755
- "key": "prepend-avatar"
7756
- }, null), props.prependIcon && vue.createVNode(VIcon, {
7757
- "key": "prepend-icon"
7758
- }, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)])]
7759
- }), vue.createVNode("div", {
7780
+ default: () => [slots.prepend(slotProps.value)]
7781
+ })]), vue.createVNode("div", {
7760
7782
  "class": "v-list-item__content",
7761
7783
  "data-no-activator": ""
7762
7784
  }, [hasTitle && vue.createVNode(VListItemTitle, {
@@ -7771,7 +7793,10 @@
7771
7793
  default: () => [((_slots$subtitle = slots.subtitle) == null ? void 0 : _slots$subtitle.call(slots, {
7772
7794
  subtitle: props.subtitle
7773
7795
  })) ?? props.subtitle]
7774
- }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && vue.createVNode(VDefaultsProvider, {
7796
+ }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && vue.createVNode("div", {
7797
+ "key": "append",
7798
+ "class": "v-list-item__append"
7799
+ }, [slots.append && vue.createVNode(VDefaultsProvider, {
7775
7800
  "key": "append",
7776
7801
  "defaults": {
7777
7802
  VAvatar: {
@@ -7787,14 +7812,16 @@
7787
7812
  }
7788
7813
  }
7789
7814
  }, {
7790
- default: () => [vue.createVNode("div", {
7791
- "class": "v-list-item__append"
7792
- }, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value), props.appendIcon && vue.createVNode(VIcon, {
7793
- "key": "append-icon"
7794
- }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7795
- "key": "append-avatar"
7796
- }, null)])]
7797
- })]
7815
+ default: () => [slots.append(slotProps.value)]
7816
+ }), props.appendIcon && vue.createVNode(VIcon, {
7817
+ "key": "append-icon",
7818
+ "density": props.density,
7819
+ "icon": props.appendIcon
7820
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7821
+ "key": "append-avatar",
7822
+ "density": props.density,
7823
+ "image": props.appendAvatar
7824
+ }, null)])]
7798
7825
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
7799
7826
  });
7800
7827
  return {};
@@ -8008,9 +8035,12 @@
8008
8035
 
8009
8036
  // Types
8010
8037
 
8038
+ function isPrimitive(value) {
8039
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
8040
+ }
8011
8041
  function transformItem(props, item) {
8012
8042
  const type = getPropertyFromItem(item, props.itemType, 'item');
8013
- const title = typeof item === 'string' ? item : getPropertyFromItem(item, props.itemTitle);
8043
+ const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
8014
8044
  const value = getPropertyFromItem(item, props.itemValue, undefined);
8015
8045
  const children = getPropertyFromItem(item, props.itemChildren);
8016
8046
  const itemProps = props.itemProps === true ? pick(item, ['children'])[1] : getPropertyFromItem(item, props.itemProps);
@@ -8636,17 +8666,12 @@
8636
8666
  function useLocationStrategies(props, data) {
8637
8667
  const contentStyles = vue.ref({});
8638
8668
  const updateLocation = vue.ref();
8639
- let scope;
8640
- vue.watchEffect(async () => {
8641
- var _scope;
8642
- (_scope = scope) == null ? void 0 : _scope.stop();
8643
- updateLocation.value = undefined;
8644
- if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return;
8645
- scope = vue.effectScope();
8646
- if (!(props.locationStrategy === 'connected')) {
8647
- await vue.nextTick();
8648
- }
8649
- scope.run(() => {
8669
+ if (IN_BROWSER) {
8670
+ useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {
8671
+ vue.watch(() => props.locationStrategy, reset);
8672
+ vue.onScopeDispose(() => {
8673
+ updateLocation.value = undefined;
8674
+ });
8650
8675
  if (typeof props.locationStrategy === 'function') {
8651
8676
  var _props$locationStrate;
8652
8677
  updateLocation.value = (_props$locationStrate = props.locationStrategy(data, props, contentStyles)) == null ? void 0 : _props$locationStrate.updateLocation;
@@ -8655,16 +8680,14 @@
8655
8680
  updateLocation.value = (_locationStrategies$p = locationStrategies[props.locationStrategy](data, props, contentStyles)) == null ? void 0 : _locationStrategies$p.updateLocation;
8656
8681
  }
8657
8682
  });
8658
- });
8659
- IN_BROWSER && window.addEventListener('resize', onResize, {
8660
- passive: true
8661
- });
8662
- vue.onScopeDispose(() => {
8663
- var _scope2;
8664
- IN_BROWSER && window.removeEventListener('resize', onResize);
8665
- updateLocation.value = undefined;
8666
- (_scope2 = scope) == null ? void 0 : _scope2.stop();
8667
- });
8683
+ window.addEventListener('resize', onResize, {
8684
+ passive: true
8685
+ });
8686
+ vue.onScopeDispose(() => {
8687
+ window.removeEventListener('resize', onResize);
8688
+ updateLocation.value = undefined;
8689
+ });
8690
+ }
8668
8691
  function onResize(e) {
8669
8692
  var _updateLocation$value;
8670
8693
  (_updateLocation$value = updateLocation.value) == null ? void 0 : _updateLocation$value.call(updateLocation, e);
@@ -8958,13 +8981,30 @@
8958
8981
  maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),
8959
8982
  maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))
8960
8983
  });
8984
+ return {
8985
+ available,
8986
+ contentBox
8987
+ };
8961
8988
  }
8962
- vue.watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation(), {
8963
- immediate: !activatorFixed
8964
- });
8965
- if (activatorFixed) vue.nextTick(() => updateLocation());
8966
- requestAnimationFrame(() => {
8967
- if (contentStyles.value.maxHeight) updateLocation();
8989
+ vue.watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
8990
+ vue.nextTick(() => {
8991
+ const result = updateLocation();
8992
+
8993
+ // TODO: overflowing content should only require a single updateLocation call
8994
+ // Icky hack to make sure the content is positioned consistently
8995
+ if (!result) return;
8996
+ const {
8997
+ available,
8998
+ contentBox
8999
+ } = result;
9000
+ if (contentBox.height > available.y) {
9001
+ requestAnimationFrame(() => {
9002
+ updateLocation();
9003
+ requestAnimationFrame(() => {
9004
+ updateLocation();
9005
+ });
9006
+ });
9007
+ }
8968
9008
  });
8969
9009
  return {
8970
9010
  updateLocation
@@ -9032,10 +9072,10 @@
9032
9072
  await vue.nextTick();
9033
9073
  scope.run(() => {
9034
9074
  if (typeof props.scrollStrategy === 'function') {
9035
- props.scrollStrategy(data, props);
9075
+ props.scrollStrategy(data, props, scope);
9036
9076
  } else {
9037
9077
  var _scrollStrategies$pro;
9038
- (_scrollStrategies$pro = scrollStrategies[props.scrollStrategy]) == null ? void 0 : _scrollStrategies$pro.call(scrollStrategies, data, props);
9078
+ (_scrollStrategies$pro = scrollStrategies[props.scrollStrategy]) == null ? void 0 : _scrollStrategies$pro.call(scrollStrategies, data, props, scope);
9039
9079
  }
9040
9080
  });
9041
9081
  });
@@ -9081,9 +9121,10 @@
9081
9121
  }
9082
9122
  });
9083
9123
  }
9084
- function repositionScrollStrategy(data) {
9124
+ function repositionScrollStrategy(data, props, scope) {
9085
9125
  let slow = false;
9086
9126
  let raf = -1;
9127
+ let ric = -1;
9087
9128
  function update(e) {
9088
9129
  requestNewFrame(() => {
9089
9130
  var _data$updateLocation$, _data$updateLocation;
@@ -9093,21 +9134,29 @@
9093
9134
  slow = time / (1000 / 60) > 2;
9094
9135
  });
9095
9136
  }
9096
- bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {
9097
- if (slow) {
9098
- // If the position calculation is slow,
9099
- // defer updates until scrolling is finished.
9100
- // Browsers usually fire one scroll event per frame so
9101
- // we just wait until we've got two frames without an event
9102
- cancelAnimationFrame(raf);
9103
- raf = requestAnimationFrame(() => {
9104
- raf = requestAnimationFrame(() => {
9137
+ ric = requestIdleCallback(() => {
9138
+ scope.run(() => {
9139
+ bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {
9140
+ if (slow) {
9141
+ // If the position calculation is slow,
9142
+ // defer updates until scrolling is finished.
9143
+ // Browsers usually fire one scroll event per frame so
9144
+ // we just wait until we've got two frames without an event
9145
+ cancelAnimationFrame(raf);
9146
+ raf = requestAnimationFrame(() => {
9147
+ raf = requestAnimationFrame(() => {
9148
+ update(e);
9149
+ });
9150
+ });
9151
+ } else {
9105
9152
  update(e);
9106
- });
9153
+ }
9107
9154
  });
9108
- } else {
9109
- update(e);
9110
- }
9155
+ });
9156
+ });
9157
+ vue.onScopeDispose(() => {
9158
+ cancelIdleCallback(ric);
9159
+ cancelAnimationFrame(raf);
9111
9160
  });
9112
9161
  }
9113
9162
 
@@ -9750,6 +9799,11 @@
9750
9799
  function onClickOutside() {
9751
9800
  parent == null ? void 0 : parent.closeParents();
9752
9801
  }
9802
+ const activatorProps = vue.computed(() => vue.mergeProps({
9803
+ 'aria-haspopup': 'menu',
9804
+ 'aria-expanded': String(isActive.value),
9805
+ 'aria-owns': id.value
9806
+ }, props.activatorProps));
9753
9807
  useRender(() => {
9754
9808
  const [overlayProps] = filterVOverlayProps(props);
9755
9809
  return vue.createVNode(VOverlay, vue.mergeProps({
@@ -9759,11 +9813,7 @@
9759
9813
  "modelValue": isActive.value,
9760
9814
  "onUpdate:modelValue": $event => isActive.value = $event,
9761
9815
  "absolute": true,
9762
- "activatorProps": vue.mergeProps({
9763
- 'aria-haspopup': 'menu',
9764
- 'aria-expanded': String(isActive.value),
9765
- 'aria-owns': id.value
9766
- }, props.activatorProps),
9816
+ "activatorProps": activatorProps.value,
9767
9817
  "onClick:outside": onClickOutside
9768
9818
  }, scopeId), {
9769
9819
  activator: slots.activator,
@@ -13896,6 +13946,10 @@
13896
13946
  });
13897
13947
  }
13898
13948
  });
13949
+ const activatorProps = vue.computed(() => vue.mergeProps({
13950
+ 'aria-haspopup': 'dialog',
13951
+ 'aria-expanded': String(isActive.value)
13952
+ }, props.activatorProps));
13899
13953
  useRender(() => {
13900
13954
  const [overlayProps] = filterVOverlayProps(props);
13901
13955
  return vue.createVNode(VOverlay, vue.mergeProps({
@@ -13909,10 +13963,7 @@
13909
13963
  "onUpdate:modelValue": $event => isActive.value = $event,
13910
13964
  "aria-role": "dialog",
13911
13965
  "aria-modal": "true",
13912
- "activatorProps": vue.mergeProps({
13913
- 'aria-haspopup': 'dialog',
13914
- 'aria-expanded': String(isActive.value)
13915
- }, props.activatorProps)
13966
+ "activatorProps": activatorProps.value
13916
13967
  }, scopeId), {
13917
13968
  activator: slots.activator,
13918
13969
  default: function () {
@@ -17994,6 +18045,9 @@
17994
18045
  if (props.transition) return props.transition;
17995
18046
  return isActive.value ? 'scale-transition' : 'fade-transition';
17996
18047
  });
18048
+ const activatorProps = vue.computed(() => vue.mergeProps({
18049
+ 'aria-describedby': id.value
18050
+ }, props.activatorProps));
17997
18051
  useRender(() => {
17998
18052
  const [overlayProps] = filterVOverlayProps(props);
17999
18053
  return vue.createVNode(VOverlay, vue.mergeProps({
@@ -18010,9 +18064,7 @@
18010
18064
  "persistent": true,
18011
18065
  "role": "tooltip",
18012
18066
  "eager": true,
18013
- "activatorProps": vue.mergeProps({
18014
- 'aria-describedby': id.value
18015
- }, props.activatorProps),
18067
+ "activatorProps": activatorProps.value,
18016
18068
  "_disableGlobalStack": true
18017
18069
  }, scopeId), {
18018
18070
  activator: slots.activator,
@@ -20157,7 +20209,7 @@
20157
20209
  locale
20158
20210
  };
20159
20211
  }
20160
- const version$1 = "3.1.2";
20212
+ const version$1 = "3.1.3-dev-20230125.0";
20161
20213
  createVuetify$1.version = version$1;
20162
20214
 
20163
20215
  // Vue's inject() can only be used in setup
@@ -20170,7 +20222,7 @@
20170
20222
  }
20171
20223
  }
20172
20224
 
20173
- const version = "3.1.2";
20225
+ const version = "3.1.3-dev-20230125.0";
20174
20226
 
20175
20227
  const createVuetify = function () {
20176
20228
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};