@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
  */
@@ -207,6 +207,10 @@
207
207
  let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
208
208
  return Math.max(min, Math.min(max, value));
209
209
  }
210
+ function getDecimals(value) {
211
+ const trimmedStr = value.toString().trim();
212
+ return trimmedStr.includes('.') ? trimmedStr.length - trimmedStr.indexOf('.') - 1 : 0;
213
+ }
210
214
  function padEnd(str, length) {
211
215
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
212
216
  return str + char.repeat(Math.max(0, length - str.length));
@@ -489,7 +493,14 @@
489
493
  if (typeof el.animate === 'undefined') return {
490
494
  finished: Promise.resolve()
491
495
  };
492
- const animation = el.animate(keyframes, options);
496
+ let animation;
497
+ try {
498
+ animation = el.animate(keyframes, options);
499
+ } catch (err) {
500
+ return {
501
+ finished: Promise.resolve()
502
+ };
503
+ }
493
504
  if (typeof animation.finished === 'undefined') {
494
505
  animation.finished = new Promise(resolve => {
495
506
  animation.onfinish = () => {
@@ -953,6 +964,8 @@
953
964
  const injectedDefaults = useDefaults();
954
965
  const providedDefaults = vue.ref(defaults);
955
966
  const newDefaults = vue.computed(() => {
967
+ const disabled = vue.unref(options?.disabled);
968
+ if (disabled) return injectedDefaults.value;
956
969
  const scoped = vue.unref(options?.scoped);
957
970
  const reset = vue.unref(options?.reset);
958
971
  const root = vue.unref(options?.root);
@@ -1007,15 +1020,22 @@
1007
1020
  function propIsDefined(vnode, prop) {
1008
1021
  return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1009
1022
  }
1010
- const defineComponent = function defineComponent(options) {
1023
+
1024
+ // No props
1025
+
1026
+ // Implementation
1027
+ function defineComponent(options) {
1011
1028
  options._setup = options._setup ?? options.setup;
1012
1029
  if (!options.name) {
1013
1030
  consoleWarn('The component is missing an explicit name, unable to generate default prop value');
1014
1031
  return options;
1015
1032
  }
1016
1033
  if (options._setup) {
1017
- options.props = options.props ?? {};
1018
- options.props = propsFactory(options.props, toKebabCase(options.name))();
1034
+ options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1035
+ const propKeys = Object.keys(options.props);
1036
+ options.filterProps = function filterProps(props) {
1037
+ return pick(props, propKeys);
1038
+ };
1019
1039
  options.props._as = String;
1020
1040
  options.setup = function setup(props, ctx) {
1021
1041
  const defaults = useDefaults();
@@ -1026,10 +1046,11 @@
1026
1046
  const componentDefaults = vue.computed(() => defaults.value[props._as ?? options.name]);
1027
1047
  const _props = new Proxy(props, {
1028
1048
  get(target, prop) {
1049
+ const propValue = Reflect.get(target, prop);
1029
1050
  if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1030
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? target[prop];
1051
+ return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1031
1052
  }
1032
- return Reflect.get(target, prop);
1053
+ return propValue;
1033
1054
  }
1034
1055
  });
1035
1056
  const _subcomponentDefaults = vue.shallowRef();
@@ -1054,7 +1075,7 @@
1054
1075
  };
1055
1076
  }
1056
1077
  return options;
1057
- };
1078
+ }
1058
1079
  // Implementation
1059
1080
  function genericComponent() {
1060
1081
  let exposeDefaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
@@ -2157,6 +2178,7 @@
2157
2178
  name: 'VDefaultsProvider',
2158
2179
  props: {
2159
2180
  defaults: Object,
2181
+ disabled: Boolean,
2160
2182
  reset: [Number, String],
2161
2183
  root: Boolean,
2162
2184
  scoped: Boolean
@@ -2167,6 +2189,7 @@
2167
2189
  } = _ref;
2168
2190
  const {
2169
2191
  defaults,
2192
+ disabled,
2170
2193
  reset,
2171
2194
  root,
2172
2195
  scoped
@@ -2174,7 +2197,8 @@
2174
2197
  provideDefaults(defaults, {
2175
2198
  reset,
2176
2199
  root,
2177
- scoped
2200
+ scoped,
2201
+ disabled
2178
2202
  });
2179
2203
  return () => slots.default?.();
2180
2204
  }
@@ -2796,7 +2820,7 @@
2796
2820
  "class": ['v-img__img', containClasses.value],
2797
2821
  "src": normalisedSrc.value.src,
2798
2822
  "srcset": normalisedSrc.value.srcset,
2799
- "alt": "",
2823
+ "alt": props.alt,
2800
2824
  "sizes": props.sizes,
2801
2825
  "ref": image,
2802
2826
  "onLoad": onLoad,
@@ -2818,7 +2842,7 @@
2818
2842
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createVNode("img", {
2819
2843
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
2820
2844
  "src": normalisedSrc.value.lazySrc,
2821
- "alt": ""
2845
+ "alt": props.alt
2822
2846
  }, null)]
2823
2847
  });
2824
2848
  const __placeholder = () => {
@@ -3160,16 +3184,20 @@
3160
3184
  default: () => [hasImage && vue.createVNode("div", {
3161
3185
  "key": "image",
3162
3186
  "class": "v-toolbar__image"
3163
- }, [vue.createVNode(VDefaultsProvider, {
3187
+ }, [!slots.image ? vue.createVNode(VImg, {
3188
+ "key": "image-img",
3189
+ "cover": true,
3190
+ "src": props.image
3191
+ }, null) : vue.createVNode(VDefaultsProvider, {
3192
+ "key": "image-defaults",
3193
+ "disabled": !props.image,
3164
3194
  "defaults": {
3165
3195
  VImg: {
3166
3196
  cover: true,
3167
3197
  src: props.image
3168
3198
  }
3169
3199
  }
3170
- }, {
3171
- default: () => [slots.image ? slots.image?.() : vue.createVNode(VImg, null, null)]
3172
- })]), vue.createVNode(VDefaultsProvider, {
3200
+ }, slots.image)]), vue.createVNode(VDefaultsProvider, {
3173
3201
  "defaults": {
3174
3202
  VTabs: {
3175
3203
  height: convertToUnit(contentHeight.value)
@@ -3215,9 +3243,6 @@
3215
3243
  };
3216
3244
  }
3217
3245
  });
3218
- function filterToolbarProps(props) {
3219
- return pick(props, Object.keys(VToolbar?.props ?? {}));
3220
- }
3221
3246
 
3222
3247
  // Utilities
3223
3248
 
@@ -3295,7 +3320,7 @@
3295
3320
  absolute: vue.toRef(props, 'absolute')
3296
3321
  });
3297
3322
  useRender(() => {
3298
- const [toolbarProps] = filterToolbarProps(props);
3323
+ const [toolbarProps] = VToolbar.filterProps(props);
3299
3324
  return vue.createVNode(VToolbar, vue.mergeProps({
3300
3325
  "ref": vToolbarRef,
3301
3326
  "class": ['v-app-bar', {
@@ -3386,8 +3411,6 @@
3386
3411
  };
3387
3412
  }
3388
3413
 
3389
- // Types
3390
-
3391
3414
  const makeVBtnGroupProps = propsFactory({
3392
3415
  divided: Boolean,
3393
3416
  ...makeBorderProps(),
@@ -3438,9 +3461,6 @@
3438
3461
  });
3439
3462
  }
3440
3463
  });
3441
- function filterVBtnGroupProps(props) {
3442
- return pick(props, Object.keys(VBtnGroup.props));
3443
- }
3444
3464
 
3445
3465
  // Composables
3446
3466
 
@@ -3667,7 +3687,7 @@
3667
3687
  selected
3668
3688
  } = useGroup(props, VBtnToggleSymbol);
3669
3689
  useRender(() => {
3670
- const [btnGroupProps] = filterVBtnGroupProps(props);
3690
+ const [btnGroupProps] = VBtnGroup.filterProps(props);
3671
3691
  return vue.createVNode(VBtnGroup, vue.mergeProps({
3672
3692
  "class": "v-btn-toggle"
3673
3693
  }, btnGroupProps), {
@@ -4755,49 +4775,50 @@
4755
4775
 
4756
4776
  // Types
4757
4777
 
4778
+ const makeVBtnProps = propsFactory({
4779
+ active: {
4780
+ type: Boolean,
4781
+ default: undefined
4782
+ },
4783
+ symbol: {
4784
+ type: null,
4785
+ default: VBtnToggleSymbol
4786
+ },
4787
+ flat: Boolean,
4788
+ icon: [Boolean, String, Function, Object],
4789
+ prependIcon: IconValue,
4790
+ appendIcon: IconValue,
4791
+ block: Boolean,
4792
+ stacked: Boolean,
4793
+ ripple: {
4794
+ type: Boolean,
4795
+ default: true
4796
+ },
4797
+ ...makeBorderProps(),
4798
+ ...makeRoundedProps(),
4799
+ ...makeDensityProps(),
4800
+ ...makeDimensionProps(),
4801
+ ...makeElevationProps(),
4802
+ ...makeGroupItemProps(),
4803
+ ...makeLoaderProps(),
4804
+ ...makeLocationProps(),
4805
+ ...makePositionProps(),
4806
+ ...makeRouterProps(),
4807
+ ...makeSizeProps(),
4808
+ ...makeTagProps({
4809
+ tag: 'button'
4810
+ }),
4811
+ ...makeThemeProps(),
4812
+ ...makeVariantProps({
4813
+ variant: 'elevated'
4814
+ })
4815
+ }, 'VBtn');
4758
4816
  const VBtn = genericComponent()({
4759
4817
  name: 'VBtn',
4760
4818
  directives: {
4761
4819
  Ripple
4762
4820
  },
4763
- props: {
4764
- active: {
4765
- type: Boolean,
4766
- default: undefined
4767
- },
4768
- symbol: {
4769
- type: null,
4770
- default: VBtnToggleSymbol
4771
- },
4772
- flat: Boolean,
4773
- icon: [Boolean, String, Function, Object],
4774
- prependIcon: IconValue,
4775
- appendIcon: IconValue,
4776
- block: Boolean,
4777
- stacked: Boolean,
4778
- ripple: {
4779
- type: Boolean,
4780
- default: true
4781
- },
4782
- ...makeBorderProps(),
4783
- ...makeRoundedProps(),
4784
- ...makeDensityProps(),
4785
- ...makeDimensionProps(),
4786
- ...makeElevationProps(),
4787
- ...makeGroupItemProps(),
4788
- ...makeLoaderProps(),
4789
- ...makeLocationProps(),
4790
- ...makePositionProps(),
4791
- ...makeRouterProps(),
4792
- ...makeSizeProps(),
4793
- ...makeTagProps({
4794
- tag: 'button'
4795
- }),
4796
- ...makeThemeProps(),
4797
- ...makeVariantProps({
4798
- variant: 'elevated'
4799
- })
4800
- },
4821
+ props: makeVBtnProps(),
4801
4822
  emits: {
4802
4823
  'group:selected': val => true
4803
4824
  },
@@ -4890,43 +4911,49 @@
4890
4911
  },
4891
4912
  "value": valueAttr.value
4892
4913
  }, {
4893
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode(VDefaultsProvider, {
4914
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
4894
4915
  "key": "prepend",
4916
+ "class": "v-btn__prepend"
4917
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
4918
+ "key": "prepend-icon",
4919
+ "icon": props.prependIcon
4920
+ }, null) : vue.createVNode(VDefaultsProvider, {
4921
+ "key": "prepend-defaults",
4922
+ "disabled": !props.prependIcon,
4895
4923
  "defaults": {
4896
4924
  VIcon: {
4897
4925
  icon: props.prependIcon
4898
4926
  }
4899
4927
  }
4900
- }, {
4901
- default: () => [vue.createVNode("span", {
4902
- "class": "v-btn__prepend"
4903
- }, [slots.prepend?.() ?? vue.createVNode(VIcon, null, null)])]
4904
- }), vue.createVNode("span", {
4928
+ }, slots.prepend)]), vue.createVNode("span", {
4905
4929
  "class": "v-btn__content",
4906
4930
  "data-no-activator": ""
4907
- }, [vue.createVNode(VDefaultsProvider, {
4908
- "key": "content",
4931
+ }, [!slots.default && hasIcon ? vue.createVNode(VIcon, {
4932
+ "key": "content-icon",
4933
+ "icon": props.icon
4934
+ }, null) : vue.createVNode(VDefaultsProvider, {
4935
+ "key": "content-defaults",
4936
+ "disabled": !hasIcon,
4909
4937
  "defaults": {
4910
4938
  VIcon: {
4911
- icon: hasIcon ? props.icon : undefined
4939
+ icon: props.icon
4912
4940
  }
4913
4941
  }
4914
- }, {
4915
- default: () => [slots.default?.() ?? (hasIcon && vue.createVNode(VIcon, {
4916
- "key": "icon"
4917
- }, null))]
4918
- })]), !props.icon && hasAppend && vue.createVNode(VDefaultsProvider, {
4942
+ }, slots.default)]), !props.icon && hasAppend && vue.createVNode("span", {
4919
4943
  "key": "append",
4944
+ "class": "v-btn__append"
4945
+ }, [!slots.append ? vue.createVNode(VIcon, {
4946
+ "key": "append-icon",
4947
+ "icon": props.appendIcon
4948
+ }, null) : vue.createVNode(VDefaultsProvider, {
4949
+ "key": "append-defaults",
4950
+ "disabled": !props.appendIcon,
4920
4951
  "defaults": {
4921
4952
  VIcon: {
4922
4953
  icon: props.appendIcon
4923
4954
  }
4924
4955
  }
4925
- }, {
4926
- default: () => [vue.createVNode("span", {
4927
- "class": "v-btn__append"
4928
- }, [slots.append?.() ?? vue.createVNode(VIcon, null, null)])]
4929
- }), !!props.loading && vue.createVNode("span", {
4956
+ }, slots.append)]), !!props.loading && vue.createVNode("span", {
4930
4957
  "key": "loader",
4931
4958
  "class": "v-btn__loader"
4932
4959
  }, [slots.loader?.() ?? vue.createVNode(VProgressCircular, {
@@ -5055,10 +5082,12 @@
5055
5082
  })
5056
5083
  },
5057
5084
  emits: {
5085
+ 'click:close': e => true,
5058
5086
  'update:modelValue': value => true
5059
5087
  },
5060
5088
  setup(props, _ref) {
5061
5089
  let {
5090
+ emit,
5062
5091
  slots
5063
5092
  } = _ref;
5064
5093
  const isActive = useProxiedModel(props, 'modelValue');
@@ -5108,6 +5137,7 @@
5108
5137
  'aria-label': t(props.closeLabel),
5109
5138
  onClick(e) {
5110
5139
  isActive.value = false;
5140
+ emit('click:close', e);
5111
5141
  }
5112
5142
  }));
5113
5143
  return () => {
@@ -5129,8 +5159,17 @@
5129
5159
  "key": "border",
5130
5160
  "class": ['v-alert__border', textColorClasses.value],
5131
5161
  "style": textColorStyles.value
5132
- }, null), hasPrepend && vue.createVNode(VDefaultsProvider, {
5162
+ }, null), hasPrepend && vue.createVNode("div", {
5133
5163
  "key": "prepend",
5164
+ "class": "v-alert__prepend"
5165
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
5166
+ "key": "prepend-icon",
5167
+ "density": props.density,
5168
+ "icon": icon.value,
5169
+ "size": props.prominent ? 44 : 28
5170
+ }, null) : vue.createVNode(VDefaultsProvider, {
5171
+ "key": "prepend-defaults",
5172
+ "disabled": !icon.value,
5134
5173
  "defaults": {
5135
5174
  VIcon: {
5136
5175
  density: props.density,
@@ -5138,21 +5177,25 @@
5138
5177
  size: props.prominent ? 44 : 28
5139
5178
  }
5140
5179
  }
5141
- }, {
5142
- default: () => [vue.createVNode("div", {
5143
- "class": "v-alert__prepend"
5144
- }, [slots.prepend ? slots.prepend() : icon.value && vue.createVNode(VIcon, null, null)])]
5145
- }), vue.createVNode("div", {
5180
+ }, slots.prepend)]), vue.createVNode("div", {
5146
5181
  "class": "v-alert__content"
5147
5182
  }, [hasTitle && vue.createVNode(VAlertTitle, {
5148
5183
  "key": "title"
5149
5184
  }, {
5150
- default: () => [slots.title ? slots.title() : props.title]
5151
- }), hasText && (slots.text ? slots.text() : props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5185
+ default: () => [slots.title?.() ?? props.title]
5186
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5152
5187
  "key": "append",
5153
5188
  "class": "v-alert__append"
5154
- }, [slots.append()]), hasClose && vue.createVNode(VDefaultsProvider, {
5189
+ }, [slots.append()]), hasClose && vue.createVNode("div", {
5155
5190
  "key": "close",
5191
+ "class": "v-alert__close"
5192
+ }, [!slots.close ? vue.createVNode(VBtn, vue.mergeProps({
5193
+ "key": "close-btn",
5194
+ "icon": props.closeIcon,
5195
+ "size": "x-small",
5196
+ "variant": "text"
5197
+ }, closeProps.value), null) : vue.createVNode(VDefaultsProvider, {
5198
+ "key": "close-defaults",
5156
5199
  "defaults": {
5157
5200
  VBtn: {
5158
5201
  icon: props.closeIcon,
@@ -5161,12 +5204,10 @@
5161
5204
  }
5162
5205
  }
5163
5206
  }, {
5164
- default: () => [vue.createVNode("div", {
5165
- "class": "v-alert__close"
5166
- }, [slots.close?.({
5207
+ default: () => [slots.close?.({
5167
5208
  props: closeProps.value
5168
- }) ?? vue.createVNode(VBtn, closeProps.value, null)])]
5169
- })]
5209
+ })]
5210
+ })])]
5170
5211
  });
5171
5212
  };
5172
5213
  }
@@ -6129,7 +6170,13 @@
6129
6170
  });
6130
6171
  }
6131
6172
  function onInput(e) {
6132
- model.value = e.target.value;
6173
+ const el = e.target;
6174
+ const caretPosition = [el.selectionStart, el.selectionEnd];
6175
+ model.value = el.value;
6176
+ vue.nextTick(() => {
6177
+ el.selectionStart = caretPosition[0];
6178
+ el.selectionEnd = caretPosition[1];
6179
+ });
6133
6180
  }
6134
6181
  useRender(() => {
6135
6182
  const hasCounter = !!(slots.counter || props.counter || props.counterValue);
@@ -6229,9 +6276,6 @@
6229
6276
  return forwardRefs({}, vInputRef, vFieldRef, inputRef);
6230
6277
  }
6231
6278
  });
6232
- function filterVTextFieldProps(props) {
6233
- return pick(props, Object.keys(VTextField.props));
6234
- }
6235
6279
 
6236
6280
  // Types
6237
6281
 
@@ -6489,11 +6533,6 @@
6489
6533
  };
6490
6534
  }
6491
6535
  });
6492
- function filterControlProps(props) {
6493
- return pick(props, Object.keys(VSelectionControl.props));
6494
- }
6495
-
6496
- // Types
6497
6536
 
6498
6537
  const makeVCheckboxBtnProps = propsFactory({
6499
6538
  indeterminate: Boolean,
@@ -6543,9 +6582,6 @@
6543
6582
  return {};
6544
6583
  }
6545
6584
  });
6546
- function filterCheckboxBtnProps(props) {
6547
- return pick(props, Object.keys(VCheckboxBtn.props));
6548
- }
6549
6585
 
6550
6586
  // Types
6551
6587
 
@@ -6574,7 +6610,7 @@
6574
6610
  useRender(() => {
6575
6611
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
6576
6612
  const [inputProps, _1] = filterInputProps(props);
6577
- const [checkboxProps, _2] = filterCheckboxBtnProps(props);
6613
+ const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6578
6614
  return vue.createVNode(VInput, vue.mergeProps({
6579
6615
  "class": "v-checkbox"
6580
6616
  }, inputAttrs, inputProps, {
@@ -6831,10 +6867,13 @@
6831
6867
  const link = useLink(props, attrs);
6832
6868
  const isLink = vue.computed(() => props.link !== false && link.isLink.value);
6833
6869
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
6834
- function onCloseClick(e) {
6835
- isActive.value = false;
6836
- emit('click:close', e);
6837
- }
6870
+ const closeProps = vue.computed(() => ({
6871
+ 'aria-label': t(props.closeLabel),
6872
+ onClick(e) {
6873
+ isActive.value = false;
6874
+ emit('click:close', e);
6875
+ }
6876
+ }));
6838
6877
  function onClick(e) {
6839
6878
  emit('click', e);
6840
6879
  if (!isClickable.value) return;
@@ -6849,10 +6888,12 @@
6849
6888
  }
6850
6889
  return () => {
6851
6890
  const Tag = link.isLink.value ? 'a' : props.tag;
6852
- const hasAppend = !!(slots.append || props.appendIcon || props.appendAvatar);
6891
+ const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);
6892
+ const hasAppend = !!(hasAppendMedia || slots.append);
6853
6893
  const hasClose = !!(slots.close || props.closable);
6854
6894
  const hasFilter = !!(slots.filter || props.filter) && group;
6855
- const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6895
+ const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
6896
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
6856
6897
  const hasColor = !group || group.isSelected.value;
6857
6898
  return isActive.value && vue.withDirectives(vue.createVNode(Tag, {
6858
6899
  "class": ['v-chip', {
@@ -6870,77 +6911,94 @@
6870
6911
  "onClick": onClick,
6871
6912
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
6872
6913
  }, {
6873
- default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
6874
- "key": "filter",
6875
- "defaults": {
6876
- VIcon: {
6877
- icon: props.filterIcon
6878
- }
6879
- }
6914
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
6915
+ "key": "filter"
6880
6916
  }, {
6881
- default: () => [vue.createVNode(VExpandXTransition, null, {
6882
- default: () => [vue.withDirectives(vue.createVNode("div", {
6883
- "class": "v-chip__filter"
6884
- }, [slots.filter ? slots.filter() : vue.createVNode(VIcon, null, null)]), [[vue.vShow, group.isSelected.value]])]
6885
- })]
6886
- }), hasPrepend && vue.createVNode(VDefaultsProvider, {
6917
+ default: () => [vue.withDirectives(vue.createVNode("div", {
6918
+ "class": "v-chip__filter"
6919
+ }, [!slots.filter ? vue.createVNode(VIcon, {
6920
+ "key": "filter-icon",
6921
+ "icon": props.filterIcon
6922
+ }, null) : vue.withDirectives(vue.createVNode(VDefaultsProvider, {
6923
+ "key": "filter-defaults",
6924
+ "disabled": !props.filterIcon,
6925
+ "defaults": {
6926
+ VIcon: {
6927
+ icon: props.filterIcon
6928
+ }
6929
+ }
6930
+ }, null), [[vue.resolveDirective("slot"), slots.filter, "default"]])]), [[vue.vShow, group.isSelected.value]])]
6931
+ }), hasPrepend && vue.createVNode("div", {
6887
6932
  "key": "prepend",
6933
+ "class": "v-chip__prepend"
6934
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependIcon && vue.createVNode(VIcon, {
6935
+ "key": "prepend-icon",
6936
+ "icon": props.prependIcon,
6937
+ "start": true
6938
+ }, null), props.prependAvatar && vue.createVNode(VAvatar, {
6939
+ "key": "prepend-avatar",
6940
+ "image": props.prependAvatar,
6941
+ "start": true
6942
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
6943
+ "key": "prepend-defaults",
6944
+ "disabled": !hasPrependMedia,
6888
6945
  "defaults": {
6889
6946
  VAvatar: {
6890
- image: props.prependAvatar
6947
+ image: props.prependAvatar,
6948
+ start: true
6891
6949
  },
6892
6950
  VIcon: {
6893
- icon: props.prependIcon
6951
+ icon: props.prependIcon,
6952
+ start: true
6894
6953
  }
6895
6954
  }
6896
- }, {
6897
- default: () => [slots.prepend ? vue.createVNode("div", {
6898
- "class": "v-chip__prepend"
6899
- }, [slots.prepend()]) : props.prependAvatar ? vue.createVNode(VAvatar, {
6900
- "start": true
6901
- }, null) : props.prependIcon ? vue.createVNode(VIcon, {
6902
- "start": true
6903
- }, null) : undefined]
6904
- }), slots.default?.({
6955
+ }, slots.prepend)]), slots.default?.({
6905
6956
  isSelected: group?.isSelected.value,
6906
6957
  selectedClass: group?.selectedClass.value,
6907
6958
  select: group?.select,
6908
6959
  toggle: group?.toggle,
6909
6960
  value: group?.value.value,
6910
6961
  disabled: props.disabled
6911
- }) ?? props.text, hasAppend && vue.createVNode(VDefaultsProvider, {
6962
+ }) ?? props.text, hasAppend && vue.createVNode("div", {
6912
6963
  "key": "append",
6964
+ "class": "v-chip__append"
6965
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
6966
+ "key": "append-icon",
6967
+ "end": true,
6968
+ "icon": props.appendIcon
6969
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
6970
+ "key": "append-avatar",
6971
+ "end": true,
6972
+ "image": props.appendAvatar
6973
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
6974
+ "key": "append-defaults",
6975
+ "disabled": !hasAppendMedia,
6913
6976
  "defaults": {
6914
6977
  VAvatar: {
6978
+ end: true,
6915
6979
  image: props.appendAvatar
6916
6980
  },
6917
6981
  VIcon: {
6982
+ end: true,
6918
6983
  icon: props.appendIcon
6919
6984
  }
6920
6985
  }
6921
- }, {
6922
- default: () => [slots.append ? vue.createVNode("div", {
6923
- "class": "v-chip__append"
6924
- }, [slots.append()]) : props.appendAvatar ? vue.createVNode(VAvatar, {
6925
- "end": true
6926
- }, null) : props.appendIcon ? vue.createVNode(VIcon, {
6927
- "end": true
6928
- }, null) : undefined]
6929
- }), hasClose && vue.createVNode(VDefaultsProvider, {
6986
+ }, slots.append)]), hasClose && vue.createVNode("div", vue.mergeProps({
6930
6987
  "key": "close",
6988
+ "class": "v-chip__close"
6989
+ }, closeProps.value), [!slots.close ? vue.createVNode(VIcon, {
6990
+ "key": "close-icon",
6991
+ "icon": props.closeIcon,
6992
+ "size": "x-small"
6993
+ }, null) : vue.createVNode(VDefaultsProvider, {
6994
+ "key": "close-defaults",
6931
6995
  "defaults": {
6932
6996
  VIcon: {
6933
6997
  icon: props.closeIcon,
6934
6998
  size: 'x-small'
6935
6999
  }
6936
7000
  }
6937
- }, {
6938
- default: () => [vue.createVNode("div", {
6939
- "class": "v-chip__close",
6940
- "aria-label": t(props.closeLabel),
6941
- "onClick": onCloseClick
6942
- }, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
6943
- })]
7001
+ }, slots.close)])]
6944
7002
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6945
7003
  };
6946
7004
  }
@@ -7456,8 +7514,6 @@
7456
7514
  });
7457
7515
  };
7458
7516
 
7459
- // Types
7460
-
7461
7517
  const VListGroupActivator = defineComponent({
7462
7518
  name: 'VListGroupActivator',
7463
7519
  setup(_, _ref) {
@@ -7550,9 +7606,6 @@
7550
7606
  return {};
7551
7607
  }
7552
7608
  });
7553
- function filterListGroupProps(props) {
7554
- return pick(props, Object.keys(VListGroup.props));
7555
- }
7556
7609
 
7557
7610
  const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle');
7558
7611
 
@@ -7690,8 +7743,10 @@
7690
7743
  const hasColor = !list || isSelected.value || isActive.value;
7691
7744
  const hasTitle = slots.title || props.title;
7692
7745
  const hasSubtitle = slots.subtitle || props.subtitle;
7693
- const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
7694
- const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);
7746
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
7747
+ const hasAppend = !!(hasAppendMedia || slots.append);
7748
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
7749
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
7695
7750
  list?.updateHasPrepend(hasPrepend);
7696
7751
  return vue.withDirectives(vue.createVNode(Tag, {
7697
7752
  "class": ['v-list-item', {
@@ -7711,7 +7766,7 @@
7711
7766
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
7712
7767
  "key": "prepend",
7713
7768
  "class": "v-list-item__prepend"
7714
- }, [props.prependAvatar && vue.createVNode(VAvatar, {
7769
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
7715
7770
  "key": "prepend-avatar",
7716
7771
  "density": props.density,
7717
7772
  "image": props.prependAvatar
@@ -7719,8 +7774,9 @@
7719
7774
  "key": "prepend-icon",
7720
7775
  "density": props.density,
7721
7776
  "icon": props.prependIcon
7722
- }, null), slots.prepend && vue.createVNode(VDefaultsProvider, {
7723
- "key": "prepend",
7777
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7778
+ "key": "prepend-defaults",
7779
+ "disabled": !hasPrependMedia,
7724
7780
  "defaults": {
7725
7781
  VAvatar: {
7726
7782
  density: props.density,
@@ -7735,7 +7791,7 @@
7735
7791
  }
7736
7792
  }
7737
7793
  }, {
7738
- default: () => [slots.prepend(slotProps.value)]
7794
+ default: () => [slots.prepend?.(slotProps.value)]
7739
7795
  })]), vue.createVNode("div", {
7740
7796
  "class": "v-list-item__content",
7741
7797
  "data-no-activator": ""
@@ -7754,8 +7810,17 @@
7754
7810
  }), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
7755
7811
  "key": "append",
7756
7812
  "class": "v-list-item__append"
7757
- }, [slots.append && vue.createVNode(VDefaultsProvider, {
7758
- "key": "append",
7813
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
7814
+ "key": "append-icon",
7815
+ "density": props.density,
7816
+ "icon": props.appendIcon
7817
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7818
+ "key": "append-avatar",
7819
+ "density": props.density,
7820
+ "image": props.appendAvatar
7821
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7822
+ "key": "append-defaults",
7823
+ "disabled": !hasAppendMedia,
7759
7824
  "defaults": {
7760
7825
  VAvatar: {
7761
7826
  density: props.density,
@@ -7770,16 +7835,8 @@
7770
7835
  }
7771
7836
  }
7772
7837
  }, {
7773
- default: () => [slots.append(slotProps.value)]
7774
- }), props.appendIcon && vue.createVNode(VIcon, {
7775
- "key": "append-icon",
7776
- "density": props.density,
7777
- "icon": props.appendIcon
7778
- }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7779
- "key": "append-avatar",
7780
- "density": props.density,
7781
- "image": props.appendAvatar
7782
- }, null)])]
7838
+ default: () => [slots.append?.(slotProps.value)]
7839
+ })])]
7783
7840
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
7784
7841
  });
7785
7842
  return {};
@@ -7876,7 +7933,7 @@
7876
7933
  item
7877
7934
  }) : undefined
7878
7935
  };
7879
- const [listGroupProps, _1] = filterListGroupProps(itemProps);
7936
+ const [listGroupProps, _1] = VListGroup.filterProps(itemProps);
7880
7937
  return children ? vue.createVNode(VListGroup, vue.mergeProps({
7881
7938
  "value": itemProps?.value
7882
7939
  }, listGroupProps), {
@@ -9103,6 +9160,8 @@
9103
9160
 
9104
9161
  // Types
9105
9162
 
9163
+ const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
9164
+
9106
9165
  const DisplaySymbol = Symbol.for('vuetify:display');
9107
9166
  const defaultDisplayOptions = {
9108
9167
  mobileBreakpoint: 'lg',
@@ -9658,9 +9717,6 @@
9658
9717
  };
9659
9718
  }
9660
9719
  });
9661
- function filterVOverlayProps(props) {
9662
- return pick(props, Object.keys(VOverlay.props));
9663
- }
9664
9720
 
9665
9721
  // Types
9666
9722
 
@@ -9726,7 +9782,7 @@
9726
9782
  'aria-owns': id.value
9727
9783
  }, props.activatorProps));
9728
9784
  useRender(() => {
9729
- const [overlayProps] = filterVOverlayProps(props);
9785
+ const [overlayProps] = VOverlay.filterProps(props);
9730
9786
  return vue.createVNode(VOverlay, vue.mergeProps({
9731
9787
  "ref": overlay,
9732
9788
  "class": ['v-menu']
@@ -9902,7 +9958,7 @@
9902
9958
  useRender(() => {
9903
9959
  const hasChips = !!(props.chips || slots.chip);
9904
9960
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
9905
- const [textFieldProps] = filterVTextFieldProps(props);
9961
+ const [textFieldProps] = VTextField.filterProps(props);
9906
9962
  return vue.createVNode(VTextField, vue.mergeProps({
9907
9963
  "ref": vTextFieldRef
9908
9964
  }, textFieldProps, {
@@ -9988,7 +10044,13 @@
9988
10044
  return vue.createVNode("div", {
9989
10045
  "key": item.value,
9990
10046
  "class": "v-select__selection"
9991
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10047
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10048
+ "key": "chip",
10049
+ "closable": props.closableChips,
10050
+ "size": "small",
10051
+ "text": item.title
10052
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10053
+ "key": "chip-defaults",
9992
10054
  "defaults": {
9993
10055
  VChip: {
9994
10056
  closable: props.closableChips,
@@ -9997,15 +10059,15 @@
9997
10059
  }
9998
10060
  }
9999
10061
  }, {
10000
- default: () => [slots.chip ? slots.chip({
10062
+ default: () => [slots.chip?.({
10001
10063
  item,
10002
10064
  index,
10003
10065
  props: slotProps
10004
- }) : vue.createVNode(VChip, slotProps, null)]
10005
- }) : slots.selection ? slots.selection({
10066
+ })]
10067
+ }) : slots.selection?.({
10006
10068
  item,
10007
10069
  index
10008
- }) : vue.createVNode("span", {
10070
+ }) ?? vue.createVNode("span", {
10009
10071
  "class": "v-select__selection-text"
10010
10072
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
10011
10073
  "class": "v-select__selection-comma"
@@ -10289,7 +10351,7 @@
10289
10351
  useRender(() => {
10290
10352
  const hasChips = !!(props.chips || slots.chip);
10291
10353
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10292
- const [textFieldProps] = filterVTextFieldProps(props);
10354
+ const [textFieldProps] = VTextField.filterProps(props);
10293
10355
  return vue.createVNode(VTextField, vue.mergeProps({
10294
10356
  "ref": vTextFieldRef
10295
10357
  }, textFieldProps, {
@@ -10377,7 +10439,13 @@
10377
10439
  return vue.createVNode("div", {
10378
10440
  "key": item.value,
10379
10441
  "class": "v-autocomplete__selection"
10380
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10442
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10443
+ "key": "chip",
10444
+ "closable": props.closableChips,
10445
+ "size": "small",
10446
+ "text": item.title
10447
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10448
+ "key": "chip-defaults",
10381
10449
  "defaults": {
10382
10450
  VChip: {
10383
10451
  closable: props.closableChips,
@@ -10386,15 +10454,15 @@
10386
10454
  }
10387
10455
  }
10388
10456
  }, {
10389
- default: () => [slots.chip ? slots.chip({
10457
+ default: () => [slots.chip?.({
10390
10458
  item,
10391
10459
  index,
10392
10460
  props: slotProps
10393
- }) : vue.createVNode(VChip, slotProps, null)]
10394
- }) : slots.selection ? slots.selection({
10461
+ })]
10462
+ }) : slots.selection?.({
10395
10463
  item,
10396
10464
  index
10397
- }) : vue.createVNode("span", {
10465
+ }) ?? vue.createVNode("span", {
10398
10466
  "class": "v-autocomplete__selection-text"
10399
10467
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
10400
10468
  "class": "v-autocomplete__selection-comma"
@@ -10595,7 +10663,8 @@
10595
10663
  });
10596
10664
  useRender(() => {
10597
10665
  const hasText = !!(props.text || slots.text);
10598
- const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
10666
+ const hasPrependMedia = !!(props.avatar || props.icon);
10667
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
10599
10668
  return vue.createVNode(props.tag, {
10600
10669
  "class": ['v-banner', {
10601
10670
  'v-banner--stacked': props.stacked || mobile.value,
@@ -10605,8 +10674,18 @@
10605
10674
  "style": [dimensionStyles.value, locationStyles.value],
10606
10675
  "role": "banner"
10607
10676
  }, {
10608
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10677
+ default: () => [hasPrepend && vue.createVNode("div", {
10609
10678
  "key": "prepend",
10679
+ "class": "v-banner__prepend"
10680
+ }, [!slots.prepend ? vue.createVNode(VAvatar, {
10681
+ "key": "prepend-avatar",
10682
+ "color": color.value,
10683
+ "density": density.value,
10684
+ "icon": props.icon,
10685
+ "image": props.avatar
10686
+ }, null) : vue.createVNode(VDefaultsProvider, {
10687
+ "key": "prepend-defaults",
10688
+ "disabled": !hasPrependMedia,
10610
10689
  "defaults": {
10611
10690
  VAvatar: {
10612
10691
  color: color.value,
@@ -10615,19 +10694,15 @@
10615
10694
  image: props.avatar
10616
10695
  }
10617
10696
  }
10618
- }, {
10619
- default: () => [vue.createVNode("div", {
10620
- "class": "v-banner__prepend"
10621
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && vue.createVNode(VAvatar, null, null)])]
10622
- }), vue.createVNode("div", {
10697
+ }, slots.prepend)]), vue.createVNode("div", {
10623
10698
  "class": "v-banner__content"
10624
10699
  }, [hasText && vue.createVNode(VBannerText, {
10625
10700
  "key": "text"
10626
10701
  }, {
10627
- default: () => [slots.text ? slots.text() : props.text]
10628
- }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, null, {
10629
- default: () => [slots.actions()]
10630
- })]
10702
+ default: () => [slots.text?.() ?? props.text]
10703
+ }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, {
10704
+ "key": "actions"
10705
+ }, slots.actions)]
10631
10706
  });
10632
10707
  });
10633
10708
  }
@@ -10860,19 +10935,23 @@
10860
10935
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
10861
10936
  "style": backgroundColorStyles.value
10862
10937
  }, {
10863
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10938
+ default: () => [hasPrepend && vue.createVNode("div", {
10864
10939
  "key": "prepend",
10940
+ "class": "v-breadcrumbs__prepend"
10941
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
10942
+ "key": "prepend-icon",
10943
+ "start": true,
10944
+ "icon": props.icon
10945
+ }, null) : vue.createVNode(VDefaultsProvider, {
10946
+ "key": "prepend-defaults",
10947
+ "disabled": !props.icon,
10865
10948
  "defaults": {
10866
10949
  VIcon: {
10867
10950
  icon: props.icon,
10868
10951
  start: true
10869
10952
  }
10870
10953
  }
10871
- }, {
10872
- default: () => [vue.createVNode("div", {
10873
- "class": "v-breadcrumbs__prepend"
10874
- }, [slots.prepend ? slots.prepend() : props.icon && vue.createVNode(VIcon, null, null)])]
10875
- }), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10954
+ }, slots.prepend)]), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10876
10955
  "key": index,
10877
10956
  "disabled": index >= array.length - 1
10878
10957
  }, typeof item === 'string' ? {
@@ -10936,30 +11015,33 @@
10936
11015
  slots
10937
11016
  } = _ref;
10938
11017
  useRender(() => {
10939
- const hasPrepend = !!(props.prependAvatar || props.prependIcon || slots.prepend);
10940
- const hasAppend = !!(props.appendAvatar || props.appendIcon || slots.append);
11018
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
11019
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
11020
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
11021
+ const hasAppend = !!(hasAppendMedia || slots.append);
10941
11022
  const hasTitle = !!(props.title || slots.title);
10942
11023
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
10943
11024
  return vue.createVNode("div", {
10944
11025
  "class": "v-card-item"
10945
- }, [hasPrepend && vue.createVNode(VDefaultsProvider, {
11026
+ }, [hasPrepend && vue.createVNode("div", {
10946
11027
  "key": "prepend",
11028
+ "class": "v-card-item__prepend"
11029
+ }, [!slots.prepend ? hasPrependMedia && vue.createVNode(VAvatar, {
11030
+ "key": "prepend-avatar",
11031
+ "density": props.density,
11032
+ "icon": props.prependIcon,
11033
+ "image": props.prependAvatar
11034
+ }, null) : vue.createVNode(VDefaultsProvider, {
11035
+ "key": "prepend-defaults",
11036
+ "disabled": !hasPrependMedia,
10947
11037
  "defaults": {
10948
11038
  VAvatar: {
10949
11039
  density: props.density,
10950
11040
  icon: props.prependIcon,
10951
11041
  image: props.prependAvatar
10952
- },
10953
- VIcon: {
10954
- density: props.density,
10955
- icon: props.prependIcon
10956
11042
  }
10957
11043
  }
10958
- }, {
10959
- default: () => [vue.createVNode("div", {
10960
- "class": "v-card-item__prepend"
10961
- }, [slots.prepend?.() ?? vue.createVNode(VAvatar, null, null)])]
10962
- }), vue.createVNode("div", {
11044
+ }, slots.prepend)]), vue.createVNode("div", {
10963
11045
  "class": "v-card-item__content"
10964
11046
  }, [hasTitle && vue.createVNode(VCardTitle, {
10965
11047
  "key": "title"
@@ -10969,24 +11051,25 @@
10969
11051
  "key": "subtitle"
10970
11052
  }, {
10971
11053
  default: () => [slots.subtitle?.() ?? props.subtitle]
10972
- }), slots.default?.()]), hasAppend && vue.createVNode(VDefaultsProvider, {
11054
+ }), slots.default?.()]), hasAppend && vue.createVNode("div", {
10973
11055
  "key": "append",
11056
+ "class": "v-card-item__append"
11057
+ }, [!slots.append ? hasAppendMedia && vue.createVNode(VAvatar, {
11058
+ "key": "append-avatar",
11059
+ "density": props.density,
11060
+ "icon": props.appendIcon,
11061
+ "image": props.appendAvatar
11062
+ }, null) : vue.createVNode(VDefaultsProvider, {
11063
+ "key": "append-defaults",
11064
+ "disabled": !hasAppendMedia,
10974
11065
  "defaults": {
10975
11066
  VAvatar: {
10976
11067
  density: props.density,
10977
11068
  icon: props.appendIcon,
10978
11069
  image: props.appendAvatar
10979
- },
10980
- VIcon: {
10981
- density: props.density,
10982
- icon: props.appendIcon
10983
11070
  }
10984
11071
  }
10985
- }, {
10986
- default: () => [vue.createVNode("div", {
10987
- "class": "v-card-item__append"
10988
- }, [slots.append?.() ?? vue.createVNode(VAvatar, null, null)])]
10989
- })]);
11072
+ }, slots.append)])]);
10990
11073
  });
10991
11074
  return {};
10992
11075
  }
@@ -11098,19 +11181,23 @@
11098
11181
  "onClick": isClickable.value && link.navigate,
11099
11182
  "tabindex": props.disabled ? -1 : undefined
11100
11183
  }, {
11101
- default: () => [hasImage && vue.createVNode(VDefaultsProvider, {
11184
+ default: () => [hasImage && vue.createVNode("div", {
11102
11185
  "key": "image",
11186
+ "class": "v-card__image"
11187
+ }, [!slots.image ? vue.createVNode(VImg, {
11188
+ "key": "image-img",
11189
+ "cover": true,
11190
+ "src": props.image
11191
+ }, null) : vue.createVNode(VDefaultsProvider, {
11192
+ "key": "image-defaults",
11193
+ "disabled": !props.image,
11103
11194
  "defaults": {
11104
11195
  VImg: {
11105
11196
  cover: true,
11106
11197
  src: props.image
11107
11198
  }
11108
11199
  }
11109
- }, {
11110
- default: () => [vue.createVNode("div", {
11111
- "class": "v-card__image"
11112
- }, [slots.image?.() ?? vue.createVNode(VImg, null, null)])]
11113
- }), vue.createVNode(LoaderSlot, {
11200
+ }, slots.image)]), vue.createVNode(LoaderSlot, {
11114
11201
  "name": "v-card",
11115
11202
  "active": !!props.loading,
11116
11203
  "color": typeof props.loading === 'boolean' ? undefined : props.loading
@@ -12212,10 +12299,7 @@
12212
12299
  const min = vue.computed(() => parseFloat(props.min));
12213
12300
  const max = vue.computed(() => parseFloat(props.max));
12214
12301
  const step = vue.computed(() => props.step > 0 ? parseFloat(props.step) : 0);
12215
- const decimals = vue.computed(() => {
12216
- const trimmedStep = step.value.toString().trim();
12217
- return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
12218
- });
12302
+ const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12219
12303
  const thumbSize = vue.computed(() => parseInt(props.thumbSize, 10));
12220
12304
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
12221
12305
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
@@ -12314,7 +12398,9 @@
12314
12398
  const percentage = (val - min.value) / (max.value - min.value) * 100;
12315
12399
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
12316
12400
  };
12401
+ const showTicks = vue.toRef(props, 'showTicks');
12317
12402
  const parsedTicks = vue.computed(() => {
12403
+ if (!showTicks.value) return [];
12318
12404
  if (!props.ticks) {
12319
12405
  return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {
12320
12406
  const value = min.value + t * step.value;
@@ -12363,7 +12449,7 @@
12363
12449
  readonly: vue.toRef(props, 'readonly'),
12364
12450
  rounded: vue.toRef(props, 'rounded'),
12365
12451
  roundValue,
12366
- showTicks: vue.toRef(props, 'showTicks'),
12452
+ showTicks,
12367
12453
  startOffset,
12368
12454
  step,
12369
12455
  thumbSize,
@@ -12585,6 +12671,7 @@
12585
12671
  };
12586
12672
  });
12587
12673
  const computedTicks = vue.computed(() => {
12674
+ if (!showTicks.value) return [];
12588
12675
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
12589
12676
  return ticks.map((tick, index) => {
12590
12677
  const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
@@ -13190,8 +13277,6 @@
13190
13277
  }
13191
13278
  });
13192
13279
 
13193
- // Types
13194
-
13195
13280
  const makeVSheetProps = propsFactory({
13196
13281
  color: String,
13197
13282
  ...makeBorderProps(),
@@ -13616,7 +13701,7 @@
13616
13701
  useRender(() => {
13617
13702
  const hasChips = !!(props.chips || slots.chip);
13618
13703
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
13619
- const [textFieldProps] = filterVTextFieldProps(props);
13704
+ const [textFieldProps] = VTextField.filterProps(props);
13620
13705
  return vue.createVNode(VTextField, vue.mergeProps({
13621
13706
  "ref": vTextFieldRef
13622
13707
  }, textFieldProps, {
@@ -13704,7 +13789,13 @@
13704
13789
  "key": item.value,
13705
13790
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
13706
13791
  "style": index === selectionIndex.value ? textColorStyles.value : {}
13707
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
13792
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
13793
+ "key": "chip",
13794
+ "closable": props.closableChips,
13795
+ "size": "small",
13796
+ "text": item.title
13797
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
13798
+ "key": "chip-defaults",
13708
13799
  "defaults": {
13709
13800
  VChip: {
13710
13801
  closable: props.closableChips,
@@ -13713,15 +13804,15 @@
13713
13804
  }
13714
13805
  }
13715
13806
  }, {
13716
- default: () => [slots.chip ? slots.chip({
13807
+ default: () => [slots.chip?.({
13717
13808
  item,
13718
13809
  index,
13719
13810
  props: slotProps
13720
- }) : vue.createVNode(VChip, slotProps, null)]
13721
- }) : slots.selection ? slots.selection({
13811
+ })]
13812
+ }) : slots.selection?.({
13722
13813
  item,
13723
13814
  index
13724
- }) : vue.createVNode("span", {
13815
+ }) ?? vue.createVNode("span", {
13725
13816
  "class": "v-combobox__selection-text"
13726
13817
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
13727
13818
  "class": "v-combobox__selection-comma"
@@ -13818,7 +13909,7 @@
13818
13909
  'aria-expanded': String(isActive.value)
13819
13910
  }, props.activatorProps));
13820
13911
  useRender(() => {
13821
- const [overlayProps] = filterVOverlayProps(props);
13912
+ const [overlayProps] = VOverlay.filterProps(props);
13822
13913
  return vue.createVNode(VOverlay, vue.mergeProps({
13823
13914
  "ref": overlay,
13824
13915
  "class": ['v-dialog', {
@@ -14422,10 +14513,8 @@
14422
14513
 
14423
14514
  // Types
14424
14515
 
14425
- const breakpoints$1 = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14426
-
14427
14516
  const breakpointProps = (() => {
14428
- return breakpoints$1.reduce((props, val) => {
14517
+ return breakpoints.reduce((props, val) => {
14429
14518
  props[val] = {
14430
14519
  type: [Boolean, String, Number],
14431
14520
  default: false
@@ -14434,8 +14523,9 @@
14434
14523
  }, {});
14435
14524
  })();
14436
14525
  const offsetProps = (() => {
14437
- return breakpoints$1.reduce((props, val) => {
14438
- props['offset' + vue.capitalize(val)] = {
14526
+ return breakpoints.reduce((props, val) => {
14527
+ const offsetKey = 'offset' + vue.capitalize(val);
14528
+ props[offsetKey] = {
14439
14529
  type: [String, Number],
14440
14530
  default: null
14441
14531
  };
@@ -14443,8 +14533,9 @@
14443
14533
  }, {});
14444
14534
  })();
14445
14535
  const orderProps = (() => {
14446
- return breakpoints$1.reduce((props, val) => {
14447
- props['order' + vue.capitalize(val)] = {
14536
+ return breakpoints.reduce((props, val) => {
14537
+ const orderKey = 'order' + vue.capitalize(val);
14538
+ props[orderKey] = {
14448
14539
  type: [String, Number],
14449
14540
  default: null
14450
14541
  };
@@ -14542,13 +14633,12 @@
14542
14633
 
14543
14634
  // Types
14544
14635
 
14545
- const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14546
-
14547
14636
  const ALIGNMENT = ['start', 'end', 'center'];
14548
14637
  const SPACE = ['space-between', 'space-around', 'space-evenly'];
14549
14638
  function makeRowProps(prefix, def) {
14550
14639
  return breakpoints.reduce((props, val) => {
14551
- props[prefix + vue.capitalize(val)] = def();
14640
+ const prefixKey = prefix + vue.capitalize(val);
14641
+ props[prefixKey] = def();
14552
14642
  return props;
14553
14643
  }, {});
14554
14644
  }
@@ -14878,7 +14968,10 @@
14878
14968
  }, {
14879
14969
  default: () => [slots.default?.()]
14880
14970
  })]
14881
- }), [[vue.resolveDirective("intersect"), onIntersect, props.options]]));
14971
+ }), [[vue.resolveDirective("intersect"), {
14972
+ handler: onIntersect,
14973
+ options: props.options
14974
+ }, null]]));
14882
14975
  return {};
14883
14976
  }
14884
14977
  });
@@ -15855,9 +15948,9 @@
15855
15948
  frame = requestAnimationFrame(() => {
15856
15949
  const el = (root.value?.$el).querySelector('.v-img__img');
15857
15950
  if (!el) return;
15858
- const scrollHeight = scrollParent.clientHeight ?? document.documentElement.clientHeight;
15859
- const scrollPos = scrollParent.scrollTop ?? window.scrollY;
15860
- const top = intersectionRef.value.offsetTop;
15951
+ const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;
15952
+ const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;
15953
+ const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;
15861
15954
  const height = contentRect.value.height;
15862
15955
  const center = top + (height - scrollHeight) / 2;
15863
15956
  const translate = floor((scrollPos - center) * scale.value);
@@ -15939,10 +16032,7 @@
15939
16032
  useRender(() => {
15940
16033
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
15941
16034
  const [inputProps, _1] = filterInputProps(props);
15942
- const [controlProps, _2] = filterControlProps({
15943
- ...props,
15944
- multiple: false
15945
- });
16035
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
15946
16036
  const label = slots.label ? slots.label({
15947
16037
  label: props.label,
15948
16038
  props: {
@@ -15977,7 +16067,8 @@
15977
16067
  "type": props.type,
15978
16068
  "disabled": isDisabled.value,
15979
16069
  "readonly": isReadonly.value,
15980
- "aria-labelledby": label ? id.value : undefined
16070
+ "aria-labelledby": label ? id.value : undefined,
16071
+ "multiple": false
15981
16072
  }, controlAttrs, {
15982
16073
  "modelValue": model.value,
15983
16074
  "onUpdate:modelValue": $event => model.value = $event
@@ -16818,7 +16909,7 @@
16818
16909
  window.clearTimeout(activeTimeout);
16819
16910
  }
16820
16911
  useRender(() => {
16821
- const [overlayProps] = filterVOverlayProps(props);
16912
+ const [overlayProps] = VOverlay.filterProps(props);
16822
16913
  return vue.createVNode(VOverlay, vue.mergeProps({
16823
16914
  "ref": overlay,
16824
16915
  "class": ['v-snackbar', {
@@ -16838,7 +16929,8 @@
16838
16929
  "persistent": true,
16839
16930
  "noClickAnimation": true,
16840
16931
  "scrim": false,
16841
- "scrollStrategy": "none"
16932
+ "scrollStrategy": "none",
16933
+ "_disableGlobalStack": true
16842
16934
  }, scopeId), {
16843
16935
  default: () => [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
16844
16936
  "class": "v-snackbar__content",
@@ -16912,7 +17004,7 @@
16912
17004
  useRender(() => {
16913
17005
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
16914
17006
  const [inputProps, _1] = filterInputProps(props);
16915
- const [controlProps, _2] = filterControlProps(props);
17007
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
16916
17008
  const control = vue.ref();
16917
17009
  function onClick() {
16918
17010
  control.value?.input?.click();
@@ -17045,28 +17137,17 @@
17045
17137
  name: 'VTab',
17046
17138
  props: {
17047
17139
  fixed: Boolean,
17048
- icon: [Boolean, String, Function, Object],
17049
- prependIcon: IconValue,
17050
- appendIcon: IconValue,
17051
- stacked: Boolean,
17052
17140
  title: String,
17053
- ripple: {
17054
- type: Boolean,
17055
- default: true
17056
- },
17057
- color: String,
17058
17141
  sliderColor: String,
17059
17142
  hideSlider: Boolean,
17060
17143
  direction: {
17061
17144
  type: String,
17062
17145
  default: 'horizontal'
17063
17146
  },
17064
- ...makeTagProps(),
17065
- ...makeRouterProps(),
17066
- ...makeGroupItemProps({
17067
- selectedClass: 'v-tab--selected'
17068
- }),
17069
- ...makeThemeProps()
17147
+ ...omit(makeVBtnProps({
17148
+ selectedClass: 'v-tab--selected',
17149
+ variant: 'text'
17150
+ }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])
17070
17151
  },
17071
17152
  setup(props, _ref) {
17072
17153
  let {
@@ -17116,7 +17197,7 @@
17116
17197
  }
17117
17198
  }
17118
17199
  useRender(() => {
17119
- const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled', 'selectedClass', 'value', 'color']);
17200
+ const [btnProps] = VBtn.filterProps(props);
17120
17201
  return vue.createVNode(VBtn, vue.mergeProps({
17121
17202
  "_as": "VTab",
17122
17203
  "symbol": VTabsSymbol,
@@ -17128,7 +17209,6 @@
17128
17209
  "active": false,
17129
17210
  "block": props.fixed,
17130
17211
  "maxWidth": props.fixed ? 300 : undefined,
17131
- "variant": "text",
17132
17212
  "rounded": 0
17133
17213
  }, btnProps, attrs, {
17134
17214
  "onGroup:selected": updateSlider
@@ -17373,7 +17453,13 @@
17373
17453
  });
17374
17454
  }
17375
17455
  function onInput(e) {
17376
- model.value = e.target.value;
17456
+ const el = e.target;
17457
+ const caretPosition = [el.selectionStart, el.selectionEnd];
17458
+ model.value = el.value;
17459
+ vue.nextTick(() => {
17460
+ el.selectionStart = caretPosition[0];
17461
+ el.selectionEnd = caretPosition[1];
17462
+ });
17377
17463
  }
17378
17464
  const sizerRef = vue.ref();
17379
17465
  function calculateInputHeight() {
@@ -17660,13 +17746,6 @@
17660
17746
  backgroundColorClasses: lineColorClasses,
17661
17747
  backgroundColorStyles: lineColorStyles
17662
17748
  } = useBackgroundColor(vue.toRef(props, 'lineColor'));
17663
- provideDefaults({
17664
- VIcon: {
17665
- color: vue.toRef(props, 'iconColor'),
17666
- icon: vue.toRef(props, 'icon'),
17667
- size: vue.toRef(props, 'size')
17668
- }
17669
- });
17670
17749
  useRender(() => vue.createVNode("div", {
17671
17750
  "class": ['v-timeline-divider', {
17672
17751
  'v-timeline-divider--fill-dot': props.fillDot
@@ -17681,7 +17760,22 @@
17681
17760
  }, [vue.createVNode("div", {
17682
17761
  "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
17683
17762
  "style": backgroundColorStyles.value
17684
- }, [slots.default?.() ?? (props.icon ? vue.createVNode(VIcon, null, null) : undefined)])]), vue.createVNode("div", {
17763
+ }, [!slots.default ? vue.createVNode(VIcon, {
17764
+ "key": "icon",
17765
+ "color": props.iconColor,
17766
+ "icon": props.icon,
17767
+ "size": props.size
17768
+ }, null) : vue.createVNode(VDefaultsProvider, {
17769
+ "key": "icon-defaults",
17770
+ "disabled": !props.icon,
17771
+ "defaults": {
17772
+ VIcon: {
17773
+ color: props.iconColor,
17774
+ icon: props.icon,
17775
+ size: props.size
17776
+ }
17777
+ }
17778
+ }, slots.default)])]), vue.createVNode("div", {
17685
17779
  "class": ['v-timeline-divider__after', lineColorClasses.value],
17686
17780
  "style": lineColorStyles.value
17687
17781
  }, null)]));
@@ -17806,7 +17900,7 @@
17806
17900
  'aria-describedby': id.value
17807
17901
  }, props.activatorProps));
17808
17902
  useRender(() => {
17809
- const [overlayProps] = filterVOverlayProps(props);
17903
+ const [overlayProps] = VOverlay.filterProps(props);
17810
17904
  return vue.createVNode(VOverlay, vue.mergeProps({
17811
17905
  "ref": overlay,
17812
17906
  "class": ['v-tooltip'],
@@ -18052,7 +18146,7 @@
18052
18146
  }
18053
18147
  }, 'v-data-table-select');
18054
18148
  const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
18055
- function createSelection(props, allItems) {
18149
+ function provideSelection(props, allItems) {
18056
18150
  const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {
18057
18151
  return new Set(v);
18058
18152
  }, v => {
@@ -18112,13 +18206,28 @@
18112
18206
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
18113
18207
  function createSort(props) {
18114
18208
  const sortBy = useProxiedModel(props, 'sortBy');
18209
+ const mustSort = vue.toRef(props, 'mustSort');
18210
+ const multiSort = vue.toRef(props, 'multiSort');
18211
+ return {
18212
+ sortBy,
18213
+ mustSort,
18214
+ multiSort
18215
+ };
18216
+ }
18217
+ function provideSort(options) {
18218
+ const {
18219
+ sortBy,
18220
+ mustSort,
18221
+ multiSort,
18222
+ page
18223
+ } = options;
18115
18224
  const toggleSort = key => {
18116
18225
  let newSortBy = sortBy.value.map(x => ({
18117
18226
  ...x
18118
18227
  })) ?? [];
18119
18228
  const item = newSortBy.find(x => x.key === key);
18120
18229
  if (!item) {
18121
- if (props.multiSort) newSortBy = [...newSortBy, {
18230
+ if (multiSort.value) newSortBy = [...newSortBy, {
18122
18231
  key,
18123
18232
  order: 'asc'
18124
18233
  }];else newSortBy = [{
@@ -18126,7 +18235,7 @@
18126
18235
  order: 'asc'
18127
18236
  }];
18128
18237
  } else if (item.order === 'desc') {
18129
- if (props.mustSort) {
18238
+ if (mustSort.value) {
18130
18239
  item.order = 'asc';
18131
18240
  } else {
18132
18241
  newSortBy = newSortBy.filter(x => x.key !== key);
@@ -18135,6 +18244,7 @@
18135
18244
  item.order = 'desc';
18136
18245
  }
18137
18246
  sortBy.value = newSortBy;
18247
+ if (page) page.value = 1;
18138
18248
  };
18139
18249
  const data = {
18140
18250
  sortBy,
@@ -18337,9 +18447,6 @@
18337
18447
  });
18338
18448
 
18339
18449
  // Utilities
18340
-
18341
- // Types
18342
-
18343
18450
  const makeDataTableGroupProps = propsFactory({
18344
18451
  groupBy: {
18345
18452
  type: Array,
@@ -18347,7 +18454,17 @@
18347
18454
  }
18348
18455
  }, 'data-table-group');
18349
18456
  const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
18350
- function createGroupBy(props, groupBy, sortBy) {
18457
+ function createGroupBy(props) {
18458
+ const groupBy = useProxiedModel(props, 'groupBy');
18459
+ return {
18460
+ groupBy
18461
+ };
18462
+ }
18463
+ function provideGroupBy(options) {
18464
+ const {
18465
+ groupBy,
18466
+ sortBy
18467
+ } = options;
18351
18468
  const opened = vue.ref(new Set());
18352
18469
  const sortByWithGroups = vue.computed(() => {
18353
18470
  return groupBy.value.map(val => ({
@@ -18557,7 +18674,7 @@
18557
18674
  }
18558
18675
  }, 'v-data-table-expand');
18559
18676
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18560
- function createExpanded(props) {
18677
+ function provideExpanded(props) {
18561
18678
  const expandOnClick = vue.toRef(props, 'expandOnClick');
18562
18679
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18563
18680
  return new Set(v);
@@ -18600,7 +18717,9 @@
18600
18717
  const VDataTableRow = defineComponent({
18601
18718
  name: 'VDataTableRow',
18602
18719
  props: {
18603
- item: Object
18720
+ index: Number,
18721
+ item: Object,
18722
+ onClick: Function
18604
18723
  },
18605
18724
  setup(props, _ref) {
18606
18725
  let {
@@ -18618,7 +18737,10 @@
18618
18737
  columns
18619
18738
  } = useHeaders();
18620
18739
  useRender(() => vue.createVNode("tr", {
18621
- "class": ['v-data-table__tr']
18740
+ "class": ['v-data-table__tr', {
18741
+ 'v-data-table__tr--clickable': !!props.onClick
18742
+ }],
18743
+ "onClick": props.onClick
18622
18744
  }, [!columns.value.length && vue.createVNode(VDataTableColumn, {
18623
18745
  "key": "no-data"
18624
18746
  }, slots), props.item && columns.value.map((column, i) => vue.createVNode(VDataTableColumn, {
@@ -18633,6 +18755,7 @@
18633
18755
  const item = props.item;
18634
18756
  const slotName = `item.${column.key}`;
18635
18757
  const slotProps = {
18758
+ index: props.index,
18636
18759
  item: props.item,
18637
18760
  columns: columns.value,
18638
18761
  isSelected,
@@ -18749,12 +18872,13 @@
18749
18872
  "key": `item_${item.value}`,
18750
18873
  "onClick": event => {
18751
18874
  if (expandOnClick.value) {
18752
- toggleExpand(item.value);
18875
+ toggleExpand(item);
18753
18876
  }
18754
18877
  emit('click:row', event, {
18755
18878
  item
18756
18879
  });
18757
18880
  },
18881
+ "index": index,
18758
18882
  "item": item
18759
18883
  }, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
18760
18884
  })]));
@@ -18777,10 +18901,20 @@
18777
18901
  }
18778
18902
  }, 'v-data-table-paginate');
18779
18903
  const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
18780
- function createPagination(props, items) {
18904
+ function createPagination(props) {
18781
18905
  const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
18782
18906
  const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
18783
- const itemsLength = vue.computed(() => +(props.itemsLength ?? items.value.length));
18907
+ return {
18908
+ page,
18909
+ itemsPerPage
18910
+ };
18911
+ }
18912
+ function providePagination(options) {
18913
+ const {
18914
+ page,
18915
+ itemsPerPage,
18916
+ itemsLength
18917
+ } = options;
18784
18918
  const startIndex = vue.computed(() => {
18785
18919
  if (itemsPerPage.value === -1) return 0;
18786
18920
  return itemsPerPage.value * (page.value - 1);
@@ -18793,13 +18927,18 @@
18793
18927
  if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
18794
18928
  return Math.ceil(itemsLength.value / itemsPerPage.value);
18795
18929
  });
18930
+ function setItemsPerPage(value) {
18931
+ itemsPerPage.value = value;
18932
+ page.value = 1;
18933
+ }
18796
18934
  const data = {
18797
18935
  page,
18798
18936
  itemsPerPage,
18937
+ itemsLength,
18799
18938
  startIndex,
18800
18939
  stopIndex,
18801
18940
  pageCount,
18802
- itemsLength
18941
+ setItemsPerPage
18803
18942
  };
18804
18943
  vue.provide(VDataTablePaginationSymbol, data);
18805
18944
  return data;
@@ -18809,7 +18948,13 @@
18809
18948
  if (!data) throw new Error('Missing pagination!');
18810
18949
  return data;
18811
18950
  }
18812
- function usePaginatedItems(items, startIndex, stopIndex, itemsPerPage) {
18951
+ function usePaginatedItems(options) {
18952
+ const {
18953
+ items,
18954
+ startIndex,
18955
+ stopIndex,
18956
+ itemsPerPage
18957
+ } = options;
18813
18958
  const paginatedItems = vue.computed(() => {
18814
18959
  if (itemsPerPage.value <= 0) return items.value;
18815
18960
  return items.value.slice(startIndex.value, stopIndex.value);
@@ -18898,7 +19043,8 @@
18898
19043
  startIndex,
18899
19044
  stopIndex,
18900
19045
  itemsLength,
18901
- itemsPerPage
19046
+ itemsPerPage,
19047
+ setItemsPerPage
18902
19048
  } = usePagination();
18903
19049
  const itemsPerPageOptions = vue.computed(() => props.itemsPerPageOptions.map(option => ({
18904
19050
  ...option,
@@ -18911,7 +19057,7 @@
18911
19057
  }, [vue.createVNode("span", null, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
18912
19058
  "items": itemsPerPageOptions.value,
18913
19059
  "modelValue": itemsPerPage.value,
18914
- "onUpdate:modelValue": v => itemsPerPage.value = Number(v),
19060
+ "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
18915
19061
  "density": "compact",
18916
19062
  "variant": "outlined",
18917
19063
  "hide-details": true
@@ -19000,22 +19146,10 @@
19000
19146
  groupBy: groupBy.value
19001
19147
  }));
19002
19148
 
19003
- // Reset page when sorting changes
19004
- vue.watch(sortBy, () => {
19005
- page.value = 1;
19006
- }, {
19007
- deep: true
19008
- });
19009
-
19010
19149
  // Reset page when searching
19011
19150
  vue.watch(() => search?.value, () => {
19012
19151
  page.value = 1;
19013
19152
  });
19014
-
19015
- // Reset page when items-per-page changes
19016
- vue.watch(itemsPerPage, () => {
19017
- page.value = 1;
19018
- });
19019
19153
  let oldOptions = null;
19020
19154
  vue.watch(options, () => {
19021
19155
  if (deepEqual(oldOptions, options.value)) return;
@@ -19069,7 +19203,18 @@
19069
19203
  emit,
19070
19204
  slots
19071
19205
  } = _ref;
19072
- const groupBy = useProxiedModel(props, 'groupBy');
19206
+ const {
19207
+ groupBy
19208
+ } = createGroupBy(props);
19209
+ const {
19210
+ sortBy,
19211
+ multiSort,
19212
+ mustSort
19213
+ } = createSort(props);
19214
+ const {
19215
+ page,
19216
+ itemsPerPage
19217
+ } = createPagination(props);
19073
19218
  const {
19074
19219
  columns
19075
19220
  } = createHeaders(props, {
@@ -19087,32 +19232,46 @@
19087
19232
  } = useFilter(props, items, search, {
19088
19233
  filterKeys
19089
19234
  });
19090
- const {
19091
- sortBy
19092
- } = createSort(props);
19235
+ provideSort({
19236
+ sortBy,
19237
+ multiSort,
19238
+ mustSort,
19239
+ page
19240
+ });
19093
19241
  const {
19094
19242
  sortByWithGroups,
19095
19243
  opened,
19096
19244
  extractRows
19097
- } = createGroupBy(props, groupBy, sortBy);
19245
+ } = provideGroupBy({
19246
+ groupBy,
19247
+ sortBy
19248
+ });
19098
19249
  const {
19099
19250
  sortedItems
19100
19251
  } = useSortedItems(filteredItems, sortByWithGroups, columns);
19101
19252
  const {
19102
19253
  flatItems
19103
19254
  } = useGroupedItems(sortedItems, groupBy, opened);
19255
+ const itemsLength = vue.computed(() => flatItems.value.length);
19104
19256
  const {
19105
- page,
19106
- itemsPerPage,
19107
19257
  startIndex,
19108
19258
  stopIndex
19109
- } = createPagination(props, flatItems);
19259
+ } = providePagination({
19260
+ page,
19261
+ itemsPerPage,
19262
+ itemsLength
19263
+ });
19110
19264
  const {
19111
19265
  paginatedItems
19112
- } = usePaginatedItems(flatItems, startIndex, stopIndex, itemsPerPage);
19266
+ } = usePaginatedItems({
19267
+ items: flatItems,
19268
+ startIndex,
19269
+ stopIndex,
19270
+ itemsPerPage
19271
+ });
19113
19272
  const paginatedItemsWithoutGroups = vue.computed(() => extractRows(paginatedItems.value));
19114
- createSelection(props, paginatedItemsWithoutGroups);
19115
- createExpanded(props);
19273
+ provideSelection(props, paginatedItemsWithoutGroups);
19274
+ provideExpanded(props);
19116
19275
  useOptions({
19117
19276
  page,
19118
19277
  itemsPerPage,
@@ -19260,7 +19419,14 @@
19260
19419
  emit,
19261
19420
  slots
19262
19421
  } = _ref;
19263
- const groupBy = useProxiedModel(props, 'groupBy');
19422
+ const {
19423
+ groupBy
19424
+ } = createGroupBy(props);
19425
+ const {
19426
+ sortBy,
19427
+ multiSort,
19428
+ mustSort
19429
+ } = createSort(props);
19264
19430
  const {
19265
19431
  columns
19266
19432
  } = createHeaders(props, {
@@ -19278,14 +19444,19 @@
19278
19444
  } = useFilter(props, items, search, {
19279
19445
  filterKeys
19280
19446
  });
19281
- const {
19282
- sortBy
19283
- } = createSort(props);
19447
+ provideSort({
19448
+ sortBy,
19449
+ multiSort,
19450
+ mustSort
19451
+ });
19284
19452
  const {
19285
19453
  sortByWithGroups,
19286
19454
  opened,
19287
19455
  extractRows
19288
- } = createGroupBy(props, groupBy, sortBy);
19456
+ } = provideGroupBy({
19457
+ groupBy,
19458
+ sortBy
19459
+ });
19289
19460
  const {
19290
19461
  sortedItems
19291
19462
  } = useSortedItems(filteredItems, sortByWithGroups, columns);
@@ -19293,8 +19464,8 @@
19293
19464
  flatItems
19294
19465
  } = useGroupedItems(sortedItems, groupBy, opened);
19295
19466
  const allRows = vue.computed(() => extractRows(flatItems.value));
19296
- createSelection(props, allRows);
19297
- createExpanded(props);
19467
+ provideSelection(props, allRows);
19468
+ provideExpanded(props);
19298
19469
  const {
19299
19470
  containerRef,
19300
19471
  paddingTop,
@@ -19381,7 +19552,10 @@
19381
19552
  type: String,
19382
19553
  default: '$vuetify.dataIterator.loadingText'
19383
19554
  },
19384
- itemsLength: [Number, String],
19555
+ itemsLength: {
19556
+ type: [Number, String],
19557
+ required: true
19558
+ },
19385
19559
  ...makeVDataTableProps(),
19386
19560
  ...makeDataTableExpandProps(),
19387
19561
  ...makeDataTableHeaderProps(),
@@ -19406,8 +19580,20 @@
19406
19580
  emit,
19407
19581
  slots
19408
19582
  } = _ref;
19409
- const groupBy = useProxiedModel(props, 'groupBy');
19410
- createExpanded(props);
19583
+ const {
19584
+ groupBy
19585
+ } = createGroupBy(props);
19586
+ const {
19587
+ sortBy,
19588
+ multiSort,
19589
+ mustSort
19590
+ } = createSort(props);
19591
+ const {
19592
+ page,
19593
+ itemsPerPage
19594
+ } = createPagination(props);
19595
+ const itemsLength = vue.computed(() => parseInt(props.itemsLength, 10));
19596
+ provideExpanded(props);
19411
19597
  const {
19412
19598
  columns
19413
19599
  } = createHeaders(props, {
@@ -19419,20 +19605,28 @@
19419
19605
  items
19420
19606
  } = useDataTableItems(props, columns);
19421
19607
  const {
19422
- sortBy,
19423
19608
  toggleSort
19424
- } = createSort(props);
19609
+ } = provideSort({
19610
+ sortBy,
19611
+ multiSort,
19612
+ mustSort,
19613
+ page
19614
+ });
19425
19615
  const {
19426
19616
  opened
19427
- } = createGroupBy(props, groupBy, sortBy);
19428
- const {
19617
+ } = provideGroupBy({
19618
+ groupBy,
19619
+ sortBy
19620
+ });
19621
+ providePagination({
19429
19622
  page,
19430
- itemsPerPage
19431
- } = createPagination(props, items);
19623
+ itemsPerPage,
19624
+ itemsLength
19625
+ });
19432
19626
  const {
19433
19627
  flatItems
19434
19628
  } = useGroupedItems(items, groupBy, opened);
19435
- createSelection(props, items);
19629
+ provideSelection(props, items);
19436
19630
  useOptions({
19437
19631
  page,
19438
19632
  itemsPerPage,
@@ -20003,7 +20197,7 @@
20003
20197
  locale
20004
20198
  };
20005
20199
  }
20006
- const version$1 = "3.2.0-dev-20230309.0";
20200
+ const version$1 = "3.2.0-dev-20230322.0";
20007
20201
  createVuetify$1.version = version$1;
20008
20202
 
20009
20203
  // Vue's inject() can only be used in setup
@@ -20015,7 +20209,7 @@
20015
20209
  }
20016
20210
  }
20017
20211
 
20018
- const version = "3.2.0-dev-20230309.0";
20212
+ const version = "3.2.0-dev-20230322.0";
20019
20213
 
20020
20214
  const createVuetify = function () {
20021
20215
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};