@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
package/dist/vuetify.js CHANGED
@@ -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;
@@ -2153,6 +2174,7 @@
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 @@
2163
2185
  } = _ref;
2164
2186
  const {
2165
2187
  defaults,
2188
+ disabled,
2166
2189
  reset,
2167
2190
  root,
2168
2191
  scoped
@@ -2170,7 +2193,8 @@
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 @@
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 @@
2814
2838
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.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 @@
3156
3180
  default: () => [hasImage && vue.createVNode("div", {
3157
3181
  "key": "image",
3158
3182
  "class": "v-toolbar__image"
3159
- }, [vue.createVNode(VDefaultsProvider, {
3183
+ }, [!slots.image ? vue.createVNode(VImg, {
3184
+ "key": "image-img",
3185
+ "cover": true,
3186
+ "src": props.image
3187
+ }, null) : vue.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?.() : vue.createVNode(VImg, null, null)]
3168
- })]), vue.createVNode(VDefaultsProvider, {
3196
+ }, slots.image)]), vue.createVNode(VDefaultsProvider, {
3169
3197
  "defaults": {
3170
3198
  VTabs: {
3171
3199
  height: convertToUnit(contentHeight.value)
@@ -3211,9 +3239,6 @@
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 @@
3291
3316
  absolute: vue.toRef(props, 'absolute')
3292
3317
  });
3293
3318
  useRender(() => {
3294
- const [toolbarProps] = filterToolbarProps(props);
3319
+ const [toolbarProps] = VToolbar.filterProps(props);
3295
3320
  return vue.createVNode(VToolbar, vue.mergeProps({
3296
3321
  "ref": vToolbarRef,
3297
3322
  "class": ['v-app-bar', {
@@ -3382,8 +3407,6 @@
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 @@
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 @@
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 vue.createVNode(VBtnGroup, vue.mergeProps({
3668
3688
  "class": "v-btn-toggle"
3669
3689
  }, btnGroupProps), {
@@ -4751,49 +4771,50 @@
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 @@
4886
4907
  },
4887
4908
  "value": valueAttr.value
4888
4909
  }, {
4889
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode(VDefaultsProvider, {
4910
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
4890
4911
  "key": "prepend",
4912
+ "class": "v-btn__prepend"
4913
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
4914
+ "key": "prepend-icon",
4915
+ "icon": props.prependIcon
4916
+ }, null) : vue.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: () => [vue.createVNode("span", {
4898
- "class": "v-btn__prepend"
4899
- }, [slots.prepend?.() ?? vue.createVNode(VIcon, null, null)])]
4900
- }), vue.createVNode("span", {
4924
+ }, slots.prepend)]), vue.createVNode("span", {
4901
4925
  "class": "v-btn__content",
4902
4926
  "data-no-activator": ""
4903
- }, [vue.createVNode(VDefaultsProvider, {
4904
- "key": "content",
4927
+ }, [!slots.default && hasIcon ? vue.createVNode(VIcon, {
4928
+ "key": "content-icon",
4929
+ "icon": props.icon
4930
+ }, null) : vue.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 && vue.createVNode(VIcon, {
4912
- "key": "icon"
4913
- }, null))]
4914
- })]), !props.icon && hasAppend && vue.createVNode(VDefaultsProvider, {
4938
+ }, slots.default)]), !props.icon && hasAppend && vue.createVNode("span", {
4915
4939
  "key": "append",
4940
+ "class": "v-btn__append"
4941
+ }, [!slots.append ? vue.createVNode(VIcon, {
4942
+ "key": "append-icon",
4943
+ "icon": props.appendIcon
4944
+ }, null) : vue.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: () => [vue.createVNode("span", {
4923
- "class": "v-btn__append"
4924
- }, [slots.append?.() ?? vue.createVNode(VIcon, null, null)])]
4925
- }), !!props.loading && vue.createVNode("span", {
4952
+ }, slots.append)]), !!props.loading && vue.createVNode("span", {
4926
4953
  "key": "loader",
4927
4954
  "class": "v-btn__loader"
4928
4955
  }, [slots.loader?.() ?? vue.createVNode(VProgressCircular, {
@@ -5051,10 +5078,12 @@
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 @@
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 @@
5125
5155
  "key": "border",
5126
5156
  "class": ['v-alert__border', textColorClasses.value],
5127
5157
  "style": textColorStyles.value
5128
- }, null), hasPrepend && vue.createVNode(VDefaultsProvider, {
5158
+ }, null), hasPrepend && vue.createVNode("div", {
5129
5159
  "key": "prepend",
5160
+ "class": "v-alert__prepend"
5161
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
5162
+ "key": "prepend-icon",
5163
+ "density": props.density,
5164
+ "icon": icon.value,
5165
+ "size": props.prominent ? 44 : 28
5166
+ }, null) : vue.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 @@
5134
5173
  size: props.prominent ? 44 : 28
5135
5174
  }
5136
5175
  }
5137
- }, {
5138
- default: () => [vue.createVNode("div", {
5139
- "class": "v-alert__prepend"
5140
- }, [slots.prepend ? slots.prepend() : icon.value && vue.createVNode(VIcon, null, null)])]
5141
- }), vue.createVNode("div", {
5176
+ }, slots.prepend)]), vue.createVNode("div", {
5142
5177
  "class": "v-alert__content"
5143
5178
  }, [hasTitle && vue.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 && vue.createVNode("div", {
5181
+ default: () => [slots.title?.() ?? props.title]
5182
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5148
5183
  "key": "append",
5149
5184
  "class": "v-alert__append"
5150
- }, [slots.append()]), hasClose && vue.createVNode(VDefaultsProvider, {
5185
+ }, [slots.append()]), hasClose && vue.createVNode("div", {
5151
5186
  "key": "close",
5187
+ "class": "v-alert__close"
5188
+ }, [!slots.close ? vue.createVNode(VBtn, vue.mergeProps({
5189
+ "key": "close-btn",
5190
+ "icon": props.closeIcon,
5191
+ "size": "x-small",
5192
+ "variant": "text"
5193
+ }, closeProps.value), null) : vue.createVNode(VDefaultsProvider, {
5194
+ "key": "close-defaults",
5152
5195
  "defaults": {
5153
5196
  VBtn: {
5154
5197
  icon: props.closeIcon,
@@ -5157,12 +5200,10 @@
5157
5200
  }
5158
5201
  }
5159
5202
  }, {
5160
- default: () => [vue.createVNode("div", {
5161
- "class": "v-alert__close"
5162
- }, [slots.close?.({
5203
+ default: () => [slots.close?.({
5163
5204
  props: closeProps.value
5164
- }) ?? vue.createVNode(VBtn, closeProps.value, null)])]
5165
- })]
5205
+ })]
5206
+ })])]
5166
5207
  });
5167
5208
  };
5168
5209
  }
@@ -6125,7 +6166,13 @@
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
+ vue.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 @@
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 @@
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 @@
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 @@
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 vue.createVNode(VInput, vue.mergeProps({
6575
6611
  "class": "v-checkbox"
6576
6612
  }, inputAttrs, inputProps, {
@@ -6827,10 +6863,13 @@
6827
6863
  const link = useLink(props, attrs);
6828
6864
  const isLink = vue.computed(() => props.link !== false && link.isLink.value);
6829
6865
  const isClickable = vue.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 = vue.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 @@
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 && vue.withDirectives(vue.createVNode(Tag, {
6854
6895
  "class": ['v-chip', {
@@ -6866,77 +6907,94 @@
6866
6907
  "onClick": onClick,
6867
6908
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
6868
6909
  }, {
6869
- default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
6870
- "key": "filter",
6871
- "defaults": {
6872
- VIcon: {
6873
- icon: props.filterIcon
6874
- }
6875
- }
6910
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
6911
+ "key": "filter"
6876
6912
  }, {
6877
- default: () => [vue.createVNode(VExpandXTransition, null, {
6878
- default: () => [vue.withDirectives(vue.createVNode("div", {
6879
- "class": "v-chip__filter"
6880
- }, [slots.filter ? slots.filter() : vue.createVNode(VIcon, null, null)]), [[vue.vShow, group.isSelected.value]])]
6881
- })]
6882
- }), hasPrepend && vue.createVNode(VDefaultsProvider, {
6913
+ default: () => [vue.withDirectives(vue.createVNode("div", {
6914
+ "class": "v-chip__filter"
6915
+ }, [!slots.filter ? vue.createVNode(VIcon, {
6916
+ "key": "filter-icon",
6917
+ "icon": props.filterIcon
6918
+ }, null) : vue.withDirectives(vue.createVNode(VDefaultsProvider, {
6919
+ "key": "filter-defaults",
6920
+ "disabled": !props.filterIcon,
6921
+ "defaults": {
6922
+ VIcon: {
6923
+ icon: props.filterIcon
6924
+ }
6925
+ }
6926
+ }, null), [[vue.resolveDirective("slot"), slots.filter, "default"]])]), [[vue.vShow, group.isSelected.value]])]
6927
+ }), hasPrepend && vue.createVNode("div", {
6883
6928
  "key": "prepend",
6929
+ "class": "v-chip__prepend"
6930
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependIcon && vue.createVNode(VIcon, {
6931
+ "key": "prepend-icon",
6932
+ "icon": props.prependIcon,
6933
+ "start": true
6934
+ }, null), props.prependAvatar && vue.createVNode(VAvatar, {
6935
+ "key": "prepend-avatar",
6936
+ "image": props.prependAvatar,
6937
+ "start": true
6938
+ }, null)]) : vue.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 ? vue.createVNode("div", {
6894
- "class": "v-chip__prepend"
6895
- }, [slots.prepend()]) : props.prependAvatar ? vue.createVNode(VAvatar, {
6896
- "start": true
6897
- }, null) : props.prependIcon ? vue.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 && vue.createVNode(VDefaultsProvider, {
6958
+ }) ?? props.text, hasAppend && vue.createVNode("div", {
6908
6959
  "key": "append",
6960
+ "class": "v-chip__append"
6961
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
6962
+ "key": "append-icon",
6963
+ "end": true,
6964
+ "icon": props.appendIcon
6965
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
6966
+ "key": "append-avatar",
6967
+ "end": true,
6968
+ "image": props.appendAvatar
6969
+ }, null)]) : vue.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 ? vue.createVNode("div", {
6919
- "class": "v-chip__append"
6920
- }, [slots.append()]) : props.appendAvatar ? vue.createVNode(VAvatar, {
6921
- "end": true
6922
- }, null) : props.appendIcon ? vue.createVNode(VIcon, {
6923
- "end": true
6924
- }, null) : undefined]
6925
- }), hasClose && vue.createVNode(VDefaultsProvider, {
6982
+ }, slots.append)]), hasClose && vue.createVNode("div", vue.mergeProps({
6926
6983
  "key": "close",
6984
+ "class": "v-chip__close"
6985
+ }, closeProps.value), [!slots.close ? vue.createVNode(VIcon, {
6986
+ "key": "close-icon",
6987
+ "icon": props.closeIcon,
6988
+ "size": "x-small"
6989
+ }, null) : vue.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: () => [vue.createVNode("div", {
6935
- "class": "v-chip__close",
6936
- "aria-label": t(props.closeLabel),
6937
- "onClick": onCloseClick
6938
- }, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
6939
- })]
6997
+ }, slots.close)])]
6940
6998
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6941
6999
  };
6942
7000
  }
@@ -7452,8 +7510,6 @@
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 @@
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 @@
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 vue.withDirectives(vue.createVNode(Tag, {
7693
7748
  "class": ['v-list-item', {
@@ -7707,7 +7762,7 @@
7707
7762
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
7708
7763
  "key": "prepend",
7709
7764
  "class": "v-list-item__prepend"
7710
- }, [props.prependAvatar && vue.createVNode(VAvatar, {
7765
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
7711
7766
  "key": "prepend-avatar",
7712
7767
  "density": props.density,
7713
7768
  "image": props.prependAvatar
@@ -7715,8 +7770,9 @@
7715
7770
  "key": "prepend-icon",
7716
7771
  "density": props.density,
7717
7772
  "icon": props.prependIcon
7718
- }, null), slots.prepend && vue.createVNode(VDefaultsProvider, {
7719
- "key": "prepend",
7773
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7774
+ "key": "prepend-defaults",
7775
+ "disabled": !hasPrependMedia,
7720
7776
  "defaults": {
7721
7777
  VAvatar: {
7722
7778
  density: props.density,
@@ -7731,7 +7787,7 @@
7731
7787
  }
7732
7788
  }
7733
7789
  }, {
7734
- default: () => [slots.prepend(slotProps.value)]
7790
+ default: () => [slots.prepend?.(slotProps.value)]
7735
7791
  })]), vue.createVNode("div", {
7736
7792
  "class": "v-list-item__content",
7737
7793
  "data-no-activator": ""
@@ -7750,8 +7806,17 @@
7750
7806
  }), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
7751
7807
  "key": "append",
7752
7808
  "class": "v-list-item__append"
7753
- }, [slots.append && vue.createVNode(VDefaultsProvider, {
7754
- "key": "append",
7809
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
7810
+ "key": "append-icon",
7811
+ "density": props.density,
7812
+ "icon": props.appendIcon
7813
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7814
+ "key": "append-avatar",
7815
+ "density": props.density,
7816
+ "image": props.appendAvatar
7817
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7818
+ "key": "append-defaults",
7819
+ "disabled": !hasAppendMedia,
7755
7820
  "defaults": {
7756
7821
  VAvatar: {
7757
7822
  density: props.density,
@@ -7766,16 +7831,8 @@
7766
7831
  }
7767
7832
  }
7768
7833
  }, {
7769
- default: () => [slots.append(slotProps.value)]
7770
- }), props.appendIcon && vue.createVNode(VIcon, {
7771
- "key": "append-icon",
7772
- "density": props.density,
7773
- "icon": props.appendIcon
7774
- }, null), props.appendAvatar && vue.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
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
7780
7837
  });
7781
7838
  return {};
@@ -7872,7 +7929,7 @@
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 ? vue.createVNode(VListGroup, vue.mergeProps({
7877
7934
  "value": itemProps?.value
7878
7935
  }, listGroupProps), {
@@ -9099,6 +9156,8 @@
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 @@
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 @@
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 vue.createVNode(VOverlay, vue.mergeProps({
9727
9783
  "ref": overlay,
9728
9784
  "class": ['v-menu']
@@ -9898,7 +9954,7 @@
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 vue.createVNode(VTextField, vue.mergeProps({
9903
9959
  "ref": vTextFieldRef
9904
9960
  }, textFieldProps, {
@@ -9984,7 +10040,13 @@
9984
10040
  return vue.createVNode("div", {
9985
10041
  "key": item.value,
9986
10042
  "class": "v-select__selection"
9987
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10043
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10044
+ "key": "chip",
10045
+ "closable": props.closableChips,
10046
+ "size": "small",
10047
+ "text": item.title
10048
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10049
+ "key": "chip-defaults",
9988
10050
  "defaults": {
9989
10051
  VChip: {
9990
10052
  closable: props.closableChips,
@@ -9993,15 +10055,15 @@
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
- }) : vue.createVNode(VChip, slotProps, null)]
10001
- }) : slots.selection ? slots.selection({
10062
+ })]
10063
+ }) : slots.selection?.({
10002
10064
  item,
10003
10065
  index
10004
- }) : vue.createVNode("span", {
10066
+ }) ?? vue.createVNode("span", {
10005
10067
  "class": "v-select__selection-text"
10006
10068
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
10007
10069
  "class": "v-select__selection-comma"
@@ -10285,7 +10347,7 @@
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 vue.createVNode(VTextField, vue.mergeProps({
10290
10352
  "ref": vTextFieldRef
10291
10353
  }, textFieldProps, {
@@ -10373,7 +10435,13 @@
10373
10435
  return vue.createVNode("div", {
10374
10436
  "key": item.value,
10375
10437
  "class": "v-autocomplete__selection"
10376
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10438
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10439
+ "key": "chip",
10440
+ "closable": props.closableChips,
10441
+ "size": "small",
10442
+ "text": item.title
10443
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10444
+ "key": "chip-defaults",
10377
10445
  "defaults": {
10378
10446
  VChip: {
10379
10447
  closable: props.closableChips,
@@ -10382,15 +10450,15 @@
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
- }) : vue.createVNode(VChip, slotProps, null)]
10390
- }) : slots.selection ? slots.selection({
10457
+ })]
10458
+ }) : slots.selection?.({
10391
10459
  item,
10392
10460
  index
10393
- }) : vue.createVNode("span", {
10461
+ }) ?? vue.createVNode("span", {
10394
10462
  "class": "v-autocomplete__selection-text"
10395
10463
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
10396
10464
  "class": "v-autocomplete__selection-comma"
@@ -10591,7 +10659,8 @@
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 vue.createVNode(props.tag, {
10596
10665
  "class": ['v-banner', {
10597
10666
  'v-banner--stacked': props.stacked || mobile.value,
@@ -10601,8 +10670,18 @@
10601
10670
  "style": [dimensionStyles.value, locationStyles.value],
10602
10671
  "role": "banner"
10603
10672
  }, {
10604
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10673
+ default: () => [hasPrepend && vue.createVNode("div", {
10605
10674
  "key": "prepend",
10675
+ "class": "v-banner__prepend"
10676
+ }, [!slots.prepend ? vue.createVNode(VAvatar, {
10677
+ "key": "prepend-avatar",
10678
+ "color": color.value,
10679
+ "density": density.value,
10680
+ "icon": props.icon,
10681
+ "image": props.avatar
10682
+ }, null) : vue.createVNode(VDefaultsProvider, {
10683
+ "key": "prepend-defaults",
10684
+ "disabled": !hasPrependMedia,
10606
10685
  "defaults": {
10607
10686
  VAvatar: {
10608
10687
  color: color.value,
@@ -10611,19 +10690,15 @@
10611
10690
  image: props.avatar
10612
10691
  }
10613
10692
  }
10614
- }, {
10615
- default: () => [vue.createVNode("div", {
10616
- "class": "v-banner__prepend"
10617
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && vue.createVNode(VAvatar, null, null)])]
10618
- }), vue.createVNode("div", {
10693
+ }, slots.prepend)]), vue.createVNode("div", {
10619
10694
  "class": "v-banner__content"
10620
10695
  }, [hasText && vue.createVNode(VBannerText, {
10621
10696
  "key": "text"
10622
10697
  }, {
10623
- default: () => [slots.text ? slots.text() : props.text]
10624
- }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, null, {
10625
- default: () => [slots.actions()]
10626
- })]
10698
+ default: () => [slots.text?.() ?? props.text]
10699
+ }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, {
10700
+ "key": "actions"
10701
+ }, slots.actions)]
10627
10702
  });
10628
10703
  });
10629
10704
  }
@@ -10856,19 +10931,23 @@
10856
10931
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
10857
10932
  "style": backgroundColorStyles.value
10858
10933
  }, {
10859
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10934
+ default: () => [hasPrepend && vue.createVNode("div", {
10860
10935
  "key": "prepend",
10936
+ "class": "v-breadcrumbs__prepend"
10937
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
10938
+ "key": "prepend-icon",
10939
+ "start": true,
10940
+ "icon": props.icon
10941
+ }, null) : vue.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: () => [vue.createVNode("div", {
10869
- "class": "v-breadcrumbs__prepend"
10870
- }, [slots.prepend ? slots.prepend() : props.icon && vue.createVNode(VIcon, null, null)])]
10871
- }), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10950
+ }, slots.prepend)]), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10872
10951
  "key": index,
10873
10952
  "disabled": index >= array.length - 1
10874
10953
  }, typeof item === 'string' ? {
@@ -10932,30 +11011,33 @@
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 vue.createVNode("div", {
10940
11021
  "class": "v-card-item"
10941
- }, [hasPrepend && vue.createVNode(VDefaultsProvider, {
11022
+ }, [hasPrepend && vue.createVNode("div", {
10942
11023
  "key": "prepend",
11024
+ "class": "v-card-item__prepend"
11025
+ }, [!slots.prepend ? hasPrependMedia && vue.createVNode(VAvatar, {
11026
+ "key": "prepend-avatar",
11027
+ "density": props.density,
11028
+ "icon": props.prependIcon,
11029
+ "image": props.prependAvatar
11030
+ }, null) : vue.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: () => [vue.createVNode("div", {
10956
- "class": "v-card-item__prepend"
10957
- }, [slots.prepend?.() ?? vue.createVNode(VAvatar, null, null)])]
10958
- }), vue.createVNode("div", {
11040
+ }, slots.prepend)]), vue.createVNode("div", {
10959
11041
  "class": "v-card-item__content"
10960
11042
  }, [hasTitle && vue.createVNode(VCardTitle, {
10961
11043
  "key": "title"
@@ -10965,24 +11047,25 @@
10965
11047
  "key": "subtitle"
10966
11048
  }, {
10967
11049
  default: () => [slots.subtitle?.() ?? props.subtitle]
10968
- }), slots.default?.()]), hasAppend && vue.createVNode(VDefaultsProvider, {
11050
+ }), slots.default?.()]), hasAppend && vue.createVNode("div", {
10969
11051
  "key": "append",
11052
+ "class": "v-card-item__append"
11053
+ }, [!slots.append ? hasAppendMedia && vue.createVNode(VAvatar, {
11054
+ "key": "append-avatar",
11055
+ "density": props.density,
11056
+ "icon": props.appendIcon,
11057
+ "image": props.appendAvatar
11058
+ }, null) : vue.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: () => [vue.createVNode("div", {
10983
- "class": "v-card-item__append"
10984
- }, [slots.append?.() ?? vue.createVNode(VAvatar, null, null)])]
10985
- })]);
11068
+ }, slots.append)])]);
10986
11069
  });
10987
11070
  return {};
10988
11071
  }
@@ -11094,19 +11177,23 @@
11094
11177
  "onClick": isClickable.value && link.navigate,
11095
11178
  "tabindex": props.disabled ? -1 : undefined
11096
11179
  }, {
11097
- default: () => [hasImage && vue.createVNode(VDefaultsProvider, {
11180
+ default: () => [hasImage && vue.createVNode("div", {
11098
11181
  "key": "image",
11182
+ "class": "v-card__image"
11183
+ }, [!slots.image ? vue.createVNode(VImg, {
11184
+ "key": "image-img",
11185
+ "cover": true,
11186
+ "src": props.image
11187
+ }, null) : vue.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: () => [vue.createVNode("div", {
11107
- "class": "v-card__image"
11108
- }, [slots.image?.() ?? vue.createVNode(VImg, null, null)])]
11109
- }), vue.createVNode(LoaderSlot, {
11196
+ }, slots.image)]), vue.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 @@
12208
12295
  const min = vue.computed(() => parseFloat(props.min));
12209
12296
  const max = vue.computed(() => parseFloat(props.max));
12210
12297
  const step = vue.computed(() => props.step > 0 ? parseFloat(props.step) : 0);
12211
- const decimals = vue.computed(() => {
12212
- const trimmedStep = step.value.toString().trim();
12213
- return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
12214
- });
12298
+ const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12215
12299
  const thumbSize = vue.computed(() => parseInt(props.thumbSize, 10));
12216
12300
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
12217
12301
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
@@ -12310,7 +12394,9 @@
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 = vue.toRef(props, 'showTicks');
12313
12398
  const parsedTicks = vue.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 @@
12359
12445
  readonly: vue.toRef(props, 'readonly'),
12360
12446
  rounded: vue.toRef(props, 'rounded'),
12361
12447
  roundValue,
12362
- showTicks: vue.toRef(props, 'showTicks'),
12448
+ showTicks,
12363
12449
  startOffset,
12364
12450
  step,
12365
12451
  thumbSize,
@@ -12581,6 +12667,7 @@
12581
12667
  };
12582
12668
  });
12583
12669
  const computedTicks = vue.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 @@
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 @@
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 vue.createVNode(VTextField, vue.mergeProps({
13617
13702
  "ref": vTextFieldRef
13618
13703
  }, textFieldProps, {
@@ -13700,7 +13785,13 @@
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 ? vue.createVNode(VDefaultsProvider, {
13788
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
13789
+ "key": "chip",
13790
+ "closable": props.closableChips,
13791
+ "size": "small",
13792
+ "text": item.title
13793
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
13794
+ "key": "chip-defaults",
13704
13795
  "defaults": {
13705
13796
  VChip: {
13706
13797
  closable: props.closableChips,
@@ -13709,15 +13800,15 @@
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
- }) : vue.createVNode(VChip, slotProps, null)]
13717
- }) : slots.selection ? slots.selection({
13807
+ })]
13808
+ }) : slots.selection?.({
13718
13809
  item,
13719
13810
  index
13720
- }) : vue.createVNode("span", {
13811
+ }) ?? vue.createVNode("span", {
13721
13812
  "class": "v-combobox__selection-text"
13722
13813
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
13723
13814
  "class": "v-combobox__selection-comma"
@@ -13814,7 +13905,7 @@
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 vue.createVNode(VOverlay, vue.mergeProps({
13819
13910
  "ref": overlay,
13820
13911
  "class": ['v-dialog', {
@@ -14418,10 +14509,8 @@
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 @@
14430
14519
  }, {});
14431
14520
  })();
14432
14521
  const offsetProps = (() => {
14433
- return breakpoints$1.reduce((props, val) => {
14434
- props['offset' + vue.capitalize(val)] = {
14522
+ return breakpoints.reduce((props, val) => {
14523
+ const offsetKey = 'offset' + vue.capitalize(val);
14524
+ props[offsetKey] = {
14435
14525
  type: [String, Number],
14436
14526
  default: null
14437
14527
  };
@@ -14439,8 +14529,9 @@
14439
14529
  }, {});
14440
14530
  })();
14441
14531
  const orderProps = (() => {
14442
- return breakpoints$1.reduce((props, val) => {
14443
- props['order' + vue.capitalize(val)] = {
14532
+ return breakpoints.reduce((props, val) => {
14533
+ const orderKey = 'order' + vue.capitalize(val);
14534
+ props[orderKey] = {
14444
14535
  type: [String, Number],
14445
14536
  default: null
14446
14537
  };
@@ -14538,13 +14629,12 @@
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 + vue.capitalize(val)] = def();
14636
+ const prefixKey = prefix + vue.capitalize(val);
14637
+ props[prefixKey] = def();
14548
14638
  return props;
14549
14639
  }, {});
14550
14640
  }
@@ -14874,7 +14964,10 @@
14874
14964
  }, {
14875
14965
  default: () => [slots.default?.()]
14876
14966
  })]
14877
- }), [[vue.resolveDirective("intersect"), onIntersect, props.options]]));
14967
+ }), [[vue.resolveDirective("intersect"), {
14968
+ handler: onIntersect,
14969
+ options: props.options
14970
+ }, null]]));
14878
14971
  return {};
14879
14972
  }
14880
14973
  });
@@ -15851,9 +15944,9 @@
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 @@
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 @@
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 @@
16814
16905
  window.clearTimeout(activeTimeout);
16815
16906
  }
16816
16907
  useRender(() => {
16817
- const [overlayProps] = filterVOverlayProps(props);
16908
+ const [overlayProps] = VOverlay.filterProps(props);
16818
16909
  return vue.createVNode(VOverlay, vue.mergeProps({
16819
16910
  "ref": overlay,
16820
16911
  "class": ['v-snackbar', {
@@ -16834,7 +16925,8 @@
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 && vue.createVNode("div", {
16840
16932
  "class": "v-snackbar__content",
@@ -16908,7 +17000,7 @@
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 = vue.ref();
16913
17005
  function onClick() {
16914
17006
  control.value?.input?.click();
@@ -17041,28 +17133,17 @@
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 @@
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 vue.createVNode(VBtn, vue.mergeProps({
17117
17198
  "_as": "VTab",
17118
17199
  "symbol": VTabsSymbol,
@@ -17124,7 +17205,6 @@
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 @@
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
+ vue.nextTick(() => {
17456
+ el.selectionStart = caretPosition[0];
17457
+ el.selectionEnd = caretPosition[1];
17458
+ });
17373
17459
  }
17374
17460
  const sizerRef = vue.ref();
17375
17461
  function calculateInputHeight() {
@@ -17656,13 +17742,6 @@
17656
17742
  backgroundColorClasses: lineColorClasses,
17657
17743
  backgroundColorStyles: lineColorStyles
17658
17744
  } = useBackgroundColor(vue.toRef(props, 'lineColor'));
17659
- provideDefaults({
17660
- VIcon: {
17661
- color: vue.toRef(props, 'iconColor'),
17662
- icon: vue.toRef(props, 'icon'),
17663
- size: vue.toRef(props, 'size')
17664
- }
17665
- });
17666
17745
  useRender(() => vue.createVNode("div", {
17667
17746
  "class": ['v-timeline-divider', {
17668
17747
  'v-timeline-divider--fill-dot': props.fillDot
@@ -17677,7 +17756,22 @@
17677
17756
  }, [vue.createVNode("div", {
17678
17757
  "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
17679
17758
  "style": backgroundColorStyles.value
17680
- }, [slots.default?.() ?? (props.icon ? vue.createVNode(VIcon, null, null) : undefined)])]), vue.createVNode("div", {
17759
+ }, [!slots.default ? vue.createVNode(VIcon, {
17760
+ "key": "icon",
17761
+ "color": props.iconColor,
17762
+ "icon": props.icon,
17763
+ "size": props.size
17764
+ }, null) : vue.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)])]), vue.createVNode("div", {
17681
17775
  "class": ['v-timeline-divider__after', lineColorClasses.value],
17682
17776
  "style": lineColorStyles.value
17683
17777
  }, null)]));
@@ -17802,7 +17896,7 @@
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 vue.createVNode(VOverlay, vue.mergeProps({
17807
17901
  "ref": overlay,
17808
17902
  "class": ['v-tooltip'],
@@ -18194,7 +18288,7 @@
18194
18288
  locale
18195
18289
  };
18196
18290
  }
18197
- const version$1 = "3.2.0-dev-20230309.0";
18291
+ const version$1 = "3.2.0-dev-20230322.0";
18198
18292
  createVuetify$1.version = version$1;
18199
18293
 
18200
18294
  // Vue's inject() can only be used in setup
@@ -18214,7 +18308,7 @@
18214
18308
  ...options
18215
18309
  });
18216
18310
  };
18217
- const version = "3.2.0-dev-20230309.0";
18311
+ const version = "3.2.0-dev-20230322.0";
18218
18312
  createVuetify.version = version;
18219
18313
 
18220
18314
  exports.components = components;