@vuetify/nightly 3.2.0-next-20230118.0 → 4.0.0-next-20230205.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 (170) hide show
  1. package/CHANGELOG.md +203 -16
  2. package/dist/json/importMap-labs.json +8 -4
  3. package/dist/json/importMap.json +8 -8
  4. package/dist/vuetify-labs.css +253 -246
  5. package/dist/vuetify-labs.d.ts +387 -176
  6. package/dist/vuetify-labs.esm.js +282 -215
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +281 -214
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +51 -44
  11. package/dist/vuetify.d.ts +317 -178
  12. package/dist/vuetify.esm.js +249 -185
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +248 -184
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +696 -685
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/blueprints/index.d.ts +2 -2
  20. package/lib/blueprints/md1.d.ts +2 -2
  21. package/lib/blueprints/md2.d.ts +2 -2
  22. package/lib/blueprints/md3.d.ts +2 -2
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VAutocomplete/index.d.ts +43 -20
  26. package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -4
  27. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
  28. package/lib/components/VBtn/VBtn.css +7 -7
  29. package/lib/components/VBtn/VBtn.mjs +8 -3
  30. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  31. package/lib/components/VBtnGroup/VBtnGroup.mjs +15 -11
  32. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  33. package/lib/components/VBtnGroup/index.d.ts +2 -1
  34. package/lib/components/VBtnToggle/VBtnToggle.mjs +9 -5
  35. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  36. package/lib/components/VBtnToggle/index.d.ts +122 -1
  37. package/lib/components/VCalendar/VCalendar.mjs +3 -0
  38. package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
  39. package/lib/components/VCalendar/VCalendarCategory.sass +9 -3
  40. package/lib/components/VCalendar/VCalendarDaily.mjs +20 -8
  41. package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
  42. package/lib/components/VCalendar/VCalendarWeekly.mjs +25 -5
  43. package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
  44. package/lib/components/VCalendar/mixins/calendar-with-events.mjs +20 -16
  45. package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
  46. package/lib/components/VCalendar/mixins/mouse.mjs +16 -30
  47. package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
  48. package/lib/components/VCard/VCard.css +7 -7
  49. package/lib/components/VChip/VChip.css +7 -7
  50. package/lib/components/VCombobox/VCombobox.mjs +3 -3
  51. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  52. package/lib/components/VCombobox/index.d.ts +43 -20
  53. package/lib/components/VData/VData.mjs +2 -4
  54. package/lib/components/VData/VData.mjs.map +1 -1
  55. package/lib/components/VDatePicker/VDatePicker.mjs +7 -5
  56. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  57. package/lib/components/VDefaultsProvider/index.d.ts +5 -4
  58. package/lib/components/VDialog/VDialog.mjs +6 -5
  59. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  60. package/lib/components/VDialog/index.d.ts +57 -34
  61. package/lib/components/VDivider/VDivider.mjs +6 -6
  62. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  63. package/lib/components/VExpansionPanel/VExpansionPanel.css +7 -7
  64. package/lib/components/VField/VField.css +2 -2
  65. package/lib/components/VField/VField.mjs +28 -26
  66. package/lib/components/VField/VField.mjs.map +1 -1
  67. package/lib/components/VField/VField.sass +2 -2
  68. package/lib/components/VFileInput/VFileInput.mjs +7 -4
  69. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  70. package/lib/components/VForm/index.d.ts +0 -3
  71. package/lib/components/VList/VList.mjs +4 -1
  72. package/lib/components/VList/VList.mjs.map +1 -1
  73. package/lib/components/VList/VListItem.css +7 -7
  74. package/lib/components/VList/VListItem.mjs +29 -19
  75. package/lib/components/VList/VListItem.mjs.map +1 -1
  76. package/lib/components/VMenu/VMenu.mjs +6 -5
  77. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  78. package/lib/components/VMenu/index.d.ts +57 -34
  79. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +4 -0
  80. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  81. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  82. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +4 -0
  83. package/lib/components/VNavigationDrawer/index.d.ts +3 -3
  84. package/lib/components/VNavigationDrawer/touch.mjs +7 -6
  85. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  86. package/lib/components/VOtpInput/VOtpInput.mjs +22 -46
  87. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  88. package/lib/components/VOverflowBtn/VOverflowBtn.mjs +3 -0
  89. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  90. package/lib/components/VOverlay/index.d.ts +34 -11
  91. package/lib/components/VOverlay/locationStrategies.mjs +40 -29
  92. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  93. package/lib/components/VOverlay/scrollStrategies.mjs +25 -16
  94. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  95. package/lib/components/VPagination/VPagination.mjs +1 -1
  96. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  97. package/lib/components/VSelect/VSelect.mjs +3 -4
  98. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  99. package/lib/components/VSelect/index.d.ts +43 -20
  100. package/lib/components/VSelectionControl/VSelectionControl.css +2 -2
  101. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -1
  102. package/lib/components/VSnackbar/index.d.ts +42 -19
  103. package/lib/components/VStepper/VStepper.sass +6 -6
  104. package/lib/components/VStepper/VStepperStep.mjs +12 -2
  105. package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
  106. package/lib/components/VTable/VTable.css +4 -4
  107. package/lib/components/VTable/VTable.sass +2 -2
  108. package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
  109. package/lib/components/VTimeline/_mixins.sass +1 -1
  110. package/lib/components/VTooltip/VTooltip.mjs +4 -3
  111. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  112. package/lib/components/VTooltip/index.d.ts +57 -34
  113. package/lib/components/VTreeview/VTreeview.mjs +1 -1
  114. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  115. package/lib/components/index.d.ts +316 -176
  116. package/lib/composables/defaults.mjs +1 -1
  117. package/lib/composables/defaults.mjs.map +1 -1
  118. package/lib/composables/filter.mjs +3 -3
  119. package/lib/composables/filter.mjs.map +1 -1
  120. package/lib/composables/form.mjs +0 -1
  121. package/lib/composables/form.mjs.map +1 -1
  122. package/lib/composables/toggleScope.mjs +14 -7
  123. package/lib/composables/toggleScope.mjs.map +1 -1
  124. package/lib/directives/ripple/VRipple.css +3 -0
  125. package/lib/directives/ripple/VRipple.sass +3 -0
  126. package/lib/directives/ripple/_variables.scss +1 -1
  127. package/lib/directives/ripple/index.mjs +2 -7
  128. package/lib/directives/ripple/index.mjs.map +1 -1
  129. package/lib/entry-bundler.mjs +1 -1
  130. package/lib/framework.mjs +1 -1
  131. package/lib/index.d.ts +4 -4
  132. package/lib/labs/VDataTable/VDataTable.mjs +6 -6
  133. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  134. package/lib/labs/VDataTable/VDataTableFooter.mjs +1 -1
  135. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  136. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  137. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  138. package/lib/labs/VDataTable/VDataTableServer.mjs +19 -12
  139. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  140. package/lib/labs/VDataTable/VDataTableVirtual.mjs +6 -5
  141. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  142. package/lib/labs/VDataTable/composables/options.mjs +3 -7
  143. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  144. package/lib/labs/VDataTable/composables/paginate.mjs +1 -1
  145. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  146. package/lib/labs/VDataTable/index.d.ts +71 -1
  147. package/lib/labs/VDataTable/index.mjs +1 -0
  148. package/lib/labs/VDataTable/index.mjs.map +1 -1
  149. package/lib/labs/components.d.ts +71 -1
  150. package/lib/locale/adapters/vue-i18n.mjs +12 -2
  151. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  152. package/lib/locale/ar.mjs +20 -20
  153. package/lib/locale/ar.mjs.map +1 -1
  154. package/lib/locale/en.mjs +2 -2
  155. package/lib/locale/en.mjs.map +1 -1
  156. package/lib/locale/es.mjs +3 -3
  157. package/lib/locale/es.mjs.map +1 -1
  158. package/lib/locale/fi.mjs +5 -5
  159. package/lib/locale/fi.mjs.map +1 -1
  160. package/lib/locale/it.mjs +6 -6
  161. package/lib/locale/it.mjs.map +1 -1
  162. package/lib/locale/sv.mjs +13 -13
  163. package/lib/locale/sv.mjs.map +1 -1
  164. package/lib/styles/settings/_variables.scss +6 -6
  165. package/lib/styles/tools/_states.sass +3 -3
  166. package/lib/util/defineComponent.mjs +21 -18
  167. package/lib/util/defineComponent.mjs.map +1 -1
  168. package/lib/util/helpers.mjs +5 -19
  169. package/lib/util/helpers.mjs.map +1 -1
  170. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.2.0-next-20230118.0
2
+ * Vuetify v4.0.0-next-20230205.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));
@@ -7702,7 +7727,7 @@ const VListItem = genericComponent()({
7702
7727
  }
7703
7728
  }
7704
7729
  useRender(() => {
7705
- var _slots$prepend, _slots$title, _slots$subtitle, _slots$default, _slots$append;
7730
+ var _slots$title, _slots$subtitle, _slots$default;
7706
7731
  const Tag = isLink.value ? 'a' : props.tag;
7707
7732
  const hasColor = !list || isSelected.value || isActive.value;
7708
7733
  const hasTitle = slots.title || props.title;
@@ -7725,7 +7750,18 @@ const VListItem = genericComponent()({
7725
7750
  "onClick": onClick,
7726
7751
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
7727
7752
  }, {
7728
- default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode(VDefaultsProvider, {
7753
+ default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode("div", {
7754
+ "key": "prepend",
7755
+ "class": "v-list-item__prepend"
7756
+ }, [props.prependAvatar && createVNode(VAvatar, {
7757
+ "key": "prepend-avatar",
7758
+ "density": props.density,
7759
+ "image": props.prependAvatar
7760
+ }, null), props.prependIcon && createVNode(VIcon, {
7761
+ "key": "prepend-icon",
7762
+ "density": props.density,
7763
+ "icon": props.prependIcon
7764
+ }, null), slots.prepend && createVNode(VDefaultsProvider, {
7729
7765
  "key": "prepend",
7730
7766
  "defaults": {
7731
7767
  VAvatar: {
@@ -7741,14 +7777,8 @@ const VListItem = genericComponent()({
7741
7777
  }
7742
7778
  }
7743
7779
  }, {
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", {
7780
+ default: () => [slots.prepend(slotProps.value)]
7781
+ })]), createVNode("div", {
7752
7782
  "class": "v-list-item__content",
7753
7783
  "data-no-activator": ""
7754
7784
  }, [hasTitle && createVNode(VListItemTitle, {
@@ -7763,7 +7793,10 @@ const VListItem = genericComponent()({
7763
7793
  default: () => [((_slots$subtitle = slots.subtitle) == null ? void 0 : _slots$subtitle.call(slots, {
7764
7794
  subtitle: props.subtitle
7765
7795
  })) ?? props.subtitle]
7766
- }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && createVNode(VDefaultsProvider, {
7796
+ }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && createVNode("div", {
7797
+ "key": "append",
7798
+ "class": "v-list-item__append"
7799
+ }, [slots.append && createVNode(VDefaultsProvider, {
7767
7800
  "key": "append",
7768
7801
  "defaults": {
7769
7802
  VAvatar: {
@@ -7779,14 +7812,16 @@ const VListItem = genericComponent()({
7779
7812
  }
7780
7813
  }
7781
7814
  }, {
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
- })]
7815
+ default: () => [slots.append(slotProps.value)]
7816
+ }), props.appendIcon && createVNode(VIcon, {
7817
+ "key": "append-icon",
7818
+ "density": props.density,
7819
+ "icon": props.appendIcon
7820
+ }, null), props.appendAvatar && createVNode(VAvatar, {
7821
+ "key": "append-avatar",
7822
+ "density": props.density,
7823
+ "image": props.appendAvatar
7824
+ }, null)])]
7790
7825
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
7791
7826
  });
7792
7827
  return {};
@@ -8000,9 +8035,12 @@ function useItems(props) {
8000
8035
 
8001
8036
  // Types
8002
8037
 
8038
+ function isPrimitive(value) {
8039
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
8040
+ }
8003
8041
  function transformItem(props, item) {
8004
8042
  const type = getPropertyFromItem(item, props.itemType, 'item');
8005
- const title = typeof item === 'string' ? item : getPropertyFromItem(item, props.itemTitle);
8043
+ const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
8006
8044
  const value = getPropertyFromItem(item, props.itemValue, undefined);
8007
8045
  const children = getPropertyFromItem(item, props.itemChildren);
8008
8046
  const itemProps = props.itemProps === true ? pick(item, ['children'])[1] : getPropertyFromItem(item, props.itemProps);
@@ -8628,17 +8666,12 @@ const makeLocationStrategyProps = propsFactory({
8628
8666
  function useLocationStrategies(props, data) {
8629
8667
  const contentStyles = ref({});
8630
8668
  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(() => {
8669
+ if (IN_BROWSER) {
8670
+ useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {
8671
+ watch(() => props.locationStrategy, reset);
8672
+ onScopeDispose(() => {
8673
+ updateLocation.value = undefined;
8674
+ });
8642
8675
  if (typeof props.locationStrategy === 'function') {
8643
8676
  var _props$locationStrate;
8644
8677
  updateLocation.value = (_props$locationStrate = props.locationStrategy(data, props, contentStyles)) == null ? void 0 : _props$locationStrate.updateLocation;
@@ -8647,16 +8680,14 @@ function useLocationStrategies(props, data) {
8647
8680
  updateLocation.value = (_locationStrategies$p = locationStrategies[props.locationStrategy](data, props, contentStyles)) == null ? void 0 : _locationStrategies$p.updateLocation;
8648
8681
  }
8649
8682
  });
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
- });
8683
+ window.addEventListener('resize', onResize, {
8684
+ passive: true
8685
+ });
8686
+ onScopeDispose(() => {
8687
+ window.removeEventListener('resize', onResize);
8688
+ updateLocation.value = undefined;
8689
+ });
8690
+ }
8660
8691
  function onResize(e) {
8661
8692
  var _updateLocation$value;
8662
8693
  (_updateLocation$value = updateLocation.value) == null ? void 0 : _updateLocation$value.call(updateLocation, e);
@@ -8950,13 +8981,30 @@ function connectedLocationStrategy(data, props, contentStyles) {
8950
8981
  maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),
8951
8982
  maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))
8952
8983
  });
8984
+ return {
8985
+ available,
8986
+ contentBox
8987
+ };
8953
8988
  }
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();
8989
+ watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
8990
+ 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
+ }
8960
9008
  });
8961
9009
  return {
8962
9010
  updateLocation
@@ -9024,10 +9072,10 @@ function useScrollStrategies(props, data) {
9024
9072
  await nextTick();
9025
9073
  scope.run(() => {
9026
9074
  if (typeof props.scrollStrategy === 'function') {
9027
- props.scrollStrategy(data, props);
9075
+ props.scrollStrategy(data, props, scope);
9028
9076
  } else {
9029
9077
  var _scrollStrategies$pro;
9030
- (_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);
9031
9079
  }
9032
9080
  });
9033
9081
  });
@@ -9073,9 +9121,10 @@ function blockScrollStrategy(data, props) {
9073
9121
  }
9074
9122
  });
9075
9123
  }
9076
- function repositionScrollStrategy(data) {
9124
+ function repositionScrollStrategy(data, props, scope) {
9077
9125
  let slow = false;
9078
9126
  let raf = -1;
9127
+ let ric = -1;
9079
9128
  function update(e) {
9080
9129
  requestNewFrame(() => {
9081
9130
  var _data$updateLocation$, _data$updateLocation;
@@ -9085,21 +9134,29 @@ function repositionScrollStrategy(data) {
9085
9134
  slow = time / (1000 / 60) > 2;
9086
9135
  });
9087
9136
  }
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(() => {
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 {
9097
9152
  update(e);
9098
- });
9153
+ }
9099
9154
  });
9100
- } else {
9101
- update(e);
9102
- }
9155
+ });
9156
+ });
9157
+ onScopeDispose(() => {
9158
+ cancelIdleCallback(ric);
9159
+ cancelAnimationFrame(raf);
9103
9160
  });
9104
9161
  }
9105
9162
 
@@ -9742,6 +9799,11 @@ const VMenu = genericComponent()({
9742
9799
  function onClickOutside() {
9743
9800
  parent == null ? void 0 : parent.closeParents();
9744
9801
  }
9802
+ const activatorProps = computed(() => mergeProps({
9803
+ 'aria-haspopup': 'menu',
9804
+ 'aria-expanded': String(isActive.value),
9805
+ 'aria-owns': id.value
9806
+ }, props.activatorProps));
9745
9807
  useRender(() => {
9746
9808
  const [overlayProps] = filterVOverlayProps(props);
9747
9809
  return createVNode(VOverlay, mergeProps({
@@ -9751,11 +9813,7 @@ const VMenu = genericComponent()({
9751
9813
  "modelValue": isActive.value,
9752
9814
  "onUpdate:modelValue": $event => isActive.value = $event,
9753
9815
  "absolute": true,
9754
- "activatorProps": mergeProps({
9755
- 'aria-haspopup': 'menu',
9756
- 'aria-expanded': String(isActive.value),
9757
- 'aria-owns': id.value
9758
- }, props.activatorProps),
9816
+ "activatorProps": activatorProps.value,
9759
9817
  "onClick:outside": onClickOutside
9760
9818
  }, scopeId), {
9761
9819
  activator: slots.activator,
@@ -9869,8 +9927,10 @@ const VSelect = genericComponent()({
9869
9927
  }
9870
9928
  function onKeydown(e) {
9871
9929
  if (props.readonly || form != null && form.isReadonly.value) return;
9872
- if (['Enter', 'ArrowDown', ' '].includes(e.key)) {
9930
+ if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
9873
9931
  e.preventDefault();
9932
+ }
9933
+ if (['Enter', 'ArrowDown', ' '].includes(e.key)) {
9874
9934
  menu.value = true;
9875
9935
  }
9876
9936
  if (['Escape', 'Tab'].includes(e.key)) {
@@ -9881,15 +9941,12 @@ const VSelect = genericComponent()({
9881
9941
  (_listRef$value = listRef.value) == null ? void 0 : _listRef$value.focus('next');
9882
9942
  } else if (e.key === 'ArrowUp') {
9883
9943
  var _listRef$value2;
9884
- e.preventDefault();
9885
9944
  (_listRef$value2 = listRef.value) == null ? void 0 : _listRef$value2.focus('prev');
9886
9945
  } else if (e.key === 'Home') {
9887
9946
  var _listRef$value3;
9888
- e.preventDefault();
9889
9947
  (_listRef$value3 = listRef.value) == null ? void 0 : _listRef$value3.focus('first');
9890
9948
  } else if (e.key === 'End') {
9891
9949
  var _listRef$value4;
9892
- e.preventDefault();
9893
9950
  (_listRef$value4 = listRef.value) == null ? void 0 : _listRef$value4.focus('last');
9894
9951
  }
9895
9952
  }
@@ -10071,7 +10128,7 @@ function filterItems(items, query, options) {
10071
10128
  const customFiltersLength = Object.keys((options == null ? void 0 : options.customKeyFilter) ?? {}).length;
10072
10129
  if (!(items != null && items.length)) return array;
10073
10130
  loop: for (let i = 0; i < items.length; i++) {
10074
- const item = items[i].raw;
10131
+ const item = items[i];
10075
10132
  const customMatches = {};
10076
10133
  const defaultMatches = {};
10077
10134
  let match = -1;
@@ -10111,7 +10168,7 @@ function filterItems(items, query, options) {
10111
10168
  }
10112
10169
  return array;
10113
10170
  }
10114
- function useFilter(props, items, query) {
10171
+ function useFilter(props, items, query, options) {
10115
10172
  const strQuery = computed(() => typeof (query == null ? void 0 : query.value) !== 'string' && typeof (query == null ? void 0 : query.value) !== 'number' ? '' : String(query.value));
10116
10173
  const filteredItems = ref([]);
10117
10174
  const filteredMatches = ref(new Map());
@@ -10122,7 +10179,7 @@ function useFilter(props, items, query) {
10122
10179
  const results = filterItems(transformedItems, strQuery.value, {
10123
10180
  customKeyFilter: props.customKeyFilter,
10124
10181
  default: props.customFilter,
10125
- filterKeys: props.filterKeys,
10182
+ filterKeys: unref(options == null ? void 0 : options.filterKeys) ?? props.filterKeys,
10126
10183
  filterMode: props.filterMode,
10127
10184
  noFilter: props.noFilter
10128
10185
  });
@@ -10233,6 +10290,9 @@ const VAutocomplete = genericComponent()({
10233
10290
  }
10234
10291
  function onKeydown(e) {
10235
10292
  if (props.readonly || form != null && form.isReadonly.value) return;
10293
+ if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
10294
+ e.preventDefault();
10295
+ }
10236
10296
  if (['Enter', 'ArrowDown'].includes(e.key)) {
10237
10297
  menu.value = true;
10238
10298
  }
@@ -10244,11 +10304,9 @@ const VAutocomplete = genericComponent()({
10244
10304
  }
10245
10305
  if (e.key === 'ArrowDown') {
10246
10306
  var _listRef$value;
10247
- e.preventDefault();
10248
10307
  (_listRef$value = listRef.value) == null ? void 0 : _listRef$value.focus('next');
10249
10308
  } else if (e.key === 'ArrowUp') {
10250
10309
  var _listRef$value2;
10251
- e.preventDefault();
10252
10310
  (_listRef$value2 = listRef.value) == null ? void 0 : _listRef$value2.focus('prev');
10253
10311
  }
10254
10312
  }
@@ -13577,7 +13635,9 @@ const VCombobox = genericComponent()({
13577
13635
  if (props.readonly || form != null && form.isReadonly.value) return;
13578
13636
  const selectionStart = vTextFieldRef.value.selectionStart;
13579
13637
  const length = selected.value.length;
13580
- if (selectionIndex.value > -1) e.preventDefault();
13638
+ if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
13639
+ e.preventDefault();
13640
+ }
13581
13641
  if (['Enter', 'ArrowDown'].includes(e.key)) {
13582
13642
  menu.value = true;
13583
13643
  }
@@ -13589,11 +13649,9 @@ const VCombobox = genericComponent()({
13589
13649
  }
13590
13650
  if (e.key === 'ArrowDown') {
13591
13651
  var _listRef$value;
13592
- e.preventDefault();
13593
13652
  (_listRef$value = listRef.value) == null ? void 0 : _listRef$value.focus('next');
13594
13653
  } else if (e.key === 'ArrowUp') {
13595
13654
  var _listRef$value2;
13596
- e.preventDefault();
13597
13655
  (_listRef$value2 = listRef.value) == null ? void 0 : _listRef$value2.focus('prev');
13598
13656
  }
13599
13657
  if (!props.multiple) return;
@@ -13888,6 +13946,10 @@ const VDialog = genericComponent()({
13888
13946
  });
13889
13947
  }
13890
13948
  });
13949
+ const activatorProps = computed(() => mergeProps({
13950
+ 'aria-haspopup': 'dialog',
13951
+ 'aria-expanded': String(isActive.value)
13952
+ }, props.activatorProps));
13891
13953
  useRender(() => {
13892
13954
  const [overlayProps] = filterVOverlayProps(props);
13893
13955
  return createVNode(VOverlay, mergeProps({
@@ -13901,10 +13963,7 @@ const VDialog = genericComponent()({
13901
13963
  "onUpdate:modelValue": $event => isActive.value = $event,
13902
13964
  "aria-role": "dialog",
13903
13965
  "aria-modal": "true",
13904
- "activatorProps": mergeProps({
13905
- 'aria-haspopup': 'dialog',
13906
- 'aria-expanded': String(isActive.value)
13907
- }, props.activatorProps)
13966
+ "activatorProps": activatorProps.value
13908
13967
  }, scopeId), {
13909
13968
  activator: slots.activator,
13910
13969
  default: function () {
@@ -14253,12 +14312,15 @@ const VFileInput = defineComponent({
14253
14312
  onFocus();
14254
14313
  nextTick(() => {
14255
14314
  model.value = [];
14256
- if (inputRef != null && inputRef.value) {
14257
- inputRef.value.value = '';
14258
- }
14259
14315
  callEvent(props['onClick:clear'], e);
14260
14316
  });
14261
14317
  }
14318
+ watch(model, newValue => {
14319
+ const hasModelReset = !Array.isArray(newValue) || !newValue.length;
14320
+ if (hasModelReset && inputRef.value) {
14321
+ inputRef.value.value = '';
14322
+ }
14323
+ });
14262
14324
  useRender(() => {
14263
14325
  const hasCounter = !!(slots.counter || props.counter);
14264
14326
  const hasDetails = !!(hasCounter || slots.details);
@@ -15249,7 +15311,7 @@ function useTouch(_ref) {
15249
15311
  window.removeEventListener('touchmove', onTouchmove);
15250
15312
  window.removeEventListener('touchend', onTouchend);
15251
15313
  });
15252
- const isHorizontal = computed(() => position.value !== 'bottom');
15314
+ const isHorizontal = computed(() => ['left', 'right'].includes(position.value));
15253
15315
  const {
15254
15316
  addMovement,
15255
15317
  endTouch,
@@ -15261,11 +15323,11 @@ function useTouch(_ref) {
15261
15323
  const offset = ref(0);
15262
15324
  let start;
15263
15325
  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);
15326
+ 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
15327
  }
15266
15328
  function getProgress(pos) {
15267
15329
  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();
15330
+ 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
15331
  return limit ? Math.max(0, Math.min(1, progress)) : progress;
15270
15332
  }
15271
15333
  function onTouchstart(e) {
@@ -15273,8 +15335,8 @@ function useTouch(_ref) {
15273
15335
  const touchX = e.changedTouches[0].clientX;
15274
15336
  const touchY = e.changedTouches[0].clientY;
15275
15337
  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());
15338
+ 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();
15339
+ 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
15340
  if (inTouchZone || inElement || isActive.value && isTemporary.value) {
15279
15341
  maybeDragging = true;
15280
15342
  start = [touchX, touchY];
@@ -15326,6 +15388,7 @@ function useTouch(_ref) {
15326
15388
  isActive.value = velocity.direction === ({
15327
15389
  left: 'right',
15328
15390
  right: 'left',
15391
+ top: 'down',
15329
15392
  bottom: 'up'
15330
15393
  }[position.value] || oops());
15331
15394
  } else {
@@ -15334,7 +15397,7 @@ function useTouch(_ref) {
15334
15397
  }
15335
15398
  const dragStyles = computed(() => {
15336
15399
  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(),
15400
+ 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
15401
  transition: 'none'
15339
15402
  } : undefined;
15340
15403
  });
@@ -15350,7 +15413,7 @@ function oops() {
15350
15413
 
15351
15414
  // Types
15352
15415
 
15353
- const locations = ['start', 'end', 'left', 'right', 'bottom'];
15416
+ const locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];
15354
15417
  const VNavigationDrawer = defineComponent({
15355
15418
  name: 'VNavigationDrawer',
15356
15419
  props: {
@@ -15807,7 +15870,7 @@ const VPagination = defineComponent({
15807
15870
  disabled: !!props.disabled || props.length < 2,
15808
15871
  color: isActive ? props.activeColor : props.color,
15809
15872
  ariaCurrent: isActive,
15810
- ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),
15873
+ ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),
15811
15874
  onClick: e => setValue(e, item)
15812
15875
  }
15813
15876
  };
@@ -17986,6 +18049,9 @@ const VTooltip = genericComponent()({
17986
18049
  if (props.transition) return props.transition;
17987
18050
  return isActive.value ? 'scale-transition' : 'fade-transition';
17988
18051
  });
18052
+ const activatorProps = computed(() => mergeProps({
18053
+ 'aria-describedby': id.value
18054
+ }, props.activatorProps));
17989
18055
  useRender(() => {
17990
18056
  const [overlayProps] = filterVOverlayProps(props);
17991
18057
  return createVNode(VOverlay, mergeProps({
@@ -18002,9 +18068,7 @@ const VTooltip = genericComponent()({
18002
18068
  "persistent": true,
18003
18069
  "role": "tooltip",
18004
18070
  "eager": true,
18005
- "activatorProps": mergeProps({
18006
- 'aria-describedby': id.value
18007
- }, props.activatorProps),
18071
+ "activatorProps": activatorProps.value,
18008
18072
  "_disableGlobalStack": true
18009
18073
  }, scopeId), {
18010
18074
  activator: slots.activator,
@@ -18390,7 +18454,7 @@ function createVuetify$1() {
18390
18454
  locale
18391
18455
  };
18392
18456
  }
18393
- const version$1 = "3.2.0-next-20230118.0";
18457
+ const version$1 = "4.0.0-next-20230205.0";
18394
18458
  createVuetify$1.version = version$1;
18395
18459
 
18396
18460
  // Vue's inject() can only be used in setup
@@ -18411,7 +18475,7 @@ const createVuetify = function () {
18411
18475
  ...options
18412
18476
  });
18413
18477
  };
18414
- const version = "3.2.0-next-20230118.0";
18478
+ const version = "4.0.0-next-20230205.0";
18415
18479
  createVuetify.version = version;
18416
18480
 
18417
18481
  export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };