@vuetify/nightly 3.2.0-dev-20230309.0 → 3.2.0-dev-20230322.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/json/attributes.json +210 -30
  3. package/dist/json/importMap.json +4 -4
  4. package/dist/json/tags.json +47 -2
  5. package/dist/json/web-types.json +529 -63
  6. package/dist/vuetify-labs.css +1186 -1146
  7. package/dist/vuetify-labs.d.ts +56928 -14280
  8. package/dist/vuetify-labs.esm.js +557 -363
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +557 -363
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +204 -179
  13. package/dist/vuetify.d.ts +55330 -15866
  14. package/dist/vuetify.esm.js +400 -306
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +400 -306
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +668 -667
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/index.d.ts +6 -9
  22. package/lib/blueprints/md1.d.ts +6 -9
  23. package/lib/blueprints/md2.d.ts +6 -9
  24. package/lib/blueprints/md3.d.ts +6 -9
  25. package/lib/blueprints/md3.mjs +6 -0
  26. package/lib/blueprints/md3.mjs.map +1 -1
  27. package/lib/components/VAlert/VAlert.mjs +29 -15
  28. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  29. package/lib/components/VAlert/index.d.ts +510 -82
  30. package/lib/components/VApp/VApp.css +1 -0
  31. package/lib/components/VApp/VApp.sass +1 -0
  32. package/lib/components/VApp/index.d.ts +158 -20
  33. package/lib/components/VAppBar/VAppBar.mjs +2 -2
  34. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  35. package/lib/components/VAppBar/index.d.ts +616 -110
  36. package/lib/components/VAutocomplete/VAutocomplete.mjs +13 -7
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  38. package/lib/components/VAutocomplete/index.d.ts +1656 -130
  39. package/lib/components/VAvatar/index.d.ts +205 -29
  40. package/lib/components/VBadge/index.d.ts +284 -42
  41. package/lib/components/VBanner/VBanner.mjs +19 -12
  42. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  43. package/lib/components/VBanner/index.d.ts +478 -84
  44. package/lib/components/VBottomNavigation/index.d.ts +321 -40
  45. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
  46. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  47. package/lib/components/VBreadcrumbs/index.d.ts +325 -45
  48. package/lib/components/VBtn/VBtn.css +0 -5
  49. package/lib/components/VBtn/VBtn.mjs +65 -58
  50. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  51. package/lib/components/VBtn/VBtn.sass +0 -7
  52. package/lib/components/VBtn/_variables.scss +0 -2
  53. package/lib/components/VBtn/index.d.ts +452 -69
  54. package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -7
  55. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  56. package/lib/components/VBtnGroup/index.d.ts +185 -26
  57. package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
  58. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  59. package/lib/components/VBtnToggle/index.d.ts +245 -35
  60. package/lib/components/VCard/VCard.mjs +10 -6
  61. package/lib/components/VCard/VCard.mjs.map +1 -1
  62. package/lib/components/VCard/VCardItem.mjs +27 -23
  63. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  64. package/lib/components/VCard/index.d.ts +938 -172
  65. package/lib/components/VCarousel/index.d.ts +561 -123
  66. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  67. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  68. package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -4
  69. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  70. package/lib/components/VCheckbox/index.d.ts +831 -147
  71. package/lib/components/VChip/VChip.css +110 -90
  72. package/lib/components/VChip/VChip.mjs +70 -48
  73. package/lib/components/VChip/VChip.mjs.map +1 -1
  74. package/lib/components/VChip/_mixins.scss +27 -23
  75. package/lib/components/VChip/index.d.ts +474 -76
  76. package/lib/components/VChipGroup/index.d.ts +227 -32
  77. package/lib/components/VCode/index.d.ts +109 -16
  78. package/lib/components/VColorPicker/index.d.ts +284 -20
  79. package/lib/components/VCombobox/VCombobox.mjs +13 -7
  80. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  81. package/lib/components/VCombobox/index.d.ts +1668 -130
  82. package/lib/components/VCounter/index.d.ts +1894 -87
  83. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
  84. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  85. package/lib/components/VDefaultsProvider/index.d.ts +133 -21
  86. package/lib/components/VDialog/VDialog.css +31 -24
  87. package/lib/components/VDialog/VDialog.mjs +2 -2
  88. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  89. package/lib/components/VDialog/VDialog.sass +19 -12
  90. package/lib/components/VDialog/index.d.ts +2362 -146
  91. package/lib/components/VDivider/index.d.ts +130 -23
  92. package/lib/components/VExpansionPanel/index.d.ts +719 -119
  93. package/lib/components/VField/index.d.ts +163 -21
  94. package/lib/components/VFileInput/index.d.ts +1038 -104
  95. package/lib/components/VFooter/VFooter.css +2 -0
  96. package/lib/components/VFooter/VFooter.sass +2 -0
  97. package/lib/components/VFooter/_variables.scss +2 -0
  98. package/lib/components/VFooter/index.d.ts +203 -28
  99. package/lib/components/VForm/index.d.ts +204 -23
  100. package/lib/components/VGrid/VCol.mjs +6 -5
  101. package/lib/components/VGrid/VCol.mjs.map +1 -1
  102. package/lib/components/VGrid/VRow.mjs +4 -4
  103. package/lib/components/VGrid/VRow.mjs.map +1 -1
  104. package/lib/components/VGrid/index.d.ts +733 -76
  105. package/lib/components/VHover/index.d.ts +182 -35
  106. package/lib/components/VIcon/index.d.ts +494 -50
  107. package/lib/components/VImg/VImg.mjs +2 -2
  108. package/lib/components/VImg/VImg.mjs.map +1 -1
  109. package/lib/components/VImg/index.d.ts +275 -46
  110. package/lib/components/VInput/index.d.ts +315 -53
  111. package/lib/components/VItemGroup/index.d.ts +308 -52
  112. package/lib/components/VKbd/VKbd.css +1 -0
  113. package/lib/components/VKbd/VKbd.sass +1 -0
  114. package/lib/components/VKbd/_variables.scss +1 -0
  115. package/lib/components/VKbd/index.d.ts +109 -16
  116. package/lib/components/VLabel/index.d.ts +113 -20
  117. package/lib/components/VLayout/index.d.ts +296 -41
  118. package/lib/components/VLazy/VLazy.mjs +4 -1
  119. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  120. package/lib/components/VLazy/index.d.ts +219 -30
  121. package/lib/components/VList/VListChildren.mjs +2 -2
  122. package/lib/components/VList/VListChildren.mjs.map +1 -1
  123. package/lib/components/VList/VListGroup.mjs +1 -4
  124. package/lib/components/VList/VListGroup.mjs.map +1 -1
  125. package/lib/components/VList/VListItem.mjs +23 -19
  126. package/lib/components/VList/VListItem.mjs.map +1 -1
  127. package/lib/components/VList/index.d.ts +1461 -223
  128. package/lib/components/VLocaleProvider/index.d.ts +121 -20
  129. package/lib/components/VMain/index.d.ts +118 -17
  130. package/lib/components/VMenu/VMenu.css +4 -4
  131. package/lib/components/VMenu/VMenu.mjs +2 -2
  132. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  133. package/lib/components/VMenu/VMenu.sass +1 -1
  134. package/lib/components/VMenu/index.d.ts +2368 -142
  135. package/lib/components/VMessages/index.d.ts +1921 -98
  136. package/lib/components/VNavigationDrawer/index.d.ts +379 -56
  137. package/lib/components/VOverlay/VOverlay.css +2 -2
  138. package/lib/components/VOverlay/VOverlay.mjs +1 -4
  139. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  140. package/lib/components/VOverlay/VOverlay.sass +1 -1
  141. package/lib/components/VOverlay/_variables.scss +1 -1
  142. package/lib/components/VOverlay/index.d.ts +519 -85
  143. package/lib/components/VPagination/index.d.ts +502 -68
  144. package/lib/components/VParallax/VParallax.mjs +3 -3
  145. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  146. package/lib/components/VParallax/index.d.ts +141 -28
  147. package/lib/components/VProgressCircular/index.d.ts +186 -25
  148. package/lib/components/VProgressLinear/index.d.ts +319 -48
  149. package/lib/components/VRadio/index.d.ts +313 -57
  150. package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -6
  151. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  152. package/lib/components/VRadioGroup/index.d.ts +463 -83
  153. package/lib/components/VRangeSlider/index.d.ts +528 -80
  154. package/lib/components/VRating/VRating.mjs.map +1 -1
  155. package/lib/components/VRating/index.d.ts +305 -43
  156. package/lib/components/VResponsive/index.d.ts +142 -27
  157. package/lib/components/VSelect/VSelect.mjs +13 -7
  158. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  159. package/lib/components/VSelect/index.d.ts +3060 -328
  160. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -4
  161. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  162. package/lib/components/VSelectionControl/index.d.ts +76 -4
  163. package/lib/components/VSelectionControlGroup/index.d.ts +242 -38
  164. package/lib/components/VSheet/VSheet.mjs +1 -7
  165. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  166. package/lib/components/VSheet/index.d.ts +194 -31
  167. package/lib/components/VSlideGroup/index.d.ts +475 -83
  168. package/lib/components/VSlider/VSliderTrack.mjs +1 -0
  169. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  170. package/lib/components/VSlider/index.d.ts +521 -79
  171. package/lib/components/VSlider/slider.mjs +5 -6
  172. package/lib/components/VSlider/slider.mjs.map +1 -1
  173. package/lib/components/VSnackbar/VSnackbar.css +2 -7
  174. package/lib/components/VSnackbar/VSnackbar.mjs +4 -3
  175. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  176. package/lib/components/VSnackbar/VSnackbar.sass +3 -8
  177. package/lib/components/VSnackbar/index.d.ts +1219 -81
  178. package/lib/components/VSwitch/VSwitch.mjs +2 -2
  179. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  180. package/lib/components/VSwitch/index.d.ts +498 -92
  181. package/lib/components/VSystemBar/index.d.ts +184 -27
  182. package/lib/components/VTable/index.d.ts +190 -35
  183. package/lib/components/VTabs/VTab.mjs +7 -23
  184. package/lib/components/VTabs/VTab.mjs.map +1 -1
  185. package/lib/components/VTabs/index.d.ts +623 -71
  186. package/lib/components/VTextField/VTextField.mjs +8 -5
  187. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  188. package/lib/components/VTextField/index.d.ts +1404 -106
  189. package/lib/components/VTextarea/VTextarea.mjs +7 -1
  190. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  191. package/lib/components/VTextarea/index.d.ts +1014 -102
  192. package/lib/components/VThemeProvider/index.d.ts +124 -19
  193. package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
  194. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  195. package/lib/components/VTimeline/index.d.ts +441 -71
  196. package/lib/components/VToolbar/VToolbar.mjs +10 -9
  197. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  198. package/lib/components/VToolbar/index.d.ts +542 -93
  199. package/lib/components/VTooltip/VTooltip.css +3 -3
  200. package/lib/components/VTooltip/VTooltip.mjs +2 -2
  201. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  202. package/lib/components/VTooltip/VTooltip.sass +1 -1
  203. package/lib/components/VTooltip/index.d.ts +1276 -82
  204. package/lib/components/VValidation/index.d.ts +201 -30
  205. package/lib/components/VWindow/index.d.ts +527 -95
  206. package/lib/components/index.d.ts +55255 -15788
  207. package/lib/components/transitions/index.d.ts +2097 -308
  208. package/lib/composables/defaults.mjs +2 -0
  209. package/lib/composables/defaults.mjs.map +1 -1
  210. package/lib/composables/display.mjs +2 -0
  211. package/lib/composables/display.mjs.map +1 -1
  212. package/lib/composables/form.mjs.map +1 -1
  213. package/lib/entry-bundler.mjs +1 -1
  214. package/lib/framework.mjs +1 -1
  215. package/lib/index.d.ts +7 -10
  216. package/lib/labs/VDataTable/VDataTable.css +15 -0
  217. package/lib/labs/VDataTable/VDataTable.mjs +41 -17
  218. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  219. package/lib/labs/VDataTable/VDataTable.sass +9 -0
  220. package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
  221. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  222. package/lib/labs/VDataTable/VDataTableRow.mjs +8 -2
  223. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  224. package/lib/labs/VDataTable/VDataTableRows.mjs +2 -1
  225. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  226. package/lib/labs/VDataTable/VDataTableServer.mjs +39 -17
  227. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  228. package/lib/labs/VDataTable/VDataTableVirtual.mjs +23 -12
  229. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  230. package/lib/labs/VDataTable/composables/expand.mjs +1 -1
  231. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  232. package/lib/labs/VDataTable/composables/group.mjs +12 -1
  233. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  234. package/lib/labs/VDataTable/composables/options.mjs +0 -12
  235. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  236. package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
  237. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  238. package/lib/labs/VDataTable/composables/select.mjs +1 -1
  239. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  240. package/lib/labs/VDataTable/composables/sort.mjs +19 -3
  241. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  242. package/lib/labs/VDataTable/index.d.ts +4179 -1017
  243. package/lib/labs/VVirtualScroll/index.d.ts +32 -1
  244. package/lib/labs/components.d.ts +4214 -1026
  245. package/lib/locale/adapters/vue-i18n.d.ts +1 -1
  246. package/lib/locale/adapters/vue-i18n.mjs +1 -1
  247. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  248. package/lib/styles/main.css +4 -0
  249. package/lib/styles/settings/_utilities.scss +7 -0
  250. package/lib/util/animation.mjs +8 -1
  251. package/lib/util/animation.mjs.map +1 -1
  252. package/lib/util/defineComponent.mjs +15 -7
  253. package/lib/util/defineComponent.mjs.map +1 -1
  254. package/lib/util/helpers.mjs +4 -0
  255. package/lib/util/helpers.mjs.map +1 -1
  256. package/package.json +5 -10
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.2.0-dev-20230309.0
2
+ * Vuetify v3.2.0-dev-20230322.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -203,6 +203,10 @@ function clamp(value) {
203
203
  let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
204
204
  return Math.max(min, Math.min(max, value));
205
205
  }
206
+ function getDecimals(value) {
207
+ const trimmedStr = value.toString().trim();
208
+ return trimmedStr.includes('.') ? trimmedStr.length - trimmedStr.indexOf('.') - 1 : 0;
209
+ }
206
210
  function padEnd(str, length) {
207
211
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
208
212
  return str + char.repeat(Math.max(0, length - str.length));
@@ -485,7 +489,14 @@ function animate(el, keyframes, options) {
485
489
  if (typeof el.animate === 'undefined') return {
486
490
  finished: Promise.resolve()
487
491
  };
488
- const animation = el.animate(keyframes, options);
492
+ let animation;
493
+ try {
494
+ animation = el.animate(keyframes, options);
495
+ } catch (err) {
496
+ return {
497
+ finished: Promise.resolve()
498
+ };
499
+ }
489
500
  if (typeof animation.finished === 'undefined') {
490
501
  animation.finished = new Promise(resolve => {
491
502
  animation.onfinish = () => {
@@ -949,6 +960,8 @@ function provideDefaults(defaults, options) {
949
960
  const injectedDefaults = useDefaults();
950
961
  const providedDefaults = ref(defaults);
951
962
  const newDefaults = computed(() => {
963
+ const disabled = unref(options?.disabled);
964
+ if (disabled) return injectedDefaults.value;
952
965
  const scoped = unref(options?.scoped);
953
966
  const reset = unref(options?.reset);
954
967
  const root = unref(options?.root);
@@ -1003,15 +1016,22 @@ function useToggleScope(source, fn) {
1003
1016
  function propIsDefined(vnode, prop) {
1004
1017
  return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1005
1018
  }
1006
- const defineComponent = function defineComponent(options) {
1019
+
1020
+ // No props
1021
+
1022
+ // Implementation
1023
+ function defineComponent(options) {
1007
1024
  options._setup = options._setup ?? options.setup;
1008
1025
  if (!options.name) {
1009
1026
  consoleWarn('The component is missing an explicit name, unable to generate default prop value');
1010
1027
  return options;
1011
1028
  }
1012
1029
  if (options._setup) {
1013
- options.props = options.props ?? {};
1014
- options.props = propsFactory(options.props, toKebabCase(options.name))();
1030
+ options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1031
+ const propKeys = Object.keys(options.props);
1032
+ options.filterProps = function filterProps(props) {
1033
+ return pick(props, propKeys);
1034
+ };
1015
1035
  options.props._as = String;
1016
1036
  options.setup = function setup(props, ctx) {
1017
1037
  const defaults = useDefaults();
@@ -1022,10 +1042,11 @@ const defineComponent = function defineComponent(options) {
1022
1042
  const componentDefaults = computed(() => defaults.value[props._as ?? options.name]);
1023
1043
  const _props = new Proxy(props, {
1024
1044
  get(target, prop) {
1045
+ const propValue = Reflect.get(target, prop);
1025
1046
  if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1026
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? target[prop];
1047
+ return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1027
1048
  }
1028
- return Reflect.get(target, prop);
1049
+ return propValue;
1029
1050
  }
1030
1051
  });
1031
1052
  const _subcomponentDefaults = shallowRef();
@@ -1050,7 +1071,7 @@ const defineComponent = function defineComponent(options) {
1050
1071
  };
1051
1072
  }
1052
1073
  return options;
1053
- };
1074
+ }
1054
1075
  // Implementation
1055
1076
  function genericComponent() {
1056
1077
  let exposeDefaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
@@ -2153,6 +2174,7 @@ const VDefaultsProvider = genericComponent(false)({
2153
2174
  name: 'VDefaultsProvider',
2154
2175
  props: {
2155
2176
  defaults: Object,
2177
+ disabled: Boolean,
2156
2178
  reset: [Number, String],
2157
2179
  root: Boolean,
2158
2180
  scoped: Boolean
@@ -2163,6 +2185,7 @@ const VDefaultsProvider = genericComponent(false)({
2163
2185
  } = _ref;
2164
2186
  const {
2165
2187
  defaults,
2188
+ disabled,
2166
2189
  reset,
2167
2190
  root,
2168
2191
  scoped
@@ -2170,7 +2193,8 @@ const VDefaultsProvider = genericComponent(false)({
2170
2193
  provideDefaults(defaults, {
2171
2194
  reset,
2172
2195
  root,
2173
- scoped
2196
+ scoped,
2197
+ disabled
2174
2198
  });
2175
2199
  return () => slots.default?.();
2176
2200
  }
@@ -2792,7 +2816,7 @@ const VImg = genericComponent()({
2792
2816
  "class": ['v-img__img', containClasses.value],
2793
2817
  "src": normalisedSrc.value.src,
2794
2818
  "srcset": normalisedSrc.value.srcset,
2795
- "alt": "",
2819
+ "alt": props.alt,
2796
2820
  "sizes": props.sizes,
2797
2821
  "ref": image,
2798
2822
  "onLoad": onLoad,
@@ -2814,7 +2838,7 @@ const VImg = genericComponent()({
2814
2838
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && createVNode("img", {
2815
2839
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
2816
2840
  "src": normalisedSrc.value.lazySrc,
2817
- "alt": ""
2841
+ "alt": props.alt
2818
2842
  }, null)]
2819
2843
  });
2820
2844
  const __placeholder = () => {
@@ -3156,16 +3180,20 @@ const VToolbar = genericComponent()({
3156
3180
  default: () => [hasImage && createVNode("div", {
3157
3181
  "key": "image",
3158
3182
  "class": "v-toolbar__image"
3159
- }, [createVNode(VDefaultsProvider, {
3183
+ }, [!slots.image ? createVNode(VImg, {
3184
+ "key": "image-img",
3185
+ "cover": true,
3186
+ "src": props.image
3187
+ }, null) : createVNode(VDefaultsProvider, {
3188
+ "key": "image-defaults",
3189
+ "disabled": !props.image,
3160
3190
  "defaults": {
3161
3191
  VImg: {
3162
3192
  cover: true,
3163
3193
  src: props.image
3164
3194
  }
3165
3195
  }
3166
- }, {
3167
- default: () => [slots.image ? slots.image?.() : createVNode(VImg, null, null)]
3168
- })]), createVNode(VDefaultsProvider, {
3196
+ }, slots.image)]), createVNode(VDefaultsProvider, {
3169
3197
  "defaults": {
3170
3198
  VTabs: {
3171
3199
  height: convertToUnit(contentHeight.value)
@@ -3211,9 +3239,6 @@ const VToolbar = genericComponent()({
3211
3239
  };
3212
3240
  }
3213
3241
  });
3214
- function filterToolbarProps(props) {
3215
- return pick(props, Object.keys(VToolbar?.props ?? {}));
3216
- }
3217
3242
 
3218
3243
  // Utilities
3219
3244
 
@@ -3291,7 +3316,7 @@ const VAppBar = genericComponent()({
3291
3316
  absolute: toRef(props, 'absolute')
3292
3317
  });
3293
3318
  useRender(() => {
3294
- const [toolbarProps] = filterToolbarProps(props);
3319
+ const [toolbarProps] = VToolbar.filterProps(props);
3295
3320
  return createVNode(VToolbar, mergeProps({
3296
3321
  "ref": vToolbarRef,
3297
3322
  "class": ['v-app-bar', {
@@ -3382,8 +3407,6 @@ function useVariant(props) {
3382
3407
  };
3383
3408
  }
3384
3409
 
3385
- // Types
3386
-
3387
3410
  const makeVBtnGroupProps = propsFactory({
3388
3411
  divided: Boolean,
3389
3412
  ...makeBorderProps(),
@@ -3434,9 +3457,6 @@ const VBtnGroup = genericComponent()({
3434
3457
  });
3435
3458
  }
3436
3459
  });
3437
- function filterVBtnGroupProps(props) {
3438
- return pick(props, Object.keys(VBtnGroup.props));
3439
- }
3440
3460
 
3441
3461
  // Composables
3442
3462
 
@@ -3663,7 +3683,7 @@ const VBtnToggle = genericComponent()({
3663
3683
  selected
3664
3684
  } = useGroup(props, VBtnToggleSymbol);
3665
3685
  useRender(() => {
3666
- const [btnGroupProps] = filterVBtnGroupProps(props);
3686
+ const [btnGroupProps] = VBtnGroup.filterProps(props);
3667
3687
  return createVNode(VBtnGroup, mergeProps({
3668
3688
  "class": "v-btn-toggle"
3669
3689
  }, btnGroupProps), {
@@ -4751,49 +4771,50 @@ function useSelectLink(link, select) {
4751
4771
 
4752
4772
  // Types
4753
4773
 
4774
+ const makeVBtnProps = propsFactory({
4775
+ active: {
4776
+ type: Boolean,
4777
+ default: undefined
4778
+ },
4779
+ symbol: {
4780
+ type: null,
4781
+ default: VBtnToggleSymbol
4782
+ },
4783
+ flat: Boolean,
4784
+ icon: [Boolean, String, Function, Object],
4785
+ prependIcon: IconValue,
4786
+ appendIcon: IconValue,
4787
+ block: Boolean,
4788
+ stacked: Boolean,
4789
+ ripple: {
4790
+ type: Boolean,
4791
+ default: true
4792
+ },
4793
+ ...makeBorderProps(),
4794
+ ...makeRoundedProps(),
4795
+ ...makeDensityProps(),
4796
+ ...makeDimensionProps(),
4797
+ ...makeElevationProps(),
4798
+ ...makeGroupItemProps(),
4799
+ ...makeLoaderProps(),
4800
+ ...makeLocationProps(),
4801
+ ...makePositionProps(),
4802
+ ...makeRouterProps(),
4803
+ ...makeSizeProps(),
4804
+ ...makeTagProps({
4805
+ tag: 'button'
4806
+ }),
4807
+ ...makeThemeProps(),
4808
+ ...makeVariantProps({
4809
+ variant: 'elevated'
4810
+ })
4811
+ }, 'VBtn');
4754
4812
  const VBtn = genericComponent()({
4755
4813
  name: 'VBtn',
4756
4814
  directives: {
4757
4815
  Ripple
4758
4816
  },
4759
- props: {
4760
- active: {
4761
- type: Boolean,
4762
- default: undefined
4763
- },
4764
- symbol: {
4765
- type: null,
4766
- default: VBtnToggleSymbol
4767
- },
4768
- flat: Boolean,
4769
- icon: [Boolean, String, Function, Object],
4770
- prependIcon: IconValue,
4771
- appendIcon: IconValue,
4772
- block: Boolean,
4773
- stacked: Boolean,
4774
- ripple: {
4775
- type: Boolean,
4776
- default: true
4777
- },
4778
- ...makeBorderProps(),
4779
- ...makeRoundedProps(),
4780
- ...makeDensityProps(),
4781
- ...makeDimensionProps(),
4782
- ...makeElevationProps(),
4783
- ...makeGroupItemProps(),
4784
- ...makeLoaderProps(),
4785
- ...makeLocationProps(),
4786
- ...makePositionProps(),
4787
- ...makeRouterProps(),
4788
- ...makeSizeProps(),
4789
- ...makeTagProps({
4790
- tag: 'button'
4791
- }),
4792
- ...makeThemeProps(),
4793
- ...makeVariantProps({
4794
- variant: 'elevated'
4795
- })
4796
- },
4817
+ props: makeVBtnProps(),
4797
4818
  emits: {
4798
4819
  'group:selected': val => true
4799
4820
  },
@@ -4886,43 +4907,49 @@ const VBtn = genericComponent()({
4886
4907
  },
4887
4908
  "value": valueAttr.value
4888
4909
  }, {
4889
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode(VDefaultsProvider, {
4910
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
4890
4911
  "key": "prepend",
4912
+ "class": "v-btn__prepend"
4913
+ }, [!slots.prepend ? createVNode(VIcon, {
4914
+ "key": "prepend-icon",
4915
+ "icon": props.prependIcon
4916
+ }, null) : createVNode(VDefaultsProvider, {
4917
+ "key": "prepend-defaults",
4918
+ "disabled": !props.prependIcon,
4891
4919
  "defaults": {
4892
4920
  VIcon: {
4893
4921
  icon: props.prependIcon
4894
4922
  }
4895
4923
  }
4896
- }, {
4897
- default: () => [createVNode("span", {
4898
- "class": "v-btn__prepend"
4899
- }, [slots.prepend?.() ?? createVNode(VIcon, null, null)])]
4900
- }), createVNode("span", {
4924
+ }, slots.prepend)]), createVNode("span", {
4901
4925
  "class": "v-btn__content",
4902
4926
  "data-no-activator": ""
4903
- }, [createVNode(VDefaultsProvider, {
4904
- "key": "content",
4927
+ }, [!slots.default && hasIcon ? createVNode(VIcon, {
4928
+ "key": "content-icon",
4929
+ "icon": props.icon
4930
+ }, null) : createVNode(VDefaultsProvider, {
4931
+ "key": "content-defaults",
4932
+ "disabled": !hasIcon,
4905
4933
  "defaults": {
4906
4934
  VIcon: {
4907
- icon: hasIcon ? props.icon : undefined
4935
+ icon: props.icon
4908
4936
  }
4909
4937
  }
4910
- }, {
4911
- default: () => [slots.default?.() ?? (hasIcon && createVNode(VIcon, {
4912
- "key": "icon"
4913
- }, null))]
4914
- })]), !props.icon && hasAppend && createVNode(VDefaultsProvider, {
4938
+ }, slots.default)]), !props.icon && hasAppend && createVNode("span", {
4915
4939
  "key": "append",
4940
+ "class": "v-btn__append"
4941
+ }, [!slots.append ? createVNode(VIcon, {
4942
+ "key": "append-icon",
4943
+ "icon": props.appendIcon
4944
+ }, null) : createVNode(VDefaultsProvider, {
4945
+ "key": "append-defaults",
4946
+ "disabled": !props.appendIcon,
4916
4947
  "defaults": {
4917
4948
  VIcon: {
4918
4949
  icon: props.appendIcon
4919
4950
  }
4920
4951
  }
4921
- }, {
4922
- default: () => [createVNode("span", {
4923
- "class": "v-btn__append"
4924
- }, [slots.append?.() ?? createVNode(VIcon, null, null)])]
4925
- }), !!props.loading && createVNode("span", {
4952
+ }, slots.append)]), !!props.loading && createVNode("span", {
4926
4953
  "key": "loader",
4927
4954
  "class": "v-btn__loader"
4928
4955
  }, [slots.loader?.() ?? createVNode(VProgressCircular, {
@@ -5051,10 +5078,12 @@ const VAlert = genericComponent()({
5051
5078
  })
5052
5079
  },
5053
5080
  emits: {
5081
+ 'click:close': e => true,
5054
5082
  'update:modelValue': value => true
5055
5083
  },
5056
5084
  setup(props, _ref) {
5057
5085
  let {
5086
+ emit,
5058
5087
  slots
5059
5088
  } = _ref;
5060
5089
  const isActive = useProxiedModel(props, 'modelValue');
@@ -5104,6 +5133,7 @@ const VAlert = genericComponent()({
5104
5133
  'aria-label': t(props.closeLabel),
5105
5134
  onClick(e) {
5106
5135
  isActive.value = false;
5136
+ emit('click:close', e);
5107
5137
  }
5108
5138
  }));
5109
5139
  return () => {
@@ -5125,8 +5155,17 @@ const VAlert = genericComponent()({
5125
5155
  "key": "border",
5126
5156
  "class": ['v-alert__border', textColorClasses.value],
5127
5157
  "style": textColorStyles.value
5128
- }, null), hasPrepend && createVNode(VDefaultsProvider, {
5158
+ }, null), hasPrepend && createVNode("div", {
5129
5159
  "key": "prepend",
5160
+ "class": "v-alert__prepend"
5161
+ }, [!slots.prepend ? createVNode(VIcon, {
5162
+ "key": "prepend-icon",
5163
+ "density": props.density,
5164
+ "icon": icon.value,
5165
+ "size": props.prominent ? 44 : 28
5166
+ }, null) : createVNode(VDefaultsProvider, {
5167
+ "key": "prepend-defaults",
5168
+ "disabled": !icon.value,
5130
5169
  "defaults": {
5131
5170
  VIcon: {
5132
5171
  density: props.density,
@@ -5134,21 +5173,25 @@ const VAlert = genericComponent()({
5134
5173
  size: props.prominent ? 44 : 28
5135
5174
  }
5136
5175
  }
5137
- }, {
5138
- default: () => [createVNode("div", {
5139
- "class": "v-alert__prepend"
5140
- }, [slots.prepend ? slots.prepend() : icon.value && createVNode(VIcon, null, null)])]
5141
- }), createVNode("div", {
5176
+ }, slots.prepend)]), createVNode("div", {
5142
5177
  "class": "v-alert__content"
5143
5178
  }, [hasTitle && createVNode(VAlertTitle, {
5144
5179
  "key": "title"
5145
5180
  }, {
5146
- default: () => [slots.title ? slots.title() : props.title]
5147
- }), hasText && (slots.text ? slots.text() : props.text), slots.default?.()]), slots.append && createVNode("div", {
5181
+ default: () => [slots.title?.() ?? props.title]
5182
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && createVNode("div", {
5148
5183
  "key": "append",
5149
5184
  "class": "v-alert__append"
5150
- }, [slots.append()]), hasClose && createVNode(VDefaultsProvider, {
5185
+ }, [slots.append()]), hasClose && createVNode("div", {
5151
5186
  "key": "close",
5187
+ "class": "v-alert__close"
5188
+ }, [!slots.close ? createVNode(VBtn, mergeProps({
5189
+ "key": "close-btn",
5190
+ "icon": props.closeIcon,
5191
+ "size": "x-small",
5192
+ "variant": "text"
5193
+ }, closeProps.value), null) : createVNode(VDefaultsProvider, {
5194
+ "key": "close-defaults",
5152
5195
  "defaults": {
5153
5196
  VBtn: {
5154
5197
  icon: props.closeIcon,
@@ -5157,12 +5200,10 @@ const VAlert = genericComponent()({
5157
5200
  }
5158
5201
  }
5159
5202
  }, {
5160
- default: () => [createVNode("div", {
5161
- "class": "v-alert__close"
5162
- }, [slots.close?.({
5203
+ default: () => [slots.close?.({
5163
5204
  props: closeProps.value
5164
- }) ?? createVNode(VBtn, closeProps.value, null)])]
5165
- })]
5205
+ })]
5206
+ })])]
5166
5207
  });
5167
5208
  };
5168
5209
  }
@@ -6125,7 +6166,13 @@ const VTextField = genericComponent()({
6125
6166
  });
6126
6167
  }
6127
6168
  function onInput(e) {
6128
- model.value = e.target.value;
6169
+ const el = e.target;
6170
+ const caretPosition = [el.selectionStart, el.selectionEnd];
6171
+ model.value = el.value;
6172
+ nextTick(() => {
6173
+ el.selectionStart = caretPosition[0];
6174
+ el.selectionEnd = caretPosition[1];
6175
+ });
6129
6176
  }
6130
6177
  useRender(() => {
6131
6178
  const hasCounter = !!(slots.counter || props.counter || props.counterValue);
@@ -6225,9 +6272,6 @@ const VTextField = genericComponent()({
6225
6272
  return forwardRefs({}, vInputRef, vFieldRef, inputRef);
6226
6273
  }
6227
6274
  });
6228
- function filterVTextFieldProps(props) {
6229
- return pick(props, Object.keys(VTextField.props));
6230
- }
6231
6275
 
6232
6276
  // Types
6233
6277
 
@@ -6485,11 +6529,6 @@ const VSelectionControl = genericComponent()({
6485
6529
  };
6486
6530
  }
6487
6531
  });
6488
- function filterControlProps(props) {
6489
- return pick(props, Object.keys(VSelectionControl.props));
6490
- }
6491
-
6492
- // Types
6493
6532
 
6494
6533
  const makeVCheckboxBtnProps = propsFactory({
6495
6534
  indeterminate: Boolean,
@@ -6539,9 +6578,6 @@ const VCheckboxBtn = genericComponent()({
6539
6578
  return {};
6540
6579
  }
6541
6580
  });
6542
- function filterCheckboxBtnProps(props) {
6543
- return pick(props, Object.keys(VCheckboxBtn.props));
6544
- }
6545
6581
 
6546
6582
  // Types
6547
6583
 
@@ -6570,7 +6606,7 @@ const VCheckbox = genericComponent()({
6570
6606
  useRender(() => {
6571
6607
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
6572
6608
  const [inputProps, _1] = filterInputProps(props);
6573
- const [checkboxProps, _2] = filterCheckboxBtnProps(props);
6609
+ const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6574
6610
  return createVNode(VInput, mergeProps({
6575
6611
  "class": "v-checkbox"
6576
6612
  }, inputAttrs, inputProps, {
@@ -6827,10 +6863,13 @@ const VChip = genericComponent()({
6827
6863
  const link = useLink(props, attrs);
6828
6864
  const isLink = computed(() => props.link !== false && link.isLink.value);
6829
6865
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
6830
- function onCloseClick(e) {
6831
- isActive.value = false;
6832
- emit('click:close', e);
6833
- }
6866
+ const closeProps = computed(() => ({
6867
+ 'aria-label': t(props.closeLabel),
6868
+ onClick(e) {
6869
+ isActive.value = false;
6870
+ emit('click:close', e);
6871
+ }
6872
+ }));
6834
6873
  function onClick(e) {
6835
6874
  emit('click', e);
6836
6875
  if (!isClickable.value) return;
@@ -6845,10 +6884,12 @@ const VChip = genericComponent()({
6845
6884
  }
6846
6885
  return () => {
6847
6886
  const Tag = link.isLink.value ? 'a' : props.tag;
6848
- const hasAppend = !!(slots.append || props.appendIcon || props.appendAvatar);
6887
+ const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);
6888
+ const hasAppend = !!(hasAppendMedia || slots.append);
6849
6889
  const hasClose = !!(slots.close || props.closable);
6850
6890
  const hasFilter = !!(slots.filter || props.filter) && group;
6851
- const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6891
+ const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
6892
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
6852
6893
  const hasColor = !group || group.isSelected.value;
6853
6894
  return isActive.value && withDirectives(createVNode(Tag, {
6854
6895
  "class": ['v-chip', {
@@ -6866,77 +6907,94 @@ const VChip = genericComponent()({
6866
6907
  "onClick": onClick,
6867
6908
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
6868
6909
  }, {
6869
- default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VDefaultsProvider, {
6870
- "key": "filter",
6871
- "defaults": {
6872
- VIcon: {
6873
- icon: props.filterIcon
6874
- }
6875
- }
6910
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VExpandXTransition, {
6911
+ "key": "filter"
6876
6912
  }, {
6877
- default: () => [createVNode(VExpandXTransition, null, {
6878
- default: () => [withDirectives(createVNode("div", {
6879
- "class": "v-chip__filter"
6880
- }, [slots.filter ? slots.filter() : createVNode(VIcon, null, null)]), [[vShow, group.isSelected.value]])]
6881
- })]
6882
- }), hasPrepend && createVNode(VDefaultsProvider, {
6913
+ default: () => [withDirectives(createVNode("div", {
6914
+ "class": "v-chip__filter"
6915
+ }, [!slots.filter ? createVNode(VIcon, {
6916
+ "key": "filter-icon",
6917
+ "icon": props.filterIcon
6918
+ }, null) : withDirectives(createVNode(VDefaultsProvider, {
6919
+ "key": "filter-defaults",
6920
+ "disabled": !props.filterIcon,
6921
+ "defaults": {
6922
+ VIcon: {
6923
+ icon: props.filterIcon
6924
+ }
6925
+ }
6926
+ }, null), [[resolveDirective("slot"), slots.filter, "default"]])]), [[vShow, group.isSelected.value]])]
6927
+ }), hasPrepend && createVNode("div", {
6883
6928
  "key": "prepend",
6929
+ "class": "v-chip__prepend"
6930
+ }, [!slots.prepend ? createVNode(Fragment, null, [props.prependIcon && createVNode(VIcon, {
6931
+ "key": "prepend-icon",
6932
+ "icon": props.prependIcon,
6933
+ "start": true
6934
+ }, null), props.prependAvatar && createVNode(VAvatar, {
6935
+ "key": "prepend-avatar",
6936
+ "image": props.prependAvatar,
6937
+ "start": true
6938
+ }, null)]) : createVNode(VDefaultsProvider, {
6939
+ "key": "prepend-defaults",
6940
+ "disabled": !hasPrependMedia,
6884
6941
  "defaults": {
6885
6942
  VAvatar: {
6886
- image: props.prependAvatar
6943
+ image: props.prependAvatar,
6944
+ start: true
6887
6945
  },
6888
6946
  VIcon: {
6889
- icon: props.prependIcon
6947
+ icon: props.prependIcon,
6948
+ start: true
6890
6949
  }
6891
6950
  }
6892
- }, {
6893
- default: () => [slots.prepend ? createVNode("div", {
6894
- "class": "v-chip__prepend"
6895
- }, [slots.prepend()]) : props.prependAvatar ? createVNode(VAvatar, {
6896
- "start": true
6897
- }, null) : props.prependIcon ? createVNode(VIcon, {
6898
- "start": true
6899
- }, null) : undefined]
6900
- }), slots.default?.({
6951
+ }, slots.prepend)]), slots.default?.({
6901
6952
  isSelected: group?.isSelected.value,
6902
6953
  selectedClass: group?.selectedClass.value,
6903
6954
  select: group?.select,
6904
6955
  toggle: group?.toggle,
6905
6956
  value: group?.value.value,
6906
6957
  disabled: props.disabled
6907
- }) ?? props.text, hasAppend && createVNode(VDefaultsProvider, {
6958
+ }) ?? props.text, hasAppend && createVNode("div", {
6908
6959
  "key": "append",
6960
+ "class": "v-chip__append"
6961
+ }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
6962
+ "key": "append-icon",
6963
+ "end": true,
6964
+ "icon": props.appendIcon
6965
+ }, null), props.appendAvatar && createVNode(VAvatar, {
6966
+ "key": "append-avatar",
6967
+ "end": true,
6968
+ "image": props.appendAvatar
6969
+ }, null)]) : createVNode(VDefaultsProvider, {
6970
+ "key": "append-defaults",
6971
+ "disabled": !hasAppendMedia,
6909
6972
  "defaults": {
6910
6973
  VAvatar: {
6974
+ end: true,
6911
6975
  image: props.appendAvatar
6912
6976
  },
6913
6977
  VIcon: {
6978
+ end: true,
6914
6979
  icon: props.appendIcon
6915
6980
  }
6916
6981
  }
6917
- }, {
6918
- default: () => [slots.append ? createVNode("div", {
6919
- "class": "v-chip__append"
6920
- }, [slots.append()]) : props.appendAvatar ? createVNode(VAvatar, {
6921
- "end": true
6922
- }, null) : props.appendIcon ? createVNode(VIcon, {
6923
- "end": true
6924
- }, null) : undefined]
6925
- }), hasClose && createVNode(VDefaultsProvider, {
6982
+ }, slots.append)]), hasClose && createVNode("div", mergeProps({
6926
6983
  "key": "close",
6984
+ "class": "v-chip__close"
6985
+ }, closeProps.value), [!slots.close ? createVNode(VIcon, {
6986
+ "key": "close-icon",
6987
+ "icon": props.closeIcon,
6988
+ "size": "x-small"
6989
+ }, null) : createVNode(VDefaultsProvider, {
6990
+ "key": "close-defaults",
6927
6991
  "defaults": {
6928
6992
  VIcon: {
6929
6993
  icon: props.closeIcon,
6930
6994
  size: 'x-small'
6931
6995
  }
6932
6996
  }
6933
- }, {
6934
- default: () => [createVNode("div", {
6935
- "class": "v-chip__close",
6936
- "aria-label": t(props.closeLabel),
6937
- "onClick": onCloseClick
6938
- }, [slots.close ? slots.close() : createVNode(VIcon, null, null)])]
6939
- })]
6997
+ }, slots.close)])]
6940
6998
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6941
6999
  };
6942
7000
  }
@@ -7452,8 +7510,6 @@ const useNestedGroupActivator = () => {
7452
7510
  });
7453
7511
  };
7454
7512
 
7455
- // Types
7456
-
7457
7513
  const VListGroupActivator = defineComponent({
7458
7514
  name: 'VListGroupActivator',
7459
7515
  setup(_, _ref) {
@@ -7546,9 +7602,6 @@ const VListGroup = genericComponent()({
7546
7602
  return {};
7547
7603
  }
7548
7604
  });
7549
- function filterListGroupProps(props) {
7550
- return pick(props, Object.keys(VListGroup.props));
7551
- }
7552
7605
 
7553
7606
  const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle');
7554
7607
 
@@ -7686,8 +7739,10 @@ const VListItem = genericComponent()({
7686
7739
  const hasColor = !list || isSelected.value || isActive.value;
7687
7740
  const hasTitle = slots.title || props.title;
7688
7741
  const hasSubtitle = slots.subtitle || props.subtitle;
7689
- const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
7690
- const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);
7742
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
7743
+ const hasAppend = !!(hasAppendMedia || slots.append);
7744
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
7745
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
7691
7746
  list?.updateHasPrepend(hasPrepend);
7692
7747
  return withDirectives(createVNode(Tag, {
7693
7748
  "class": ['v-list-item', {
@@ -7707,7 +7762,7 @@ const VListItem = genericComponent()({
7707
7762
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode("div", {
7708
7763
  "key": "prepend",
7709
7764
  "class": "v-list-item__prepend"
7710
- }, [props.prependAvatar && createVNode(VAvatar, {
7765
+ }, [!slots.prepend ? createVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
7711
7766
  "key": "prepend-avatar",
7712
7767
  "density": props.density,
7713
7768
  "image": props.prependAvatar
@@ -7715,8 +7770,9 @@ const VListItem = genericComponent()({
7715
7770
  "key": "prepend-icon",
7716
7771
  "density": props.density,
7717
7772
  "icon": props.prependIcon
7718
- }, null), slots.prepend && createVNode(VDefaultsProvider, {
7719
- "key": "prepend",
7773
+ }, null)]) : createVNode(VDefaultsProvider, {
7774
+ "key": "prepend-defaults",
7775
+ "disabled": !hasPrependMedia,
7720
7776
  "defaults": {
7721
7777
  VAvatar: {
7722
7778
  density: props.density,
@@ -7731,7 +7787,7 @@ const VListItem = genericComponent()({
7731
7787
  }
7732
7788
  }
7733
7789
  }, {
7734
- default: () => [slots.prepend(slotProps.value)]
7790
+ default: () => [slots.prepend?.(slotProps.value)]
7735
7791
  })]), createVNode("div", {
7736
7792
  "class": "v-list-item__content",
7737
7793
  "data-no-activator": ""
@@ -7750,8 +7806,17 @@ const VListItem = genericComponent()({
7750
7806
  }), slots.default?.(slotProps.value)]), hasAppend && createVNode("div", {
7751
7807
  "key": "append",
7752
7808
  "class": "v-list-item__append"
7753
- }, [slots.append && createVNode(VDefaultsProvider, {
7754
- "key": "append",
7809
+ }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
7810
+ "key": "append-icon",
7811
+ "density": props.density,
7812
+ "icon": props.appendIcon
7813
+ }, null), props.appendAvatar && createVNode(VAvatar, {
7814
+ "key": "append-avatar",
7815
+ "density": props.density,
7816
+ "image": props.appendAvatar
7817
+ }, null)]) : createVNode(VDefaultsProvider, {
7818
+ "key": "append-defaults",
7819
+ "disabled": !hasAppendMedia,
7755
7820
  "defaults": {
7756
7821
  VAvatar: {
7757
7822
  density: props.density,
@@ -7766,16 +7831,8 @@ const VListItem = genericComponent()({
7766
7831
  }
7767
7832
  }
7768
7833
  }, {
7769
- default: () => [slots.append(slotProps.value)]
7770
- }), props.appendIcon && createVNode(VIcon, {
7771
- "key": "append-icon",
7772
- "density": props.density,
7773
- "icon": props.appendIcon
7774
- }, null), props.appendAvatar && createVNode(VAvatar, {
7775
- "key": "append-avatar",
7776
- "density": props.density,
7777
- "image": props.appendAvatar
7778
- }, null)])]
7834
+ default: () => [slots.append?.(slotProps.value)]
7835
+ })])]
7779
7836
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
7780
7837
  });
7781
7838
  return {};
@@ -7872,7 +7929,7 @@ const VListChildren = genericComponent()({
7872
7929
  item
7873
7930
  }) : undefined
7874
7931
  };
7875
- const [listGroupProps, _1] = filterListGroupProps(itemProps);
7932
+ const [listGroupProps, _1] = VListGroup.filterProps(itemProps);
7876
7933
  return children ? createVNode(VListGroup, mergeProps({
7877
7934
  "value": itemProps?.value
7878
7935
  }, listGroupProps), {
@@ -9099,6 +9156,8 @@ function bindScroll(el, onScroll) {
9099
9156
 
9100
9157
  // Types
9101
9158
 
9159
+ const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
9160
+
9102
9161
  const DisplaySymbol = Symbol.for('vuetify:display');
9103
9162
  const defaultDisplayOptions = {
9104
9163
  mobileBreakpoint: 'lg',
@@ -9654,9 +9713,6 @@ const VOverlay = genericComponent()({
9654
9713
  };
9655
9714
  }
9656
9715
  });
9657
- function filterVOverlayProps(props) {
9658
- return pick(props, Object.keys(VOverlay.props));
9659
- }
9660
9716
 
9661
9717
  // Types
9662
9718
 
@@ -9722,7 +9778,7 @@ const VMenu = genericComponent()({
9722
9778
  'aria-owns': id.value
9723
9779
  }, props.activatorProps));
9724
9780
  useRender(() => {
9725
- const [overlayProps] = filterVOverlayProps(props);
9781
+ const [overlayProps] = VOverlay.filterProps(props);
9726
9782
  return createVNode(VOverlay, mergeProps({
9727
9783
  "ref": overlay,
9728
9784
  "class": ['v-menu']
@@ -9898,7 +9954,7 @@ const VSelect = genericComponent()({
9898
9954
  useRender(() => {
9899
9955
  const hasChips = !!(props.chips || slots.chip);
9900
9956
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
9901
- const [textFieldProps] = filterVTextFieldProps(props);
9957
+ const [textFieldProps] = VTextField.filterProps(props);
9902
9958
  return createVNode(VTextField, mergeProps({
9903
9959
  "ref": vTextFieldRef
9904
9960
  }, textFieldProps, {
@@ -9984,7 +10040,13 @@ const VSelect = genericComponent()({
9984
10040
  return createVNode("div", {
9985
10041
  "key": item.value,
9986
10042
  "class": "v-select__selection"
9987
- }, [hasChips ? createVNode(VDefaultsProvider, {
10043
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
10044
+ "key": "chip",
10045
+ "closable": props.closableChips,
10046
+ "size": "small",
10047
+ "text": item.title
10048
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
10049
+ "key": "chip-defaults",
9988
10050
  "defaults": {
9989
10051
  VChip: {
9990
10052
  closable: props.closableChips,
@@ -9993,15 +10055,15 @@ const VSelect = genericComponent()({
9993
10055
  }
9994
10056
  }
9995
10057
  }, {
9996
- default: () => [slots.chip ? slots.chip({
10058
+ default: () => [slots.chip?.({
9997
10059
  item,
9998
10060
  index,
9999
10061
  props: slotProps
10000
- }) : createVNode(VChip, slotProps, null)]
10001
- }) : slots.selection ? slots.selection({
10062
+ })]
10063
+ }) : slots.selection?.({
10002
10064
  item,
10003
10065
  index
10004
- }) : createVNode("span", {
10066
+ }) ?? createVNode("span", {
10005
10067
  "class": "v-select__selection-text"
10006
10068
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10007
10069
  "class": "v-select__selection-comma"
@@ -10285,7 +10347,7 @@ const VAutocomplete = genericComponent()({
10285
10347
  useRender(() => {
10286
10348
  const hasChips = !!(props.chips || slots.chip);
10287
10349
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10288
- const [textFieldProps] = filterVTextFieldProps(props);
10350
+ const [textFieldProps] = VTextField.filterProps(props);
10289
10351
  return createVNode(VTextField, mergeProps({
10290
10352
  "ref": vTextFieldRef
10291
10353
  }, textFieldProps, {
@@ -10373,7 +10435,13 @@ const VAutocomplete = genericComponent()({
10373
10435
  return createVNode("div", {
10374
10436
  "key": item.value,
10375
10437
  "class": "v-autocomplete__selection"
10376
- }, [hasChips ? createVNode(VDefaultsProvider, {
10438
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
10439
+ "key": "chip",
10440
+ "closable": props.closableChips,
10441
+ "size": "small",
10442
+ "text": item.title
10443
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
10444
+ "key": "chip-defaults",
10377
10445
  "defaults": {
10378
10446
  VChip: {
10379
10447
  closable: props.closableChips,
@@ -10382,15 +10450,15 @@ const VAutocomplete = genericComponent()({
10382
10450
  }
10383
10451
  }
10384
10452
  }, {
10385
- default: () => [slots.chip ? slots.chip({
10453
+ default: () => [slots.chip?.({
10386
10454
  item,
10387
10455
  index,
10388
10456
  props: slotProps
10389
- }) : createVNode(VChip, slotProps, null)]
10390
- }) : slots.selection ? slots.selection({
10457
+ })]
10458
+ }) : slots.selection?.({
10391
10459
  item,
10392
10460
  index
10393
- }) : createVNode("span", {
10461
+ }) ?? createVNode("span", {
10394
10462
  "class": "v-autocomplete__selection-text"
10395
10463
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10396
10464
  "class": "v-autocomplete__selection-comma"
@@ -10591,7 +10659,8 @@ const VBanner = genericComponent()({
10591
10659
  });
10592
10660
  useRender(() => {
10593
10661
  const hasText = !!(props.text || slots.text);
10594
- const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
10662
+ const hasPrependMedia = !!(props.avatar || props.icon);
10663
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
10595
10664
  return createVNode(props.tag, {
10596
10665
  "class": ['v-banner', {
10597
10666
  'v-banner--stacked': props.stacked || mobile.value,
@@ -10601,8 +10670,18 @@ const VBanner = genericComponent()({
10601
10670
  "style": [dimensionStyles.value, locationStyles.value],
10602
10671
  "role": "banner"
10603
10672
  }, {
10604
- default: () => [hasPrepend && createVNode(VDefaultsProvider, {
10673
+ default: () => [hasPrepend && createVNode("div", {
10605
10674
  "key": "prepend",
10675
+ "class": "v-banner__prepend"
10676
+ }, [!slots.prepend ? createVNode(VAvatar, {
10677
+ "key": "prepend-avatar",
10678
+ "color": color.value,
10679
+ "density": density.value,
10680
+ "icon": props.icon,
10681
+ "image": props.avatar
10682
+ }, null) : createVNode(VDefaultsProvider, {
10683
+ "key": "prepend-defaults",
10684
+ "disabled": !hasPrependMedia,
10606
10685
  "defaults": {
10607
10686
  VAvatar: {
10608
10687
  color: color.value,
@@ -10611,19 +10690,15 @@ const VBanner = genericComponent()({
10611
10690
  image: props.avatar
10612
10691
  }
10613
10692
  }
10614
- }, {
10615
- default: () => [createVNode("div", {
10616
- "class": "v-banner__prepend"
10617
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && createVNode(VAvatar, null, null)])]
10618
- }), createVNode("div", {
10693
+ }, slots.prepend)]), createVNode("div", {
10619
10694
  "class": "v-banner__content"
10620
10695
  }, [hasText && createVNode(VBannerText, {
10621
10696
  "key": "text"
10622
10697
  }, {
10623
- default: () => [slots.text ? slots.text() : props.text]
10624
- }), slots.default?.()]), slots.actions && createVNode(VBannerActions, null, {
10625
- default: () => [slots.actions()]
10626
- })]
10698
+ default: () => [slots.text?.() ?? props.text]
10699
+ }), slots.default?.()]), slots.actions && createVNode(VBannerActions, {
10700
+ "key": "actions"
10701
+ }, slots.actions)]
10627
10702
  });
10628
10703
  });
10629
10704
  }
@@ -10856,19 +10931,23 @@ const VBreadcrumbs = genericComponent()({
10856
10931
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
10857
10932
  "style": backgroundColorStyles.value
10858
10933
  }, {
10859
- default: () => [hasPrepend && createVNode(VDefaultsProvider, {
10934
+ default: () => [hasPrepend && createVNode("div", {
10860
10935
  "key": "prepend",
10936
+ "class": "v-breadcrumbs__prepend"
10937
+ }, [!slots.prepend ? createVNode(VIcon, {
10938
+ "key": "prepend-icon",
10939
+ "start": true,
10940
+ "icon": props.icon
10941
+ }, null) : createVNode(VDefaultsProvider, {
10942
+ "key": "prepend-defaults",
10943
+ "disabled": !props.icon,
10861
10944
  "defaults": {
10862
10945
  VIcon: {
10863
10946
  icon: props.icon,
10864
10947
  start: true
10865
10948
  }
10866
10949
  }
10867
- }, {
10868
- default: () => [createVNode("div", {
10869
- "class": "v-breadcrumbs__prepend"
10870
- }, [slots.prepend ? slots.prepend() : props.icon && createVNode(VIcon, null, null)])]
10871
- }), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
10950
+ }, slots.prepend)]), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
10872
10951
  "key": index,
10873
10952
  "disabled": index >= array.length - 1
10874
10953
  }, typeof item === 'string' ? {
@@ -10932,30 +11011,33 @@ const VCardItem = genericComponent()({
10932
11011
  slots
10933
11012
  } = _ref;
10934
11013
  useRender(() => {
10935
- const hasPrepend = !!(props.prependAvatar || props.prependIcon || slots.prepend);
10936
- const hasAppend = !!(props.appendAvatar || props.appendIcon || slots.append);
11014
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
11015
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
11016
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
11017
+ const hasAppend = !!(hasAppendMedia || slots.append);
10937
11018
  const hasTitle = !!(props.title || slots.title);
10938
11019
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
10939
11020
  return createVNode("div", {
10940
11021
  "class": "v-card-item"
10941
- }, [hasPrepend && createVNode(VDefaultsProvider, {
11022
+ }, [hasPrepend && createVNode("div", {
10942
11023
  "key": "prepend",
11024
+ "class": "v-card-item__prepend"
11025
+ }, [!slots.prepend ? hasPrependMedia && createVNode(VAvatar, {
11026
+ "key": "prepend-avatar",
11027
+ "density": props.density,
11028
+ "icon": props.prependIcon,
11029
+ "image": props.prependAvatar
11030
+ }, null) : createVNode(VDefaultsProvider, {
11031
+ "key": "prepend-defaults",
11032
+ "disabled": !hasPrependMedia,
10943
11033
  "defaults": {
10944
11034
  VAvatar: {
10945
11035
  density: props.density,
10946
11036
  icon: props.prependIcon,
10947
11037
  image: props.prependAvatar
10948
- },
10949
- VIcon: {
10950
- density: props.density,
10951
- icon: props.prependIcon
10952
11038
  }
10953
11039
  }
10954
- }, {
10955
- default: () => [createVNode("div", {
10956
- "class": "v-card-item__prepend"
10957
- }, [slots.prepend?.() ?? createVNode(VAvatar, null, null)])]
10958
- }), createVNode("div", {
11040
+ }, slots.prepend)]), createVNode("div", {
10959
11041
  "class": "v-card-item__content"
10960
11042
  }, [hasTitle && createVNode(VCardTitle, {
10961
11043
  "key": "title"
@@ -10965,24 +11047,25 @@ const VCardItem = genericComponent()({
10965
11047
  "key": "subtitle"
10966
11048
  }, {
10967
11049
  default: () => [slots.subtitle?.() ?? props.subtitle]
10968
- }), slots.default?.()]), hasAppend && createVNode(VDefaultsProvider, {
11050
+ }), slots.default?.()]), hasAppend && createVNode("div", {
10969
11051
  "key": "append",
11052
+ "class": "v-card-item__append"
11053
+ }, [!slots.append ? hasAppendMedia && createVNode(VAvatar, {
11054
+ "key": "append-avatar",
11055
+ "density": props.density,
11056
+ "icon": props.appendIcon,
11057
+ "image": props.appendAvatar
11058
+ }, null) : createVNode(VDefaultsProvider, {
11059
+ "key": "append-defaults",
11060
+ "disabled": !hasAppendMedia,
10970
11061
  "defaults": {
10971
11062
  VAvatar: {
10972
11063
  density: props.density,
10973
11064
  icon: props.appendIcon,
10974
11065
  image: props.appendAvatar
10975
- },
10976
- VIcon: {
10977
- density: props.density,
10978
- icon: props.appendIcon
10979
11066
  }
10980
11067
  }
10981
- }, {
10982
- default: () => [createVNode("div", {
10983
- "class": "v-card-item__append"
10984
- }, [slots.append?.() ?? createVNode(VAvatar, null, null)])]
10985
- })]);
11068
+ }, slots.append)])]);
10986
11069
  });
10987
11070
  return {};
10988
11071
  }
@@ -11094,19 +11177,23 @@ const VCard = genericComponent()({
11094
11177
  "onClick": isClickable.value && link.navigate,
11095
11178
  "tabindex": props.disabled ? -1 : undefined
11096
11179
  }, {
11097
- default: () => [hasImage && createVNode(VDefaultsProvider, {
11180
+ default: () => [hasImage && createVNode("div", {
11098
11181
  "key": "image",
11182
+ "class": "v-card__image"
11183
+ }, [!slots.image ? createVNode(VImg, {
11184
+ "key": "image-img",
11185
+ "cover": true,
11186
+ "src": props.image
11187
+ }, null) : createVNode(VDefaultsProvider, {
11188
+ "key": "image-defaults",
11189
+ "disabled": !props.image,
11099
11190
  "defaults": {
11100
11191
  VImg: {
11101
11192
  cover: true,
11102
11193
  src: props.image
11103
11194
  }
11104
11195
  }
11105
- }, {
11106
- default: () => [createVNode("div", {
11107
- "class": "v-card__image"
11108
- }, [slots.image?.() ?? createVNode(VImg, null, null)])]
11109
- }), createVNode(LoaderSlot, {
11196
+ }, slots.image)]), createVNode(LoaderSlot, {
11110
11197
  "name": "v-card",
11111
11198
  "active": !!props.loading,
11112
11199
  "color": typeof props.loading === 'boolean' ? undefined : props.loading
@@ -12208,10 +12295,7 @@ const useSlider = _ref => {
12208
12295
  const min = computed(() => parseFloat(props.min));
12209
12296
  const max = computed(() => parseFloat(props.max));
12210
12297
  const step = computed(() => props.step > 0 ? parseFloat(props.step) : 0);
12211
- const decimals = computed(() => {
12212
- const trimmedStep = step.value.toString().trim();
12213
- return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
12214
- });
12298
+ const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12215
12299
  const thumbSize = computed(() => parseInt(props.thumbSize, 10));
12216
12300
  const tickSize = computed(() => parseInt(props.tickSize, 10));
12217
12301
  const trackSize = computed(() => parseInt(props.trackSize, 10));
@@ -12310,7 +12394,9 @@ const useSlider = _ref => {
12310
12394
  const percentage = (val - min.value) / (max.value - min.value) * 100;
12311
12395
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
12312
12396
  };
12397
+ const showTicks = toRef(props, 'showTicks');
12313
12398
  const parsedTicks = computed(() => {
12399
+ if (!showTicks.value) return [];
12314
12400
  if (!props.ticks) {
12315
12401
  return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {
12316
12402
  const value = min.value + t * step.value;
@@ -12359,7 +12445,7 @@ const useSlider = _ref => {
12359
12445
  readonly: toRef(props, 'readonly'),
12360
12446
  rounded: toRef(props, 'rounded'),
12361
12447
  roundValue,
12362
- showTicks: toRef(props, 'showTicks'),
12448
+ showTicks,
12363
12449
  startOffset,
12364
12450
  step,
12365
12451
  thumbSize,
@@ -12581,6 +12667,7 @@ const VSliderTrack = genericComponent()({
12581
12667
  };
12582
12668
  });
12583
12669
  const computedTicks = computed(() => {
12670
+ if (!showTicks.value) return [];
12584
12671
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
12585
12672
  return ticks.map((tick, index) => {
12586
12673
  const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
@@ -13186,8 +13273,6 @@ const VColorPickerSwatches = defineComponent({
13186
13273
  }
13187
13274
  });
13188
13275
 
13189
- // Types
13190
-
13191
13276
  const makeVSheetProps = propsFactory({
13192
13277
  color: String,
13193
13278
  ...makeBorderProps(),
@@ -13612,7 +13697,7 @@ const VCombobox = genericComponent()({
13612
13697
  useRender(() => {
13613
13698
  const hasChips = !!(props.chips || slots.chip);
13614
13699
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
13615
- const [textFieldProps] = filterVTextFieldProps(props);
13700
+ const [textFieldProps] = VTextField.filterProps(props);
13616
13701
  return createVNode(VTextField, mergeProps({
13617
13702
  "ref": vTextFieldRef
13618
13703
  }, textFieldProps, {
@@ -13700,7 +13785,13 @@ const VCombobox = genericComponent()({
13700
13785
  "key": item.value,
13701
13786
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
13702
13787
  "style": index === selectionIndex.value ? textColorStyles.value : {}
13703
- }, [hasChips ? createVNode(VDefaultsProvider, {
13788
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
13789
+ "key": "chip",
13790
+ "closable": props.closableChips,
13791
+ "size": "small",
13792
+ "text": item.title
13793
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
13794
+ "key": "chip-defaults",
13704
13795
  "defaults": {
13705
13796
  VChip: {
13706
13797
  closable: props.closableChips,
@@ -13709,15 +13800,15 @@ const VCombobox = genericComponent()({
13709
13800
  }
13710
13801
  }
13711
13802
  }, {
13712
- default: () => [slots.chip ? slots.chip({
13803
+ default: () => [slots.chip?.({
13713
13804
  item,
13714
13805
  index,
13715
13806
  props: slotProps
13716
- }) : createVNode(VChip, slotProps, null)]
13717
- }) : slots.selection ? slots.selection({
13807
+ })]
13808
+ }) : slots.selection?.({
13718
13809
  item,
13719
13810
  index
13720
- }) : createVNode("span", {
13811
+ }) ?? createVNode("span", {
13721
13812
  "class": "v-combobox__selection-text"
13722
13813
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
13723
13814
  "class": "v-combobox__selection-comma"
@@ -13814,7 +13905,7 @@ const VDialog = genericComponent()({
13814
13905
  'aria-expanded': String(isActive.value)
13815
13906
  }, props.activatorProps));
13816
13907
  useRender(() => {
13817
- const [overlayProps] = filterVOverlayProps(props);
13908
+ const [overlayProps] = VOverlay.filterProps(props);
13818
13909
  return createVNode(VOverlay, mergeProps({
13819
13910
  "ref": overlay,
13820
13911
  "class": ['v-dialog', {
@@ -14418,10 +14509,8 @@ const VContainer = genericComponent()({
14418
14509
 
14419
14510
  // Types
14420
14511
 
14421
- const breakpoints$1 = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14422
-
14423
14512
  const breakpointProps = (() => {
14424
- return breakpoints$1.reduce((props, val) => {
14513
+ return breakpoints.reduce((props, val) => {
14425
14514
  props[val] = {
14426
14515
  type: [Boolean, String, Number],
14427
14516
  default: false
@@ -14430,8 +14519,9 @@ const breakpointProps = (() => {
14430
14519
  }, {});
14431
14520
  })();
14432
14521
  const offsetProps = (() => {
14433
- return breakpoints$1.reduce((props, val) => {
14434
- props['offset' + capitalize(val)] = {
14522
+ return breakpoints.reduce((props, val) => {
14523
+ const offsetKey = 'offset' + capitalize(val);
14524
+ props[offsetKey] = {
14435
14525
  type: [String, Number],
14436
14526
  default: null
14437
14527
  };
@@ -14439,8 +14529,9 @@ const offsetProps = (() => {
14439
14529
  }, {});
14440
14530
  })();
14441
14531
  const orderProps = (() => {
14442
- return breakpoints$1.reduce((props, val) => {
14443
- props['order' + capitalize(val)] = {
14532
+ return breakpoints.reduce((props, val) => {
14533
+ const orderKey = 'order' + capitalize(val);
14534
+ props[orderKey] = {
14444
14535
  type: [String, Number],
14445
14536
  default: null
14446
14537
  };
@@ -14538,13 +14629,12 @@ const VCol = genericComponent()({
14538
14629
 
14539
14630
  // Types
14540
14631
 
14541
- const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14542
-
14543
14632
  const ALIGNMENT = ['start', 'end', 'center'];
14544
14633
  const SPACE = ['space-between', 'space-around', 'space-evenly'];
14545
14634
  function makeRowProps(prefix, def) {
14546
14635
  return breakpoints.reduce((props, val) => {
14547
- props[prefix + capitalize(val)] = def();
14636
+ const prefixKey = prefix + capitalize(val);
14637
+ props[prefixKey] = def();
14548
14638
  return props;
14549
14639
  }, {});
14550
14640
  }
@@ -14874,7 +14964,10 @@ const VLazy = genericComponent()({
14874
14964
  }, {
14875
14965
  default: () => [slots.default?.()]
14876
14966
  })]
14877
- }), [[resolveDirective("intersect"), onIntersect, props.options]]));
14967
+ }), [[resolveDirective("intersect"), {
14968
+ handler: onIntersect,
14969
+ options: props.options
14970
+ }, null]]));
14878
14971
  return {};
14879
14972
  }
14880
14973
  });
@@ -15851,9 +15944,9 @@ const VParallax = genericComponent()({
15851
15944
  frame = requestAnimationFrame(() => {
15852
15945
  const el = (root.value?.$el).querySelector('.v-img__img');
15853
15946
  if (!el) return;
15854
- const scrollHeight = scrollParent.clientHeight ?? document.documentElement.clientHeight;
15855
- const scrollPos = scrollParent.scrollTop ?? window.scrollY;
15856
- const top = intersectionRef.value.offsetTop;
15947
+ const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;
15948
+ const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;
15949
+ const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;
15857
15950
  const height = contentRect.value.height;
15858
15951
  const center = top + (height - scrollHeight) / 2;
15859
15952
  const translate = floor((scrollPos - center) * scale.value);
@@ -15935,10 +16028,7 @@ const VRadioGroup = genericComponent()({
15935
16028
  useRender(() => {
15936
16029
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
15937
16030
  const [inputProps, _1] = filterInputProps(props);
15938
- const [controlProps, _2] = filterControlProps({
15939
- ...props,
15940
- multiple: false
15941
- });
16031
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
15942
16032
  const label = slots.label ? slots.label({
15943
16033
  label: props.label,
15944
16034
  props: {
@@ -15973,7 +16063,8 @@ const VRadioGroup = genericComponent()({
15973
16063
  "type": props.type,
15974
16064
  "disabled": isDisabled.value,
15975
16065
  "readonly": isReadonly.value,
15976
- "aria-labelledby": label ? id.value : undefined
16066
+ "aria-labelledby": label ? id.value : undefined,
16067
+ "multiple": false
15977
16068
  }, controlAttrs, {
15978
16069
  "modelValue": model.value,
15979
16070
  "onUpdate:modelValue": $event => model.value = $event
@@ -16814,7 +16905,7 @@ const VSnackbar = genericComponent()({
16814
16905
  window.clearTimeout(activeTimeout);
16815
16906
  }
16816
16907
  useRender(() => {
16817
- const [overlayProps] = filterVOverlayProps(props);
16908
+ const [overlayProps] = VOverlay.filterProps(props);
16818
16909
  return createVNode(VOverlay, mergeProps({
16819
16910
  "ref": overlay,
16820
16911
  "class": ['v-snackbar', {
@@ -16834,7 +16925,8 @@ const VSnackbar = genericComponent()({
16834
16925
  "persistent": true,
16835
16926
  "noClickAnimation": true,
16836
16927
  "scrim": false,
16837
- "scrollStrategy": "none"
16928
+ "scrollStrategy": "none",
16929
+ "_disableGlobalStack": true
16838
16930
  }, scopeId), {
16839
16931
  default: () => [genOverlays(false, 'v-snackbar'), slots.default && createVNode("div", {
16840
16932
  "class": "v-snackbar__content",
@@ -16908,7 +17000,7 @@ const VSwitch = genericComponent()({
16908
17000
  useRender(() => {
16909
17001
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
16910
17002
  const [inputProps, _1] = filterInputProps(props);
16911
- const [controlProps, _2] = filterControlProps(props);
17003
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
16912
17004
  const control = ref();
16913
17005
  function onClick() {
16914
17006
  control.value?.input?.click();
@@ -17041,28 +17133,17 @@ const VTab = genericComponent()({
17041
17133
  name: 'VTab',
17042
17134
  props: {
17043
17135
  fixed: Boolean,
17044
- icon: [Boolean, String, Function, Object],
17045
- prependIcon: IconValue,
17046
- appendIcon: IconValue,
17047
- stacked: Boolean,
17048
17136
  title: String,
17049
- ripple: {
17050
- type: Boolean,
17051
- default: true
17052
- },
17053
- color: String,
17054
17137
  sliderColor: String,
17055
17138
  hideSlider: Boolean,
17056
17139
  direction: {
17057
17140
  type: String,
17058
17141
  default: 'horizontal'
17059
17142
  },
17060
- ...makeTagProps(),
17061
- ...makeRouterProps(),
17062
- ...makeGroupItemProps({
17063
- selectedClass: 'v-tab--selected'
17064
- }),
17065
- ...makeThemeProps()
17143
+ ...omit(makeVBtnProps({
17144
+ selectedClass: 'v-tab--selected',
17145
+ variant: 'text'
17146
+ }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])
17066
17147
  },
17067
17148
  setup(props, _ref) {
17068
17149
  let {
@@ -17112,7 +17193,7 @@ const VTab = genericComponent()({
17112
17193
  }
17113
17194
  }
17114
17195
  useRender(() => {
17115
- const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled', 'selectedClass', 'value', 'color']);
17196
+ const [btnProps] = VBtn.filterProps(props);
17116
17197
  return createVNode(VBtn, mergeProps({
17117
17198
  "_as": "VTab",
17118
17199
  "symbol": VTabsSymbol,
@@ -17124,7 +17205,6 @@ const VTab = genericComponent()({
17124
17205
  "active": false,
17125
17206
  "block": props.fixed,
17126
17207
  "maxWidth": props.fixed ? 300 : undefined,
17127
- "variant": "text",
17128
17208
  "rounded": 0
17129
17209
  }, btnProps, attrs, {
17130
17210
  "onGroup:selected": updateSlider
@@ -17369,7 +17449,13 @@ const VTextarea = genericComponent()({
17369
17449
  });
17370
17450
  }
17371
17451
  function onInput(e) {
17372
- model.value = e.target.value;
17452
+ const el = e.target;
17453
+ const caretPosition = [el.selectionStart, el.selectionEnd];
17454
+ model.value = el.value;
17455
+ nextTick(() => {
17456
+ el.selectionStart = caretPosition[0];
17457
+ el.selectionEnd = caretPosition[1];
17458
+ });
17373
17459
  }
17374
17460
  const sizerRef = ref();
17375
17461
  function calculateInputHeight() {
@@ -17656,13 +17742,6 @@ const VTimelineDivider = genericComponent()({
17656
17742
  backgroundColorClasses: lineColorClasses,
17657
17743
  backgroundColorStyles: lineColorStyles
17658
17744
  } = useBackgroundColor(toRef(props, 'lineColor'));
17659
- provideDefaults({
17660
- VIcon: {
17661
- color: toRef(props, 'iconColor'),
17662
- icon: toRef(props, 'icon'),
17663
- size: toRef(props, 'size')
17664
- }
17665
- });
17666
17745
  useRender(() => createVNode("div", {
17667
17746
  "class": ['v-timeline-divider', {
17668
17747
  'v-timeline-divider--fill-dot': props.fillDot
@@ -17677,7 +17756,22 @@ const VTimelineDivider = genericComponent()({
17677
17756
  }, [createVNode("div", {
17678
17757
  "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
17679
17758
  "style": backgroundColorStyles.value
17680
- }, [slots.default?.() ?? (props.icon ? createVNode(VIcon, null, null) : undefined)])]), createVNode("div", {
17759
+ }, [!slots.default ? createVNode(VIcon, {
17760
+ "key": "icon",
17761
+ "color": props.iconColor,
17762
+ "icon": props.icon,
17763
+ "size": props.size
17764
+ }, null) : createVNode(VDefaultsProvider, {
17765
+ "key": "icon-defaults",
17766
+ "disabled": !props.icon,
17767
+ "defaults": {
17768
+ VIcon: {
17769
+ color: props.iconColor,
17770
+ icon: props.icon,
17771
+ size: props.size
17772
+ }
17773
+ }
17774
+ }, slots.default)])]), createVNode("div", {
17681
17775
  "class": ['v-timeline-divider__after', lineColorClasses.value],
17682
17776
  "style": lineColorStyles.value
17683
17777
  }, null)]));
@@ -17802,7 +17896,7 @@ const VTooltip = genericComponent()({
17802
17896
  'aria-describedby': id.value
17803
17897
  }, props.activatorProps));
17804
17898
  useRender(() => {
17805
- const [overlayProps] = filterVOverlayProps(props);
17899
+ const [overlayProps] = VOverlay.filterProps(props);
17806
17900
  return createVNode(VOverlay, mergeProps({
17807
17901
  "ref": overlay,
17808
17902
  "class": ['v-tooltip'],
@@ -18048,7 +18142,7 @@ const makeDataTableSelectProps = propsFactory({
18048
18142
  }
18049
18143
  }, 'v-data-table-select');
18050
18144
  const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
18051
- function createSelection(props, allItems) {
18145
+ function provideSelection(props, allItems) {
18052
18146
  const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {
18053
18147
  return new Set(v);
18054
18148
  }, v => {
@@ -18108,13 +18202,28 @@ const makeDataTableSortProps = propsFactory({
18108
18202
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
18109
18203
  function createSort(props) {
18110
18204
  const sortBy = useProxiedModel(props, 'sortBy');
18205
+ const mustSort = toRef(props, 'mustSort');
18206
+ const multiSort = toRef(props, 'multiSort');
18207
+ return {
18208
+ sortBy,
18209
+ mustSort,
18210
+ multiSort
18211
+ };
18212
+ }
18213
+ function provideSort(options) {
18214
+ const {
18215
+ sortBy,
18216
+ mustSort,
18217
+ multiSort,
18218
+ page
18219
+ } = options;
18111
18220
  const toggleSort = key => {
18112
18221
  let newSortBy = sortBy.value.map(x => ({
18113
18222
  ...x
18114
18223
  })) ?? [];
18115
18224
  const item = newSortBy.find(x => x.key === key);
18116
18225
  if (!item) {
18117
- if (props.multiSort) newSortBy = [...newSortBy, {
18226
+ if (multiSort.value) newSortBy = [...newSortBy, {
18118
18227
  key,
18119
18228
  order: 'asc'
18120
18229
  }];else newSortBy = [{
@@ -18122,7 +18231,7 @@ function createSort(props) {
18122
18231
  order: 'asc'
18123
18232
  }];
18124
18233
  } else if (item.order === 'desc') {
18125
- if (props.mustSort) {
18234
+ if (mustSort.value) {
18126
18235
  item.order = 'asc';
18127
18236
  } else {
18128
18237
  newSortBy = newSortBy.filter(x => x.key !== key);
@@ -18131,6 +18240,7 @@ function createSort(props) {
18131
18240
  item.order = 'desc';
18132
18241
  }
18133
18242
  sortBy.value = newSortBy;
18243
+ if (page) page.value = 1;
18134
18244
  };
18135
18245
  const data = {
18136
18246
  sortBy,
@@ -18333,9 +18443,6 @@ const VDataTableHeaders = genericComponent()({
18333
18443
  });
18334
18444
 
18335
18445
  // Utilities
18336
-
18337
- // Types
18338
-
18339
18446
  const makeDataTableGroupProps = propsFactory({
18340
18447
  groupBy: {
18341
18448
  type: Array,
@@ -18343,7 +18450,17 @@ const makeDataTableGroupProps = propsFactory({
18343
18450
  }
18344
18451
  }, 'data-table-group');
18345
18452
  const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
18346
- function createGroupBy(props, groupBy, sortBy) {
18453
+ function createGroupBy(props) {
18454
+ const groupBy = useProxiedModel(props, 'groupBy');
18455
+ return {
18456
+ groupBy
18457
+ };
18458
+ }
18459
+ function provideGroupBy(options) {
18460
+ const {
18461
+ groupBy,
18462
+ sortBy
18463
+ } = options;
18347
18464
  const opened = ref(new Set());
18348
18465
  const sortByWithGroups = computed(() => {
18349
18466
  return groupBy.value.map(val => ({
@@ -18553,7 +18670,7 @@ const makeDataTableExpandProps = propsFactory({
18553
18670
  }
18554
18671
  }, 'v-data-table-expand');
18555
18672
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18556
- function createExpanded(props) {
18673
+ function provideExpanded(props) {
18557
18674
  const expandOnClick = toRef(props, 'expandOnClick');
18558
18675
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18559
18676
  return new Set(v);
@@ -18596,7 +18713,9 @@ function useExpanded() {
18596
18713
  const VDataTableRow = defineComponent({
18597
18714
  name: 'VDataTableRow',
18598
18715
  props: {
18599
- item: Object
18716
+ index: Number,
18717
+ item: Object,
18718
+ onClick: Function
18600
18719
  },
18601
18720
  setup(props, _ref) {
18602
18721
  let {
@@ -18614,7 +18733,10 @@ const VDataTableRow = defineComponent({
18614
18733
  columns
18615
18734
  } = useHeaders();
18616
18735
  useRender(() => createVNode("tr", {
18617
- "class": ['v-data-table__tr']
18736
+ "class": ['v-data-table__tr', {
18737
+ 'v-data-table__tr--clickable': !!props.onClick
18738
+ }],
18739
+ "onClick": props.onClick
18618
18740
  }, [!columns.value.length && createVNode(VDataTableColumn, {
18619
18741
  "key": "no-data"
18620
18742
  }, slots), props.item && columns.value.map((column, i) => createVNode(VDataTableColumn, {
@@ -18629,6 +18751,7 @@ const VDataTableRow = defineComponent({
18629
18751
  const item = props.item;
18630
18752
  const slotName = `item.${column.key}`;
18631
18753
  const slotProps = {
18754
+ index: props.index,
18632
18755
  item: props.item,
18633
18756
  columns: columns.value,
18634
18757
  isSelected,
@@ -18745,12 +18868,13 @@ const VDataTableRows = genericComponent()({
18745
18868
  "key": `item_${item.value}`,
18746
18869
  "onClick": event => {
18747
18870
  if (expandOnClick.value) {
18748
- toggleExpand(item.value);
18871
+ toggleExpand(item);
18749
18872
  }
18750
18873
  emit('click:row', event, {
18751
18874
  item
18752
18875
  });
18753
18876
  },
18877
+ "index": index,
18754
18878
  "item": item
18755
18879
  }, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
18756
18880
  })]));
@@ -18773,10 +18897,20 @@ const makeDataTablePaginateProps = propsFactory({
18773
18897
  }
18774
18898
  }, 'v-data-table-paginate');
18775
18899
  const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
18776
- function createPagination(props, items) {
18900
+ function createPagination(props) {
18777
18901
  const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
18778
18902
  const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
18779
- const itemsLength = computed(() => +(props.itemsLength ?? items.value.length));
18903
+ return {
18904
+ page,
18905
+ itemsPerPage
18906
+ };
18907
+ }
18908
+ function providePagination(options) {
18909
+ const {
18910
+ page,
18911
+ itemsPerPage,
18912
+ itemsLength
18913
+ } = options;
18780
18914
  const startIndex = computed(() => {
18781
18915
  if (itemsPerPage.value === -1) return 0;
18782
18916
  return itemsPerPage.value * (page.value - 1);
@@ -18789,13 +18923,18 @@ function createPagination(props, items) {
18789
18923
  if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
18790
18924
  return Math.ceil(itemsLength.value / itemsPerPage.value);
18791
18925
  });
18926
+ function setItemsPerPage(value) {
18927
+ itemsPerPage.value = value;
18928
+ page.value = 1;
18929
+ }
18792
18930
  const data = {
18793
18931
  page,
18794
18932
  itemsPerPage,
18933
+ itemsLength,
18795
18934
  startIndex,
18796
18935
  stopIndex,
18797
18936
  pageCount,
18798
- itemsLength
18937
+ setItemsPerPage
18799
18938
  };
18800
18939
  provide(VDataTablePaginationSymbol, data);
18801
18940
  return data;
@@ -18805,7 +18944,13 @@ function usePagination() {
18805
18944
  if (!data) throw new Error('Missing pagination!');
18806
18945
  return data;
18807
18946
  }
18808
- function usePaginatedItems(items, startIndex, stopIndex, itemsPerPage) {
18947
+ function usePaginatedItems(options) {
18948
+ const {
18949
+ items,
18950
+ startIndex,
18951
+ stopIndex,
18952
+ itemsPerPage
18953
+ } = options;
18809
18954
  const paginatedItems = computed(() => {
18810
18955
  if (itemsPerPage.value <= 0) return items.value;
18811
18956
  return items.value.slice(startIndex.value, stopIndex.value);
@@ -18894,7 +19039,8 @@ const VDataTableFooter = genericComponent()({
18894
19039
  startIndex,
18895
19040
  stopIndex,
18896
19041
  itemsLength,
18897
- itemsPerPage
19042
+ itemsPerPage,
19043
+ setItemsPerPage
18898
19044
  } = usePagination();
18899
19045
  const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => ({
18900
19046
  ...option,
@@ -18907,7 +19053,7 @@ const VDataTableFooter = genericComponent()({
18907
19053
  }, [createVNode("span", null, [t(props.itemsPerPageText)]), createVNode(VSelect, {
18908
19054
  "items": itemsPerPageOptions.value,
18909
19055
  "modelValue": itemsPerPage.value,
18910
- "onUpdate:modelValue": v => itemsPerPage.value = Number(v),
19056
+ "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
18911
19057
  "density": "compact",
18912
19058
  "variant": "outlined",
18913
19059
  "hide-details": true
@@ -18996,22 +19142,10 @@ function useOptions(_ref) {
18996
19142
  groupBy: groupBy.value
18997
19143
  }));
18998
19144
 
18999
- // Reset page when sorting changes
19000
- watch(sortBy, () => {
19001
- page.value = 1;
19002
- }, {
19003
- deep: true
19004
- });
19005
-
19006
19145
  // Reset page when searching
19007
19146
  watch(() => search?.value, () => {
19008
19147
  page.value = 1;
19009
19148
  });
19010
-
19011
- // Reset page when items-per-page changes
19012
- watch(itemsPerPage, () => {
19013
- page.value = 1;
19014
- });
19015
19149
  let oldOptions = null;
19016
19150
  watch(options, () => {
19017
19151
  if (deepEqual(oldOptions, options.value)) return;
@@ -19065,7 +19199,18 @@ const VDataTable = genericComponent()({
19065
19199
  emit,
19066
19200
  slots
19067
19201
  } = _ref;
19068
- const groupBy = useProxiedModel(props, 'groupBy');
19202
+ const {
19203
+ groupBy
19204
+ } = createGroupBy(props);
19205
+ const {
19206
+ sortBy,
19207
+ multiSort,
19208
+ mustSort
19209
+ } = createSort(props);
19210
+ const {
19211
+ page,
19212
+ itemsPerPage
19213
+ } = createPagination(props);
19069
19214
  const {
19070
19215
  columns
19071
19216
  } = createHeaders(props, {
@@ -19083,32 +19228,46 @@ const VDataTable = genericComponent()({
19083
19228
  } = useFilter(props, items, search, {
19084
19229
  filterKeys
19085
19230
  });
19086
- const {
19087
- sortBy
19088
- } = createSort(props);
19231
+ provideSort({
19232
+ sortBy,
19233
+ multiSort,
19234
+ mustSort,
19235
+ page
19236
+ });
19089
19237
  const {
19090
19238
  sortByWithGroups,
19091
19239
  opened,
19092
19240
  extractRows
19093
- } = createGroupBy(props, groupBy, sortBy);
19241
+ } = provideGroupBy({
19242
+ groupBy,
19243
+ sortBy
19244
+ });
19094
19245
  const {
19095
19246
  sortedItems
19096
19247
  } = useSortedItems(filteredItems, sortByWithGroups, columns);
19097
19248
  const {
19098
19249
  flatItems
19099
19250
  } = useGroupedItems(sortedItems, groupBy, opened);
19251
+ const itemsLength = computed(() => flatItems.value.length);
19100
19252
  const {
19101
- page,
19102
- itemsPerPage,
19103
19253
  startIndex,
19104
19254
  stopIndex
19105
- } = createPagination(props, flatItems);
19255
+ } = providePagination({
19256
+ page,
19257
+ itemsPerPage,
19258
+ itemsLength
19259
+ });
19106
19260
  const {
19107
19261
  paginatedItems
19108
- } = usePaginatedItems(flatItems, startIndex, stopIndex, itemsPerPage);
19262
+ } = usePaginatedItems({
19263
+ items: flatItems,
19264
+ startIndex,
19265
+ stopIndex,
19266
+ itemsPerPage
19267
+ });
19109
19268
  const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));
19110
- createSelection(props, paginatedItemsWithoutGroups);
19111
- createExpanded(props);
19269
+ provideSelection(props, paginatedItemsWithoutGroups);
19270
+ provideExpanded(props);
19112
19271
  useOptions({
19113
19272
  page,
19114
19273
  itemsPerPage,
@@ -19256,7 +19415,14 @@ const VDataTableVirtual = genericComponent()({
19256
19415
  emit,
19257
19416
  slots
19258
19417
  } = _ref;
19259
- const groupBy = useProxiedModel(props, 'groupBy');
19418
+ const {
19419
+ groupBy
19420
+ } = createGroupBy(props);
19421
+ const {
19422
+ sortBy,
19423
+ multiSort,
19424
+ mustSort
19425
+ } = createSort(props);
19260
19426
  const {
19261
19427
  columns
19262
19428
  } = createHeaders(props, {
@@ -19274,14 +19440,19 @@ const VDataTableVirtual = genericComponent()({
19274
19440
  } = useFilter(props, items, search, {
19275
19441
  filterKeys
19276
19442
  });
19277
- const {
19278
- sortBy
19279
- } = createSort(props);
19443
+ provideSort({
19444
+ sortBy,
19445
+ multiSort,
19446
+ mustSort
19447
+ });
19280
19448
  const {
19281
19449
  sortByWithGroups,
19282
19450
  opened,
19283
19451
  extractRows
19284
- } = createGroupBy(props, groupBy, sortBy);
19452
+ } = provideGroupBy({
19453
+ groupBy,
19454
+ sortBy
19455
+ });
19285
19456
  const {
19286
19457
  sortedItems
19287
19458
  } = useSortedItems(filteredItems, sortByWithGroups, columns);
@@ -19289,8 +19460,8 @@ const VDataTableVirtual = genericComponent()({
19289
19460
  flatItems
19290
19461
  } = useGroupedItems(sortedItems, groupBy, opened);
19291
19462
  const allRows = computed(() => extractRows(flatItems.value));
19292
- createSelection(props, allRows);
19293
- createExpanded(props);
19463
+ provideSelection(props, allRows);
19464
+ provideExpanded(props);
19294
19465
  const {
19295
19466
  containerRef,
19296
19467
  paddingTop,
@@ -19377,7 +19548,10 @@ const VDataTableServer = genericComponent()({
19377
19548
  type: String,
19378
19549
  default: '$vuetify.dataIterator.loadingText'
19379
19550
  },
19380
- itemsLength: [Number, String],
19551
+ itemsLength: {
19552
+ type: [Number, String],
19553
+ required: true
19554
+ },
19381
19555
  ...makeVDataTableProps(),
19382
19556
  ...makeDataTableExpandProps(),
19383
19557
  ...makeDataTableHeaderProps(),
@@ -19402,8 +19576,20 @@ const VDataTableServer = genericComponent()({
19402
19576
  emit,
19403
19577
  slots
19404
19578
  } = _ref;
19405
- const groupBy = useProxiedModel(props, 'groupBy');
19406
- createExpanded(props);
19579
+ const {
19580
+ groupBy
19581
+ } = createGroupBy(props);
19582
+ const {
19583
+ sortBy,
19584
+ multiSort,
19585
+ mustSort
19586
+ } = createSort(props);
19587
+ const {
19588
+ page,
19589
+ itemsPerPage
19590
+ } = createPagination(props);
19591
+ const itemsLength = computed(() => parseInt(props.itemsLength, 10));
19592
+ provideExpanded(props);
19407
19593
  const {
19408
19594
  columns
19409
19595
  } = createHeaders(props, {
@@ -19415,20 +19601,28 @@ const VDataTableServer = genericComponent()({
19415
19601
  items
19416
19602
  } = useDataTableItems(props, columns);
19417
19603
  const {
19418
- sortBy,
19419
19604
  toggleSort
19420
- } = createSort(props);
19605
+ } = provideSort({
19606
+ sortBy,
19607
+ multiSort,
19608
+ mustSort,
19609
+ page
19610
+ });
19421
19611
  const {
19422
19612
  opened
19423
- } = createGroupBy(props, groupBy, sortBy);
19424
- const {
19613
+ } = provideGroupBy({
19614
+ groupBy,
19615
+ sortBy
19616
+ });
19617
+ providePagination({
19425
19618
  page,
19426
- itemsPerPage
19427
- } = createPagination(props, items);
19619
+ itemsPerPage,
19620
+ itemsLength
19621
+ });
19428
19622
  const {
19429
19623
  flatItems
19430
19624
  } = useGroupedItems(items, groupBy, opened);
19431
- createSelection(props, items);
19625
+ provideSelection(props, items);
19432
19626
  useOptions({
19433
19627
  page,
19434
19628
  itemsPerPage,
@@ -19999,7 +20193,7 @@ function createVuetify$1() {
19999
20193
  locale
20000
20194
  };
20001
20195
  }
20002
- const version$1 = "3.2.0-dev-20230309.0";
20196
+ const version$1 = "3.2.0-dev-20230322.0";
20003
20197
  createVuetify$1.version = version$1;
20004
20198
 
20005
20199
  // Vue's inject() can only be used in setup
@@ -20011,7 +20205,7 @@ function inject(key) {
20011
20205
  }
20012
20206
  }
20013
20207
 
20014
- const version = "3.2.0-dev-20230309.0";
20208
+ const version = "3.2.0-dev-20230322.0";
20015
20209
 
20016
20210
  const createVuetify = function () {
20017
20211
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};