vuetify 3.5.16 → 3.5.17

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 (191) hide show
  1. package/dist/json/attributes.json +226 -30
  2. package/dist/json/importMap-labs.json +8 -4
  3. package/dist/json/importMap.json +126 -126
  4. package/dist/json/tags.json +54 -0
  5. package/dist/json/web-types.json +607 -84
  6. package/dist/vuetify-labs.css +2606 -2579
  7. package/dist/vuetify-labs.d.ts +742 -64
  8. package/dist/vuetify-labs.esm.js +356 -127
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +355 -126
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +2393 -2367
  13. package/dist/vuetify.d.ts +127 -62
  14. package/dist/vuetify.esm.js +169 -101
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +168 -100
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +181 -178
  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 +10 -0
  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 +26 -8
  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/group.mjs +10 -1
  78. package/lib/composables/group.mjs.map +1 -1
  79. package/lib/entry-bundler.mjs +1 -1
  80. package/lib/framework.mjs +1 -1
  81. package/lib/index.d.mts +42 -41
  82. package/lib/labs/VEmptyState/VEmptyState.css +3 -3
  83. package/lib/labs/VFab/VFab.css +1 -0
  84. package/lib/labs/VFab/VFab.mjs +3 -2
  85. package/lib/labs/VFab/VFab.mjs.map +1 -1
  86. package/lib/labs/VFab/VFab.sass +1 -0
  87. package/lib/labs/VFab/index.d.mts +10 -0
  88. package/lib/labs/VNumberInput/VNumberInput.mjs +79 -24
  89. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  90. package/lib/labs/VNumberInput/index.d.mts +56 -29
  91. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +112 -0
  92. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs.map +1 -0
  93. package/lib/labs/VSnackbarQueue/index.d.mts +2693 -0
  94. package/lib/labs/VSnackbarQueue/index.mjs +2 -0
  95. package/lib/labs/VSnackbarQueue/index.mjs.map +1 -0
  96. package/lib/labs/VTimePicker/VTimePickerClock.mjs +1 -3
  97. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  98. package/lib/labs/VTimePicker/index.d.mts +6 -13
  99. package/lib/labs/components.d.mts +2893 -282
  100. package/lib/labs/components.mjs +1 -0
  101. package/lib/labs/components.mjs.map +1 -1
  102. package/lib/locale/af.mjs +1 -0
  103. package/lib/locale/af.mjs.map +1 -1
  104. package/lib/locale/ar.mjs +1 -0
  105. package/lib/locale/ar.mjs.map +1 -1
  106. package/lib/locale/az.mjs +1 -0
  107. package/lib/locale/az.mjs.map +1 -1
  108. package/lib/locale/bg.mjs +1 -0
  109. package/lib/locale/bg.mjs.map +1 -1
  110. package/lib/locale/ca.mjs +1 -0
  111. package/lib/locale/ca.mjs.map +1 -1
  112. package/lib/locale/ckb.mjs +1 -0
  113. package/lib/locale/ckb.mjs.map +1 -1
  114. package/lib/locale/cs.mjs +1 -0
  115. package/lib/locale/cs.mjs.map +1 -1
  116. package/lib/locale/da.mjs +1 -0
  117. package/lib/locale/da.mjs.map +1 -1
  118. package/lib/locale/de.mjs +1 -0
  119. package/lib/locale/de.mjs.map +1 -1
  120. package/lib/locale/el.mjs +1 -0
  121. package/lib/locale/el.mjs.map +1 -1
  122. package/lib/locale/en.mjs +1 -0
  123. package/lib/locale/en.mjs.map +1 -1
  124. package/lib/locale/es.mjs +1 -0
  125. package/lib/locale/es.mjs.map +1 -1
  126. package/lib/locale/et.mjs +1 -0
  127. package/lib/locale/et.mjs.map +1 -1
  128. package/lib/locale/fa.mjs +1 -0
  129. package/lib/locale/fa.mjs.map +1 -1
  130. package/lib/locale/fi.mjs +1 -0
  131. package/lib/locale/fi.mjs.map +1 -1
  132. package/lib/locale/fr.mjs +1 -0
  133. package/lib/locale/fr.mjs.map +1 -1
  134. package/lib/locale/he.mjs +1 -0
  135. package/lib/locale/he.mjs.map +1 -1
  136. package/lib/locale/hr.mjs +1 -0
  137. package/lib/locale/hr.mjs.map +1 -1
  138. package/lib/locale/hu.mjs +1 -0
  139. package/lib/locale/hu.mjs.map +1 -1
  140. package/lib/locale/id.mjs +1 -0
  141. package/lib/locale/id.mjs.map +1 -1
  142. package/lib/locale/index.d.mts +43 -0
  143. package/lib/locale/it.mjs +1 -0
  144. package/lib/locale/it.mjs.map +1 -1
  145. package/lib/locale/ja.mjs +1 -0
  146. package/lib/locale/ja.mjs.map +1 -1
  147. package/lib/locale/km.mjs +1 -0
  148. package/lib/locale/km.mjs.map +1 -1
  149. package/lib/locale/ko.mjs +1 -0
  150. package/lib/locale/ko.mjs.map +1 -1
  151. package/lib/locale/lt.mjs +1 -0
  152. package/lib/locale/lt.mjs.map +1 -1
  153. package/lib/locale/lv.mjs +1 -0
  154. package/lib/locale/lv.mjs.map +1 -1
  155. package/lib/locale/nl.mjs +1 -0
  156. package/lib/locale/nl.mjs.map +1 -1
  157. package/lib/locale/no.mjs +1 -0
  158. package/lib/locale/no.mjs.map +1 -1
  159. package/lib/locale/pl.mjs +1 -0
  160. package/lib/locale/pl.mjs.map +1 -1
  161. package/lib/locale/pt.mjs +1 -0
  162. package/lib/locale/pt.mjs.map +1 -1
  163. package/lib/locale/ro.mjs +1 -0
  164. package/lib/locale/ro.mjs.map +1 -1
  165. package/lib/locale/ru.mjs +1 -0
  166. package/lib/locale/ru.mjs.map +1 -1
  167. package/lib/locale/sk.mjs +1 -0
  168. package/lib/locale/sk.mjs.map +1 -1
  169. package/lib/locale/sl.mjs +1 -0
  170. package/lib/locale/sl.mjs.map +1 -1
  171. package/lib/locale/sr-Cyrl.mjs +1 -0
  172. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  173. package/lib/locale/sr-Latn.mjs +1 -0
  174. package/lib/locale/sr-Latn.mjs.map +1 -1
  175. package/lib/locale/sv.mjs +1 -0
  176. package/lib/locale/sv.mjs.map +1 -1
  177. package/lib/locale/th.mjs +1 -0
  178. package/lib/locale/th.mjs.map +1 -1
  179. package/lib/locale/tr.mjs +1 -0
  180. package/lib/locale/tr.mjs.map +1 -1
  181. package/lib/locale/uk.mjs +1 -0
  182. package/lib/locale/uk.mjs.map +1 -1
  183. package/lib/locale/vi.mjs +1 -0
  184. package/lib/locale/vi.mjs.map +1 -1
  185. package/lib/locale/zh-Hans.mjs +1 -0
  186. package/lib/locale/zh-Hans.mjs.map +1 -1
  187. package/lib/locale/zh-Hant.mjs +1 -0
  188. package/lib/locale/zh-Hant.mjs.map +1 -1
  189. package/lib/styles/main.css +78 -78
  190. package/lib/styles/settings/_variables.scss +21 -14
  191. package/package.json +2 -2
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.5.16
2
+ * Vuetify v3.5.17
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;
@@ -21585,6 +21613,16 @@ const VDatePicker = genericComponent()({
21585
21613
  watch(model, (val, oldVal) => {
21586
21614
  const before = adapter.date(wrapInArray(val)[0]);
21587
21615
  const after = adapter.date(wrapInArray(oldVal)[0]);
21616
+ const newMonth = adapter.getMonth(before);
21617
+ const newYear = adapter.getYear(before);
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",
@@ -24394,8 +24445,8 @@ const VSnackbar = genericComponent()({
24394
24445
  } = _ref;
24395
24446
  const isActive = useProxiedModel(props, 'modelValue');
24396
24447
  const {
24397
- locationStyles
24398
- } = useLocation(props);
24448
+ mainStyles
24449
+ } = useLayout();
24399
24450
  const {
24400
24451
  positionClasses
24401
24452
  } = usePosition(props);
@@ -24417,6 +24468,7 @@ const VSnackbar = genericComponent()({
24417
24468
  const overlay = ref();
24418
24469
  const timerRef = ref();
24419
24470
  const isHovering = shallowRef(false);
24471
+ const startY = shallowRef(0);
24420
24472
  watch(isActive, startTimeout);
24421
24473
  watch(() => props.timeout, startTimeout);
24422
24474
  onMounted(() => {
@@ -24446,6 +24498,20 @@ const VSnackbar = genericComponent()({
24446
24498
  isHovering.value = false;
24447
24499
  startTimeout();
24448
24500
  }
24501
+ function onTouchstart(event) {
24502
+ startY.value = event.touches[0].clientY;
24503
+ }
24504
+ function onTouchend(event) {
24505
+ if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {
24506
+ isActive.value = false;
24507
+ }
24508
+ }
24509
+ const locationClasses = computed(() => {
24510
+ return props.location.split(' ').reduce((acc, loc) => {
24511
+ acc[`v-snackbar--${loc}`] = true;
24512
+ return acc;
24513
+ }, {});
24514
+ });
24449
24515
  useRender(() => {
24450
24516
  const overlayProps = VOverlay.filterProps(props);
24451
24517
  const hasContent = !!(slots.default || slots.text || props.text);
@@ -24456,14 +24522,14 @@ const VSnackbar = genericComponent()({
24456
24522
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
24457
24523
  'v-snackbar--timer': !!props.timer,
24458
24524
  'v-snackbar--vertical': props.vertical
24459
- }, positionClasses.value, props.class],
24460
- "style": props.style
24525
+ }, locationClasses.value, positionClasses.value, props.class],
24526
+ "style": [mainStyles.value, props.style]
24461
24527
  }, overlayProps, {
24462
24528
  "modelValue": isActive.value,
24463
24529
  "onUpdate:modelValue": $event => isActive.value = $event,
24464
24530
  "contentProps": mergeProps({
24465
24531
  class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
24466
- style: [locationStyles.value, colorStyles.value],
24532
+ style: [colorStyles.value],
24467
24533
  onPointerenter,
24468
24534
  onPointerleave
24469
24535
  }, overlayProps.contentProps),
@@ -24471,7 +24537,9 @@ const VSnackbar = genericComponent()({
24471
24537
  "noClickAnimation": true,
24472
24538
  "scrim": false,
24473
24539
  "scrollStrategy": "none",
24474
- "_disableGlobalStack": true
24540
+ "_disableGlobalStack": true,
24541
+ "onTouchstart": onTouchstart,
24542
+ "onTouchend": onTouchend
24475
24543
  }, scopeId), {
24476
24544
  default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && createVNode("div", {
24477
24545
  "key": "timer",
@@ -26330,7 +26398,7 @@ function createVuetify$1() {
26330
26398
  goTo
26331
26399
  };
26332
26400
  }
26333
- const version$1 = "3.5.16";
26401
+ const version$1 = "3.5.17";
26334
26402
  createVuetify$1.version = version$1;
26335
26403
 
26336
26404
  // Vue's inject() can only be used in setup
@@ -26355,7 +26423,7 @@ const createVuetify = function () {
26355
26423
  ...options
26356
26424
  });
26357
26425
  };
26358
- const version = "3.5.16";
26426
+ const version = "3.5.17";
26359
26427
  createVuetify.version = version;
26360
26428
 
26361
26429
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };