@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
package/dist/vuetify.js CHANGED
@@ -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));
@@ -5359,32 +5373,35 @@
5359
5373
  if (hasLabel.value) {
5360
5374
  const el = labelRef.value.$el;
5361
5375
  const targetEl = floatingLabelRef.value.$el;
5362
- const rect = nullifyTransforms(el);
5363
- const targetRect = targetEl.getBoundingClientRect();
5364
- const x = targetRect.x - rect.x;
5365
- const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
5366
- const targetWidth = targetRect.width / 0.75;
5367
- const width = Math.abs(targetWidth - rect.width) > 1 ? {
5368
- maxWidth: convertToUnit(targetWidth)
5369
- } : undefined;
5370
- const style = getComputedStyle(el);
5371
- const targetStyle = getComputedStyle(targetEl);
5372
- const duration = parseFloat(style.transitionDuration) * 1000 || 150;
5373
- const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
5374
- const color = targetStyle.getPropertyValue('color');
5375
- el.style.visibility = 'visible';
5376
- targetEl.style.visibility = 'hidden';
5377
- animate(el, {
5378
- transform: `translate(${x}px, ${y}px) scale(${scale})`,
5379
- color,
5380
- ...width
5381
- }, {
5382
- duration,
5383
- easing: standardEasing,
5384
- direction: val ? 'normal' : 'reverse'
5385
- }).finished.then(() => {
5386
- el.style.removeProperty('visibility');
5387
- targetEl.style.removeProperty('visibility');
5376
+ requestAnimationFrame(() => {
5377
+ const rect = nullifyTransforms(el);
5378
+ const targetRect = targetEl.getBoundingClientRect();
5379
+ const x = targetRect.x - rect.x;
5380
+ const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
5381
+ const targetWidth = targetRect.width / 0.75;
5382
+ const width = Math.abs(targetWidth - rect.width) > 1 ? {
5383
+ maxWidth: convertToUnit(targetWidth)
5384
+ } : undefined;
5385
+ const style = getComputedStyle(el);
5386
+ const targetStyle = getComputedStyle(targetEl);
5387
+ const duration = parseFloat(style.transitionDuration) * 1000 || 150;
5388
+ const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
5389
+ const color = targetStyle.getPropertyValue('color');
5390
+ el.style.visibility = 'visible';
5391
+ targetEl.style.visibility = 'hidden';
5392
+ animate(el, {
5393
+ transform: `translate(${x}px, ${y}px) scale(${scale})`,
5394
+ color,
5395
+ ...width
5396
+ }, {
5397
+ duration,
5398
+ easing: standardEasing,
5399
+ direction: val ? 'normal' : 'reverse',
5400
+ fill: 'both'
5401
+ }).finished.then(() => {
5402
+ el.style.removeProperty('visibility');
5403
+ targetEl.style.removeProperty('visibility');
5404
+ });
5388
5405
  });
5389
5406
  }
5390
5407
  }, {
@@ -7706,7 +7723,7 @@
7706
7723
  }
7707
7724
  }
7708
7725
  useRender(() => {
7709
- var _slots$prepend, _slots$title, _slots$subtitle, _slots$default, _slots$append;
7726
+ var _slots$title, _slots$subtitle, _slots$default;
7710
7727
  const Tag = isLink.value ? 'a' : props.tag;
7711
7728
  const hasColor = !list || isSelected.value || isActive.value;
7712
7729
  const hasTitle = slots.title || props.title;
@@ -7729,7 +7746,18 @@
7729
7746
  "onClick": onClick,
7730
7747
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
7731
7748
  }, {
7732
- default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode(VDefaultsProvider, {
7749
+ default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
7750
+ "key": "prepend",
7751
+ "class": "v-list-item__prepend"
7752
+ }, [props.prependAvatar && vue.createVNode(VAvatar, {
7753
+ "key": "prepend-avatar",
7754
+ "density": props.density,
7755
+ "image": props.prependAvatar
7756
+ }, null), props.prependIcon && vue.createVNode(VIcon, {
7757
+ "key": "prepend-icon",
7758
+ "density": props.density,
7759
+ "icon": props.prependIcon
7760
+ }, null), slots.prepend && vue.createVNode(VDefaultsProvider, {
7733
7761
  "key": "prepend",
7734
7762
  "defaults": {
7735
7763
  VAvatar: {
@@ -7745,14 +7773,8 @@
7745
7773
  }
7746
7774
  }
7747
7775
  }, {
7748
- default: () => [vue.createVNode("div", {
7749
- "class": "v-list-item__prepend"
7750
- }, [props.prependAvatar && vue.createVNode(VAvatar, {
7751
- "key": "prepend-avatar"
7752
- }, null), props.prependIcon && vue.createVNode(VIcon, {
7753
- "key": "prepend-icon"
7754
- }, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)])]
7755
- }), vue.createVNode("div", {
7776
+ default: () => [slots.prepend(slotProps.value)]
7777
+ })]), vue.createVNode("div", {
7756
7778
  "class": "v-list-item__content",
7757
7779
  "data-no-activator": ""
7758
7780
  }, [hasTitle && vue.createVNode(VListItemTitle, {
@@ -7767,7 +7789,10 @@
7767
7789
  default: () => [((_slots$subtitle = slots.subtitle) == null ? void 0 : _slots$subtitle.call(slots, {
7768
7790
  subtitle: props.subtitle
7769
7791
  })) ?? props.subtitle]
7770
- }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && vue.createVNode(VDefaultsProvider, {
7792
+ }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && vue.createVNode("div", {
7793
+ "key": "append",
7794
+ "class": "v-list-item__append"
7795
+ }, [slots.append && vue.createVNode(VDefaultsProvider, {
7771
7796
  "key": "append",
7772
7797
  "defaults": {
7773
7798
  VAvatar: {
@@ -7783,14 +7808,16 @@
7783
7808
  }
7784
7809
  }
7785
7810
  }, {
7786
- default: () => [vue.createVNode("div", {
7787
- "class": "v-list-item__append"
7788
- }, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value), props.appendIcon && vue.createVNode(VIcon, {
7789
- "key": "append-icon"
7790
- }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7791
- "key": "append-avatar"
7792
- }, null)])]
7793
- })]
7811
+ default: () => [slots.append(slotProps.value)]
7812
+ }), props.appendIcon && vue.createVNode(VIcon, {
7813
+ "key": "append-icon",
7814
+ "density": props.density,
7815
+ "icon": props.appendIcon
7816
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7817
+ "key": "append-avatar",
7818
+ "density": props.density,
7819
+ "image": props.appendAvatar
7820
+ }, null)])]
7794
7821
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
7795
7822
  });
7796
7823
  return {};
@@ -8004,9 +8031,12 @@
8004
8031
 
8005
8032
  // Types
8006
8033
 
8034
+ function isPrimitive(value) {
8035
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
8036
+ }
8007
8037
  function transformItem(props, item) {
8008
8038
  const type = getPropertyFromItem(item, props.itemType, 'item');
8009
- const title = typeof item === 'string' ? item : getPropertyFromItem(item, props.itemTitle);
8039
+ const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
8010
8040
  const value = getPropertyFromItem(item, props.itemValue, undefined);
8011
8041
  const children = getPropertyFromItem(item, props.itemChildren);
8012
8042
  const itemProps = props.itemProps === true ? pick(item, ['children'])[1] : getPropertyFromItem(item, props.itemProps);
@@ -8632,17 +8662,12 @@
8632
8662
  function useLocationStrategies(props, data) {
8633
8663
  const contentStyles = vue.ref({});
8634
8664
  const updateLocation = vue.ref();
8635
- let scope;
8636
- vue.watchEffect(async () => {
8637
- var _scope;
8638
- (_scope = scope) == null ? void 0 : _scope.stop();
8639
- updateLocation.value = undefined;
8640
- if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return;
8641
- scope = vue.effectScope();
8642
- if (!(props.locationStrategy === 'connected')) {
8643
- await vue.nextTick();
8644
- }
8645
- scope.run(() => {
8665
+ if (IN_BROWSER) {
8666
+ useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {
8667
+ vue.watch(() => props.locationStrategy, reset);
8668
+ vue.onScopeDispose(() => {
8669
+ updateLocation.value = undefined;
8670
+ });
8646
8671
  if (typeof props.locationStrategy === 'function') {
8647
8672
  var _props$locationStrate;
8648
8673
  updateLocation.value = (_props$locationStrate = props.locationStrategy(data, props, contentStyles)) == null ? void 0 : _props$locationStrate.updateLocation;
@@ -8651,16 +8676,14 @@
8651
8676
  updateLocation.value = (_locationStrategies$p = locationStrategies[props.locationStrategy](data, props, contentStyles)) == null ? void 0 : _locationStrategies$p.updateLocation;
8652
8677
  }
8653
8678
  });
8654
- });
8655
- IN_BROWSER && window.addEventListener('resize', onResize, {
8656
- passive: true
8657
- });
8658
- vue.onScopeDispose(() => {
8659
- var _scope2;
8660
- IN_BROWSER && window.removeEventListener('resize', onResize);
8661
- updateLocation.value = undefined;
8662
- (_scope2 = scope) == null ? void 0 : _scope2.stop();
8663
- });
8679
+ window.addEventListener('resize', onResize, {
8680
+ passive: true
8681
+ });
8682
+ vue.onScopeDispose(() => {
8683
+ window.removeEventListener('resize', onResize);
8684
+ updateLocation.value = undefined;
8685
+ });
8686
+ }
8664
8687
  function onResize(e) {
8665
8688
  var _updateLocation$value;
8666
8689
  (_updateLocation$value = updateLocation.value) == null ? void 0 : _updateLocation$value.call(updateLocation, e);
@@ -8954,13 +8977,30 @@
8954
8977
  maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),
8955
8978
  maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))
8956
8979
  });
8980
+ return {
8981
+ available,
8982
+ contentBox
8983
+ };
8957
8984
  }
8958
- vue.watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation(), {
8959
- immediate: !activatorFixed
8960
- });
8961
- if (activatorFixed) vue.nextTick(() => updateLocation());
8962
- requestAnimationFrame(() => {
8963
- if (contentStyles.value.maxHeight) updateLocation();
8985
+ vue.watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
8986
+ vue.nextTick(() => {
8987
+ const result = updateLocation();
8988
+
8989
+ // TODO: overflowing content should only require a single updateLocation call
8990
+ // Icky hack to make sure the content is positioned consistently
8991
+ if (!result) return;
8992
+ const {
8993
+ available,
8994
+ contentBox
8995
+ } = result;
8996
+ if (contentBox.height > available.y) {
8997
+ requestAnimationFrame(() => {
8998
+ updateLocation();
8999
+ requestAnimationFrame(() => {
9000
+ updateLocation();
9001
+ });
9002
+ });
9003
+ }
8964
9004
  });
8965
9005
  return {
8966
9006
  updateLocation
@@ -9028,10 +9068,10 @@
9028
9068
  await vue.nextTick();
9029
9069
  scope.run(() => {
9030
9070
  if (typeof props.scrollStrategy === 'function') {
9031
- props.scrollStrategy(data, props);
9071
+ props.scrollStrategy(data, props, scope);
9032
9072
  } else {
9033
9073
  var _scrollStrategies$pro;
9034
- (_scrollStrategies$pro = scrollStrategies[props.scrollStrategy]) == null ? void 0 : _scrollStrategies$pro.call(scrollStrategies, data, props);
9074
+ (_scrollStrategies$pro = scrollStrategies[props.scrollStrategy]) == null ? void 0 : _scrollStrategies$pro.call(scrollStrategies, data, props, scope);
9035
9075
  }
9036
9076
  });
9037
9077
  });
@@ -9077,9 +9117,10 @@
9077
9117
  }
9078
9118
  });
9079
9119
  }
9080
- function repositionScrollStrategy(data) {
9120
+ function repositionScrollStrategy(data, props, scope) {
9081
9121
  let slow = false;
9082
9122
  let raf = -1;
9123
+ let ric = -1;
9083
9124
  function update(e) {
9084
9125
  requestNewFrame(() => {
9085
9126
  var _data$updateLocation$, _data$updateLocation;
@@ -9089,21 +9130,29 @@
9089
9130
  slow = time / (1000 / 60) > 2;
9090
9131
  });
9091
9132
  }
9092
- bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {
9093
- if (slow) {
9094
- // If the position calculation is slow,
9095
- // defer updates until scrolling is finished.
9096
- // Browsers usually fire one scroll event per frame so
9097
- // we just wait until we've got two frames without an event
9098
- cancelAnimationFrame(raf);
9099
- raf = requestAnimationFrame(() => {
9100
- raf = requestAnimationFrame(() => {
9133
+ ric = requestIdleCallback(() => {
9134
+ scope.run(() => {
9135
+ bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {
9136
+ if (slow) {
9137
+ // If the position calculation is slow,
9138
+ // defer updates until scrolling is finished.
9139
+ // Browsers usually fire one scroll event per frame so
9140
+ // we just wait until we've got two frames without an event
9141
+ cancelAnimationFrame(raf);
9142
+ raf = requestAnimationFrame(() => {
9143
+ raf = requestAnimationFrame(() => {
9144
+ update(e);
9145
+ });
9146
+ });
9147
+ } else {
9101
9148
  update(e);
9102
- });
9149
+ }
9103
9150
  });
9104
- } else {
9105
- update(e);
9106
- }
9151
+ });
9152
+ });
9153
+ vue.onScopeDispose(() => {
9154
+ cancelIdleCallback(ric);
9155
+ cancelAnimationFrame(raf);
9107
9156
  });
9108
9157
  }
9109
9158
 
@@ -9746,6 +9795,11 @@
9746
9795
  function onClickOutside() {
9747
9796
  parent == null ? void 0 : parent.closeParents();
9748
9797
  }
9798
+ const activatorProps = vue.computed(() => vue.mergeProps({
9799
+ 'aria-haspopup': 'menu',
9800
+ 'aria-expanded': String(isActive.value),
9801
+ 'aria-owns': id.value
9802
+ }, props.activatorProps));
9749
9803
  useRender(() => {
9750
9804
  const [overlayProps] = filterVOverlayProps(props);
9751
9805
  return vue.createVNode(VOverlay, vue.mergeProps({
@@ -9755,11 +9809,7 @@
9755
9809
  "modelValue": isActive.value,
9756
9810
  "onUpdate:modelValue": $event => isActive.value = $event,
9757
9811
  "absolute": true,
9758
- "activatorProps": vue.mergeProps({
9759
- 'aria-haspopup': 'menu',
9760
- 'aria-expanded': String(isActive.value),
9761
- 'aria-owns': id.value
9762
- }, props.activatorProps),
9812
+ "activatorProps": activatorProps.value,
9763
9813
  "onClick:outside": onClickOutside
9764
9814
  }, scopeId), {
9765
9815
  activator: slots.activator,
@@ -13892,6 +13942,10 @@
13892
13942
  });
13893
13943
  }
13894
13944
  });
13945
+ const activatorProps = vue.computed(() => vue.mergeProps({
13946
+ 'aria-haspopup': 'dialog',
13947
+ 'aria-expanded': String(isActive.value)
13948
+ }, props.activatorProps));
13895
13949
  useRender(() => {
13896
13950
  const [overlayProps] = filterVOverlayProps(props);
13897
13951
  return vue.createVNode(VOverlay, vue.mergeProps({
@@ -13905,10 +13959,7 @@
13905
13959
  "onUpdate:modelValue": $event => isActive.value = $event,
13906
13960
  "aria-role": "dialog",
13907
13961
  "aria-modal": "true",
13908
- "activatorProps": vue.mergeProps({
13909
- 'aria-haspopup': 'dialog',
13910
- 'aria-expanded': String(isActive.value)
13911
- }, props.activatorProps)
13962
+ "activatorProps": activatorProps.value
13912
13963
  }, scopeId), {
13913
13964
  activator: slots.activator,
13914
13965
  default: function () {
@@ -17990,6 +18041,9 @@
17990
18041
  if (props.transition) return props.transition;
17991
18042
  return isActive.value ? 'scale-transition' : 'fade-transition';
17992
18043
  });
18044
+ const activatorProps = vue.computed(() => vue.mergeProps({
18045
+ 'aria-describedby': id.value
18046
+ }, props.activatorProps));
17993
18047
  useRender(() => {
17994
18048
  const [overlayProps] = filterVOverlayProps(props);
17995
18049
  return vue.createVNode(VOverlay, vue.mergeProps({
@@ -18006,9 +18060,7 @@
18006
18060
  "persistent": true,
18007
18061
  "role": "tooltip",
18008
18062
  "eager": true,
18009
- "activatorProps": vue.mergeProps({
18010
- 'aria-describedby': id.value
18011
- }, props.activatorProps),
18063
+ "activatorProps": activatorProps.value,
18012
18064
  "_disableGlobalStack": true
18013
18065
  }, scopeId), {
18014
18066
  activator: slots.activator,
@@ -18394,7 +18446,7 @@
18394
18446
  locale
18395
18447
  };
18396
18448
  }
18397
- const version$1 = "3.1.2";
18449
+ const version$1 = "3.1.3-dev-20230125.0";
18398
18450
  createVuetify$1.version = version$1;
18399
18451
 
18400
18452
  // Vue's inject() can only be used in setup
@@ -18415,7 +18467,7 @@
18415
18467
  ...options
18416
18468
  });
18417
18469
  };
18418
- const version = "3.1.2";
18470
+ const version = "3.1.3-dev-20230125.0";
18419
18471
  createVuetify.version = version;
18420
18472
 
18421
18473
  exports.components = components;