@vuetify/nightly 3.2.0-next-20230118.0 → 4.0.0-master-20230206.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 (177) hide show
  1. package/CHANGELOG.md +204 -16
  2. package/dist/json/attributes.json +7202 -0
  3. package/dist/json/importMap-labs.json +4 -0
  4. package/dist/json/importMap.json +50 -50
  5. package/dist/json/tags.json +2492 -0
  6. package/dist/json/web-types.json +24081 -0
  7. package/dist/vuetify-labs.css +183 -176
  8. package/dist/vuetify-labs.d.ts +387 -176
  9. package/dist/vuetify-labs.esm.js +284 -216
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +283 -215
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +51 -44
  14. package/dist/vuetify.d.ts +329 -190
  15. package/dist/vuetify.esm.js +251 -186
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +250 -185
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +696 -685
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/index.d.ts +2 -2
  23. package/lib/blueprints/md1.d.ts +2 -2
  24. package/lib/blueprints/md2.d.ts +2 -2
  25. package/lib/blueprints/md3.d.ts +2 -2
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  28. package/lib/components/VAutocomplete/index.d.ts +43 -20
  29. package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -4
  30. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
  31. package/lib/components/VBtn/VBtn.css +7 -7
  32. package/lib/components/VBtn/VBtn.mjs +8 -3
  33. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  34. package/lib/components/VBtnGroup/VBtnGroup.mjs +15 -11
  35. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  36. package/lib/components/VBtnGroup/index.d.ts +2 -1
  37. package/lib/components/VBtnToggle/VBtnToggle.mjs +9 -5
  38. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  39. package/lib/components/VBtnToggle/index.d.ts +122 -1
  40. package/lib/components/VCalendar/VCalendar.mjs +3 -0
  41. package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
  42. package/lib/components/VCalendar/VCalendarCategory.sass +9 -3
  43. package/lib/components/VCalendar/VCalendarDaily.mjs +20 -8
  44. package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
  45. package/lib/components/VCalendar/VCalendarWeekly.mjs +25 -5
  46. package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
  47. package/lib/components/VCalendar/mixins/calendar-with-events.mjs +20 -16
  48. package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
  49. package/lib/components/VCalendar/mixins/mouse.mjs +16 -30
  50. package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
  51. package/lib/components/VCard/VCard.css +7 -7
  52. package/lib/components/VChip/VChip.css +7 -7
  53. package/lib/components/VCombobox/VCombobox.mjs +3 -3
  54. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  55. package/lib/components/VCombobox/index.d.ts +43 -20
  56. package/lib/components/VData/VData.mjs +2 -4
  57. package/lib/components/VData/VData.mjs.map +1 -1
  58. package/lib/components/VDatePicker/VDatePicker.mjs +7 -5
  59. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  60. package/lib/components/VDefaultsProvider/index.d.ts +5 -4
  61. package/lib/components/VDialog/VDialog.mjs +6 -5
  62. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  63. package/lib/components/VDialog/index.d.ts +57 -34
  64. package/lib/components/VDivider/VDivider.mjs +6 -6
  65. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  66. package/lib/components/VExpansionPanel/VExpansionPanel.css +7 -7
  67. package/lib/components/VField/VField.css +2 -2
  68. package/lib/components/VField/VField.mjs +28 -26
  69. package/lib/components/VField/VField.mjs.map +1 -1
  70. package/lib/components/VField/VField.sass +2 -2
  71. package/lib/components/VFileInput/VFileInput.mjs +7 -4
  72. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  73. package/lib/components/VForm/index.d.ts +0 -3
  74. package/lib/components/VList/VList.mjs +4 -1
  75. package/lib/components/VList/VList.mjs.map +1 -1
  76. package/lib/components/VList/VListItem.css +7 -7
  77. package/lib/components/VList/VListItem.mjs +29 -19
  78. package/lib/components/VList/VListItem.mjs.map +1 -1
  79. package/lib/components/VMenu/VMenu.mjs +6 -5
  80. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  81. package/lib/components/VMenu/index.d.ts +57 -34
  82. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +4 -0
  83. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  84. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  85. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +4 -0
  86. package/lib/components/VNavigationDrawer/index.d.ts +3 -3
  87. package/lib/components/VNavigationDrawer/touch.mjs +7 -6
  88. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  89. package/lib/components/VOtpInput/VOtpInput.mjs +22 -46
  90. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  91. package/lib/components/VOverflowBtn/VOverflowBtn.mjs +3 -0
  92. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  93. package/lib/components/VOverlay/index.d.ts +34 -11
  94. package/lib/components/VOverlay/locationStrategies.mjs +40 -29
  95. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  96. package/lib/components/VOverlay/scrollStrategies.mjs +25 -16
  97. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  98. package/lib/components/VPagination/VPagination.mjs +1 -1
  99. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  100. package/lib/components/VSelect/VSelect.mjs +3 -4
  101. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  102. package/lib/components/VSelect/index.d.ts +43 -20
  103. package/lib/components/VSelectionControl/VSelectionControl.css +2 -2
  104. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -1
  105. package/lib/components/VSnackbar/index.d.ts +42 -19
  106. package/lib/components/VStepper/VStepper.sass +6 -6
  107. package/lib/components/VStepper/VStepperStep.mjs +12 -2
  108. package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
  109. package/lib/components/VTable/VTable.css +4 -4
  110. package/lib/components/VTable/VTable.sass +2 -2
  111. package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
  112. package/lib/components/VTimeline/_mixins.sass +1 -1
  113. package/lib/components/VTooltip/VTooltip.mjs +4 -3
  114. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  115. package/lib/components/VTooltip/index.d.ts +57 -34
  116. package/lib/components/VTreeview/VTreeview.mjs +1 -1
  117. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  118. package/lib/components/index.d.ts +316 -176
  119. package/lib/composables/defaults.mjs +1 -1
  120. package/lib/composables/defaults.mjs.map +1 -1
  121. package/lib/composables/filter.mjs +3 -3
  122. package/lib/composables/filter.mjs.map +1 -1
  123. package/lib/composables/form.mjs +0 -1
  124. package/lib/composables/form.mjs.map +1 -1
  125. package/lib/composables/nested/nested.mjs +2 -1
  126. package/lib/composables/nested/nested.mjs.map +1 -1
  127. package/lib/composables/toggleScope.mjs +14 -7
  128. package/lib/composables/toggleScope.mjs.map +1 -1
  129. package/lib/directives/ripple/VRipple.css +3 -0
  130. package/lib/directives/ripple/VRipple.sass +3 -0
  131. package/lib/directives/ripple/_variables.scss +1 -1
  132. package/lib/directives/ripple/index.mjs +2 -7
  133. package/lib/directives/ripple/index.mjs.map +1 -1
  134. package/lib/entry-bundler.mjs +1 -1
  135. package/lib/entry-bundler.mjs.map +1 -1
  136. package/lib/framework.mjs +1 -1
  137. package/lib/framework.mjs.map +1 -1
  138. package/lib/index.d.ts +16 -16
  139. package/lib/labs/VDataTable/VDataTable.mjs +6 -6
  140. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  141. package/lib/labs/VDataTable/VDataTableFooter.mjs +1 -1
  142. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  143. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  144. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  145. package/lib/labs/VDataTable/VDataTableServer.mjs +19 -12
  146. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  147. package/lib/labs/VDataTable/VDataTableVirtual.mjs +6 -5
  148. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  149. package/lib/labs/VDataTable/composables/options.mjs +3 -7
  150. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  151. package/lib/labs/VDataTable/composables/paginate.mjs +1 -1
  152. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  153. package/lib/labs/VDataTable/index.d.ts +71 -1
  154. package/lib/labs/VDataTable/index.mjs +1 -0
  155. package/lib/labs/VDataTable/index.mjs.map +1 -1
  156. package/lib/labs/components.d.ts +71 -1
  157. package/lib/locale/adapters/vue-i18n.mjs +12 -2
  158. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  159. package/lib/locale/ar.mjs +20 -20
  160. package/lib/locale/ar.mjs.map +1 -1
  161. package/lib/locale/en.mjs +2 -2
  162. package/lib/locale/en.mjs.map +1 -1
  163. package/lib/locale/es.mjs +3 -3
  164. package/lib/locale/es.mjs.map +1 -1
  165. package/lib/locale/fi.mjs +5 -5
  166. package/lib/locale/fi.mjs.map +1 -1
  167. package/lib/locale/it.mjs +6 -6
  168. package/lib/locale/it.mjs.map +1 -1
  169. package/lib/locale/sv.mjs +13 -13
  170. package/lib/locale/sv.mjs.map +1 -1
  171. package/lib/styles/settings/_variables.scss +6 -6
  172. package/lib/styles/tools/_states.sass +3 -3
  173. package/lib/util/defineComponent.mjs +21 -18
  174. package/lib/util/defineComponent.mjs.map +1 -1
  175. package/lib/util/helpers.mjs +5 -19
  176. package/lib/util/helpers.mjs.map +1 -1
  177. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.2.0-next-20230118.0
2
+ * Vuetify v4.0.0-master-20230206.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, getCurrentInstance as getCurrentInstance$1, unref, provide, inject as inject$1, effectScope, onScopeDispose, shallowRef, shallowReactive, toRaw, defineComponent as defineComponent$1, camelize, h, onDeactivated, onActivated, onMounted, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, getCurrentInstance as getCurrentInstance$1, unref, provide, inject as inject$1, onScopeDispose, effectScope, shallowRef, defineComponent as defineComponent$1, camelize, h, onDeactivated, onActivated, onMounted, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -258,8 +258,12 @@ function mergeDeep() {
258
258
  }
259
259
  function toKebabCase() {
260
260
  let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
261
- return str.replace(/[^a-z]/gi, '-').replace(/\B([A-Z])/g, '-$1').toLowerCase();
261
+ if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str);
262
+ const kebab = str.replace(/[^a-z]/gi, '-').replace(/\B([A-Z])/g, '-$1').toLowerCase();
263
+ toKebabCase.cache.set(str, kebab);
264
+ return kebab;
262
265
  }
266
+ toKebabCase.cache = new Map();
263
267
  function findChildrenWithProvide(key, vnode) {
264
268
  if (!vnode || typeof vnode !== 'object') return [];
265
269
  if (Array.isArray(vnode)) {
@@ -886,7 +890,7 @@ function injectSelf(key) {
886
890
 
887
891
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
888
892
  function createDefaults(options) {
889
- return ref(options ?? {});
893
+ return ref(options);
890
894
  }
891
895
  function useDefaults() {
892
896
  const defaults = inject$1(DefaultsSymbol);
@@ -918,23 +922,30 @@ function provideDefaults(defaults, options) {
918
922
  return newDefaults;
919
923
  }
920
924
 
921
- function useToggleScope(source, cb) {
925
+ function useToggleScope(source, fn) {
922
926
  let scope;
927
+ function start() {
928
+ scope = effectScope();
929
+ scope.run(() => fn.length ? fn(() => {
930
+ var _scope;
931
+ (_scope = scope) == null ? void 0 : _scope.stop();
932
+ start();
933
+ }) : fn());
934
+ }
923
935
  watch(source, active => {
924
936
  if (active && !scope) {
925
- scope = effectScope();
926
- scope.run(cb);
937
+ start();
927
938
  } else if (!active) {
928
- var _scope;
929
- (_scope = scope) == null ? void 0 : _scope.stop();
939
+ var _scope2;
940
+ (_scope2 = scope) == null ? void 0 : _scope2.stop();
930
941
  scope = undefined;
931
942
  }
932
943
  }, {
933
944
  immediate: true
934
945
  });
935
946
  onScopeDispose(() => {
936
- var _scope2;
937
- (_scope2 = scope) == null ? void 0 : _scope2.stop();
947
+ var _scope3;
948
+ (_scope3 = scope) == null ? void 0 : _scope3.stop();
938
949
  });
939
950
  }
940
951
 
@@ -1003,33 +1014,36 @@ const defineComponent = function defineComponent(options) {
1003
1014
  options.props = propsFactory(options.props, toKebabCase(options.name))();
1004
1015
  options.props._as = String;
1005
1016
  options.setup = function setup(props, ctx) {
1006
- const vm = getCurrentInstance$1();
1007
1017
  const defaults = useDefaults();
1008
- const _subcomponentDefaults = shallowRef();
1009
- const _props = shallowReactive({
1010
- ...toRaw(props)
1018
+
1019
+ // Skip props proxy if defaults are not provided
1020
+ if (!defaults.value) return options._setup(props, ctx);
1021
+ const vm = getCurrentInstance$1();
1022
+ const componentDefaults = computed(() => defaults.value[props._as ?? options.name]);
1023
+ const _props = new Proxy(props, {
1024
+ get(target, prop) {
1025
+ if (!propIsDefined(vm.vnode, prop)) {
1026
+ var _componentDefaults$va, _global;
1027
+ return ((_componentDefaults$va = componentDefaults.value) == null ? void 0 : _componentDefaults$va[prop]) ?? ((_global = defaults.value.global) == null ? void 0 : _global[prop]) ?? target[prop];
1028
+ }
1029
+ return Reflect.get(target, prop);
1030
+ }
1011
1031
  });
1032
+ const _subcomponentDefaults = shallowRef();
1012
1033
  watchEffect(() => {
1013
- const globalDefaults = defaults.value.global;
1014
- const componentDefaults = defaults.value[props._as ?? options.name];
1015
- if (componentDefaults) {
1016
- const subComponents = Object.entries(componentDefaults).filter(_ref => {
1034
+ if (componentDefaults.value) {
1035
+ const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1017
1036
  let [key] = _ref;
1018
1037
  return key.startsWith(key[0].toUpperCase());
1019
1038
  });
1020
1039
  if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1021
1040
  }
1022
- for (const prop of Object.keys(props)) {
1023
- let newVal = props[prop];
1024
- if (!propIsDefined(vm.vnode, prop)) {
1025
- newVal = (componentDefaults == null ? void 0 : componentDefaults[prop]) ?? (globalDefaults == null ? void 0 : globalDefaults[prop]) ?? props[prop];
1026
- }
1027
- if (_props[prop] !== newVal) {
1028
- _props[prop] = newVal;
1029
- }
1030
- }
1031
1041
  });
1032
1042
  const setupBindings = options._setup(_props, ctx);
1043
+
1044
+ // If subcomponent defaults are provided, override any
1045
+ // subcomponents provided by the component's setup function.
1046
+ // This uses injectSelf so must be done after the original setup to work.
1033
1047
  useToggleScope(_subcomponentDefaults, () => {
1034
1048
  var _injectSelf;
1035
1049
  provideDefaults(mergeDeep(((_injectSelf = injectSelf(DefaultsSymbol)) == null ? void 0 : _injectSelf.value) ?? {}, _subcomponentDefaults.value));
@@ -1888,8 +1902,8 @@ var en = {
1888
1902
  root: 'Pagination Navigation',
1889
1903
  next: 'Next page',
1890
1904
  previous: 'Previous page',
1891
- page: 'Goto Page {0}',
1892
- currentPage: 'Page {0}, Current Page',
1905
+ page: 'Go to page {0}',
1906
+ currentPage: 'Page {0}, Current page',
1893
1907
  first: 'First page',
1894
1908
  last: 'Last page'
1895
1909
  }
@@ -3364,18 +3378,21 @@ function useVariant(props) {
3364
3378
  };
3365
3379
  }
3366
3380
 
3381
+ // Types
3382
+
3383
+ const makeVBtnGroupProps = propsFactory({
3384
+ divided: Boolean,
3385
+ ...makeBorderProps(),
3386
+ ...makeDensityProps(),
3387
+ ...makeElevationProps(),
3388
+ ...makeRoundedProps(),
3389
+ ...makeTagProps(),
3390
+ ...makeThemeProps(),
3391
+ ...makeVariantProps()
3392
+ }, 'v-btn-group');
3367
3393
  const VBtnGroup = defineComponent({
3368
3394
  name: 'VBtnGroup',
3369
- props: {
3370
- divided: Boolean,
3371
- ...makeBorderProps(),
3372
- ...makeDensityProps(),
3373
- ...makeElevationProps(),
3374
- ...makeRoundedProps(),
3375
- ...makeTagProps(),
3376
- ...makeThemeProps(),
3377
- ...makeVariantProps()
3378
- },
3395
+ props: makeVBtnGroupProps(),
3379
3396
  setup(props, _ref) {
3380
3397
  let {
3381
3398
  slots
@@ -3413,6 +3430,9 @@ const VBtnGroup = defineComponent({
3413
3430
  });
3414
3431
  }
3415
3432
  });
3433
+ function filterVBtnGroupProps(props) {
3434
+ return pick(props, Object.keys(VBtnGroup.props));
3435
+ }
3416
3436
 
3417
3437
  // Composables
3418
3438
 
@@ -3620,7 +3640,10 @@ function getValues(items, ids) {
3620
3640
  const VBtnToggleSymbol = Symbol.for('vuetify:v-btn-toggle');
3621
3641
  const VBtnToggle = genericComponent()({
3622
3642
  name: 'VBtnToggle',
3623
- props: makeGroupProps(),
3643
+ props: {
3644
+ ...makeVBtnGroupProps(),
3645
+ ...makeGroupProps()
3646
+ },
3624
3647
  emits: {
3625
3648
  'update:modelValue': value => true
3626
3649
  },
@@ -3637,9 +3660,10 @@ const VBtnToggle = genericComponent()({
3637
3660
  } = useGroup(props, VBtnToggleSymbol);
3638
3661
  useRender(() => {
3639
3662
  var _slots$default;
3640
- return createVNode(VBtnGroup, {
3663
+ const [btnGroupProps] = filterVBtnGroupProps(props);
3664
+ return createVNode(VBtnGroup, mergeProps({
3641
3665
  "class": "v-btn-toggle"
3642
- }, {
3666
+ }, btnGroupProps), {
3643
3667
  default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
3644
3668
  isSelected,
3645
3669
  next,
@@ -4094,9 +4118,6 @@ function transform(el, value) {
4094
4118
  el.style.transform = value;
4095
4119
  el.style.webkitTransform = value;
4096
4120
  }
4097
- function opacity(el, value) {
4098
- el.style.opacity = `calc(${value} * var(--v-theme-overlay-multiplier))`;
4099
- }
4100
4121
  function isTouchEvent(e) {
4101
4122
  return e.constructor.name === 'TouchEvent';
4102
4123
  }
@@ -4172,13 +4193,11 @@ const ripples = {
4172
4193
  animation.classList.add('v-ripple__animation--enter');
4173
4194
  animation.classList.add('v-ripple__animation--visible');
4174
4195
  transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
4175
- opacity(animation, 0);
4176
4196
  animation.dataset.activated = String(performance.now());
4177
4197
  setTimeout(() => {
4178
4198
  animation.classList.remove('v-ripple__animation--enter');
4179
4199
  animation.classList.add('v-ripple__animation--in');
4180
4200
  transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
4181
- opacity(animation, 0.08);
4182
4201
  }, 0);
4183
4202
  },
4184
4203
  hide(el) {
@@ -4193,14 +4212,14 @@ const ripples = {
4193
4212
  setTimeout(() => {
4194
4213
  animation.classList.remove('v-ripple__animation--in');
4195
4214
  animation.classList.add('v-ripple__animation--out');
4196
- opacity(animation, 0);
4197
4215
  setTimeout(() => {
4216
+ var _animation$parentNode;
4198
4217
  const ripples = el.getElementsByClassName('v-ripple__animation');
4199
4218
  if (ripples.length === 1 && el.dataset.previousPosition) {
4200
4219
  el.style.position = el.dataset.previousPosition;
4201
4220
  delete el.dataset.previousPosition;
4202
4221
  }
4203
- animation.parentNode && el.removeChild(animation.parentNode);
4222
+ if (((_animation$parentNode = animation.parentNode) == null ? void 0 : _animation$parentNode.parentNode) === el) el.removeChild(animation.parentNode);
4204
4223
  }, 300);
4205
4224
  }, delay);
4206
4225
  }
@@ -4853,14 +4872,18 @@ const VBtn = defineComponent({
4853
4872
  const isElevated = computed(() => {
4854
4873
  return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);
4855
4874
  });
4875
+ const valueAttr = computed(() => {
4876
+ if (props.value === undefined) return undefined;
4877
+ return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
4878
+ });
4856
4879
  useSelectLink(link, group == null ? void 0 : group.select);
4857
4880
  useRender(() => {
4858
- var _slots$prepend, _slots$default, _slots$append, _slots$loader;
4881
+ var _link$isActive2, _link$isActive3, _slots$prepend, _slots$default, _slots$append, _slots$loader;
4859
4882
  const Tag = link.isLink.value ? 'a' : props.tag;
4860
- const hasColor = !group || isActive.value;
4861
4883
  const hasPrepend = !!(props.prependIcon || slots.prepend);
4862
4884
  const hasAppend = !!(props.appendIcon || slots.append);
4863
4885
  const hasIcon = !!(props.icon && props.icon !== true);
4886
+ const hasColor = (group == null ? void 0 : group.isSelected.value) && (!link.isLink.value || ((_link$isActive2 = link.isActive) == null ? void 0 : _link$isActive2.value)) || !group || ((_link$isActive3 = link.isActive) == null ? void 0 : _link$isActive3.value);
4864
4887
  return withDirectives(createVNode(Tag, {
4865
4888
  "type": Tag === 'a' ? undefined : 'button',
4866
4889
  "class": ['v-btn', group == null ? void 0 : group.selectedClass.value, {
@@ -4881,7 +4904,8 @@ const VBtn = defineComponent({
4881
4904
  if (isDisabled.value) return;
4882
4905
  (_link$navigate = link.navigate) == null ? void 0 : _link$navigate.call(link, e);
4883
4906
  group == null ? void 0 : group.toggle();
4884
- }
4907
+ },
4908
+ "value": valueAttr.value
4885
4909
  }, {
4886
4910
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode(VDefaultsProvider, {
4887
4911
  "key": "prepend",
@@ -5355,32 +5379,34 @@ const VField = genericComponent()({
5355
5379
  if (hasLabel.value) {
5356
5380
  const el = labelRef.value.$el;
5357
5381
  const targetEl = floatingLabelRef.value.$el;
5358
- const rect = nullifyTransforms(el);
5359
- const targetRect = targetEl.getBoundingClientRect();
5360
- const x = targetRect.x - rect.x;
5361
- const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
5362
- const targetWidth = targetRect.width / 0.75;
5363
- const width = Math.abs(targetWidth - rect.width) > 1 ? {
5364
- maxWidth: convertToUnit(targetWidth)
5365
- } : undefined;
5366
- const style = getComputedStyle(el);
5367
- const targetStyle = getComputedStyle(targetEl);
5368
- const duration = parseFloat(style.transitionDuration) * 1000 || 150;
5369
- const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
5370
- const color = targetStyle.getPropertyValue('color');
5371
- el.style.visibility = 'visible';
5372
- targetEl.style.visibility = 'hidden';
5373
- animate(el, {
5374
- transform: `translate(${x}px, ${y}px) scale(${scale})`,
5375
- color,
5376
- ...width
5377
- }, {
5378
- duration,
5379
- easing: standardEasing,
5380
- direction: val ? 'normal' : 'reverse'
5381
- }).finished.then(() => {
5382
- el.style.removeProperty('visibility');
5383
- targetEl.style.removeProperty('visibility');
5382
+ requestAnimationFrame(() => {
5383
+ const rect = nullifyTransforms(el);
5384
+ const targetRect = targetEl.getBoundingClientRect();
5385
+ const x = targetRect.x - rect.x;
5386
+ const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
5387
+ const targetWidth = targetRect.width / 0.75;
5388
+ const width = Math.abs(targetWidth - rect.width) > 1 ? {
5389
+ maxWidth: convertToUnit(targetWidth)
5390
+ } : undefined;
5391
+ const style = getComputedStyle(el);
5392
+ const targetStyle = getComputedStyle(targetEl);
5393
+ const duration = parseFloat(style.transitionDuration) * 1000 || 150;
5394
+ const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'));
5395
+ const color = targetStyle.getPropertyValue('color');
5396
+ el.style.visibility = 'visible';
5397
+ targetEl.style.visibility = 'hidden';
5398
+ animate(el, {
5399
+ transform: `translate(${x}px, ${y}px) scale(${scale})`,
5400
+ color,
5401
+ ...width
5402
+ }, {
5403
+ duration,
5404
+ easing: standardEasing,
5405
+ direction: val ? 'normal' : 'reverse'
5406
+ }).finished.then(() => {
5407
+ el.style.removeProperty('visibility');
5408
+ targetEl.style.removeProperty('visibility');
5409
+ });
5384
5410
  });
5385
5411
  }
5386
5412
  }, {
@@ -5569,7 +5595,6 @@ const FormKey = Symbol.for('vuetify:form');
5569
5595
  const makeFormProps = propsFactory({
5570
5596
  disabled: Boolean,
5571
5597
  fastFail: Boolean,
5572
- lazyValidation: Boolean,
5573
5598
  readonly: Boolean,
5574
5599
  modelValue: {
5575
5600
  type: Boolean,
@@ -6973,9 +6998,9 @@ const VDivider = defineComponent({
6973
6998
  themeClasses
6974
6999
  } = provideTheme(props);
6975
7000
  const {
6976
- backgroundColorClasses,
6977
- backgroundColorStyles
6978
- } = useBackgroundColor(toRef(props, 'color'));
7001
+ textColorClasses,
7002
+ textColorStyles
7003
+ } = useTextColor(toRef(props, 'color'));
6979
7004
  const dividerStyles = computed(() => {
6980
7005
  const styles = {};
6981
7006
  if (props.length) {
@@ -6991,8 +7016,8 @@ const VDivider = defineComponent({
6991
7016
  'v-divider': true,
6992
7017
  'v-divider--inset': props.inset,
6993
7018
  'v-divider--vertical': props.vertical
6994
- }, themeClasses.value, backgroundColorClasses.value],
6995
- "style": [dividerStyles.value, backgroundColorStyles.value],
7019
+ }, themeClasses.value, textColorClasses.value],
7020
+ "style": [dividerStyles.value, textColorStyles.value],
6996
7021
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
6997
7022
  "role": `${attrs.role || 'separator'}`
6998
7023
  }, null));
@@ -7430,7 +7455,8 @@ const useNested = props => {
7430
7455
  };
7431
7456
  const useNestedItem = (id, isGroup) => {
7432
7457
  const parent = inject$1(VNestedSymbol, emptyNested);
7433
- const computedId = computed(() => id.value ?? Symbol(getUid()));
7458
+ const uidSymbol = Symbol(getUid());
7459
+ const computedId = computed(() => id.value ?? uidSymbol);
7434
7460
  const item = {
7435
7461
  ...parent,
7436
7462
  id: computedId,
@@ -7702,7 +7728,7 @@ const VListItem = genericComponent()({
7702
7728
  }
7703
7729
  }
7704
7730
  useRender(() => {
7705
- var _slots$prepend, _slots$title, _slots$subtitle, _slots$default, _slots$append;
7731
+ var _slots$title, _slots$subtitle, _slots$default;
7706
7732
  const Tag = isLink.value ? 'a' : props.tag;
7707
7733
  const hasColor = !list || isSelected.value || isActive.value;
7708
7734
  const hasTitle = slots.title || props.title;
@@ -7725,7 +7751,18 @@ const VListItem = genericComponent()({
7725
7751
  "onClick": onClick,
7726
7752
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
7727
7753
  }, {
7728
- default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode(VDefaultsProvider, {
7754
+ default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode("div", {
7755
+ "key": "prepend",
7756
+ "class": "v-list-item__prepend"
7757
+ }, [props.prependAvatar && createVNode(VAvatar, {
7758
+ "key": "prepend-avatar",
7759
+ "density": props.density,
7760
+ "image": props.prependAvatar
7761
+ }, null), props.prependIcon && createVNode(VIcon, {
7762
+ "key": "prepend-icon",
7763
+ "density": props.density,
7764
+ "icon": props.prependIcon
7765
+ }, null), slots.prepend && createVNode(VDefaultsProvider, {
7729
7766
  "key": "prepend",
7730
7767
  "defaults": {
7731
7768
  VAvatar: {
@@ -7741,14 +7778,8 @@ const VListItem = genericComponent()({
7741
7778
  }
7742
7779
  }
7743
7780
  }, {
7744
- default: () => [createVNode("div", {
7745
- "class": "v-list-item__prepend"
7746
- }, [props.prependAvatar && createVNode(VAvatar, {
7747
- "key": "prepend-avatar"
7748
- }, null), props.prependIcon && createVNode(VIcon, {
7749
- "key": "prepend-icon"
7750
- }, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)])]
7751
- }), createVNode("div", {
7781
+ default: () => [slots.prepend(slotProps.value)]
7782
+ })]), createVNode("div", {
7752
7783
  "class": "v-list-item__content",
7753
7784
  "data-no-activator": ""
7754
7785
  }, [hasTitle && createVNode(VListItemTitle, {
@@ -7763,7 +7794,10 @@ const VListItem = genericComponent()({
7763
7794
  default: () => [((_slots$subtitle = slots.subtitle) == null ? void 0 : _slots$subtitle.call(slots, {
7764
7795
  subtitle: props.subtitle
7765
7796
  })) ?? props.subtitle]
7766
- }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && createVNode(VDefaultsProvider, {
7797
+ }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && createVNode("div", {
7798
+ "key": "append",
7799
+ "class": "v-list-item__append"
7800
+ }, [slots.append && createVNode(VDefaultsProvider, {
7767
7801
  "key": "append",
7768
7802
  "defaults": {
7769
7803
  VAvatar: {
@@ -7779,14 +7813,16 @@ const VListItem = genericComponent()({
7779
7813
  }
7780
7814
  }
7781
7815
  }, {
7782
- default: () => [createVNode("div", {
7783
- "class": "v-list-item__append"
7784
- }, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value), props.appendIcon && createVNode(VIcon, {
7785
- "key": "append-icon"
7786
- }, null), props.appendAvatar && createVNode(VAvatar, {
7787
- "key": "append-avatar"
7788
- }, null)])]
7789
- })]
7816
+ default: () => [slots.append(slotProps.value)]
7817
+ }), props.appendIcon && createVNode(VIcon, {
7818
+ "key": "append-icon",
7819
+ "density": props.density,
7820
+ "icon": props.appendIcon
7821
+ }, null), props.appendAvatar && createVNode(VAvatar, {
7822
+ "key": "append-avatar",
7823
+ "density": props.density,
7824
+ "image": props.appendAvatar
7825
+ }, null)])]
7790
7826
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
7791
7827
  });
7792
7828
  return {};
@@ -8000,9 +8036,12 @@ function useItems(props) {
8000
8036
 
8001
8037
  // Types
8002
8038
 
8039
+ function isPrimitive(value) {
8040
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
8041
+ }
8003
8042
  function transformItem(props, item) {
8004
8043
  const type = getPropertyFromItem(item, props.itemType, 'item');
8005
- const title = typeof item === 'string' ? item : getPropertyFromItem(item, props.itemTitle);
8044
+ const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
8006
8045
  const value = getPropertyFromItem(item, props.itemValue, undefined);
8007
8046
  const children = getPropertyFromItem(item, props.itemChildren);
8008
8047
  const itemProps = props.itemProps === true ? pick(item, ['children'])[1] : getPropertyFromItem(item, props.itemProps);
@@ -8628,17 +8667,12 @@ const makeLocationStrategyProps = propsFactory({
8628
8667
  function useLocationStrategies(props, data) {
8629
8668
  const contentStyles = ref({});
8630
8669
  const updateLocation = ref();
8631
- let scope;
8632
- watchEffect(async () => {
8633
- var _scope;
8634
- (_scope = scope) == null ? void 0 : _scope.stop();
8635
- updateLocation.value = undefined;
8636
- if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return;
8637
- scope = effectScope();
8638
- if (!(props.locationStrategy === 'connected')) {
8639
- await nextTick();
8640
- }
8641
- scope.run(() => {
8670
+ if (IN_BROWSER) {
8671
+ useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {
8672
+ watch(() => props.locationStrategy, reset);
8673
+ onScopeDispose(() => {
8674
+ updateLocation.value = undefined;
8675
+ });
8642
8676
  if (typeof props.locationStrategy === 'function') {
8643
8677
  var _props$locationStrate;
8644
8678
  updateLocation.value = (_props$locationStrate = props.locationStrategy(data, props, contentStyles)) == null ? void 0 : _props$locationStrate.updateLocation;
@@ -8647,16 +8681,14 @@ function useLocationStrategies(props, data) {
8647
8681
  updateLocation.value = (_locationStrategies$p = locationStrategies[props.locationStrategy](data, props, contentStyles)) == null ? void 0 : _locationStrategies$p.updateLocation;
8648
8682
  }
8649
8683
  });
8650
- });
8651
- IN_BROWSER && window.addEventListener('resize', onResize, {
8652
- passive: true
8653
- });
8654
- onScopeDispose(() => {
8655
- var _scope2;
8656
- IN_BROWSER && window.removeEventListener('resize', onResize);
8657
- updateLocation.value = undefined;
8658
- (_scope2 = scope) == null ? void 0 : _scope2.stop();
8659
- });
8684
+ window.addEventListener('resize', onResize, {
8685
+ passive: true
8686
+ });
8687
+ onScopeDispose(() => {
8688
+ window.removeEventListener('resize', onResize);
8689
+ updateLocation.value = undefined;
8690
+ });
8691
+ }
8660
8692
  function onResize(e) {
8661
8693
  var _updateLocation$value;
8662
8694
  (_updateLocation$value = updateLocation.value) == null ? void 0 : _updateLocation$value.call(updateLocation, e);
@@ -8950,13 +8982,30 @@ function connectedLocationStrategy(data, props, contentStyles) {
8950
8982
  maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),
8951
8983
  maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))
8952
8984
  });
8985
+ return {
8986
+ available,
8987
+ contentBox
8988
+ };
8953
8989
  }
8954
- watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation(), {
8955
- immediate: !activatorFixed
8956
- });
8957
- if (activatorFixed) nextTick(() => updateLocation());
8958
- requestAnimationFrame(() => {
8959
- if (contentStyles.value.maxHeight) updateLocation();
8990
+ watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
8991
+ nextTick(() => {
8992
+ const result = updateLocation();
8993
+
8994
+ // TODO: overflowing content should only require a single updateLocation call
8995
+ // Icky hack to make sure the content is positioned consistently
8996
+ if (!result) return;
8997
+ const {
8998
+ available,
8999
+ contentBox
9000
+ } = result;
9001
+ if (contentBox.height > available.y) {
9002
+ requestAnimationFrame(() => {
9003
+ updateLocation();
9004
+ requestAnimationFrame(() => {
9005
+ updateLocation();
9006
+ });
9007
+ });
9008
+ }
8960
9009
  });
8961
9010
  return {
8962
9011
  updateLocation
@@ -9024,10 +9073,10 @@ function useScrollStrategies(props, data) {
9024
9073
  await nextTick();
9025
9074
  scope.run(() => {
9026
9075
  if (typeof props.scrollStrategy === 'function') {
9027
- props.scrollStrategy(data, props);
9076
+ props.scrollStrategy(data, props, scope);
9028
9077
  } else {
9029
9078
  var _scrollStrategies$pro;
9030
- (_scrollStrategies$pro = scrollStrategies[props.scrollStrategy]) == null ? void 0 : _scrollStrategies$pro.call(scrollStrategies, data, props);
9079
+ (_scrollStrategies$pro = scrollStrategies[props.scrollStrategy]) == null ? void 0 : _scrollStrategies$pro.call(scrollStrategies, data, props, scope);
9031
9080
  }
9032
9081
  });
9033
9082
  });
@@ -9073,9 +9122,10 @@ function blockScrollStrategy(data, props) {
9073
9122
  }
9074
9123
  });
9075
9124
  }
9076
- function repositionScrollStrategy(data) {
9125
+ function repositionScrollStrategy(data, props, scope) {
9077
9126
  let slow = false;
9078
9127
  let raf = -1;
9128
+ let ric = -1;
9079
9129
  function update(e) {
9080
9130
  requestNewFrame(() => {
9081
9131
  var _data$updateLocation$, _data$updateLocation;
@@ -9085,21 +9135,29 @@ function repositionScrollStrategy(data) {
9085
9135
  slow = time / (1000 / 60) > 2;
9086
9136
  });
9087
9137
  }
9088
- bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {
9089
- if (slow) {
9090
- // If the position calculation is slow,
9091
- // defer updates until scrolling is finished.
9092
- // Browsers usually fire one scroll event per frame so
9093
- // we just wait until we've got two frames without an event
9094
- cancelAnimationFrame(raf);
9095
- raf = requestAnimationFrame(() => {
9096
- raf = requestAnimationFrame(() => {
9138
+ ric = requestIdleCallback(() => {
9139
+ scope.run(() => {
9140
+ bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {
9141
+ if (slow) {
9142
+ // If the position calculation is slow,
9143
+ // defer updates until scrolling is finished.
9144
+ // Browsers usually fire one scroll event per frame so
9145
+ // we just wait until we've got two frames without an event
9146
+ cancelAnimationFrame(raf);
9147
+ raf = requestAnimationFrame(() => {
9148
+ raf = requestAnimationFrame(() => {
9149
+ update(e);
9150
+ });
9151
+ });
9152
+ } else {
9097
9153
  update(e);
9098
- });
9154
+ }
9099
9155
  });
9100
- } else {
9101
- update(e);
9102
- }
9156
+ });
9157
+ });
9158
+ onScopeDispose(() => {
9159
+ cancelIdleCallback(ric);
9160
+ cancelAnimationFrame(raf);
9103
9161
  });
9104
9162
  }
9105
9163
 
@@ -9742,6 +9800,11 @@ const VMenu = genericComponent()({
9742
9800
  function onClickOutside() {
9743
9801
  parent == null ? void 0 : parent.closeParents();
9744
9802
  }
9803
+ const activatorProps = computed(() => mergeProps({
9804
+ 'aria-haspopup': 'menu',
9805
+ 'aria-expanded': String(isActive.value),
9806
+ 'aria-owns': id.value
9807
+ }, props.activatorProps));
9745
9808
  useRender(() => {
9746
9809
  const [overlayProps] = filterVOverlayProps(props);
9747
9810
  return createVNode(VOverlay, mergeProps({
@@ -9751,11 +9814,7 @@ const VMenu = genericComponent()({
9751
9814
  "modelValue": isActive.value,
9752
9815
  "onUpdate:modelValue": $event => isActive.value = $event,
9753
9816
  "absolute": true,
9754
- "activatorProps": mergeProps({
9755
- 'aria-haspopup': 'menu',
9756
- 'aria-expanded': String(isActive.value),
9757
- 'aria-owns': id.value
9758
- }, props.activatorProps),
9817
+ "activatorProps": activatorProps.value,
9759
9818
  "onClick:outside": onClickOutside
9760
9819
  }, scopeId), {
9761
9820
  activator: slots.activator,
@@ -9869,8 +9928,10 @@ const VSelect = genericComponent()({
9869
9928
  }
9870
9929
  function onKeydown(e) {
9871
9930
  if (props.readonly || form != null && form.isReadonly.value) return;
9872
- if (['Enter', 'ArrowDown', ' '].includes(e.key)) {
9931
+ if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
9873
9932
  e.preventDefault();
9933
+ }
9934
+ if (['Enter', 'ArrowDown', ' '].includes(e.key)) {
9874
9935
  menu.value = true;
9875
9936
  }
9876
9937
  if (['Escape', 'Tab'].includes(e.key)) {
@@ -9881,15 +9942,12 @@ const VSelect = genericComponent()({
9881
9942
  (_listRef$value = listRef.value) == null ? void 0 : _listRef$value.focus('next');
9882
9943
  } else if (e.key === 'ArrowUp') {
9883
9944
  var _listRef$value2;
9884
- e.preventDefault();
9885
9945
  (_listRef$value2 = listRef.value) == null ? void 0 : _listRef$value2.focus('prev');
9886
9946
  } else if (e.key === 'Home') {
9887
9947
  var _listRef$value3;
9888
- e.preventDefault();
9889
9948
  (_listRef$value3 = listRef.value) == null ? void 0 : _listRef$value3.focus('first');
9890
9949
  } else if (e.key === 'End') {
9891
9950
  var _listRef$value4;
9892
- e.preventDefault();
9893
9951
  (_listRef$value4 = listRef.value) == null ? void 0 : _listRef$value4.focus('last');
9894
9952
  }
9895
9953
  }
@@ -10071,7 +10129,7 @@ function filterItems(items, query, options) {
10071
10129
  const customFiltersLength = Object.keys((options == null ? void 0 : options.customKeyFilter) ?? {}).length;
10072
10130
  if (!(items != null && items.length)) return array;
10073
10131
  loop: for (let i = 0; i < items.length; i++) {
10074
- const item = items[i].raw;
10132
+ const item = items[i];
10075
10133
  const customMatches = {};
10076
10134
  const defaultMatches = {};
10077
10135
  let match = -1;
@@ -10111,7 +10169,7 @@ function filterItems(items, query, options) {
10111
10169
  }
10112
10170
  return array;
10113
10171
  }
10114
- function useFilter(props, items, query) {
10172
+ function useFilter(props, items, query, options) {
10115
10173
  const strQuery = computed(() => typeof (query == null ? void 0 : query.value) !== 'string' && typeof (query == null ? void 0 : query.value) !== 'number' ? '' : String(query.value));
10116
10174
  const filteredItems = ref([]);
10117
10175
  const filteredMatches = ref(new Map());
@@ -10122,7 +10180,7 @@ function useFilter(props, items, query) {
10122
10180
  const results = filterItems(transformedItems, strQuery.value, {
10123
10181
  customKeyFilter: props.customKeyFilter,
10124
10182
  default: props.customFilter,
10125
- filterKeys: props.filterKeys,
10183
+ filterKeys: unref(options == null ? void 0 : options.filterKeys) ?? props.filterKeys,
10126
10184
  filterMode: props.filterMode,
10127
10185
  noFilter: props.noFilter
10128
10186
  });
@@ -10233,6 +10291,9 @@ const VAutocomplete = genericComponent()({
10233
10291
  }
10234
10292
  function onKeydown(e) {
10235
10293
  if (props.readonly || form != null && form.isReadonly.value) return;
10294
+ if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
10295
+ e.preventDefault();
10296
+ }
10236
10297
  if (['Enter', 'ArrowDown'].includes(e.key)) {
10237
10298
  menu.value = true;
10238
10299
  }
@@ -10244,11 +10305,9 @@ const VAutocomplete = genericComponent()({
10244
10305
  }
10245
10306
  if (e.key === 'ArrowDown') {
10246
10307
  var _listRef$value;
10247
- e.preventDefault();
10248
10308
  (_listRef$value = listRef.value) == null ? void 0 : _listRef$value.focus('next');
10249
10309
  } else if (e.key === 'ArrowUp') {
10250
10310
  var _listRef$value2;
10251
- e.preventDefault();
10252
10311
  (_listRef$value2 = listRef.value) == null ? void 0 : _listRef$value2.focus('prev');
10253
10312
  }
10254
10313
  }
@@ -13577,7 +13636,9 @@ const VCombobox = genericComponent()({
13577
13636
  if (props.readonly || form != null && form.isReadonly.value) return;
13578
13637
  const selectionStart = vTextFieldRef.value.selectionStart;
13579
13638
  const length = selected.value.length;
13580
- if (selectionIndex.value > -1) e.preventDefault();
13639
+ if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
13640
+ e.preventDefault();
13641
+ }
13581
13642
  if (['Enter', 'ArrowDown'].includes(e.key)) {
13582
13643
  menu.value = true;
13583
13644
  }
@@ -13589,11 +13650,9 @@ const VCombobox = genericComponent()({
13589
13650
  }
13590
13651
  if (e.key === 'ArrowDown') {
13591
13652
  var _listRef$value;
13592
- e.preventDefault();
13593
13653
  (_listRef$value = listRef.value) == null ? void 0 : _listRef$value.focus('next');
13594
13654
  } else if (e.key === 'ArrowUp') {
13595
13655
  var _listRef$value2;
13596
- e.preventDefault();
13597
13656
  (_listRef$value2 = listRef.value) == null ? void 0 : _listRef$value2.focus('prev');
13598
13657
  }
13599
13658
  if (!props.multiple) return;
@@ -13888,6 +13947,10 @@ const VDialog = genericComponent()({
13888
13947
  });
13889
13948
  }
13890
13949
  });
13950
+ const activatorProps = computed(() => mergeProps({
13951
+ 'aria-haspopup': 'dialog',
13952
+ 'aria-expanded': String(isActive.value)
13953
+ }, props.activatorProps));
13891
13954
  useRender(() => {
13892
13955
  const [overlayProps] = filterVOverlayProps(props);
13893
13956
  return createVNode(VOverlay, mergeProps({
@@ -13901,10 +13964,7 @@ const VDialog = genericComponent()({
13901
13964
  "onUpdate:modelValue": $event => isActive.value = $event,
13902
13965
  "aria-role": "dialog",
13903
13966
  "aria-modal": "true",
13904
- "activatorProps": mergeProps({
13905
- 'aria-haspopup': 'dialog',
13906
- 'aria-expanded': String(isActive.value)
13907
- }, props.activatorProps)
13967
+ "activatorProps": activatorProps.value
13908
13968
  }, scopeId), {
13909
13969
  activator: slots.activator,
13910
13970
  default: function () {
@@ -14253,12 +14313,15 @@ const VFileInput = defineComponent({
14253
14313
  onFocus();
14254
14314
  nextTick(() => {
14255
14315
  model.value = [];
14256
- if (inputRef != null && inputRef.value) {
14257
- inputRef.value.value = '';
14258
- }
14259
14316
  callEvent(props['onClick:clear'], e);
14260
14317
  });
14261
14318
  }
14319
+ watch(model, newValue => {
14320
+ const hasModelReset = !Array.isArray(newValue) || !newValue.length;
14321
+ if (hasModelReset && inputRef.value) {
14322
+ inputRef.value.value = '';
14323
+ }
14324
+ });
14262
14325
  useRender(() => {
14263
14326
  const hasCounter = !!(slots.counter || props.counter);
14264
14327
  const hasDetails = !!(hasCounter || slots.details);
@@ -15249,7 +15312,7 @@ function useTouch(_ref) {
15249
15312
  window.removeEventListener('touchmove', onTouchmove);
15250
15313
  window.removeEventListener('touchend', onTouchend);
15251
15314
  });
15252
- const isHorizontal = computed(() => position.value !== 'bottom');
15315
+ const isHorizontal = computed(() => ['left', 'right'].includes(position.value));
15253
15316
  const {
15254
15317
  addMovement,
15255
15318
  endTouch,
@@ -15261,11 +15324,11 @@ function useTouch(_ref) {
15261
15324
  const offset = ref(0);
15262
15325
  let start;
15263
15326
  function getOffset(pos, active) {
15264
- return (position.value === 'left' ? pos : position.value === 'right' ? document.documentElement.clientWidth - pos : position.value === 'bottom' ? document.documentElement.clientHeight - pos : oops()) - (active ? width.value : 0);
15327
+ return (position.value === 'left' ? pos : position.value === 'right' ? document.documentElement.clientWidth - pos : position.value === 'top' ? pos : position.value === 'bottom' ? document.documentElement.clientHeight - pos : oops()) - (active ? width.value : 0);
15265
15328
  }
15266
15329
  function getProgress(pos) {
15267
15330
  let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
15268
- const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();
15331
+ const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();
15269
15332
  return limit ? Math.max(0, Math.min(1, progress)) : progress;
15270
15333
  }
15271
15334
  function onTouchstart(e) {
@@ -15273,8 +15336,8 @@ function useTouch(_ref) {
15273
15336
  const touchX = e.changedTouches[0].clientX;
15274
15337
  const touchY = e.changedTouches[0].clientY;
15275
15338
  const touchZone = 25;
15276
- const inTouchZone = position.value === 'left' ? touchX < touchZone : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone : oops();
15277
- const inElement = isActive.value && (position.value === 'left' ? touchX < width.value : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value : oops());
15339
+ const inTouchZone = position.value === 'left' ? touchX < touchZone : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone : position.value === 'top' ? touchY < touchZone : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone : oops();
15340
+ const inElement = isActive.value && (position.value === 'left' ? touchX < width.value : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value : position.value === 'top' ? touchY < width.value : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value : oops());
15278
15341
  if (inTouchZone || inElement || isActive.value && isTemporary.value) {
15279
15342
  maybeDragging = true;
15280
15343
  start = [touchX, touchY];
@@ -15326,6 +15389,7 @@ function useTouch(_ref) {
15326
15389
  isActive.value = velocity.direction === ({
15327
15390
  left: 'right',
15328
15391
  right: 'left',
15392
+ top: 'down',
15329
15393
  bottom: 'up'
15330
15394
  }[position.value] || oops());
15331
15395
  } else {
@@ -15334,7 +15398,7 @@ function useTouch(_ref) {
15334
15398
  }
15335
15399
  const dragStyles = computed(() => {
15336
15400
  return isDragging.value ? {
15337
- transform: position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))` : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))` : oops(),
15401
+ transform: position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))` : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))` : oops(),
15338
15402
  transition: 'none'
15339
15403
  } : undefined;
15340
15404
  });
@@ -15350,7 +15414,7 @@ function oops() {
15350
15414
 
15351
15415
  // Types
15352
15416
 
15353
- const locations = ['start', 'end', 'left', 'right', 'bottom'];
15417
+ const locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];
15354
15418
  const VNavigationDrawer = defineComponent({
15355
15419
  name: 'VNavigationDrawer',
15356
15420
  props: {
@@ -15807,7 +15871,7 @@ const VPagination = defineComponent({
15807
15871
  disabled: !!props.disabled || props.length < 2,
15808
15872
  color: isActive ? props.activeColor : props.color,
15809
15873
  ariaCurrent: isActive,
15810
- ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),
15874
+ ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),
15811
15875
  onClick: e => setValue(e, item)
15812
15876
  }
15813
15877
  };
@@ -17986,6 +18050,9 @@ const VTooltip = genericComponent()({
17986
18050
  if (props.transition) return props.transition;
17987
18051
  return isActive.value ? 'scale-transition' : 'fade-transition';
17988
18052
  });
18053
+ const activatorProps = computed(() => mergeProps({
18054
+ 'aria-describedby': id.value
18055
+ }, props.activatorProps));
17989
18056
  useRender(() => {
17990
18057
  const [overlayProps] = filterVOverlayProps(props);
17991
18058
  return createVNode(VOverlay, mergeProps({
@@ -18002,9 +18069,7 @@ const VTooltip = genericComponent()({
18002
18069
  "persistent": true,
18003
18070
  "role": "tooltip",
18004
18071
  "eager": true,
18005
- "activatorProps": mergeProps({
18006
- 'aria-describedby': id.value
18007
- }, props.activatorProps),
18072
+ "activatorProps": activatorProps.value,
18008
18073
  "_disableGlobalStack": true
18009
18074
  }, scopeId), {
18010
18075
  activator: slots.activator,
@@ -18390,7 +18455,7 @@ function createVuetify$1() {
18390
18455
  locale
18391
18456
  };
18392
18457
  }
18393
- const version$1 = "3.2.0-next-20230118.0";
18458
+ const version$1 = "4.0.0-master-20230206.0";
18394
18459
  createVuetify$1.version = version$1;
18395
18460
 
18396
18461
  // Vue's inject() can only be used in setup
@@ -18411,7 +18476,7 @@ const createVuetify = function () {
18411
18476
  ...options
18412
18477
  });
18413
18478
  };
18414
- const version = "3.2.0-next-20230118.0";
18479
+ const version = "4.0.0-master-20230206.0";
18415
18480
  createVuetify.version = version;
18416
18481
 
18417
18482
  export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };