vuetify 3.1.10 → 3.1.12

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 (212) hide show
  1. package/dist/json/attributes.json +211 -39
  2. package/dist/json/importMap.json +82 -82
  3. package/dist/json/tags.json +46 -3
  4. package/dist/json/web-types.json +499 -73
  5. package/dist/vuetify-labs.css +330 -316
  6. package/dist/vuetify-labs.d.ts +56938 -14302
  7. package/dist/vuetify-labs.esm.js +178 -157
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +177 -156
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +71 -69
  12. package/dist/vuetify.d.ts +55237 -15799
  13. package/dist/vuetify.esm.js +154 -151
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +154 -151
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +717 -718
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/index.d.ts +6 -9
  21. package/lib/blueprints/md1.d.ts +6 -9
  22. package/lib/blueprints/md2.d.ts +6 -9
  23. package/lib/blueprints/md3.d.ts +6 -9
  24. package/lib/blueprints/md3.mjs +6 -0
  25. package/lib/blueprints/md3.mjs.map +1 -1
  26. package/lib/components/VAlert/index.d.ts +509 -83
  27. package/lib/components/VApp/VApp.css +1 -0
  28. package/lib/components/VApp/VApp.sass +1 -0
  29. package/lib/components/VApp/index.d.ts +158 -20
  30. package/lib/components/VAppBar/VAppBar.mjs +2 -2
  31. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  32. package/lib/components/VAppBar/index.d.ts +616 -110
  33. package/lib/components/VAutocomplete/VAutocomplete.mjs +2 -2
  34. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  35. package/lib/components/VAutocomplete/index.d.ts +1656 -130
  36. package/lib/components/VAvatar/index.d.ts +205 -29
  37. package/lib/components/VBadge/VBadge.css +1 -0
  38. package/lib/components/VBadge/VBadge.sass +1 -0
  39. package/lib/components/VBadge/index.d.ts +284 -42
  40. package/lib/components/VBanner/index.d.ts +478 -84
  41. package/lib/components/VBottomNavigation/index.d.ts +321 -40
  42. package/lib/components/VBreadcrumbs/index.d.ts +325 -45
  43. package/lib/components/VBtn/VBtn.css +0 -5
  44. package/lib/components/VBtn/VBtn.mjs +40 -39
  45. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  46. package/lib/components/VBtn/VBtn.sass +0 -7
  47. package/lib/components/VBtn/_variables.scss +0 -2
  48. package/lib/components/VBtn/index.d.ts +452 -69
  49. package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -7
  50. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  51. package/lib/components/VBtnGroup/index.d.ts +185 -26
  52. package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
  53. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  54. package/lib/components/VBtnToggle/index.d.ts +245 -35
  55. package/lib/components/VCard/index.d.ts +938 -172
  56. package/lib/components/VCarousel/index.d.ts +561 -123
  57. package/lib/components/VCheckbox/VCheckbox.mjs +4 -4
  58. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  59. package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -4
  60. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  61. package/lib/components/VCheckbox/index.d.ts +824 -149
  62. package/lib/components/VChip/index.d.ts +473 -75
  63. package/lib/components/VChipGroup/index.d.ts +227 -32
  64. package/lib/components/VCode/index.d.ts +109 -16
  65. package/lib/components/VColorPicker/index.d.ts +284 -20
  66. package/lib/components/VCombobox/VCombobox.mjs +11 -3
  67. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  68. package/lib/components/VCombobox/index.d.ts +1668 -130
  69. package/lib/components/VCounter/index.d.ts +1894 -87
  70. package/lib/components/VDefaultsProvider/index.d.ts +131 -22
  71. package/lib/components/VDialog/VDialog.css +16 -16
  72. package/lib/components/VDialog/VDialog.mjs +4 -4
  73. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  74. package/lib/components/VDialog/VDialog.sass +4 -4
  75. package/lib/components/VDialog/index.d.ts +2362 -146
  76. package/lib/components/VDivider/index.d.ts +130 -23
  77. package/lib/components/VExpansionPanel/index.d.ts +719 -119
  78. package/lib/components/VField/VField.mjs +5 -1
  79. package/lib/components/VField/VField.mjs.map +1 -1
  80. package/lib/components/VField/index.d.ts +163 -21
  81. package/lib/components/VFileInput/index.d.ts +1038 -104
  82. package/lib/components/VFooter/index.d.ts +203 -28
  83. package/lib/components/VForm/index.d.ts +204 -23
  84. package/lib/components/VGrid/VCol.mjs +5 -4
  85. package/lib/components/VGrid/VCol.mjs.map +1 -1
  86. package/lib/components/VGrid/VRow.mjs +3 -3
  87. package/lib/components/VGrid/VRow.mjs.map +1 -1
  88. package/lib/components/VGrid/index.d.ts +733 -76
  89. package/lib/components/VHover/index.d.ts +182 -35
  90. package/lib/components/VIcon/index.d.ts +494 -50
  91. package/lib/components/VImg/index.d.ts +275 -46
  92. package/lib/components/VInput/index.d.ts +315 -53
  93. package/lib/components/VItemGroup/index.d.ts +308 -52
  94. package/lib/components/VKbd/VKbd.css +1 -0
  95. package/lib/components/VKbd/VKbd.sass +1 -0
  96. package/lib/components/VKbd/_variables.scss +1 -0
  97. package/lib/components/VKbd/index.d.ts +109 -16
  98. package/lib/components/VLabel/index.d.ts +113 -20
  99. package/lib/components/VLayout/index.d.ts +296 -41
  100. package/lib/components/VLazy/VLazy.mjs +4 -1
  101. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  102. package/lib/components/VLazy/index.d.ts +219 -30
  103. package/lib/components/VList/VListChildren.mjs +2 -2
  104. package/lib/components/VList/VListChildren.mjs.map +1 -1
  105. package/lib/components/VList/VListGroup.mjs +1 -4
  106. package/lib/components/VList/VListGroup.mjs.map +1 -1
  107. package/lib/components/VList/index.d.ts +1461 -223
  108. package/lib/components/VLocaleProvider/index.d.ts +121 -20
  109. package/lib/components/VMain/index.d.ts +118 -17
  110. package/lib/components/VMenu/VMenu.css +4 -4
  111. package/lib/components/VMenu/VMenu.mjs +2 -2
  112. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  113. package/lib/components/VMenu/VMenu.sass +1 -1
  114. package/lib/components/VMenu/index.d.ts +2368 -142
  115. package/lib/components/VMessages/index.d.ts +1921 -98
  116. package/lib/components/VNavigationDrawer/index.d.ts +379 -56
  117. package/lib/components/VOverlay/VOverlay.css +1 -1
  118. package/lib/components/VOverlay/VOverlay.mjs +1 -4
  119. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  120. package/lib/components/VOverlay/_variables.scss +1 -1
  121. package/lib/components/VOverlay/index.d.ts +519 -85
  122. package/lib/components/VPagination/index.d.ts +502 -68
  123. package/lib/components/VParallax/VParallax.mjs +3 -3
  124. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  125. package/lib/components/VParallax/index.d.ts +141 -28
  126. package/lib/components/VProgressCircular/index.d.ts +186 -25
  127. package/lib/components/VProgressLinear/index.d.ts +319 -48
  128. package/lib/components/VRadio/index.d.ts +313 -57
  129. package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -6
  130. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  131. package/lib/components/VRadioGroup/index.d.ts +463 -83
  132. package/lib/components/VRangeSlider/index.d.ts +528 -80
  133. package/lib/components/VRating/index.d.ts +305 -43
  134. package/lib/components/VResponsive/index.d.ts +142 -27
  135. package/lib/components/VSelect/VSelect.mjs +2 -2
  136. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  137. package/lib/components/VSelect/index.d.ts +3060 -328
  138. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -4
  139. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  140. package/lib/components/VSelectionControl/index.d.ts +76 -4
  141. package/lib/components/VSelectionControlGroup/index.d.ts +242 -38
  142. package/lib/components/VSheet/VSheet.mjs +1 -7
  143. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  144. package/lib/components/VSheet/index.d.ts +194 -31
  145. package/lib/components/VSlideGroup/index.d.ts +475 -83
  146. package/lib/components/VSlider/index.d.ts +521 -79
  147. package/lib/components/VSlider/slider.mjs +2 -5
  148. package/lib/components/VSlider/slider.mjs.map +1 -1
  149. package/lib/components/VSnackbar/VSnackbar.mjs +2 -2
  150. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  151. package/lib/components/VSnackbar/index.d.ts +1219 -81
  152. package/lib/components/VSwitch/VSwitch.mjs +2 -2
  153. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  154. package/lib/components/VSwitch/index.d.ts +498 -92
  155. package/lib/components/VSystemBar/index.d.ts +184 -27
  156. package/lib/components/VTable/index.d.ts +190 -35
  157. package/lib/components/VTabs/VTab.mjs +7 -23
  158. package/lib/components/VTabs/VTab.mjs.map +1 -1
  159. package/lib/components/VTabs/index.d.ts +623 -71
  160. package/lib/components/VTextField/VTextField.mjs +14 -6
  161. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  162. package/lib/components/VTextField/index.d.ts +1404 -106
  163. package/lib/components/VTextarea/VTextarea.mjs +7 -1
  164. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  165. package/lib/components/VTextarea/index.d.ts +1014 -102
  166. package/lib/components/VThemeProvider/index.d.ts +124 -19
  167. package/lib/components/VTimeline/index.d.ts +441 -71
  168. package/lib/components/VToolbar/VToolbar.mjs +1 -4
  169. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  170. package/lib/components/VToolbar/index.d.ts +542 -93
  171. package/lib/components/VTooltip/VTooltip.css +3 -3
  172. package/lib/components/VTooltip/VTooltip.mjs +2 -2
  173. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  174. package/lib/components/VTooltip/VTooltip.sass +1 -1
  175. package/lib/components/VTooltip/index.d.ts +1263 -81
  176. package/lib/components/VValidation/index.d.ts +201 -30
  177. package/lib/components/VWindow/index.d.ts +527 -95
  178. package/lib/components/index.d.ts +55122 -15681
  179. package/lib/components/transitions/index.d.ts +2097 -308
  180. package/lib/composables/display.mjs +2 -0
  181. package/lib/composables/display.mjs.map +1 -1
  182. package/lib/composables/form.mjs.map +1 -1
  183. package/lib/composables/forwardRefs.mjs +12 -15
  184. package/lib/composables/forwardRefs.mjs.map +1 -1
  185. package/lib/entry-bundler.mjs +1 -1
  186. package/lib/framework.mjs +1 -1
  187. package/lib/index.d.ts +30 -33
  188. package/lib/labs/VDataTable/VDataTable.css +12 -0
  189. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  190. package/lib/labs/VDataTable/VDataTable.sass +6 -0
  191. package/lib/labs/VDataTable/VDataTableRow.mjs +7 -4
  192. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  193. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -0
  194. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  195. package/lib/labs/VDataTable/VDataTableServer.mjs +3 -1
  196. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  197. package/lib/labs/VDataTable/composables/items.mjs +14 -1
  198. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  199. package/lib/labs/VDataTable/index.d.ts +4196 -1020
  200. package/lib/labs/VVirtualScroll/index.d.ts +32 -1
  201. package/lib/labs/components.d.ts +4232 -1030
  202. package/lib/styles/main.css +4 -0
  203. package/lib/styles/settings/_utilities.scss +7 -0
  204. package/lib/util/animation.mjs +8 -1
  205. package/lib/util/animation.mjs.map +1 -1
  206. package/lib/util/defineComponent.mjs +12 -5
  207. package/lib/util/defineComponent.mjs.map +1 -1
  208. package/lib/util/globals.mjs +1 -1
  209. package/lib/util/globals.mjs.map +1 -1
  210. package/lib/util/helpers.mjs +4 -0
  211. package/lib/util/helpers.mjs.map +1 -1
  212. package/package.json +3 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.10
2
+ * Vuetify v3.1.12
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -13,7 +13,7 @@
13
13
  const IN_BROWSER = typeof window !== 'undefined';
14
14
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
15
15
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
16
- const SUPPORTS_FOCUS_VISIBLE = IN_BROWSER && typeof CSS !== 'undefined' && CSS.supports('selector(:focus-visible)');
16
+ const SUPPORTS_FOCUS_VISIBLE = IN_BROWSER && typeof CSS !== 'undefined' && typeof CSS.supports !== 'undefined' && CSS.supports('selector(:focus-visible)');
17
17
 
18
18
  // Utilities
19
19
  function useResizeObserver(callback) {
@@ -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 = () => {
@@ -1009,15 +1020,22 @@
1009
1020
  function propIsDefined(vnode, prop) {
1010
1021
  return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1011
1022
  }
1012
- const defineComponent = function defineComponent(options) {
1023
+
1024
+ // No props
1025
+
1026
+ // Implementation
1027
+ function defineComponent(options) {
1013
1028
  options._setup = options._setup ?? options.setup;
1014
1029
  if (!options.name) {
1015
1030
  consoleWarn('The component is missing an explicit name, unable to generate default prop value');
1016
1031
  return options;
1017
1032
  }
1018
1033
  if (options._setup) {
1019
- options.props = options.props ?? {};
1020
- 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
+ };
1021
1039
  options.props._as = String;
1022
1040
  options.setup = function setup(props, ctx) {
1023
1041
  const defaults = useDefaults();
@@ -1057,7 +1075,7 @@
1057
1075
  };
1058
1076
  }
1059
1077
  return options;
1060
- };
1078
+ }
1061
1079
  // Implementation
1062
1080
  function genericComponent() {
1063
1081
  let exposeDefaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
@@ -3225,9 +3243,6 @@
3225
3243
  };
3226
3244
  }
3227
3245
  });
3228
- function filterToolbarProps(props) {
3229
- return pick(props, Object.keys(VToolbar?.props ?? {}));
3230
- }
3231
3246
 
3232
3247
  // Utilities
3233
3248
 
@@ -3305,7 +3320,7 @@
3305
3320
  absolute: vue.toRef(props, 'absolute')
3306
3321
  });
3307
3322
  useRender(() => {
3308
- const [toolbarProps] = filterToolbarProps(props);
3323
+ const [toolbarProps] = VToolbar.filterProps(props);
3309
3324
  return vue.createVNode(VToolbar, vue.mergeProps({
3310
3325
  "ref": vToolbarRef,
3311
3326
  "class": ['v-app-bar', {
@@ -3396,8 +3411,6 @@
3396
3411
  };
3397
3412
  }
3398
3413
 
3399
- // Types
3400
-
3401
3414
  const makeVBtnGroupProps = propsFactory({
3402
3415
  divided: Boolean,
3403
3416
  ...makeBorderProps(),
@@ -3448,9 +3461,6 @@
3448
3461
  });
3449
3462
  }
3450
3463
  });
3451
- function filterVBtnGroupProps(props) {
3452
- return pick(props, Object.keys(VBtnGroup.props));
3453
- }
3454
3464
 
3455
3465
  // Composables
3456
3466
 
@@ -3677,7 +3687,7 @@
3677
3687
  selected
3678
3688
  } = useGroup(props, VBtnToggleSymbol);
3679
3689
  useRender(() => {
3680
- const [btnGroupProps] = filterVBtnGroupProps(props);
3690
+ const [btnGroupProps] = VBtnGroup.filterProps(props);
3681
3691
  return vue.createVNode(VBtnGroup, vue.mergeProps({
3682
3692
  "class": "v-btn-toggle"
3683
3693
  }, btnGroupProps), {
@@ -4765,49 +4775,50 @@
4765
4775
 
4766
4776
  // Types
4767
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');
4768
4816
  const VBtn = genericComponent()({
4769
4817
  name: 'VBtn',
4770
4818
  directives: {
4771
4819
  Ripple
4772
4820
  },
4773
- props: {
4774
- active: {
4775
- type: Boolean,
4776
- default: undefined
4777
- },
4778
- symbol: {
4779
- type: null,
4780
- default: VBtnToggleSymbol
4781
- },
4782
- flat: Boolean,
4783
- icon: [Boolean, String, Function, Object],
4784
- prependIcon: IconValue,
4785
- appendIcon: IconValue,
4786
- block: Boolean,
4787
- stacked: Boolean,
4788
- ripple: {
4789
- type: Boolean,
4790
- default: true
4791
- },
4792
- ...makeBorderProps(),
4793
- ...makeRoundedProps(),
4794
- ...makeDensityProps(),
4795
- ...makeDimensionProps(),
4796
- ...makeElevationProps(),
4797
- ...makeGroupItemProps(),
4798
- ...makeLoaderProps(),
4799
- ...makeLocationProps(),
4800
- ...makePositionProps(),
4801
- ...makeRouterProps(),
4802
- ...makeSizeProps(),
4803
- ...makeTagProps({
4804
- tag: 'button'
4805
- }),
4806
- ...makeThemeProps(),
4807
- ...makeVariantProps({
4808
- variant: 'elevated'
4809
- })
4810
- },
4821
+ props: makeVBtnProps(),
4811
4822
  emits: {
4812
4823
  'group:selected': val => true
4813
4824
  },
@@ -5502,7 +5513,11 @@
5502
5513
  "key": "clear"
5503
5514
  }, {
5504
5515
  default: () => [vue.withDirectives(vue.createVNode("div", {
5505
- "class": "v-field__clearable"
5516
+ "class": "v-field__clearable",
5517
+ "onMousedown": e => {
5518
+ e.preventDefault();
5519
+ e.stopPropagation();
5520
+ }
5506
5521
  }, [slots.clear ? slots.clear() : vue.createVNode(InputIcon, {
5507
5522
  "name": "clear"
5508
5523
  }, null)]), [[vue.vShow, props.dirty]])]
@@ -6008,6 +6023,15 @@
6008
6023
 
6009
6024
  /** Omit properties starting with P */
6010
6025
 
6026
+ function getDescriptor(obj, key) {
6027
+ let currentObj = obj;
6028
+ while (currentObj) {
6029
+ const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);
6030
+ if (descriptor) return descriptor;
6031
+ currentObj = Object.getPrototypeOf(currentObj);
6032
+ }
6033
+ return undefined;
6034
+ }
6011
6035
  function forwardRefs(target) {
6012
6036
  for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
6013
6037
  refs[_key - 1] = arguments[_key];
@@ -6035,30 +6059,18 @@
6035
6059
  // Check each ref's own properties
6036
6060
  for (const ref of refs) {
6037
6061
  if (!ref.value) continue;
6038
- const descriptor = Reflect.getOwnPropertyDescriptor(ref.value, key);
6062
+ const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined);
6039
6063
  if (descriptor) return descriptor;
6040
- if ('_' in ref.value && 'setupState' in ref.value._) {
6041
- const descriptor = Reflect.getOwnPropertyDescriptor(ref.value._.setupState, key);
6042
- if (descriptor) return descriptor;
6043
- }
6044
6064
  }
6065
+
6045
6066
  // Recursive search up each ref's prototype
6046
- for (const ref of refs) {
6047
- let obj = ref.value && Object.getPrototypeOf(ref.value);
6048
- while (obj) {
6049
- const descriptor = Reflect.getOwnPropertyDescriptor(obj, key);
6050
- if (descriptor) return descriptor;
6051
- obj = Object.getPrototypeOf(obj);
6052
- }
6053
- }
6054
- // Call forwarded refs' proxies
6055
6067
  for (const ref of refs) {
6056
6068
  const childRefs = ref.value && ref.value[Refs];
6057
6069
  if (!childRefs) continue;
6058
6070
  const queue = childRefs.slice();
6059
6071
  while (queue.length) {
6060
6072
  const ref = queue.shift();
6061
- const descriptor = Reflect.getOwnPropertyDescriptor(ref.value, key);
6073
+ const descriptor = getDescriptor(ref.value, key);
6062
6074
  if (descriptor) return descriptor;
6063
6075
  const childRefs = ref.value && ref.value[Refs];
6064
6076
  if (childRefs) queue.push(...childRefs);
@@ -6159,7 +6171,15 @@
6159
6171
  });
6160
6172
  }
6161
6173
  function onInput(e) {
6162
- model.value = e.target.value;
6174
+ const el = e.target;
6175
+ model.value = el.value;
6176
+ if (['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
6177
+ const caretPosition = [el.selectionStart, el.selectionEnd];
6178
+ vue.nextTick(() => {
6179
+ el.selectionStart = caretPosition[0];
6180
+ el.selectionEnd = caretPosition[1];
6181
+ });
6182
+ }
6163
6183
  }
6164
6184
  useRender(() => {
6165
6185
  const hasCounter = !!(slots.counter || props.counter || props.counterValue);
@@ -6218,6 +6238,9 @@
6218
6238
  ...slotProps
6219
6239
  }
6220
6240
  } = _ref3;
6241
+ const placeholder = vue.computed(() => {
6242
+ return (props.persistentPlaceholder || isFocused.value) && !isDirty.value ? props.placeholder : '';
6243
+ });
6221
6244
  const inputNode = vue.withDirectives(vue.createVNode("input", vue.mergeProps({
6222
6245
  "ref": inputRef,
6223
6246
  "value": model.value,
@@ -6226,7 +6249,7 @@
6226
6249
  "readonly": isReadonly.value,
6227
6250
  "disabled": isDisabled.value,
6228
6251
  "name": props.name,
6229
- "placeholder": props.placeholder,
6252
+ "placeholder": placeholder.value,
6230
6253
  "size": 1,
6231
6254
  "type": props.type,
6232
6255
  "onFocus": onFocus,
@@ -6259,9 +6282,6 @@
6259
6282
  return forwardRefs({}, vInputRef, vFieldRef, inputRef);
6260
6283
  }
6261
6284
  });
6262
- function filterVTextFieldProps(props) {
6263
- return pick(props, Object.keys(VTextField.props));
6264
- }
6265
6285
 
6266
6286
  // Types
6267
6287
 
@@ -6519,11 +6539,6 @@
6519
6539
  };
6520
6540
  }
6521
6541
  });
6522
- function filterControlProps(props) {
6523
- return pick(props, Object.keys(VSelectionControl.props));
6524
- }
6525
-
6526
- // Types
6527
6542
 
6528
6543
  const makeVCheckboxBtnProps = propsFactory({
6529
6544
  indeterminate: Boolean,
@@ -6573,9 +6588,6 @@
6573
6588
  return {};
6574
6589
  }
6575
6590
  });
6576
- function filterCheckboxBtnProps(props) {
6577
- return pick(props, Object.keys(VCheckboxBtn.props));
6578
- }
6579
6591
 
6580
6592
  // Types
6581
6593
 
@@ -6584,7 +6596,7 @@
6584
6596
  inheritAttrs: false,
6585
6597
  props: {
6586
6598
  ...makeVInputProps(),
6587
- ...makeVCheckboxBtnProps()
6599
+ ...omit(makeVCheckboxBtnProps(), ['inline'])
6588
6600
  },
6589
6601
  emits: {
6590
6602
  'update:focused': focused => true
@@ -6604,7 +6616,7 @@
6604
6616
  useRender(() => {
6605
6617
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
6606
6618
  const [inputProps, _1] = filterInputProps(props);
6607
- const [checkboxProps, _2] = filterCheckboxBtnProps(props);
6619
+ const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6608
6620
  return vue.createVNode(VInput, vue.mergeProps({
6609
6621
  "class": "v-checkbox"
6610
6622
  }, inputAttrs, inputProps, {
@@ -7508,8 +7520,6 @@
7508
7520
  });
7509
7521
  };
7510
7522
 
7511
- // Types
7512
-
7513
7523
  const VListGroupActivator = defineComponent({
7514
7524
  name: 'VListGroupActivator',
7515
7525
  setup(_, _ref) {
@@ -7602,9 +7612,6 @@
7602
7612
  return {};
7603
7613
  }
7604
7614
  });
7605
- function filterListGroupProps(props) {
7606
- return pick(props, Object.keys(VListGroup.props));
7607
- }
7608
7615
 
7609
7616
  const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle');
7610
7617
 
@@ -7932,7 +7939,7 @@
7932
7939
  item
7933
7940
  }) : undefined
7934
7941
  };
7935
- const [listGroupProps, _1] = filterListGroupProps(itemProps);
7942
+ const [listGroupProps, _1] = VListGroup.filterProps(itemProps);
7936
7943
  return children ? vue.createVNode(VListGroup, vue.mergeProps({
7937
7944
  "value": itemProps?.value
7938
7945
  }, listGroupProps), {
@@ -9159,6 +9166,8 @@
9159
9166
 
9160
9167
  // Types
9161
9168
 
9169
+ const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
9170
+
9162
9171
  const DisplaySymbol = Symbol.for('vuetify:display');
9163
9172
  const defaultDisplayOptions = {
9164
9173
  mobileBreakpoint: 'lg',
@@ -9714,9 +9723,6 @@
9714
9723
  };
9715
9724
  }
9716
9725
  });
9717
- function filterVOverlayProps(props) {
9718
- return pick(props, Object.keys(VOverlay.props));
9719
- }
9720
9726
 
9721
9727
  // Types
9722
9728
 
@@ -9782,7 +9788,7 @@
9782
9788
  'aria-owns': id.value
9783
9789
  }, props.activatorProps));
9784
9790
  useRender(() => {
9785
- const [overlayProps] = filterVOverlayProps(props);
9791
+ const [overlayProps] = VOverlay.filterProps(props);
9786
9792
  return vue.createVNode(VOverlay, vue.mergeProps({
9787
9793
  "ref": overlay,
9788
9794
  "class": ['v-menu']
@@ -9958,7 +9964,7 @@
9958
9964
  useRender(() => {
9959
9965
  const hasChips = !!(props.chips || slots.chip);
9960
9966
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
9961
- const [textFieldProps] = filterVTextFieldProps(props);
9967
+ const [textFieldProps] = VTextField.filterProps(props);
9962
9968
  return vue.createVNode(VTextField, vue.mergeProps({
9963
9969
  "ref": vTextFieldRef
9964
9970
  }, textFieldProps, {
@@ -10351,7 +10357,7 @@
10351
10357
  useRender(() => {
10352
10358
  const hasChips = !!(props.chips || slots.chip);
10353
10359
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10354
- const [textFieldProps] = filterVTextFieldProps(props);
10360
+ const [textFieldProps] = VTextField.filterProps(props);
10355
10361
  return vue.createVNode(VTextField, vue.mergeProps({
10356
10362
  "ref": vTextFieldRef
10357
10363
  }, textFieldProps, {
@@ -12299,10 +12305,7 @@
12299
12305
  const min = vue.computed(() => parseFloat(props.min));
12300
12306
  const max = vue.computed(() => parseFloat(props.max));
12301
12307
  const step = vue.computed(() => props.step > 0 ? parseFloat(props.step) : 0);
12302
- const decimals = vue.computed(() => {
12303
- const trimmedStep = step.value.toString().trim();
12304
- return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
12305
- });
12308
+ const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12306
12309
  const thumbSize = vue.computed(() => parseInt(props.thumbSize, 10));
12307
12310
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
12308
12311
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
@@ -13280,8 +13283,6 @@
13280
13283
  }
13281
13284
  });
13282
13285
 
13283
- // Types
13284
-
13285
13286
  const makeVSheetProps = propsFactory({
13286
13287
  color: String,
13287
13288
  ...makeBorderProps(),
@@ -13525,6 +13526,7 @@
13525
13526
  }
13526
13527
  });
13527
13528
  const selectionIndex = vue.ref(-1);
13529
+ let cleared = false;
13528
13530
  const color = vue.computed(() => vTextFieldRef.value?.color);
13529
13531
  const {
13530
13532
  items,
@@ -13561,11 +13563,17 @@
13561
13563
  }
13562
13564
  }
13563
13565
  if (!val) selectionIndex.value = -1;
13564
- if (isFocused.value) menu.value = true;
13565
13566
  isPristine.value = !val;
13566
13567
  }
13567
13568
  });
13568
13569
  vue.watch(_search, value => {
13570
+ if (cleared) {
13571
+ // wait for clear to finish, VTextField sets _search to null
13572
+ // then search computed triggers and updates _search to ''
13573
+ vue.nextTick(() => cleared = false);
13574
+ } else if (isFocused.value && !menu.value) {
13575
+ menu.value = true;
13576
+ }
13569
13577
  emit('update:search', value);
13570
13578
  });
13571
13579
  vue.watch(model, value => {
@@ -13592,6 +13600,7 @@
13592
13600
  const selection = vue.computed(() => selections.value[selectionIndex.value]);
13593
13601
  const listRef = vue.ref();
13594
13602
  function onClear(e) {
13603
+ cleared = true;
13595
13604
  if (props.openOnClear) {
13596
13605
  menu.value = true;
13597
13606
  }
@@ -13706,7 +13715,7 @@
13706
13715
  useRender(() => {
13707
13716
  const hasChips = !!(props.chips || slots.chip);
13708
13717
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
13709
- const [textFieldProps] = filterVTextFieldProps(props);
13718
+ const [textFieldProps] = VTextField.filterProps(props);
13710
13719
  return vue.createVNode(VTextField, vue.mergeProps({
13711
13720
  "ref": vTextFieldRef
13712
13721
  }, textFieldProps, {
@@ -13914,7 +13923,7 @@
13914
13923
  'aria-expanded': String(isActive.value)
13915
13924
  }, props.activatorProps));
13916
13925
  useRender(() => {
13917
- const [overlayProps] = filterVOverlayProps(props);
13926
+ const [overlayProps] = VOverlay.filterProps(props);
13918
13927
  return vue.createVNode(VOverlay, vue.mergeProps({
13919
13928
  "ref": overlay,
13920
13929
  "class": ['v-dialog', {
@@ -13924,9 +13933,9 @@
13924
13933
  }, overlayProps, {
13925
13934
  "modelValue": isActive.value,
13926
13935
  "onUpdate:modelValue": $event => isActive.value = $event,
13927
- "aria-role": "dialog",
13928
13936
  "aria-modal": "true",
13929
- "activatorProps": activatorProps.value
13937
+ "activatorProps": activatorProps.value,
13938
+ "role": "dialog"
13930
13939
  }, scopeId), {
13931
13940
  activator: slots.activator,
13932
13941
  default: function () {
@@ -14518,10 +14527,8 @@
14518
14527
 
14519
14528
  // Types
14520
14529
 
14521
- const breakpoints$1 = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14522
-
14523
14530
  const breakpointProps = (() => {
14524
- return breakpoints$1.reduce((props, val) => {
14531
+ return breakpoints.reduce((props, val) => {
14525
14532
  props[val] = {
14526
14533
  type: [Boolean, String, Number],
14527
14534
  default: false
@@ -14530,8 +14537,9 @@
14530
14537
  }, {});
14531
14538
  })();
14532
14539
  const offsetProps = (() => {
14533
- return breakpoints$1.reduce((props, val) => {
14534
- props['offset' + vue.capitalize(val)] = {
14540
+ return breakpoints.reduce((props, val) => {
14541
+ const offsetKey = 'offset' + vue.capitalize(val);
14542
+ props[offsetKey] = {
14535
14543
  type: [String, Number],
14536
14544
  default: null
14537
14545
  };
@@ -14539,8 +14547,9 @@
14539
14547
  }, {});
14540
14548
  })();
14541
14549
  const orderProps = (() => {
14542
- return breakpoints$1.reduce((props, val) => {
14543
- props['order' + vue.capitalize(val)] = {
14550
+ return breakpoints.reduce((props, val) => {
14551
+ const orderKey = 'order' + vue.capitalize(val);
14552
+ props[orderKey] = {
14544
14553
  type: [String, Number],
14545
14554
  default: null
14546
14555
  };
@@ -14638,13 +14647,12 @@
14638
14647
 
14639
14648
  // Types
14640
14649
 
14641
- const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14642
-
14643
14650
  const ALIGNMENT = ['start', 'end', 'center'];
14644
14651
  const SPACE = ['space-between', 'space-around', 'space-evenly'];
14645
14652
  function makeRowProps(prefix, def) {
14646
14653
  return breakpoints.reduce((props, val) => {
14647
- props[prefix + vue.capitalize(val)] = def();
14654
+ const prefixKey = prefix + vue.capitalize(val);
14655
+ props[prefixKey] = def();
14648
14656
  return props;
14649
14657
  }, {});
14650
14658
  }
@@ -14974,7 +14982,10 @@
14974
14982
  }, {
14975
14983
  default: () => [slots.default?.()]
14976
14984
  })]
14977
- }), [[vue.resolveDirective("intersect"), onIntersect, props.options]]));
14985
+ }), [[vue.resolveDirective("intersect"), {
14986
+ handler: onIntersect,
14987
+ options: props.options
14988
+ }, null]]));
14978
14989
  return {};
14979
14990
  }
14980
14991
  });
@@ -15951,9 +15962,9 @@
15951
15962
  frame = requestAnimationFrame(() => {
15952
15963
  const el = (root.value?.$el).querySelector('.v-img__img');
15953
15964
  if (!el) return;
15954
- const scrollHeight = scrollParent.clientHeight ?? document.documentElement.clientHeight;
15955
- const scrollPos = scrollParent.scrollTop ?? window.scrollY;
15956
- const top = intersectionRef.value.offsetTop;
15965
+ const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;
15966
+ const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;
15967
+ const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;
15957
15968
  const height = contentRect.value.height;
15958
15969
  const center = top + (height - scrollHeight) / 2;
15959
15970
  const translate = floor((scrollPos - center) * scale.value);
@@ -16035,10 +16046,7 @@
16035
16046
  useRender(() => {
16036
16047
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
16037
16048
  const [inputProps, _1] = filterInputProps(props);
16038
- const [controlProps, _2] = filterControlProps({
16039
- ...props,
16040
- multiple: false
16041
- });
16049
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
16042
16050
  const label = slots.label ? slots.label({
16043
16051
  label: props.label,
16044
16052
  props: {
@@ -16073,7 +16081,8 @@
16073
16081
  "type": props.type,
16074
16082
  "disabled": isDisabled.value,
16075
16083
  "readonly": isReadonly.value,
16076
- "aria-labelledby": label ? id.value : undefined
16084
+ "aria-labelledby": label ? id.value : undefined,
16085
+ "multiple": false
16077
16086
  }, controlAttrs, {
16078
16087
  "modelValue": model.value,
16079
16088
  "onUpdate:modelValue": $event => model.value = $event
@@ -16943,7 +16952,7 @@
16943
16952
  window.clearTimeout(activeTimeout);
16944
16953
  }
16945
16954
  useRender(() => {
16946
- const [overlayProps] = filterVOverlayProps(props);
16955
+ const [overlayProps] = VOverlay.filterProps(props);
16947
16956
  return vue.createVNode(VOverlay, vue.mergeProps({
16948
16957
  "ref": overlay,
16949
16958
  "class": ['v-snackbar', {
@@ -17038,7 +17047,7 @@
17038
17047
  useRender(() => {
17039
17048
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
17040
17049
  const [inputProps, _1] = filterInputProps(props);
17041
- const [controlProps, _2] = filterControlProps(props);
17050
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
17042
17051
  const control = vue.ref();
17043
17052
  function onClick() {
17044
17053
  control.value?.input?.click();
@@ -17171,28 +17180,17 @@
17171
17180
  name: 'VTab',
17172
17181
  props: {
17173
17182
  fixed: Boolean,
17174
- icon: [Boolean, String, Function, Object],
17175
- prependIcon: IconValue,
17176
- appendIcon: IconValue,
17177
- stacked: Boolean,
17178
17183
  title: String,
17179
- ripple: {
17180
- type: Boolean,
17181
- default: true
17182
- },
17183
- color: String,
17184
17184
  sliderColor: String,
17185
17185
  hideSlider: Boolean,
17186
17186
  direction: {
17187
17187
  type: String,
17188
17188
  default: 'horizontal'
17189
17189
  },
17190
- ...makeTagProps(),
17191
- ...makeRouterProps(),
17192
- ...makeGroupItemProps({
17193
- selectedClass: 'v-tab--selected'
17194
- }),
17195
- ...makeThemeProps()
17190
+ ...omit(makeVBtnProps({
17191
+ selectedClass: 'v-tab--selected',
17192
+ variant: 'text'
17193
+ }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])
17196
17194
  },
17197
17195
  setup(props, _ref) {
17198
17196
  let {
@@ -17242,7 +17240,7 @@
17242
17240
  }
17243
17241
  }
17244
17242
  useRender(() => {
17245
- const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled', 'selectedClass', 'value', 'color']);
17243
+ const [btnProps] = VBtn.filterProps(props);
17246
17244
  return vue.createVNode(VBtn, vue.mergeProps({
17247
17245
  "_as": "VTab",
17248
17246
  "symbol": VTabsSymbol,
@@ -17254,7 +17252,6 @@
17254
17252
  "active": false,
17255
17253
  "block": props.fixed,
17256
17254
  "maxWidth": props.fixed ? 300 : undefined,
17257
- "variant": "text",
17258
17255
  "rounded": 0
17259
17256
  }, btnProps, attrs, {
17260
17257
  "onGroup:selected": updateSlider
@@ -17499,7 +17496,13 @@
17499
17496
  });
17500
17497
  }
17501
17498
  function onInput(e) {
17502
- model.value = e.target.value;
17499
+ const el = e.target;
17500
+ const caretPosition = [el.selectionStart, el.selectionEnd];
17501
+ model.value = el.value;
17502
+ vue.nextTick(() => {
17503
+ el.selectionStart = caretPosition[0];
17504
+ el.selectionEnd = caretPosition[1];
17505
+ });
17503
17506
  }
17504
17507
  const sizerRef = vue.ref();
17505
17508
  function calculateInputHeight() {
@@ -17939,7 +17942,7 @@
17939
17942
  'aria-describedby': id.value
17940
17943
  }, props.activatorProps));
17941
17944
  useRender(() => {
17942
- const [overlayProps] = filterVOverlayProps(props);
17945
+ const [overlayProps] = VOverlay.filterProps(props);
17943
17946
  return vue.createVNode(VOverlay, vue.mergeProps({
17944
17947
  "ref": overlay,
17945
17948
  "class": ['v-tooltip'],
@@ -18757,6 +18760,7 @@
18757
18760
  const VDataTableRow = defineComponent({
18758
18761
  name: 'VDataTableRow',
18759
18762
  props: {
18763
+ index: Number,
18760
18764
  item: Object,
18761
18765
  onClick: Function
18762
18766
  },
@@ -18794,6 +18798,7 @@
18794
18798
  const item = props.item;
18795
18799
  const slotName = `item.${column.key}`;
18796
18800
  const slotProps = {
18801
+ index: props.index,
18797
18802
  item: props.item,
18798
18803
  columns: columns.value,
18799
18804
  isSelected,
@@ -18805,7 +18810,7 @@
18805
18810
  if (column.key === 'data-table-select') {
18806
18811
  return slots['item.data-table-select']?.(slotProps) ?? vue.createVNode(VCheckboxBtn, {
18807
18812
  "modelValue": isSelected([item]),
18808
- "onClick": () => toggleSelect(item)
18813
+ "onClick": vue.withModifiers(() => toggleSelect(item), ['stop'])
18809
18814
  }, null);
18810
18815
  }
18811
18816
  if (column.key === 'data-table-expand') {
@@ -18813,10 +18818,10 @@
18813
18818
  "icon": isExpanded(item) ? '$collapse' : '$expand',
18814
18819
  "size": "small",
18815
18820
  "variant": "text",
18816
- "onClick": () => toggleExpand(item)
18821
+ "onClick": vue.withModifiers(() => toggleExpand(item), ['stop'])
18817
18822
  }, null);
18818
18823
  }
18819
- return item.columns[column.key];
18824
+ return getPropertyFromItem(item.columns, column.key);
18820
18825
  }
18821
18826
  }))]));
18822
18827
  }
@@ -18916,6 +18921,7 @@
18916
18921
  item
18917
18922
  });
18918
18923
  },
18924
+ "index": index,
18919
18925
  "item": item
18920
18926
  }, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
18921
18927
  })]));
@@ -19144,6 +19150,19 @@
19144
19150
  itemValue: 'id'
19145
19151
  })
19146
19152
  }, 'v-data-table-item');
19153
+ function add(obj, key, value) {
19154
+ const path = key.split('.');
19155
+ while (path.length > 1) {
19156
+ const part = path.shift();
19157
+ if (obj[part] == null) {
19158
+ obj[part] = {};
19159
+ }
19160
+ if (typeof obj[part] === 'object') {
19161
+ obj = obj[part];
19162
+ }
19163
+ }
19164
+ obj[path[0]] = value;
19165
+ }
19147
19166
  function useDataTableItems(props, columns) {
19148
19167
  const {
19149
19168
  items
@@ -19153,7 +19172,7 @@
19153
19172
  ...item,
19154
19173
  type: 'item',
19155
19174
  columns: columns.value.reduce((obj, column) => {
19156
- obj[column.key] = getPropertyFromItem(item.raw, column.value ?? column.key);
19175
+ add(obj, column.key, getPropertyFromItem(item.raw, column.value ?? column.key));
19157
19176
  return obj;
19158
19177
  }, {})
19159
19178
  };
@@ -19691,7 +19710,9 @@
19691
19710
  "height": props.height
19692
19711
  }, {
19693
19712
  top: slots.top,
19694
- default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [vue.createVNode("thead", {
19713
+ default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
19714
+ columns
19715
+ }), vue.createVNode("thead", {
19695
19716
  "class": "v-data-table__thead",
19696
19717
  "role": "rowgroup"
19697
19718
  }, [slots.headers ? slots.headers() : vue.createVNode(VDataTableHeaders, {
@@ -20234,7 +20255,7 @@
20234
20255
  locale
20235
20256
  };
20236
20257
  }
20237
- const version$1 = "3.1.10";
20258
+ const version$1 = "3.1.12";
20238
20259
  createVuetify$1.version = version$1;
20239
20260
 
20240
20261
  // Vue's inject() can only be used in setup
@@ -20246,7 +20267,7 @@
20246
20267
  }
20247
20268
  }
20248
20269
 
20249
- const version = "3.1.10";
20270
+ const version = "3.1.12";
20250
20271
 
20251
20272
  const createVuetify = function () {
20252
20273
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};