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,5 +1,5 @@
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
  */
@@ -1935,6 +1935,7 @@
1935
1935
  badge: 'Badge',
1936
1936
  open: 'Open',
1937
1937
  close: 'Close',
1938
+ dismiss: 'Dismiss',
1938
1939
  confirmEdit: {
1939
1940
  ok: 'OK',
1940
1941
  cancel: 'Cancel'
@@ -4159,6 +4160,7 @@
4159
4160
  const index = children.indexOf(vm);
4160
4161
  if (vue.unref(unwrapped.value) == null) {
4161
4162
  unwrapped.value = index;
4163
+ unwrapped.useIndexAsValue = true;
4162
4164
  }
4163
4165
  if (index > -1) {
4164
4166
  items.splice(index, 0, unwrapped);
@@ -4191,6 +4193,14 @@
4191
4193
  vue.onBeforeUnmount(() => {
4192
4194
  isUnmounted = true;
4193
4195
  });
4196
+ vue.onUpdated(() => {
4197
+ // #19655 update the items that use the index as the value.
4198
+ for (let i = 0; i < items.length; i++) {
4199
+ if (items[i].useIndexAsValue) {
4200
+ items[i].value = i;
4201
+ }
4202
+ }
4203
+ });
4194
4204
  function select(id, value) {
4195
4205
  const item = items.find(item => item.id === id);
4196
4206
  if (value && item?.disabled) return;
@@ -4779,6 +4789,65 @@
4779
4789
  }
4780
4790
  });
4781
4791
 
4792
+ // Composables
4793
+
4794
+ // Types
4795
+
4796
+ const oppositeMap = {
4797
+ center: 'center',
4798
+ top: 'bottom',
4799
+ bottom: 'top',
4800
+ left: 'right',
4801
+ right: 'left'
4802
+ };
4803
+ const makeLocationProps = propsFactory({
4804
+ location: String
4805
+ }, 'location');
4806
+ function useLocation(props) {
4807
+ let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4808
+ let offset = arguments.length > 2 ? arguments[2] : undefined;
4809
+ const {
4810
+ isRtl
4811
+ } = useRtl();
4812
+ const locationStyles = vue.computed(() => {
4813
+ if (!props.location) return {};
4814
+ const {
4815
+ side,
4816
+ align
4817
+ } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
4818
+ function getOffset(side) {
4819
+ return offset ? offset(side) : 0;
4820
+ }
4821
+ const styles = {};
4822
+ if (side !== 'center') {
4823
+ if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
4824
+ }
4825
+ if (align !== 'center') {
4826
+ if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
4827
+ } else {
4828
+ if (side === 'center') styles.top = styles.left = '50%';else {
4829
+ styles[{
4830
+ top: 'left',
4831
+ bottom: 'left',
4832
+ left: 'top',
4833
+ right: 'top'
4834
+ }[side]] = '50%';
4835
+ }
4836
+ styles.transform = {
4837
+ top: 'translateX(-50%)',
4838
+ bottom: 'translateX(-50%)',
4839
+ left: 'translateY(-50%)',
4840
+ right: 'translateY(-50%)',
4841
+ center: 'translate(-50%, -50%)'
4842
+ }[side];
4843
+ }
4844
+ return styles;
4845
+ });
4846
+ return {
4847
+ locationStyles
4848
+ };
4849
+ }
4850
+
4782
4851
  const makeVProgressLinearProps = propsFactory({
4783
4852
  absolute: Boolean,
4784
4853
  active: {
@@ -4811,6 +4880,9 @@
4811
4880
  striped: Boolean,
4812
4881
  roundedBar: Boolean,
4813
4882
  ...makeComponentProps(),
4883
+ ...makeLocationProps({
4884
+ location: 'top'
4885
+ }),
4814
4886
  ...makeRoundedProps(),
4815
4887
  ...makeTagProps(),
4816
4888
  ...makeThemeProps()
@@ -4833,6 +4905,9 @@
4833
4905
  const {
4834
4906
  themeClasses
4835
4907
  } = provideTheme(props);
4908
+ const {
4909
+ locationStyles
4910
+ } = useLocation(props);
4836
4911
  const {
4837
4912
  textColorClasses,
4838
4913
  textColorStyles
@@ -4882,8 +4957,11 @@
4882
4957
  'v-progress-linear--striped': props.striped
4883
4958
  }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
4884
4959
  "style": [{
4960
+ bottom: props.location === 'bottom' ? 0 : undefined,
4961
+ top: props.location === 'top' ? 0 : undefined,
4885
4962
  height: props.active ? convertToUnit(height.value) : 0,
4886
- '--v-progress-linear-height': convertToUnit(height.value)
4963
+ '--v-progress-linear-height': convertToUnit(height.value),
4964
+ ...(props.absolute ? locationStyles.value : {})
4887
4965
  }, props.style],
4888
4966
  "role": "progressbar",
4889
4967
  "aria-hidden": props.active ? 'false' : 'true',
@@ -4969,65 +5047,6 @@
4969
5047
  }, null)]);
4970
5048
  }
4971
5049
 
4972
- // Composables
4973
-
4974
- // Types
4975
-
4976
- const oppositeMap = {
4977
- center: 'center',
4978
- top: 'bottom',
4979
- bottom: 'top',
4980
- left: 'right',
4981
- right: 'left'
4982
- };
4983
- const makeLocationProps = propsFactory({
4984
- location: String
4985
- }, 'location');
4986
- function useLocation(props) {
4987
- let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4988
- let offset = arguments.length > 2 ? arguments[2] : undefined;
4989
- const {
4990
- isRtl
4991
- } = useRtl();
4992
- const locationStyles = vue.computed(() => {
4993
- if (!props.location) return {};
4994
- const {
4995
- side,
4996
- align
4997
- } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
4998
- function getOffset(side) {
4999
- return offset ? offset(side) : 0;
5000
- }
5001
- const styles = {};
5002
- if (side !== 'center') {
5003
- if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
5004
- }
5005
- if (align !== 'center') {
5006
- if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
5007
- } else {
5008
- if (side === 'center') styles.top = styles.left = '50%';else {
5009
- styles[{
5010
- top: 'left',
5011
- bottom: 'left',
5012
- left: 'top',
5013
- right: 'top'
5014
- }[side]] = '50%';
5015
- }
5016
- styles.transform = {
5017
- top: 'translateX(-50%)',
5018
- bottom: 'translateX(-50%)',
5019
- left: 'translateY(-50%)',
5020
- right: 'translateY(-50%)',
5021
- center: 'translate(-50%, -50%)'
5022
- }[side];
5023
- }
5024
- return styles;
5025
- });
5026
- return {
5027
- locationStyles
5028
- };
5029
- }
5030
-
5031
5050
  // Utilities
5032
5051
 
5033
5052
  // Types
@@ -6742,6 +6761,7 @@
6742
6761
  'onClick:append': EventProp(),
6743
6762
  ...makeComponentProps(),
6744
6763
  ...makeDensityProps(),
6764
+ ...makeThemeProps(),
6745
6765
  ...makeValidationProps()
6746
6766
  }, 'VInput');
6747
6767
  const VInput = genericComponent()({
@@ -6761,6 +6781,9 @@
6761
6781
  const {
6762
6782
  densityClasses
6763
6783
  } = useDensity(props);
6784
+ const {
6785
+ themeClasses
6786
+ } = provideTheme(props);
6764
6787
  const {
6765
6788
  rtlClasses
6766
6789
  } = useRtl();
@@ -6814,7 +6837,7 @@
6814
6837
  "class": ['v-input', `v-input--${props.direction}`, {
6815
6838
  'v-input--center-affix': props.centerAffix,
6816
6839
  'v-input--hide-spin-buttons': props.hideSpinButtons
6817
- }, densityClasses.value, rtlClasses.value, validationClasses.value, props.class],
6840
+ }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class],
6818
6841
  "style": props.style
6819
6842
  }, [hasPrepend && vue.createVNode("div", {
6820
6843
  "key": "prepend",
@@ -9170,7 +9193,8 @@
9170
9193
  if (!isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
9171
9194
  }
9172
9195
  function onKeydown(e) {
9173
- if (!contentRef.value) return;
9196
+ const target = e.target;
9197
+ if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9174
9198
  if (e.key === 'ArrowDown') {
9175
9199
  focus('next');
9176
9200
  } else if (e.key === 'ArrowUp') {
@@ -12084,6 +12108,10 @@
12084
12108
  const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
12085
12109
  if (item !== undefined) {
12086
12110
  model.value = [item];
12111
+ const index = displayItems.value.indexOf(item);
12112
+ IN_BROWSER && window.requestAnimationFrame(() => {
12113
+ index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
12114
+ });
12087
12115
  }
12088
12116
  }
12089
12117
 
@@ -12132,7 +12160,7 @@
12132
12160
  vTextFieldRef.value.value = '';
12133
12161
  }
12134
12162
  }
12135
- vue.watch([menu, model], () => {
12163
+ vue.watch(menu, () => {
12136
12164
  if (!props.hideSelected && menu.value && model.value.length) {
12137
12165
  const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
12138
12166
  IN_BROWSER && window.requestAnimationFrame(() => {
@@ -12586,16 +12614,14 @@
12586
12614
  listRef.value?.focus('next');
12587
12615
  }
12588
12616
  if (['Backspace', 'Delete'].includes(e.key)) {
12589
- if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
12590
- if (selectionIndex.value < 0) {
12591
- if (e.key === 'Backspace' && !search.value) {
12592
- selectionIndex.value = length - 1;
12593
- }
12594
- return;
12617
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);
12618
+ if (~selectionIndex.value) {
12619
+ const originalSelectionIndex = selectionIndex.value;
12620
+ select(model.value[selectionIndex.value], false);
12621
+ selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12622
+ } else if (e.key === 'Backspace' && !search.value) {
12623
+ selectionIndex.value = length - 1;
12595
12624
  }
12596
- const originalSelectionIndex = selectionIndex.value;
12597
- select(model.value[selectionIndex.value], false);
12598
- selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12599
12625
  }
12600
12626
  if (!props.multiple) return;
12601
12627
  if (e.key === 'ArrowLeft') {
@@ -12643,7 +12669,7 @@
12643
12669
  listHasFocus.value = false;
12644
12670
  }
12645
12671
  function onUpdateModelValue(v) {
12646
- if (v == null || v === '' && !props.multiple) model.value = [];
12672
+ if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];
12647
12673
  }
12648
12674
  const isSelecting = vue.shallowRef(false);
12649
12675
 
@@ -13281,12 +13307,12 @@
13281
13307
  name: 'VDialog',
13282
13308
  props: makeVDialogProps(),
13283
13309
  emits: {
13284
- 'click:outside': e => true,
13285
13310
  'update:modelValue': value => true,
13286
13311
  afterLeave: () => true
13287
13312
  },
13288
13313
  setup(props, _ref) {
13289
13314
  let {
13315
+ emit,
13290
13316
  slots
13291
13317
  } = _ref;
13292
13318
  const isActive = useProxiedModel(props, 'modelValue');
@@ -13329,6 +13355,9 @@
13329
13355
  });
13330
13356
  }
13331
13357
  }
13358
+ function onAfterLeave() {
13359
+ emit('afterLeave');
13360
+ }
13332
13361
  vue.watch(isActive, async val => {
13333
13362
  if (!val) {
13334
13363
  await vue.nextTick();
@@ -13360,7 +13389,8 @@
13360
13389
  "activatorProps": activatorProps,
13361
13390
  "contentProps": contentProps,
13362
13391
  "role": "dialog",
13363
- "onAfterEnter": onAfterEnter
13392
+ "onAfterEnter": onAfterEnter,
13393
+ "onAfterLeave": onAfterLeave
13364
13394
  }, scopeId), {
13365
13395
  activator: slots.activator,
13366
13396
  default: function () {
@@ -14410,7 +14440,7 @@
14410
14440
  const imgProps = VImg.filterProps(props);
14411
14441
  const windowItemProps = VWindowItem.filterProps(props);
14412
14442
  return vue.createVNode(VWindowItem, vue.mergeProps({
14413
- "class": "v-carousel-item"
14443
+ "class": ['v-carousel-item', props.class]
14414
14444
  }, windowItemProps), {
14415
14445
  default: () => [vue.createVNode(VImg, vue.mergeProps(attrs, imgProps), slots)]
14416
14446
  });
@@ -16415,16 +16445,14 @@
16415
16445
  if (hasSelectionSlot.value) _search.value = '';
16416
16446
  }
16417
16447
  if (['Backspace', 'Delete'].includes(e.key)) {
16418
- if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
16419
- if (selectionIndex.value < 0) {
16420
- if (e.key === 'Backspace' && !search.value) {
16421
- selectionIndex.value = length - 1;
16422
- }
16423
- return;
16448
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);
16449
+ if (~selectionIndex.value) {
16450
+ const originalSelectionIndex = selectionIndex.value;
16451
+ select(model.value[selectionIndex.value], false);
16452
+ selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
16453
+ } else if (e.key === 'Backspace' && !search.value) {
16454
+ selectionIndex.value = length - 1;
16424
16455
  }
16425
- const originalSelectionIndex = selectionIndex.value;
16426
- select(model.value[selectionIndex.value], false);
16427
- selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
16428
16456
  }
16429
16457
  if (!props.multiple) return;
16430
16458
  if (e.key === 'ArrowLeft') {
@@ -16493,7 +16521,7 @@
16493
16521
  listHasFocus.value = false;
16494
16522
  }
16495
16523
  function onUpdateModelValue(v) {
16496
- if (v == null || v === '' && !props.multiple) model.value = [];
16524
+ if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];
16497
16525
  }
16498
16526
  vue.watch(isFocused, (val, oldVal) => {
16499
16527
  if (val || val === oldVal) return;
@@ -21356,6 +21384,16 @@
21356
21384
  vue.watch(model, (val, oldVal) => {
21357
21385
  const before = adapter.date(wrapInArray(val)[0]);
21358
21386
  const after = adapter.date(wrapInArray(oldVal)[0]);
21387
+ const newMonth = adapter.getMonth(before);
21388
+ const newYear = adapter.getYear(before);
21389
+ if (newMonth !== month.value) {
21390
+ month.value = newMonth;
21391
+ onUpdateMonth(month.value);
21392
+ }
21393
+ if (newYear !== year.value) {
21394
+ year.value = newYear;
21395
+ onUpdateYear(year.value);
21396
+ }
21359
21397
  isReversing.value = adapter.isBefore(before, after);
21360
21398
  });
21361
21399
  useRender(() => {
@@ -21709,7 +21747,7 @@
21709
21747
  }),
21710
21748
  modelValue: {
21711
21749
  type: [Array, Object],
21712
- default: () => [],
21750
+ default: props => props.multiple ? [] : null,
21713
21751
  validator: val => {
21714
21752
  return wrapInArray(val).every(v => v != null && typeof v === 'object');
21715
21753
  }
@@ -22738,6 +22776,7 @@
22738
22776
 
22739
22777
  function useTouch(_ref) {
22740
22778
  let {
22779
+ el,
22741
22780
  isActive,
22742
22781
  isTemporary,
22743
22782
  width,
@@ -22787,10 +22826,10 @@
22787
22826
  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();
22788
22827
  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());
22789
22828
  if (inTouchZone || inElement || isActive.value && isTemporary.value) {
22790
- maybeDragging = true;
22791
22829
  start = [touchX, touchY];
22792
22830
  offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value);
22793
22831
  dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY);
22832
+ maybeDragging = offset.value > -20 && offset.value < 80;
22794
22833
  endTouch(e);
22795
22834
  addMovement(e);
22796
22835
  }
@@ -22850,6 +22889,18 @@
22850
22889
  transition: 'none'
22851
22890
  } : undefined;
22852
22891
  });
22892
+ useToggleScope(isDragging, () => {
22893
+ const transform = el.value?.style.transform ?? null;
22894
+ const transition = el.value?.style.transition ?? null;
22895
+ vue.watchEffect(() => {
22896
+ el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none');
22897
+ el.value?.style.setProperty('transition', dragStyles.value?.transition || null);
22898
+ });
22899
+ vue.onScopeDispose(() => {
22900
+ el.value?.style.setProperty('transform', transform);
22901
+ el.value?.style.setProperty('transition', transition);
22902
+ });
22903
+ });
22853
22904
  return {
22854
22905
  isDragging,
22855
22906
  dragProgress,
@@ -22982,9 +23033,9 @@
22982
23033
  });
22983
23034
  const {
22984
23035
  isDragging,
22985
- dragProgress,
22986
- dragStyles
23036
+ dragProgress
22987
23037
  } = useTouch({
23038
+ el: rootEl,
22988
23039
  isActive,
22989
23040
  isTemporary,
22990
23041
  width,
@@ -23054,7 +23105,7 @@
23054
23105
  'v-navigation-drawer--active': isActive.value,
23055
23106
  'v-navigation-drawer--sticky': isSticky.value
23056
23107
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
23057
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
23108
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
23058
23109
  }, scopeId, attrs), {
23059
23110
  default: () => [hasImage && vue.createVNode("div", {
23060
23111
  "key": "image",
@@ -24165,8 +24216,8 @@
24165
24216
  } = _ref;
24166
24217
  const isActive = useProxiedModel(props, 'modelValue');
24167
24218
  const {
24168
- locationStyles
24169
- } = useLocation(props);
24219
+ mainStyles
24220
+ } = useLayout();
24170
24221
  const {
24171
24222
  positionClasses
24172
24223
  } = usePosition(props);
@@ -24188,6 +24239,7 @@
24188
24239
  const overlay = vue.ref();
24189
24240
  const timerRef = vue.ref();
24190
24241
  const isHovering = vue.shallowRef(false);
24242
+ const startY = vue.shallowRef(0);
24191
24243
  vue.watch(isActive, startTimeout);
24192
24244
  vue.watch(() => props.timeout, startTimeout);
24193
24245
  vue.onMounted(() => {
@@ -24217,6 +24269,20 @@
24217
24269
  isHovering.value = false;
24218
24270
  startTimeout();
24219
24271
  }
24272
+ function onTouchstart(event) {
24273
+ startY.value = event.touches[0].clientY;
24274
+ }
24275
+ function onTouchend(event) {
24276
+ if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {
24277
+ isActive.value = false;
24278
+ }
24279
+ }
24280
+ const locationClasses = vue.computed(() => {
24281
+ return props.location.split(' ').reduce((acc, loc) => {
24282
+ acc[`v-snackbar--${loc}`] = true;
24283
+ return acc;
24284
+ }, {});
24285
+ });
24220
24286
  useRender(() => {
24221
24287
  const overlayProps = VOverlay.filterProps(props);
24222
24288
  const hasContent = !!(slots.default || slots.text || props.text);
@@ -24227,14 +24293,14 @@
24227
24293
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
24228
24294
  'v-snackbar--timer': !!props.timer,
24229
24295
  'v-snackbar--vertical': props.vertical
24230
- }, positionClasses.value, props.class],
24231
- "style": props.style
24296
+ }, locationClasses.value, positionClasses.value, props.class],
24297
+ "style": [mainStyles.value, props.style]
24232
24298
  }, overlayProps, {
24233
24299
  "modelValue": isActive.value,
24234
24300
  "onUpdate:modelValue": $event => isActive.value = $event,
24235
24301
  "contentProps": vue.mergeProps({
24236
24302
  class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
24237
- style: [locationStyles.value, colorStyles.value],
24303
+ style: [colorStyles.value],
24238
24304
  onPointerenter,
24239
24305
  onPointerleave
24240
24306
  }, overlayProps.contentProps),
@@ -24242,7 +24308,9 @@
24242
24308
  "noClickAnimation": true,
24243
24309
  "scrim": false,
24244
24310
  "scrollStrategy": "none",
24245
- "_disableGlobalStack": true
24311
+ "_disableGlobalStack": true,
24312
+ "onTouchstart": onTouchstart,
24313
+ "onTouchend": onTouchend
24246
24314
  }, scopeId), {
24247
24315
  default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && vue.createVNode("div", {
24248
24316
  "key": "timer",
@@ -26414,6 +26482,7 @@
26414
26482
  app: Boolean,
26415
26483
  appear: Boolean,
26416
26484
  extended: Boolean,
26485
+ layout: Boolean,
26417
26486
  location: {
26418
26487
  type: String,
26419
26488
  default: 'bottom end'
@@ -26464,8 +26533,8 @@
26464
26533
  id: props.name,
26465
26534
  order: vue.computed(() => parseInt(props.order, 10)),
26466
26535
  position,
26467
- layoutSize: height,
26468
- elementSize: vue.computed(() => height.value + 32),
26536
+ layoutSize: vue.computed(() => props.layout ? height.value + 24 : 0),
26537
+ elementSize: vue.computed(() => height.value + 24),
26469
26538
  active: vue.computed(() => props.app && model.value),
26470
26539
  absolute: vue.toRef(props, 'absolute')
26471
26540
  });
@@ -26519,9 +26588,18 @@
26519
26588
  },
26520
26589
  inset: Boolean,
26521
26590
  hideInput: Boolean,
26522
- min: Number,
26523
- max: Number,
26524
- step: Number,
26591
+ min: {
26592
+ type: Number,
26593
+ default: -Infinity
26594
+ },
26595
+ max: {
26596
+ type: Number,
26597
+ default: Infinity
26598
+ },
26599
+ step: {
26600
+ type: Number,
26601
+ default: 1
26602
+ },
26525
26603
  ...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
26526
26604
  ...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
26527
26605
  ...makeFocusProps()
@@ -26532,8 +26610,8 @@
26532
26610
  props: {
26533
26611
  ...makeVNumberInputProps(),
26534
26612
  modelValue: {
26535
- type: [Number, String],
26536
- default: 0
26613
+ type: Number,
26614
+ default: undefined
26537
26615
  }
26538
26616
  },
26539
26617
  emits: {
@@ -26552,20 +26630,45 @@
26552
26630
  blur
26553
26631
  } = useFocus(props);
26554
26632
  const inputRef = vue.ref();
26633
+ const stepDecimals = vue.computed(() => getDecimals(props.step));
26634
+ const modelDecimals = vue.computed(() => model.value != null ? getDecimals(model.value) : 0);
26635
+ const canIncrease = vue.computed(() => {
26636
+ if (model.value == null) return true;
26637
+ return model.value + props.step <= props.max;
26638
+ });
26639
+ const canDecrease = vue.computed(() => {
26640
+ if (model.value == null) return true;
26641
+ return model.value - props.step >= props.min;
26642
+ });
26643
+ vue.watchEffect(() => {
26644
+ if (model.value != null && (model.value < props.min || model.value > props.max)) {
26645
+ model.value = clamp(model.value, props.min, props.max);
26646
+ }
26647
+ });
26555
26648
  function onFocus() {
26556
26649
  if (!isFocused.value) focus();
26557
26650
  }
26558
26651
  const controlVariant = vue.computed(() => {
26559
26652
  return props.hideInput ? 'stacked' : props.controlVariant;
26560
26653
  });
26654
+ const incrementSlotProps = vue.computed(() => ({
26655
+ click: onClickUp
26656
+ }));
26657
+ const decrementSlotProps = vue.computed(() => ({
26658
+ click: onClickDown
26659
+ }));
26561
26660
  function toggleUpDown() {
26562
26661
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
26662
+ if (model.value == null) {
26663
+ model.value = 0;
26664
+ return;
26665
+ }
26666
+ const decimals = Math.max(modelDecimals.value, stepDecimals.value);
26563
26667
  if (increment) {
26564
- inputRef.value?.stepUp();
26668
+ if (canIncrease.value) model.value = +(model.value + props.step).toFixed(decimals);
26565
26669
  } else {
26566
- inputRef.value?.stepDown();
26670
+ if (canDecrease.value) model.value = +(model.value - props.step).toFixed(decimals);
26567
26671
  }
26568
- if (inputRef.value) model.value = parseInt(inputRef.value.value, 10);
26569
26672
  }
26570
26673
  function onClickUp() {
26571
26674
  toggleUpDown();
@@ -26573,12 +26676,28 @@
26573
26676
  function onClickDown() {
26574
26677
  toggleUpDown(false);
26575
26678
  }
26576
- const incrementSlotProps = vue.computed(() => ({
26577
- click: onClickUp
26578
- }));
26579
- const decrementSlotProps = vue.computed(() => ({
26580
- click: onClickDown
26581
- }));
26679
+ function onKeydown(e) {
26680
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace'].includes(e.key) || e.ctrlKey) return;
26681
+ if (['ArrowDown'].includes(e.key)) {
26682
+ e.preventDefault();
26683
+ toggleUpDown(false);
26684
+ return;
26685
+ }
26686
+ if (['ArrowUp'].includes(e.key)) {
26687
+ e.preventDefault();
26688
+ toggleUpDown();
26689
+ return;
26690
+ }
26691
+
26692
+ // Only numbers, +, - & . are allowed
26693
+ if (!/^[0-9\-+.]+$/.test(e.key)) {
26694
+ e.preventDefault();
26695
+ }
26696
+ }
26697
+ function onInput(e) {
26698
+ const el = e.target;
26699
+ model.value = el.value ? +el.value : undefined;
26700
+ }
26582
26701
  useRender(() => {
26583
26702
  const fieldProps = filterFieldProps(props);
26584
26703
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
@@ -26591,9 +26710,11 @@
26591
26710
  return vue.createVNode("div", {
26592
26711
  "class": "v-number-input__control"
26593
26712
  }, [!slots.decrement ? vue.createVNode(VBtn, {
26713
+ "disabled": !canDecrease.value,
26594
26714
  "flat": true,
26595
26715
  "key": "decrement-btn",
26596
26716
  "height": defaultHeight,
26717
+ "name": "decrement-btn",
26597
26718
  "icon": "$expand",
26598
26719
  "size": "small",
26599
26720
  "onClick": onClickDown
@@ -26601,6 +26722,7 @@
26601
26722
  "key": "decrement-defaults",
26602
26723
  "defaults": {
26603
26724
  VBtn: {
26725
+ disabled: !canDecrease.value,
26604
26726
  flat: true,
26605
26727
  height: defaultHeight,
26606
26728
  size: 'small',
@@ -26612,9 +26734,11 @@
26612
26734
  }), vue.createVNode(VDivider, {
26613
26735
  "vertical": controlVariant.value !== 'stacked'
26614
26736
  }, null), !slots.increment ? vue.createVNode(VBtn, {
26737
+ "disabled": !canIncrease.value,
26615
26738
  "flat": true,
26616
26739
  "key": "increment-btn",
26617
26740
  "height": defaultHeight,
26741
+ "name": "increment-btn",
26618
26742
  "icon": "$collapse",
26619
26743
  "onClick": onClickUp,
26620
26744
  "size": "small"
@@ -26622,6 +26746,7 @@
26622
26746
  "key": "increment-defaults",
26623
26747
  "defaults": {
26624
26748
  VBtn: {
26749
+ disabled: !canIncrease.value,
26625
26750
  flat: true,
26626
26751
  height: defaultHeight,
26627
26752
  size: 'small',
@@ -26663,17 +26788,16 @@
26663
26788
  ...slotProps
26664
26789
  }
26665
26790
  } = _ref2;
26666
- return vue.withDirectives(vue.createVNode("input", vue.mergeProps({
26791
+ return vue.createVNode("input", vue.mergeProps({
26667
26792
  "ref": inputRef,
26668
- "type": "number",
26669
- "onUpdate:modelValue": $event => model.value = $event,
26793
+ "type": "text",
26794
+ "value": model.value,
26795
+ "onInput": onInput,
26796
+ "onKeydown": onKeydown,
26670
26797
  "class": fieldClass,
26671
- "max": props.max,
26672
- "min": props.min,
26673
- "step": props.step,
26674
26798
  "onFocus": onFocus,
26675
26799
  "onBlur": blur
26676
- }, inputAttrs), null), [[vue.vModelText, model.value]]);
26800
+ }, inputAttrs), null);
26677
26801
  },
26678
26802
  'append-inner': controlVariant.value === 'split' ? () => vue.createVNode("div", {
26679
26803
  "class": "v-number-input__control"
@@ -26703,6 +26827,112 @@
26703
26827
  }
26704
26828
  });
26705
26829
 
26830
+ // Types
26831
+
26832
+ const makeVSnackbarQueueProps = propsFactory({
26833
+ // TODO: Port this to Snackbar on dev
26834
+ closable: [Boolean, String],
26835
+ closeText: {
26836
+ type: String,
26837
+ default: '$vuetify.dismiss'
26838
+ },
26839
+ modelValue: {
26840
+ type: Array,
26841
+ default: () => []
26842
+ },
26843
+ ...omit(makeVSnackbarProps(), ['modelValue'])
26844
+ }, 'VSnackbarQueue');
26845
+ const VSnackbarQueue = genericComponent()({
26846
+ name: 'VSnackbarQueue',
26847
+ props: makeVSnackbarQueueProps(),
26848
+ emits: {
26849
+ 'update:modelValue': val => true
26850
+ },
26851
+ setup(props, _ref) {
26852
+ let {
26853
+ emit,
26854
+ slots
26855
+ } = _ref;
26856
+ const {
26857
+ t
26858
+ } = useLocale();
26859
+ const isActive = vue.shallowRef(false);
26860
+ const isVisible = vue.shallowRef(false);
26861
+ const current = vue.shallowRef();
26862
+ vue.watch(() => props.modelValue.length, (val, oldVal) => {
26863
+ if (!isVisible.value && val > oldVal) {
26864
+ showNext();
26865
+ }
26866
+ });
26867
+ vue.watch(isActive, val => {
26868
+ if (val) isVisible.value = true;
26869
+ });
26870
+ function onAfterLeave() {
26871
+ if (props.modelValue.length) {
26872
+ showNext();
26873
+ } else {
26874
+ current.value = undefined;
26875
+ isVisible.value = false;
26876
+ }
26877
+ }
26878
+ function showNext() {
26879
+ const [next, ...rest] = props.modelValue;
26880
+ emit('update:modelValue', rest);
26881
+ current.value = typeof next === 'string' ? {
26882
+ text: next
26883
+ } : next;
26884
+ vue.nextTick(() => {
26885
+ isActive.value = true;
26886
+ });
26887
+ }
26888
+ function onClickClose() {
26889
+ isActive.value = false;
26890
+ }
26891
+ const btnProps = vue.computed(() => ({
26892
+ color: typeof props.closable === 'string' ? props.closable : undefined,
26893
+ text: t(props.closeText)
26894
+ }));
26895
+ useRender(() => {
26896
+ const hasActions = !!(props.closable || slots.actions);
26897
+ const {
26898
+ modelValue: _,
26899
+ ...snackbarProps
26900
+ } = VSnackbar.filterProps(props);
26901
+ return vue.createVNode(vue.Fragment, null, [isVisible.value && !!current.value && (slots.default ? vue.createVNode(VDefaultsProvider, {
26902
+ "defaults": {
26903
+ VSnackbar: current.value
26904
+ }
26905
+ }, {
26906
+ default: () => [slots.default({
26907
+ item: current.value
26908
+ })]
26909
+ }) : vue.createVNode(VSnackbar, vue.mergeProps(snackbarProps, current.value, {
26910
+ "modelValue": isActive.value,
26911
+ "onUpdate:modelValue": $event => isActive.value = $event,
26912
+ "onAfterLeave": onAfterLeave
26913
+ }), {
26914
+ text: slots.text ? () => slots.text?.({
26915
+ item: current.value
26916
+ }) : undefined,
26917
+ actions: hasActions ? () => vue.createVNode(vue.Fragment, null, [!slots.actions ? vue.createVNode(VBtn, vue.mergeProps(btnProps.value, {
26918
+ "onClick": onClickClose
26919
+ }), null) : vue.createVNode(VDefaultsProvider, {
26920
+ "defaults": {
26921
+ VBtn: btnProps.value
26922
+ }
26923
+ }, {
26924
+ default: () => [slots.actions({
26925
+ item: current.value,
26926
+ props: {
26927
+ onClick: onClickClose
26928
+ }
26929
+ })]
26930
+ })]) : undefined
26931
+ }))]);
26932
+ });
26933
+ }
26934
+ });
26935
+
26706
26936
  // Utilities
26707
26937
 
26708
26938
  // Types
@@ -27218,9 +27448,7 @@
27218
27448
  ampm: Boolean,
27219
27449
  color: String,
27220
27450
  disabled: Boolean,
27221
- displayedValue: {
27222
- default: null
27223
- },
27451
+ displayedValue: null,
27224
27452
  double: Boolean,
27225
27453
  format: {
27226
27454
  type: Function,
@@ -28349,6 +28577,7 @@
28349
28577
  VSlideYTransition: VSlideYTransition,
28350
28578
  VSlider: VSlider,
28351
28579
  VSnackbar: VSnackbar,
28580
+ VSnackbarQueue: VSnackbarQueue,
28352
28581
  VSpacer: VSpacer,
28353
28582
  VSparkline: VSparkline,
28354
28583
  VSpeedDial: VSpeedDial,
@@ -28605,7 +28834,7 @@
28605
28834
  goTo
28606
28835
  };
28607
28836
  }
28608
- const version$1 = "3.5.16";
28837
+ const version$1 = "3.5.17";
28609
28838
  createVuetify$1.version = version$1;
28610
28839
 
28611
28840
  // Vue's inject() can only be used in setup
@@ -28858,7 +29087,7 @@
28858
29087
 
28859
29088
  /* eslint-disable local-rules/sort-imports */
28860
29089
 
28861
- const version = "3.5.16";
29090
+ const version = "3.5.17";
28862
29091
 
28863
29092
  /* eslint-disable local-rules/sort-imports */
28864
29093