vuetify 3.5.16 → 3.5.18

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 (197) hide show
  1. package/dist/json/attributes.json +226 -30
  2. package/dist/json/importMap-labs.json +12 -8
  3. package/dist/json/importMap.json +114 -114
  4. package/dist/json/tags.json +54 -0
  5. package/dist/json/web-types.json +607 -84
  6. package/dist/vuetify-labs.css +2293 -2267
  7. package/dist/vuetify-labs.d.ts +742 -64
  8. package/dist/vuetify-labs.esm.js +365 -132
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +364 -131
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +2324 -2298
  13. package/dist/vuetify.d.ts +120 -55
  14. package/dist/vuetify.esm.js +177 -104
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +176 -103
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +183 -179
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAppBar/index.d.mts +1 -0
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +8 -10
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VBanner/VBanner.css +1 -1
  25. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +1 -1
  26. package/lib/components/VBtn/index.d.mts +1 -0
  27. package/lib/components/VBtnToggle/index.d.mts +1 -0
  28. package/lib/components/VCard/VCard.css +3 -3
  29. package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
  30. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  31. package/lib/components/VCarousel/index.d.mts +1 -0
  32. package/lib/components/VChip/VChip.css +1 -1
  33. package/lib/components/VChip/VChip.sass +1 -0
  34. package/lib/components/VChipGroup/index.d.mts +1 -0
  35. package/lib/components/VCombobox/VCombobox.mjs +8 -10
  36. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  37. package/lib/components/VDatePicker/VDatePicker.mjs +12 -2
  38. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  39. package/lib/components/VDialog/VDialog.mjs +6 -2
  40. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  41. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs +39 -0
  42. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs.map +1 -0
  43. package/lib/components/VDialog/index.d.mts +4 -10
  44. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  45. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  46. package/lib/components/VFileInput/index.d.mts +17 -5
  47. package/lib/components/VInput/VInput.mjs +6 -1
  48. package/lib/components/VInput/VInput.mjs.map +1 -1
  49. package/lib/components/VInput/index.d.mts +6 -0
  50. package/lib/components/VList/VList.mjs +2 -1
  51. package/lib/components/VList/VList.mjs.map +1 -1
  52. package/lib/components/VList/VListItem.css +1 -1
  53. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +3 -3
  54. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  55. package/lib/components/VNavigationDrawer/touch.mjs +16 -2
  56. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  57. package/lib/components/VProgressLinear/VProgressLinear.mjs +11 -1
  58. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  59. package/lib/components/VProgressLinear/index.d.mts +21 -0
  60. package/lib/components/VRangeSlider/index.d.mts +6 -0
  61. package/lib/components/VSelect/VSelect.mjs +5 -1
  62. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  63. package/lib/components/VSlideGroup/index.d.mts +1 -0
  64. package/lib/components/VSlider/index.d.mts +6 -0
  65. package/lib/components/VSnackbar/VSnackbar.css +18 -4
  66. package/lib/components/VSnackbar/VSnackbar.mjs +34 -9
  67. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  68. package/lib/components/VSnackbar/VSnackbar.sass +19 -3
  69. package/lib/components/VSwitch/VSwitch.css +14 -2
  70. package/lib/components/VSwitch/VSwitch.sass +8 -2
  71. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  72. package/lib/components/VTabs/index.d.mts +1 -0
  73. package/lib/components/VTextField/index.d.mts +15 -3
  74. package/lib/components/VTextarea/index.d.mts +15 -3
  75. package/lib/components/VWindow/index.d.mts +1 -0
  76. package/lib/components/index.d.mts +85 -21
  77. package/lib/composables/directiveComponent.mjs +4 -2
  78. package/lib/composables/directiveComponent.mjs.map +1 -1
  79. package/lib/composables/group.mjs +10 -1
  80. package/lib/composables/group.mjs.map +1 -1
  81. package/lib/entry-bundler.mjs +1 -1
  82. package/lib/framework.mjs +1 -1
  83. package/lib/index.d.mts +35 -34
  84. package/lib/labs/VCalendar/VCalendar.css +0 -1
  85. package/lib/labs/VCalendar/VCalendar.sass +0 -2
  86. package/lib/labs/VEmptyState/VEmptyState.css +3 -3
  87. package/lib/labs/VFab/VFab.css +1 -0
  88. package/lib/labs/VFab/VFab.mjs +3 -2
  89. package/lib/labs/VFab/VFab.mjs.map +1 -1
  90. package/lib/labs/VFab/VFab.sass +1 -0
  91. package/lib/labs/VFab/index.d.mts +10 -0
  92. package/lib/labs/VNumberInput/VNumberInput.mjs +79 -24
  93. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  94. package/lib/labs/VNumberInput/index.d.mts +56 -29
  95. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +112 -0
  96. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs.map +1 -0
  97. package/lib/labs/VSnackbarQueue/index.d.mts +2693 -0
  98. package/lib/labs/VSnackbarQueue/index.mjs +2 -0
  99. package/lib/labs/VSnackbarQueue/index.mjs.map +1 -0
  100. package/lib/labs/VSpeedDial/VSpeedDial.mjs +1 -2
  101. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
  102. package/lib/labs/VTimePicker/VTimePickerClock.mjs +1 -3
  103. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  104. package/lib/labs/VTimePicker/index.d.mts +6 -13
  105. package/lib/labs/components.d.mts +2893 -282
  106. package/lib/labs/components.mjs +1 -0
  107. package/lib/labs/components.mjs.map +1 -1
  108. package/lib/locale/af.mjs +1 -0
  109. package/lib/locale/af.mjs.map +1 -1
  110. package/lib/locale/ar.mjs +1 -0
  111. package/lib/locale/ar.mjs.map +1 -1
  112. package/lib/locale/az.mjs +1 -0
  113. package/lib/locale/az.mjs.map +1 -1
  114. package/lib/locale/bg.mjs +1 -0
  115. package/lib/locale/bg.mjs.map +1 -1
  116. package/lib/locale/ca.mjs +1 -0
  117. package/lib/locale/ca.mjs.map +1 -1
  118. package/lib/locale/ckb.mjs +1 -0
  119. package/lib/locale/ckb.mjs.map +1 -1
  120. package/lib/locale/cs.mjs +1 -0
  121. package/lib/locale/cs.mjs.map +1 -1
  122. package/lib/locale/da.mjs +1 -0
  123. package/lib/locale/da.mjs.map +1 -1
  124. package/lib/locale/de.mjs +1 -0
  125. package/lib/locale/de.mjs.map +1 -1
  126. package/lib/locale/el.mjs +1 -0
  127. package/lib/locale/el.mjs.map +1 -1
  128. package/lib/locale/en.mjs +1 -0
  129. package/lib/locale/en.mjs.map +1 -1
  130. package/lib/locale/es.mjs +1 -0
  131. package/lib/locale/es.mjs.map +1 -1
  132. package/lib/locale/et.mjs +1 -0
  133. package/lib/locale/et.mjs.map +1 -1
  134. package/lib/locale/fa.mjs +1 -0
  135. package/lib/locale/fa.mjs.map +1 -1
  136. package/lib/locale/fi.mjs +1 -0
  137. package/lib/locale/fi.mjs.map +1 -1
  138. package/lib/locale/fr.mjs +1 -0
  139. package/lib/locale/fr.mjs.map +1 -1
  140. package/lib/locale/he.mjs +1 -0
  141. package/lib/locale/he.mjs.map +1 -1
  142. package/lib/locale/hr.mjs +1 -0
  143. package/lib/locale/hr.mjs.map +1 -1
  144. package/lib/locale/hu.mjs +1 -0
  145. package/lib/locale/hu.mjs.map +1 -1
  146. package/lib/locale/id.mjs +1 -0
  147. package/lib/locale/id.mjs.map +1 -1
  148. package/lib/locale/index.d.mts +43 -0
  149. package/lib/locale/it.mjs +1 -0
  150. package/lib/locale/it.mjs.map +1 -1
  151. package/lib/locale/ja.mjs +1 -0
  152. package/lib/locale/ja.mjs.map +1 -1
  153. package/lib/locale/km.mjs +1 -0
  154. package/lib/locale/km.mjs.map +1 -1
  155. package/lib/locale/ko.mjs +9 -8
  156. package/lib/locale/ko.mjs.map +1 -1
  157. package/lib/locale/lt.mjs +1 -0
  158. package/lib/locale/lt.mjs.map +1 -1
  159. package/lib/locale/lv.mjs +1 -0
  160. package/lib/locale/lv.mjs.map +1 -1
  161. package/lib/locale/nl.mjs +1 -0
  162. package/lib/locale/nl.mjs.map +1 -1
  163. package/lib/locale/no.mjs +1 -0
  164. package/lib/locale/no.mjs.map +1 -1
  165. package/lib/locale/pl.mjs +1 -0
  166. package/lib/locale/pl.mjs.map +1 -1
  167. package/lib/locale/pt.mjs +1 -0
  168. package/lib/locale/pt.mjs.map +1 -1
  169. package/lib/locale/ro.mjs +1 -0
  170. package/lib/locale/ro.mjs.map +1 -1
  171. package/lib/locale/ru.mjs +1 -0
  172. package/lib/locale/ru.mjs.map +1 -1
  173. package/lib/locale/sk.mjs +1 -0
  174. package/lib/locale/sk.mjs.map +1 -1
  175. package/lib/locale/sl.mjs +1 -0
  176. package/lib/locale/sl.mjs.map +1 -1
  177. package/lib/locale/sr-Cyrl.mjs +1 -0
  178. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  179. package/lib/locale/sr-Latn.mjs +1 -0
  180. package/lib/locale/sr-Latn.mjs.map +1 -1
  181. package/lib/locale/sv.mjs +1 -0
  182. package/lib/locale/sv.mjs.map +1 -1
  183. package/lib/locale/th.mjs +1 -0
  184. package/lib/locale/th.mjs.map +1 -1
  185. package/lib/locale/tr.mjs +1 -0
  186. package/lib/locale/tr.mjs.map +1 -1
  187. package/lib/locale/uk.mjs +1 -0
  188. package/lib/locale/uk.mjs.map +1 -1
  189. package/lib/locale/vi.mjs +1 -0
  190. package/lib/locale/vi.mjs.map +1 -1
  191. package/lib/locale/zh-Hans.mjs +1 -0
  192. package/lib/locale/zh-Hans.mjs.map +1 -1
  193. package/lib/locale/zh-Hant.mjs +1 -0
  194. package/lib/locale/zh-Hant.mjs.map +1 -1
  195. package/lib/styles/main.css +78 -78
  196. package/lib/styles/settings/_variables.scss +21 -14
  197. package/package.json +2 -2
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.5.16
2
+ * Vuetify v3.5.18
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, ref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText } from 'vue';
7
+ import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, ref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -2370,6 +2370,7 @@ var en = {
2370
2370
  badge: 'Badge',
2371
2371
  open: 'Open',
2372
2372
  close: 'Close',
2373
+ dismiss: 'Dismiss',
2373
2374
  confirmEdit: {
2374
2375
  ok: 'OK',
2375
2376
  cancel: 'Cancel'
@@ -4594,6 +4595,7 @@ function useGroup(props, injectKey) {
4594
4595
  const index = children.indexOf(vm);
4595
4596
  if (unref(unwrapped.value) == null) {
4596
4597
  unwrapped.value = index;
4598
+ unwrapped.useIndexAsValue = true;
4597
4599
  }
4598
4600
  if (index > -1) {
4599
4601
  items.splice(index, 0, unwrapped);
@@ -4626,6 +4628,14 @@ function useGroup(props, injectKey) {
4626
4628
  onBeforeUnmount(() => {
4627
4629
  isUnmounted = true;
4628
4630
  });
4631
+ onUpdated(() => {
4632
+ // #19655 update the items that use the index as the value.
4633
+ for (let i = 0; i < items.length; i++) {
4634
+ if (items[i].useIndexAsValue) {
4635
+ items[i].value = i;
4636
+ }
4637
+ }
4638
+ });
4629
4639
  function select(id, value) {
4630
4640
  const item = items.find(item => item.id === id);
4631
4641
  if (value && item?.disabled) return;
@@ -5008,6 +5018,65 @@ const VProgressCircular = genericComponent()({
5008
5018
  }
5009
5019
  });
5010
5020
 
5021
+ // Composables
5022
+
5023
+ // Types
5024
+
5025
+ const oppositeMap = {
5026
+ center: 'center',
5027
+ top: 'bottom',
5028
+ bottom: 'top',
5029
+ left: 'right',
5030
+ right: 'left'
5031
+ };
5032
+ const makeLocationProps = propsFactory({
5033
+ location: String
5034
+ }, 'location');
5035
+ function useLocation(props) {
5036
+ let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
5037
+ let offset = arguments.length > 2 ? arguments[2] : undefined;
5038
+ const {
5039
+ isRtl
5040
+ } = useRtl();
5041
+ const locationStyles = computed(() => {
5042
+ if (!props.location) return {};
5043
+ const {
5044
+ side,
5045
+ align
5046
+ } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
5047
+ function getOffset(side) {
5048
+ return offset ? offset(side) : 0;
5049
+ }
5050
+ const styles = {};
5051
+ if (side !== 'center') {
5052
+ if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
5053
+ }
5054
+ if (align !== 'center') {
5055
+ if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
5056
+ } else {
5057
+ if (side === 'center') styles.top = styles.left = '50%';else {
5058
+ styles[{
5059
+ top: 'left',
5060
+ bottom: 'left',
5061
+ left: 'top',
5062
+ right: 'top'
5063
+ }[side]] = '50%';
5064
+ }
5065
+ styles.transform = {
5066
+ top: 'translateX(-50%)',
5067
+ bottom: 'translateX(-50%)',
5068
+ left: 'translateY(-50%)',
5069
+ right: 'translateY(-50%)',
5070
+ center: 'translate(-50%, -50%)'
5071
+ }[side];
5072
+ }
5073
+ return styles;
5074
+ });
5075
+ return {
5076
+ locationStyles
5077
+ };
5078
+ }
5079
+
5011
5080
  const makeVProgressLinearProps = propsFactory({
5012
5081
  absolute: Boolean,
5013
5082
  active: {
@@ -5040,6 +5109,9 @@ const makeVProgressLinearProps = propsFactory({
5040
5109
  striped: Boolean,
5041
5110
  roundedBar: Boolean,
5042
5111
  ...makeComponentProps(),
5112
+ ...makeLocationProps({
5113
+ location: 'top'
5114
+ }),
5043
5115
  ...makeRoundedProps(),
5044
5116
  ...makeTagProps(),
5045
5117
  ...makeThemeProps()
@@ -5062,6 +5134,9 @@ const VProgressLinear = genericComponent()({
5062
5134
  const {
5063
5135
  themeClasses
5064
5136
  } = provideTheme(props);
5137
+ const {
5138
+ locationStyles
5139
+ } = useLocation(props);
5065
5140
  const {
5066
5141
  textColorClasses,
5067
5142
  textColorStyles
@@ -5111,8 +5186,11 @@ const VProgressLinear = genericComponent()({
5111
5186
  'v-progress-linear--striped': props.striped
5112
5187
  }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
5113
5188
  "style": [{
5189
+ bottom: props.location === 'bottom' ? 0 : undefined,
5190
+ top: props.location === 'top' ? 0 : undefined,
5114
5191
  height: props.active ? convertToUnit(height.value) : 0,
5115
- '--v-progress-linear-height': convertToUnit(height.value)
5192
+ '--v-progress-linear-height': convertToUnit(height.value),
5193
+ ...(props.absolute ? locationStyles.value : {})
5116
5194
  }, props.style],
5117
5195
  "role": "progressbar",
5118
5196
  "aria-hidden": props.active ? 'false' : 'true',
@@ -5198,65 +5276,6 @@ function LoaderSlot(props, _ref) {
5198
5276
  }, null)]);
5199
5277
  }
5200
5278
 
5201
- // Composables
5202
-
5203
- // Types
5204
-
5205
- const oppositeMap = {
5206
- center: 'center',
5207
- top: 'bottom',
5208
- bottom: 'top',
5209
- left: 'right',
5210
- right: 'left'
5211
- };
5212
- const makeLocationProps = propsFactory({
5213
- location: String
5214
- }, 'location');
5215
- function useLocation(props) {
5216
- let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
5217
- let offset = arguments.length > 2 ? arguments[2] : undefined;
5218
- const {
5219
- isRtl
5220
- } = useRtl();
5221
- const locationStyles = computed(() => {
5222
- if (!props.location) return {};
5223
- const {
5224
- side,
5225
- align
5226
- } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
5227
- function getOffset(side) {
5228
- return offset ? offset(side) : 0;
5229
- }
5230
- const styles = {};
5231
- if (side !== 'center') {
5232
- if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
5233
- }
5234
- if (align !== 'center') {
5235
- if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
5236
- } else {
5237
- if (side === 'center') styles.top = styles.left = '50%';else {
5238
- styles[{
5239
- top: 'left',
5240
- bottom: 'left',
5241
- left: 'top',
5242
- right: 'top'
5243
- }[side]] = '50%';
5244
- }
5245
- styles.transform = {
5246
- top: 'translateX(-50%)',
5247
- bottom: 'translateX(-50%)',
5248
- left: 'translateY(-50%)',
5249
- right: 'translateY(-50%)',
5250
- center: 'translate(-50%, -50%)'
5251
- }[side];
5252
- }
5253
- return styles;
5254
- });
5255
- return {
5256
- locationStyles
5257
- };
5258
- }
5259
-
5260
5279
  // Utilities
5261
5280
 
5262
5281
  // Types
@@ -6971,6 +6990,7 @@ const makeVInputProps = propsFactory({
6971
6990
  'onClick:append': EventProp(),
6972
6991
  ...makeComponentProps(),
6973
6992
  ...makeDensityProps(),
6993
+ ...makeThemeProps(),
6974
6994
  ...makeValidationProps()
6975
6995
  }, 'VInput');
6976
6996
  const VInput = genericComponent()({
@@ -6990,6 +7010,9 @@ const VInput = genericComponent()({
6990
7010
  const {
6991
7011
  densityClasses
6992
7012
  } = useDensity(props);
7013
+ const {
7014
+ themeClasses
7015
+ } = provideTheme(props);
6993
7016
  const {
6994
7017
  rtlClasses
6995
7018
  } = useRtl();
@@ -7043,7 +7066,7 @@ const VInput = genericComponent()({
7043
7066
  "class": ['v-input', `v-input--${props.direction}`, {
7044
7067
  'v-input--center-affix': props.centerAffix,
7045
7068
  'v-input--hide-spin-buttons': props.hideSpinButtons
7046
- }, densityClasses.value, rtlClasses.value, validationClasses.value, props.class],
7069
+ }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class],
7047
7070
  "style": props.style
7048
7071
  }, [hasPrepend && createVNode("div", {
7049
7072
  "key": "prepend",
@@ -9399,7 +9422,8 @@ const VList = genericComponent()({
9399
9422
  if (!isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
9400
9423
  }
9401
9424
  function onKeydown(e) {
9402
- if (!contentRef.value) return;
9425
+ const target = e.target;
9426
+ if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9403
9427
  if (e.key === 'ArrowDown') {
9404
9428
  focus('next');
9405
9429
  } else if (e.key === 'ArrowUp') {
@@ -12313,6 +12337,10 @@ const VSelect = genericComponent()({
12313
12337
  const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
12314
12338
  if (item !== undefined) {
12315
12339
  model.value = [item];
12340
+ const index = displayItems.value.indexOf(item);
12341
+ IN_BROWSER && window.requestAnimationFrame(() => {
12342
+ index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
12343
+ });
12316
12344
  }
12317
12345
  }
12318
12346
 
@@ -12361,7 +12389,7 @@ const VSelect = genericComponent()({
12361
12389
  vTextFieldRef.value.value = '';
12362
12390
  }
12363
12391
  }
12364
- watch([menu, model], () => {
12392
+ watch(menu, () => {
12365
12393
  if (!props.hideSelected && menu.value && model.value.length) {
12366
12394
  const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
12367
12395
  IN_BROWSER && window.requestAnimationFrame(() => {
@@ -12815,16 +12843,14 @@ const VAutocomplete = genericComponent()({
12815
12843
  listRef.value?.focus('next');
12816
12844
  }
12817
12845
  if (['Backspace', 'Delete'].includes(e.key)) {
12818
- if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
12819
- if (selectionIndex.value < 0) {
12820
- if (e.key === 'Backspace' && !search.value) {
12821
- selectionIndex.value = length - 1;
12822
- }
12823
- return;
12846
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);
12847
+ if (~selectionIndex.value) {
12848
+ const originalSelectionIndex = selectionIndex.value;
12849
+ select(model.value[selectionIndex.value], false);
12850
+ selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12851
+ } else if (e.key === 'Backspace' && !search.value) {
12852
+ selectionIndex.value = length - 1;
12824
12853
  }
12825
- const originalSelectionIndex = selectionIndex.value;
12826
- select(model.value[selectionIndex.value], false);
12827
- selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12828
12854
  }
12829
12855
  if (!props.multiple) return;
12830
12856
  if (e.key === 'ArrowLeft') {
@@ -12872,7 +12898,7 @@ const VAutocomplete = genericComponent()({
12872
12898
  listHasFocus.value = false;
12873
12899
  }
12874
12900
  function onUpdateModelValue(v) {
12875
- if (v == null || v === '' && !props.multiple) model.value = [];
12901
+ if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];
12876
12902
  }
12877
12903
  const isSelecting = shallowRef(false);
12878
12904
 
@@ -13510,12 +13536,12 @@ const VDialog = genericComponent()({
13510
13536
  name: 'VDialog',
13511
13537
  props: makeVDialogProps(),
13512
13538
  emits: {
13513
- 'click:outside': e => true,
13514
13539
  'update:modelValue': value => true,
13515
13540
  afterLeave: () => true
13516
13541
  },
13517
13542
  setup(props, _ref) {
13518
13543
  let {
13544
+ emit,
13519
13545
  slots
13520
13546
  } = _ref;
13521
13547
  const isActive = useProxiedModel(props, 'modelValue');
@@ -13558,6 +13584,9 @@ const VDialog = genericComponent()({
13558
13584
  });
13559
13585
  }
13560
13586
  }
13587
+ function onAfterLeave() {
13588
+ emit('afterLeave');
13589
+ }
13561
13590
  watch(isActive, async val => {
13562
13591
  if (!val) {
13563
13592
  await nextTick();
@@ -13589,7 +13618,8 @@ const VDialog = genericComponent()({
13589
13618
  "activatorProps": activatorProps,
13590
13619
  "contentProps": contentProps,
13591
13620
  "role": "dialog",
13592
- "onAfterEnter": onAfterEnter
13621
+ "onAfterEnter": onAfterEnter,
13622
+ "onAfterLeave": onAfterLeave
13593
13623
  }, scopeId), {
13594
13624
  activator: slots.activator,
13595
13625
  default: function () {
@@ -14639,7 +14669,7 @@ const VCarouselItem = genericComponent()({
14639
14669
  const imgProps = VImg.filterProps(props);
14640
14670
  const windowItemProps = VWindowItem.filterProps(props);
14641
14671
  return createVNode(VWindowItem, mergeProps({
14642
- "class": "v-carousel-item"
14672
+ "class": ['v-carousel-item', props.class]
14643
14673
  }, windowItemProps), {
14644
14674
  default: () => [createVNode(VImg, mergeProps(attrs, imgProps), slots)]
14645
14675
  });
@@ -16644,16 +16674,14 @@ const VCombobox = genericComponent()({
16644
16674
  if (hasSelectionSlot.value) _search.value = '';
16645
16675
  }
16646
16676
  if (['Backspace', 'Delete'].includes(e.key)) {
16647
- if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
16648
- if (selectionIndex.value < 0) {
16649
- if (e.key === 'Backspace' && !search.value) {
16650
- selectionIndex.value = length - 1;
16651
- }
16652
- return;
16677
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);
16678
+ if (~selectionIndex.value) {
16679
+ const originalSelectionIndex = selectionIndex.value;
16680
+ select(model.value[selectionIndex.value], false);
16681
+ selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
16682
+ } else if (e.key === 'Backspace' && !search.value) {
16683
+ selectionIndex.value = length - 1;
16653
16684
  }
16654
- const originalSelectionIndex = selectionIndex.value;
16655
- select(model.value[selectionIndex.value], false);
16656
- selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
16657
16685
  }
16658
16686
  if (!props.multiple) return;
16659
16687
  if (e.key === 'ArrowLeft') {
@@ -16722,7 +16750,7 @@ const VCombobox = genericComponent()({
16722
16750
  listHasFocus.value = false;
16723
16751
  }
16724
16752
  function onUpdateModelValue(v) {
16725
- if (v == null || v === '' && !props.multiple) model.value = [];
16753
+ if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];
16726
16754
  }
16727
16755
  watch(isFocused, (val, oldVal) => {
16728
16756
  if (val || val === oldVal) return;
@@ -21583,8 +21611,18 @@ const VDatePicker = genericComponent()({
21583
21611
  emit('update:year', value);
21584
21612
  }
21585
21613
  watch(model, (val, oldVal) => {
21586
- const before = adapter.date(wrapInArray(val)[0]);
21587
- const after = adapter.date(wrapInArray(oldVal)[0]);
21614
+ const before = adapter.date(wrapInArray(oldVal)[oldVal.length - 1]);
21615
+ const after = adapter.date(wrapInArray(val)[val.length - 1]);
21616
+ const newMonth = adapter.getMonth(after);
21617
+ const newYear = adapter.getYear(after);
21618
+ if (newMonth !== month.value) {
21619
+ month.value = newMonth;
21620
+ onUpdateMonth(month.value);
21621
+ }
21622
+ if (newYear !== year.value) {
21623
+ year.value = newYear;
21624
+ onUpdateYear(year.value);
21625
+ }
21588
21626
  isReversing.value = adapter.isBefore(before, after);
21589
21627
  });
21590
21628
  useRender(() => {
@@ -21938,7 +21976,7 @@ const makeVFileInputProps = propsFactory({
21938
21976
  }),
21939
21977
  modelValue: {
21940
21978
  type: [Array, Object],
21941
- default: () => [],
21979
+ default: props => props.multiple ? [] : null,
21942
21980
  validator: val => {
21943
21981
  return wrapInArray(val).every(v => v != null && typeof v === 'object');
21944
21982
  }
@@ -22967,6 +23005,7 @@ function oops$1() {
22967
23005
 
22968
23006
  function useTouch(_ref) {
22969
23007
  let {
23008
+ el,
22970
23009
  isActive,
22971
23010
  isTemporary,
22972
23011
  width,
@@ -23016,10 +23055,10 @@ function useTouch(_ref) {
23016
23055
  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();
23017
23056
  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());
23018
23057
  if (inTouchZone || inElement || isActive.value && isTemporary.value) {
23019
- maybeDragging = true;
23020
23058
  start = [touchX, touchY];
23021
23059
  offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value);
23022
23060
  dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY);
23061
+ maybeDragging = offset.value > -20 && offset.value < 80;
23023
23062
  endTouch(e);
23024
23063
  addMovement(e);
23025
23064
  }
@@ -23079,6 +23118,18 @@ function useTouch(_ref) {
23079
23118
  transition: 'none'
23080
23119
  } : undefined;
23081
23120
  });
23121
+ useToggleScope(isDragging, () => {
23122
+ const transform = el.value?.style.transform ?? null;
23123
+ const transition = el.value?.style.transition ?? null;
23124
+ watchEffect(() => {
23125
+ el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none');
23126
+ el.value?.style.setProperty('transition', dragStyles.value?.transition || null);
23127
+ });
23128
+ onScopeDispose(() => {
23129
+ el.value?.style.setProperty('transform', transform);
23130
+ el.value?.style.setProperty('transition', transition);
23131
+ });
23132
+ });
23082
23133
  return {
23083
23134
  isDragging,
23084
23135
  dragProgress,
@@ -23211,9 +23262,9 @@ const VNavigationDrawer = genericComponent()({
23211
23262
  });
23212
23263
  const {
23213
23264
  isDragging,
23214
- dragProgress,
23215
- dragStyles
23265
+ dragProgress
23216
23266
  } = useTouch({
23267
+ el: rootEl,
23217
23268
  isActive,
23218
23269
  isTemporary,
23219
23270
  width,
@@ -23283,7 +23334,7 @@ const VNavigationDrawer = genericComponent()({
23283
23334
  'v-navigation-drawer--active': isActive.value,
23284
23335
  'v-navigation-drawer--sticky': isSticky.value
23285
23336
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
23286
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
23337
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
23287
23338
  }, scopeId, attrs), {
23288
23339
  default: () => [hasImage && createVNode("div", {
23289
23340
  "key": "image",
@@ -24393,9 +24444,6 @@ const VSnackbar = genericComponent()({
24393
24444
  slots
24394
24445
  } = _ref;
24395
24446
  const isActive = useProxiedModel(props, 'modelValue');
24396
- const {
24397
- locationStyles
24398
- } = useLocation(props);
24399
24447
  const {
24400
24448
  positionClasses
24401
24449
  } = usePosition(props);
@@ -24417,6 +24465,15 @@ const VSnackbar = genericComponent()({
24417
24465
  const overlay = ref();
24418
24466
  const timerRef = ref();
24419
24467
  const isHovering = shallowRef(false);
24468
+ const startY = shallowRef(0);
24469
+ const mainStyles = ref();
24470
+ const hasLayout = inject$1(VuetifyLayoutKey, undefined);
24471
+ useToggleScope(() => !!hasLayout, () => {
24472
+ const layout = useLayout();
24473
+ watchEffect(() => {
24474
+ mainStyles.value = layout.mainStyles.value;
24475
+ });
24476
+ });
24420
24477
  watch(isActive, startTimeout);
24421
24478
  watch(() => props.timeout, startTimeout);
24422
24479
  onMounted(() => {
@@ -24446,6 +24503,20 @@ const VSnackbar = genericComponent()({
24446
24503
  isHovering.value = false;
24447
24504
  startTimeout();
24448
24505
  }
24506
+ function onTouchstart(event) {
24507
+ startY.value = event.touches[0].clientY;
24508
+ }
24509
+ function onTouchend(event) {
24510
+ if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {
24511
+ isActive.value = false;
24512
+ }
24513
+ }
24514
+ const locationClasses = computed(() => {
24515
+ return props.location.split(' ').reduce((acc, loc) => {
24516
+ acc[`v-snackbar--${loc}`] = true;
24517
+ return acc;
24518
+ }, {});
24519
+ });
24449
24520
  useRender(() => {
24450
24521
  const overlayProps = VOverlay.filterProps(props);
24451
24522
  const hasContent = !!(slots.default || slots.text || props.text);
@@ -24456,14 +24527,14 @@ const VSnackbar = genericComponent()({
24456
24527
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
24457
24528
  'v-snackbar--timer': !!props.timer,
24458
24529
  'v-snackbar--vertical': props.vertical
24459
- }, positionClasses.value, props.class],
24460
- "style": props.style
24530
+ }, locationClasses.value, positionClasses.value, props.class],
24531
+ "style": [mainStyles.value, props.style]
24461
24532
  }, overlayProps, {
24462
24533
  "modelValue": isActive.value,
24463
24534
  "onUpdate:modelValue": $event => isActive.value = $event,
24464
24535
  "contentProps": mergeProps({
24465
24536
  class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
24466
- style: [locationStyles.value, colorStyles.value],
24537
+ style: [colorStyles.value],
24467
24538
  onPointerenter,
24468
24539
  onPointerleave
24469
24540
  }, overlayProps.contentProps),
@@ -24471,7 +24542,9 @@ const VSnackbar = genericComponent()({
24471
24542
  "noClickAnimation": true,
24472
24543
  "scrim": false,
24473
24544
  "scrollStrategy": "none",
24474
- "_disableGlobalStack": true
24545
+ "_disableGlobalStack": true,
24546
+ "onTouchstartPassive": onTouchstart,
24547
+ "onTouchend": onTouchend
24475
24548
  }, scopeId), {
24476
24549
  default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && createVNode("div", {
24477
24550
  "key": "timer",
@@ -26330,7 +26403,7 @@ function createVuetify$1() {
26330
26403
  goTo
26331
26404
  };
26332
26405
  }
26333
- const version$1 = "3.5.16";
26406
+ const version$1 = "3.5.18";
26334
26407
  createVuetify$1.version = version$1;
26335
26408
 
26336
26409
  // Vue's inject() can only be used in setup
@@ -26355,7 +26428,7 @@ const createVuetify = function () {
26355
26428
  ...options
26356
26429
  });
26357
26430
  };
26358
- const version = "3.5.16";
26431
+ const version = "3.5.18";
26359
26432
  createVuetify.version = version;
26360
26433
 
26361
26434
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };