@vuetify/nightly 3.9.3-master.2025-07-30 → 3.9.3-master.2025-08-01

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 (222) hide show
  1. package/CHANGELOG.md +27 -3
  2. package/dist/json/attributes.json +2099 -2091
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +154 -154
  5. package/dist/json/tags.json +4 -2
  6. package/dist/json/web-types.json +3784 -3672
  7. package/dist/vuetify-labs.cjs +193 -96
  8. package/dist/vuetify-labs.css +5517 -5496
  9. package/dist/vuetify-labs.d.ts +211 -161
  10. package/dist/vuetify-labs.esm.js +193 -96
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +193 -96
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +171 -89
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2952 -2946
  17. package/dist/vuetify.d.ts +99 -89
  18. package/dist/vuetify.esm.js +171 -89
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +171 -89
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +228 -227
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VApp/VApp.d.ts +0 -25
  26. package/lib/components/VApp/VApp.js +3 -3
  27. package/lib/components/VApp/VApp.js.map +1 -1
  28. package/lib/components/VColorPicker/VColorPickerEdit.css +5 -0
  29. package/lib/components/VColorPicker/VColorPickerEdit.js +8 -1
  30. package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  31. package/lib/components/VColorPicker/VColorPickerEdit.sass +5 -0
  32. package/lib/components/VColorPicker/VColorPickerPreview.js +8 -1
  33. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  34. package/lib/components/VColorPicker/util/index.d.ts +1 -0
  35. package/lib/components/VColorPicker/util/index.js +20 -10
  36. package/lib/components/VColorPicker/util/index.js.map +1 -1
  37. package/lib/components/VConfirmEdit/VConfirmEdit.js +1 -1
  38. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  39. package/lib/components/VDataIterator/VDataIterator.d.ts +2 -2
  40. package/lib/components/VDataIterator/VDataIterator.js +1 -1
  41. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTable.css +2 -1
  43. package/lib/components/VDataTable/VDataTable.d.ts +6 -4
  44. package/lib/components/VDataTable/VDataTable.js +1 -1
  45. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  46. package/lib/components/VDataTable/VDataTable.sass +2 -1
  47. package/lib/components/VDataTable/VDataTableRows.d.ts +14 -11
  48. package/lib/components/VDataTable/VDataTableRows.js +9 -0
  49. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  50. package/lib/components/VDataTable/VDataTableServer.d.ts +4 -2
  51. package/lib/components/VDataTable/VDataTableServer.js +1 -1
  52. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  53. package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -2
  54. package/lib/components/VDataTable/VDataTableVirtual.js +1 -1
  55. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  56. package/lib/components/VDataTable/composables/group.d.ts +13 -5
  57. package/lib/components/VDataTable/composables/group.js +11 -5
  58. package/lib/components/VDataTable/composables/group.js.map +1 -1
  59. package/lib/components/VDataTable/composables/headers.js +53 -42
  60. package/lib/components/VDataTable/composables/headers.js.map +1 -1
  61. package/lib/components/VDataTable/composables/paginate.d.ts +3 -3
  62. package/lib/components/VDataTable/composables/paginate.js.map +1 -1
  63. package/lib/components/VDataTable/composables/sort.js +1 -1
  64. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  65. package/lib/components/VDataTable/types.d.ts +7 -1
  66. package/lib/components/VDataTable/types.js.map +1 -1
  67. package/lib/components/VNumberInput/VNumberInput.js +1 -0
  68. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  69. package/lib/components/VSlider/VSliderThumb.css +2 -2
  70. package/lib/components/VSlider/VSliderThumb.sass +2 -2
  71. package/lib/components/VTable/VTable.css +2 -2
  72. package/lib/components/VTable/VTable.js +32 -20
  73. package/lib/components/VTable/VTable.js.map +1 -1
  74. package/lib/components/VTable/VTable.sass +4 -4
  75. package/lib/components/VTreeview/VTreeviewChildren.d.ts +20 -2
  76. package/lib/components/VTreeview/VTreeviewChildren.js +7 -2
  77. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  78. package/lib/entry-bundler.js +1 -1
  79. package/lib/framework.d.ts +60 -60
  80. package/lib/framework.js +1 -1
  81. package/lib/labs/VColorInput/VColorInput.css +15 -0
  82. package/lib/labs/VColorInput/VColorInput.d.ts +287 -215
  83. package/lib/labs/VColorInput/VColorInput.js +23 -8
  84. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  85. package/lib/labs/VColorInput/VColorInput.sass +8 -0
  86. package/lib/labs/VColorInput/_variables.scss +2 -0
  87. package/lib/labs/VVideo/VVideoControls.js +1 -1
  88. package/lib/labs/VVideo/VVideoControls.js.map +1 -1
  89. package/lib/labs/VVideo/VVideoVolume.js +1 -1
  90. package/lib/labs/VVideo/VVideoVolume.js.map +1 -1
  91. package/lib/locale/af.d.ts +17 -0
  92. package/lib/locale/af.js +17 -0
  93. package/lib/locale/af.js.map +1 -1
  94. package/lib/locale/ar.d.ts +17 -0
  95. package/lib/locale/ar.js +17 -0
  96. package/lib/locale/ar.js.map +1 -1
  97. package/lib/locale/az.d.ts +17 -0
  98. package/lib/locale/az.js +17 -0
  99. package/lib/locale/az.js.map +1 -1
  100. package/lib/locale/bg.d.ts +17 -0
  101. package/lib/locale/bg.js +17 -0
  102. package/lib/locale/bg.js.map +1 -1
  103. package/lib/locale/ca.d.ts +17 -0
  104. package/lib/locale/ca.js +17 -0
  105. package/lib/locale/ca.js.map +1 -1
  106. package/lib/locale/ckb.d.ts +17 -0
  107. package/lib/locale/ckb.js +17 -0
  108. package/lib/locale/ckb.js.map +1 -1
  109. package/lib/locale/cs.d.ts +17 -0
  110. package/lib/locale/cs.js +17 -0
  111. package/lib/locale/cs.js.map +1 -1
  112. package/lib/locale/da.d.ts +17 -0
  113. package/lib/locale/da.js +17 -0
  114. package/lib/locale/da.js.map +1 -1
  115. package/lib/locale/de.d.ts +17 -0
  116. package/lib/locale/de.js +17 -0
  117. package/lib/locale/de.js.map +1 -1
  118. package/lib/locale/el.d.ts +17 -0
  119. package/lib/locale/el.js +17 -0
  120. package/lib/locale/el.js.map +1 -1
  121. package/lib/locale/en.d.ts +17 -0
  122. package/lib/locale/en.js +17 -0
  123. package/lib/locale/en.js.map +1 -1
  124. package/lib/locale/es.d.ts +17 -0
  125. package/lib/locale/es.js +17 -0
  126. package/lib/locale/es.js.map +1 -1
  127. package/lib/locale/et.d.ts +17 -0
  128. package/lib/locale/et.js +17 -0
  129. package/lib/locale/et.js.map +1 -1
  130. package/lib/locale/fa.d.ts +17 -0
  131. package/lib/locale/fa.js +17 -0
  132. package/lib/locale/fa.js.map +1 -1
  133. package/lib/locale/fi.d.ts +17 -0
  134. package/lib/locale/fi.js +17 -0
  135. package/lib/locale/fi.js.map +1 -1
  136. package/lib/locale/fr.d.ts +17 -0
  137. package/lib/locale/fr.js +17 -0
  138. package/lib/locale/fr.js.map +1 -1
  139. package/lib/locale/he.d.ts +17 -0
  140. package/lib/locale/he.js +17 -0
  141. package/lib/locale/he.js.map +1 -1
  142. package/lib/locale/hr.d.ts +17 -0
  143. package/lib/locale/hr.js +17 -0
  144. package/lib/locale/hr.js.map +1 -1
  145. package/lib/locale/hu.d.ts +17 -0
  146. package/lib/locale/hu.js +17 -0
  147. package/lib/locale/hu.js.map +1 -1
  148. package/lib/locale/id.d.ts +17 -0
  149. package/lib/locale/id.js +17 -0
  150. package/lib/locale/id.js.map +1 -1
  151. package/lib/locale/it.d.ts +17 -0
  152. package/lib/locale/it.js +17 -0
  153. package/lib/locale/it.js.map +1 -1
  154. package/lib/locale/ja.d.ts +17 -0
  155. package/lib/locale/ja.js +17 -0
  156. package/lib/locale/ja.js.map +1 -1
  157. package/lib/locale/km.d.ts +17 -0
  158. package/lib/locale/km.js +17 -0
  159. package/lib/locale/km.js.map +1 -1
  160. package/lib/locale/ko.d.ts +17 -0
  161. package/lib/locale/ko.js +17 -0
  162. package/lib/locale/ko.js.map +1 -1
  163. package/lib/locale/lt.d.ts +17 -0
  164. package/lib/locale/lt.js +17 -0
  165. package/lib/locale/lt.js.map +1 -1
  166. package/lib/locale/lv.d.ts +17 -0
  167. package/lib/locale/lv.js +17 -0
  168. package/lib/locale/lv.js.map +1 -1
  169. package/lib/locale/nl.d.ts +17 -0
  170. package/lib/locale/nl.js +17 -0
  171. package/lib/locale/nl.js.map +1 -1
  172. package/lib/locale/no.d.ts +17 -0
  173. package/lib/locale/no.js +17 -0
  174. package/lib/locale/no.js.map +1 -1
  175. package/lib/locale/pl.d.ts +17 -0
  176. package/lib/locale/pl.js +17 -0
  177. package/lib/locale/pl.js.map +1 -1
  178. package/lib/locale/pt.d.ts +17 -0
  179. package/lib/locale/pt.js +17 -0
  180. package/lib/locale/pt.js.map +1 -1
  181. package/lib/locale/ro.d.ts +17 -0
  182. package/lib/locale/ro.js +17 -0
  183. package/lib/locale/ro.js.map +1 -1
  184. package/lib/locale/ru.d.ts +17 -0
  185. package/lib/locale/ru.js +17 -0
  186. package/lib/locale/ru.js.map +1 -1
  187. package/lib/locale/sk.d.ts +17 -0
  188. package/lib/locale/sk.js +17 -0
  189. package/lib/locale/sk.js.map +1 -1
  190. package/lib/locale/sl.d.ts +17 -0
  191. package/lib/locale/sl.js +17 -0
  192. package/lib/locale/sl.js.map +1 -1
  193. package/lib/locale/sr-Cyrl.d.ts +17 -0
  194. package/lib/locale/sr-Cyrl.js +17 -0
  195. package/lib/locale/sr-Cyrl.js.map +1 -1
  196. package/lib/locale/sr-Latn.d.ts +17 -0
  197. package/lib/locale/sr-Latn.js +17 -0
  198. package/lib/locale/sr-Latn.js.map +1 -1
  199. package/lib/locale/sv.d.ts +17 -0
  200. package/lib/locale/sv.js +17 -0
  201. package/lib/locale/sv.js.map +1 -1
  202. package/lib/locale/th.d.ts +17 -0
  203. package/lib/locale/th.js +17 -0
  204. package/lib/locale/th.js.map +1 -1
  205. package/lib/locale/tr.d.ts +17 -0
  206. package/lib/locale/tr.js +17 -0
  207. package/lib/locale/tr.js.map +1 -1
  208. package/lib/locale/uk.d.ts +17 -0
  209. package/lib/locale/uk.js +17 -0
  210. package/lib/locale/uk.js.map +1 -1
  211. package/lib/locale/vi.d.ts +17 -0
  212. package/lib/locale/vi.js +17 -0
  213. package/lib/locale/vi.js.map +1 -1
  214. package/lib/locale/zh-Hans.d.ts +17 -0
  215. package/lib/locale/zh-Hans.js +17 -0
  216. package/lib/locale/zh-Hans.js.map +1 -1
  217. package/lib/locale/zh-Hant.d.ts +17 -0
  218. package/lib/locale/zh-Hant.js +17 -0
  219. package/lib/locale/zh-Hant.js.map +1 -1
  220. package/lib/util/getScrollParent.js +3 -1
  221. package/lib/util/getScrollParent.js.map +1 -1
  222. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.3-master.2025-07-30
2
+ * Vuetify v3.9.3-master.2025-08-01
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1653,7 +1653,9 @@
1653
1653
  function hasScrollbar(el) {
1654
1654
  if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
1655
1655
  const style = window.getComputedStyle(el);
1656
- return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1656
+ const hasVerticalScrollbar = style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1657
+ const hasHorizontalScrollbar = style.overflowX === 'scroll' || style.overflowX === 'auto' && el.scrollWidth > el.clientWidth;
1658
+ return hasVerticalScrollbar || hasHorizontalScrollbar;
1657
1659
  }
1658
1660
  function isPotentiallyScrollable(el) {
1659
1661
  if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
@@ -2257,6 +2259,23 @@
2257
2259
  unmute: 'Unmute',
2258
2260
  enterFullscreen: 'Full screen',
2259
2261
  exitFullscreen: 'Exit full screen'
2262
+ },
2263
+ colorPicker: {
2264
+ ariaLabel: {
2265
+ eyedropper: 'Select color with eyedropper',
2266
+ hueSlider: 'Hue',
2267
+ alphaSlider: 'Alpha',
2268
+ redInput: 'Red value',
2269
+ greenInput: 'Green value',
2270
+ blueInput: 'Blue value',
2271
+ alphaInput: 'Alpha value',
2272
+ hueInput: 'Hue value',
2273
+ saturationInput: 'Saturation value',
2274
+ lightnessInput: 'Lightness value',
2275
+ hexInput: 'HEX value',
2276
+ hexaInput: 'HEX with alpha value',
2277
+ changeFormat: 'Change color format'
2278
+ }
2260
2279
  }
2261
2280
  };
2262
2281
 
@@ -2855,9 +2874,9 @@
2855
2874
 
2856
2875
  const makeVAppProps = propsFactory({
2857
2876
  ...makeComponentProps(),
2858
- ...makeLayoutProps({
2877
+ ...omit(makeLayoutProps({
2859
2878
  fullHeight: true
2860
- }),
2879
+ }), ['fullHeight']),
2861
2880
  ...makeThemeProps()
2862
2881
  }, 'VApp');
2863
2882
  const VApp = genericComponent()({
@@ -15982,7 +16001,8 @@
15982
16001
  getColor: (c, v) => ({
15983
16002
  ...c,
15984
16003
  r: Number(v)
15985
- })
16004
+ }),
16005
+ localeKey: 'redInput'
15986
16006
  }, {
15987
16007
  label: 'G',
15988
16008
  max: 255,
@@ -15991,7 +16011,8 @@
15991
16011
  getColor: (c, v) => ({
15992
16012
  ...c,
15993
16013
  g: Number(v)
15994
- })
16014
+ }),
16015
+ localeKey: 'greenInput'
15995
16016
  }, {
15996
16017
  label: 'B',
15997
16018
  max: 255,
@@ -16000,7 +16021,8 @@
16000
16021
  getColor: (c, v) => ({
16001
16022
  ...c,
16002
16023
  b: Number(v)
16003
- })
16024
+ }),
16025
+ localeKey: 'blueInput'
16004
16026
  }, {
16005
16027
  label: 'A',
16006
16028
  max: 1,
@@ -16014,7 +16036,8 @@
16014
16036
  getColor: (c, v) => ({
16015
16037
  ...c,
16016
16038
  a: Number(v)
16017
- })
16039
+ }),
16040
+ localeKey: 'alphaInput'
16018
16041
  }],
16019
16042
  to: HSVtoRGB,
16020
16043
  from: RGBtoHSV
@@ -16036,7 +16059,8 @@
16036
16059
  getColor: (c, v) => ({
16037
16060
  ...c,
16038
16061
  h: Number(v)
16039
- })
16062
+ }),
16063
+ localeKey: 'hueInput'
16040
16064
  }, {
16041
16065
  label: 'S',
16042
16066
  max: 1,
@@ -16045,7 +16069,8 @@
16045
16069
  getColor: (c, v) => ({
16046
16070
  ...c,
16047
16071
  s: Number(v)
16048
- })
16072
+ }),
16073
+ localeKey: 'saturationInput'
16049
16074
  }, {
16050
16075
  label: 'L',
16051
16076
  max: 1,
@@ -16054,7 +16079,8 @@
16054
16079
  getColor: (c, v) => ({
16055
16080
  ...c,
16056
16081
  l: Number(v)
16057
- })
16082
+ }),
16083
+ localeKey: 'lightnessInput'
16058
16084
  }, {
16059
16085
  label: 'A',
16060
16086
  max: 1,
@@ -16068,7 +16094,8 @@
16068
16094
  getColor: (c, v) => ({
16069
16095
  ...c,
16070
16096
  a: Number(v)
16071
- })
16097
+ }),
16098
+ localeKey: 'alphaInput'
16072
16099
  }],
16073
16100
  to: HSVtoHSL,
16074
16101
  from: HSLtoHSV
@@ -16084,7 +16111,8 @@
16084
16111
  inputs: [{
16085
16112
  label: 'HEXA',
16086
16113
  getValue: c => c,
16087
- getColor: (c, v) => v
16114
+ getColor: (c, v) => v,
16115
+ localeKey: 'hexaInput'
16088
16116
  }],
16089
16117
  to: HSVtoHex,
16090
16118
  from: HexToHSV
@@ -16094,7 +16122,8 @@
16094
16122
  inputs: [{
16095
16123
  label: 'HEX',
16096
16124
  getValue: c => c.slice(0, 7),
16097
- getColor: (c, v) => v
16125
+ getColor: (c, v) => v,
16126
+ localeKey: 'hexInput'
16098
16127
  }]
16099
16128
  };
16100
16129
  const modes = {
@@ -16143,6 +16172,9 @@
16143
16172
  let {
16144
16173
  emit
16145
16174
  } = _ref2;
16175
+ const {
16176
+ t
16177
+ } = useLocale();
16146
16178
  const enabledModes = vue.computed(() => {
16147
16179
  return props.modes.map(key => ({
16148
16180
  ...modes[key],
@@ -16157,11 +16189,13 @@
16157
16189
  let {
16158
16190
  getValue,
16159
16191
  getColor,
16192
+ localeKey,
16160
16193
  ...inputProps
16161
16194
  } = _ref3;
16162
16195
  return {
16163
16196
  ...mode.inputProps,
16164
16197
  ...inputProps,
16198
+ ariaLabel: t(`$vuetify.colorPicker.ariaLabel.${localeKey}`),
16165
16199
  disabled: props.disabled,
16166
16200
  value: color && getValue(color),
16167
16201
  onChange: e => {
@@ -16179,6 +16213,7 @@
16179
16213
  "icon": "$unfold",
16180
16214
  "size": "x-small",
16181
16215
  "variant": "plain",
16216
+ "aria-label": t('$vuetify.colorPicker.ariaLabel.changeFormat'),
16182
16217
  "onClick": () => {
16183
16218
  const mi = enabledModes.value.findIndex(m => m.name === props.mode);
16184
16219
  emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name);
@@ -16944,6 +16979,9 @@
16944
16979
  let {
16945
16980
  emit
16946
16981
  } = _ref;
16982
+ const {
16983
+ t
16984
+ } = useLocale();
16947
16985
  const abortController = new AbortController();
16948
16986
  vue.onUnmounted(() => abortController.abort());
16949
16987
  async function openEyeDropper() {
@@ -16969,6 +17007,7 @@
16969
17007
  "class": "v-color-picker-preview__eye-dropper",
16970
17008
  "key": "eyeDropper"
16971
17009
  }, [vue.createVNode(VBtn, {
17010
+ "aria-label": t('$vuetify.colorPicker.ariaLabel.eyedropper'),
16972
17011
  "density": "comfortable",
16973
17012
  "disabled": props.disabled,
16974
17013
  "icon": "$eyeDropper",
@@ -16984,6 +17023,7 @@
16984
17023
  "class": "v-color-picker-preview__sliders"
16985
17024
  }, [vue.createVNode(VSlider, {
16986
17025
  "class": "v-color-picker-preview__track v-color-picker-preview__hue",
17026
+ "name": t('$vuetify.colorPicker.ariaLabel.hueSlider'),
16987
17027
  "modelValue": props.color?.h,
16988
17028
  "onUpdate:modelValue": h => emit('update:color', {
16989
17029
  ...(props.color ?? nullColor),
@@ -16999,6 +17039,7 @@
16999
17039
  "hideDetails": true
17000
17040
  }, null), !props.hideAlpha && vue.createVNode(VSlider, {
17001
17041
  "class": "v-color-picker-preview__track v-color-picker-preview__alpha",
17042
+ "name": t('$vuetify.colorPicker.ariaLabel.alphaSlider'),
17002
17043
  "modelValue": props.color?.a ?? 1,
17003
17044
  "onUpdate:modelValue": a => emit('update:color', {
17004
17045
  ...(props.color ?? nullColor),
@@ -19519,7 +19560,7 @@
19519
19560
  });
19520
19561
  return groups;
19521
19562
  }
19522
- function flattenItems(items, opened) {
19563
+ function flattenItems(items, opened, hasSummary) {
19523
19564
  const flatItems = [];
19524
19565
  for (const item of items) {
19525
19566
  // TODO: make this better
@@ -19528,7 +19569,13 @@
19528
19569
  flatItems.push(item);
19529
19570
  }
19530
19571
  if (opened.has(item.id) || item.value == null) {
19531
- flatItems.push(...flattenItems(item.items, opened));
19572
+ flatItems.push(...flattenItems(item.items, opened, hasSummary));
19573
+ if (hasSummary) {
19574
+ flatItems.push({
19575
+ ...item,
19576
+ type: 'group-summary'
19577
+ });
19578
+ }
19532
19579
  }
19533
19580
  } else {
19534
19581
  flatItems.push(item);
@@ -19536,11 +19583,11 @@
19536
19583
  }
19537
19584
  return flatItems;
19538
19585
  }
19539
- function useGroupedItems(items, groupBy, opened) {
19586
+ function useGroupedItems(items, groupBy, opened, hasSummary) {
19540
19587
  const flatItems = vue.computed(() => {
19541
19588
  if (!groupBy.value.length) return items.value;
19542
19589
  const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));
19543
- return flattenItems(groupedItems, opened.value);
19590
+ return flattenItems(groupedItems, opened.value, vue.toValue(hasSummary));
19544
19591
  });
19545
19592
  return {
19546
19593
  flatItems
@@ -20158,7 +20205,7 @@
20158
20205
  });
20159
20206
  const {
20160
20207
  flatItems
20161
- } = useGroupedItems(sortedItems, groupBy, opened);
20208
+ } = useGroupedItems(sortedItems, groupBy, opened, false);
20162
20209
  const itemsLength = vue.toRef(() => flatItems.value.length);
20163
20210
  const {
20164
20211
  startIndex,
@@ -20863,11 +20910,16 @@
20863
20910
  if (item.fixed === true) {
20864
20911
  item.fixed = 'start';
20865
20912
  }
20866
- const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
20867
20913
  if (item.fixed === side) {
20868
- if (orderedChildren) {
20869
- for (const child of orderedChildren) {
20870
- setFixed(child, side, side);
20914
+ if (item.children) {
20915
+ if (side === 'start') {
20916
+ for (let i = item.children.length - 1; i >= 0; i--) {
20917
+ setFixed(item.children[i], side, side);
20918
+ }
20919
+ } else {
20920
+ for (let i = 0; i < item.children.length; i++) {
20921
+ setFixed(item.children[i], side, side);
20922
+ }
20871
20923
  }
20872
20924
  } else {
20873
20925
  if (!seenFixed && side === 'start') {
@@ -20882,57 +20934,63 @@
20882
20934
  seenFixed = true;
20883
20935
  }
20884
20936
  } else {
20885
- if (orderedChildren) {
20886
- for (const child of orderedChildren) {
20887
- setFixed(child, side);
20937
+ if (item.children) {
20938
+ if (side === 'start') {
20939
+ for (let i = item.children.length - 1; i >= 0; i--) {
20940
+ setFixed(item.children[i], side);
20941
+ }
20942
+ } else {
20943
+ for (let i = 0; i < item.children.length; i++) {
20944
+ setFixed(item.children[i], side);
20945
+ }
20888
20946
  }
20889
20947
  } else {
20890
20948
  seenFixed = false;
20891
20949
  }
20892
20950
  }
20893
20951
  }
20894
- for (const item of items.toReversed()) {
20895
- setFixed(item, 'start');
20952
+ for (let i = items.length - 1; i >= 0; i--) {
20953
+ setFixed(items[i], 'start');
20896
20954
  }
20897
- for (const item of items) {
20898
- setFixed(item, 'end');
20899
- }
20900
- function setFixedOffset(item) {
20901
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20902
- if (!item) return offset;
20903
- if (item.children) {
20904
- item.fixedOffset = offset;
20905
- for (const child of item.children) {
20906
- offset = setFixedOffset(child, offset);
20907
- }
20908
- } else if (item.fixed && item.fixed !== 'end') {
20909
- item.fixedOffset = offset;
20910
- offset += parseFloat(item.width || '0') || 0;
20911
- }
20912
- return offset;
20955
+ for (let i = 0; i < items.length; i++) {
20956
+ setFixed(items[i], 'end');
20913
20957
  }
20914
20958
  let fixedOffset = 0;
20915
- for (const item of items) {
20916
- fixedOffset = setFixedOffset(item, fixedOffset);
20959
+ for (let i = 0; i < items.length; i++) {
20960
+ fixedOffset = setFixedOffset(items[i], fixedOffset);
20917
20961
  }
20918
- function setFixedEndOffset(item) {
20919
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20920
- if (!item) return offset;
20921
- if (item.children) {
20922
- item.fixedEndOffset = offset;
20923
- for (const child of item.children) {
20924
- offset = setFixedEndOffset(child, offset);
20925
- }
20926
- } else if (item.fixed === 'end') {
20927
- item.fixedEndOffset = offset;
20928
- offset += parseFloat(item.width || '0') || 0;
20962
+ let fixedEndOffset = 0;
20963
+ for (let i = items.length - 1; i >= 0; i--) {
20964
+ fixedEndOffset = setFixedEndOffset(items[i], fixedEndOffset);
20965
+ }
20966
+ }
20967
+ function setFixedOffset(item) {
20968
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20969
+ if (!item) return offset;
20970
+ if (item.children) {
20971
+ item.fixedOffset = offset;
20972
+ for (const child of item.children) {
20973
+ offset = setFixedOffset(child, offset);
20929
20974
  }
20930
- return offset;
20975
+ } else if (item.fixed && item.fixed !== 'end') {
20976
+ item.fixedOffset = offset;
20977
+ offset += parseFloat(item.width || '0') || 0;
20931
20978
  }
20932
- let fixedEndOffset = 0;
20933
- for (const item of items.toReversed()) {
20934
- fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
20979
+ return offset;
20980
+ }
20981
+ function setFixedEndOffset(item) {
20982
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20983
+ if (!item) return offset;
20984
+ if (item.children) {
20985
+ item.fixedEndOffset = offset;
20986
+ for (const child of item.children) {
20987
+ offset = setFixedEndOffset(child, offset);
20988
+ }
20989
+ } else if (item.fixed === 'end') {
20990
+ item.fixedEndOffset = offset;
20991
+ offset += parseFloat(item.width || '0') || 0;
20935
20992
  }
20993
+ return offset;
20936
20994
  }
20937
20995
  function parse(items, maxDepth) {
20938
20996
  const headers = [];
@@ -21598,6 +21656,15 @@
21598
21656
  "item": item
21599
21657
  }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);
21600
21658
  }
21659
+ if (item.type === 'group-summary') {
21660
+ const slotProps = {
21661
+ index,
21662
+ item,
21663
+ columns: columns.value,
21664
+ toggleGroup
21665
+ };
21666
+ return slots['group-summary']?.(slotProps) ?? '';
21667
+ }
21601
21668
  const slotProps = {
21602
21669
  index,
21603
21670
  item: item.raw,
@@ -21634,8 +21701,6 @@
21634
21701
  }
21635
21702
  });
21636
21703
 
21637
- // Types
21638
-
21639
21704
  const makeVTableProps = propsFactory({
21640
21705
  fixedHeader: Boolean,
21641
21706
  fixedFooter: Boolean,
@@ -21665,26 +21730,37 @@
21665
21730
  const {
21666
21731
  densityClasses
21667
21732
  } = useDensity(props);
21668
- useRender(() => vue.createVNode(props.tag, {
21669
- "class": vue.normalizeClass(['v-table', {
21670
- 'v-table--fixed-height': !!props.height,
21671
- 'v-table--fixed-header': props.fixedHeader,
21672
- 'v-table--fixed-footer': props.fixedFooter,
21673
- 'v-table--has-top': !!slots.top,
21674
- 'v-table--has-bottom': !!slots.bottom,
21675
- 'v-table--hover': props.hover,
21676
- 'v-table--striped-even': props.striped === 'even',
21677
- 'v-table--striped-odd': props.striped === 'odd'
21678
- }, themeClasses.value, densityClasses.value, props.class]),
21679
- "style": vue.normalizeStyle(props.style)
21680
- }, {
21681
- default: () => [slots.top?.(), slots.default ? vue.createElementVNode("div", {
21682
- "class": "v-table__wrapper",
21683
- "style": {
21684
- height: convertToUnit(props.height)
21733
+ useRender(() => {
21734
+ const tableContentDefaults = {
21735
+ VCheckboxBtn: {
21736
+ density: props.density
21685
21737
  }
21686
- }, [vue.createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
21687
- }));
21738
+ };
21739
+ return vue.createVNode(props.tag, {
21740
+ "class": vue.normalizeClass(['v-table', {
21741
+ 'v-table--fixed-height': !!props.height,
21742
+ 'v-table--fixed-header': props.fixedHeader,
21743
+ 'v-table--fixed-footer': props.fixedFooter,
21744
+ 'v-table--has-top': !!slots.top,
21745
+ 'v-table--has-bottom': !!slots.bottom,
21746
+ 'v-table--hover': props.hover,
21747
+ 'v-table--striped-even': props.striped === 'even',
21748
+ 'v-table--striped-odd': props.striped === 'odd'
21749
+ }, themeClasses.value, densityClasses.value, props.class]),
21750
+ "style": vue.normalizeStyle(props.style)
21751
+ }, {
21752
+ default: () => [slots.top?.(), vue.createVNode(VDefaultsProvider, {
21753
+ "defaults": tableContentDefaults
21754
+ }, {
21755
+ default: () => [slots.default ? vue.createElementVNode("div", {
21756
+ "class": "v-table__wrapper",
21757
+ "style": {
21758
+ height: convertToUnit(props.height)
21759
+ }
21760
+ }, [vue.createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.()]
21761
+ }), slots.bottom?.()]
21762
+ });
21763
+ });
21688
21764
  return {};
21689
21765
  }
21690
21766
  });
@@ -21847,7 +21923,7 @@
21847
21923
  });
21848
21924
  const {
21849
21925
  flatItems
21850
- } = useGroupedItems(sortedItems, groupBy, opened);
21926
+ } = useGroupedItems(sortedItems, groupBy, opened, () => !!slots['group-summary']);
21851
21927
  const itemsLength = vue.computed(() => flatItems.value.length);
21852
21928
  const {
21853
21929
  startIndex,
@@ -22035,7 +22111,7 @@
22035
22111
  });
22036
22112
  const {
22037
22113
  flatItems
22038
- } = useGroupedItems(sortedItems, groupBy, opened);
22114
+ } = useGroupedItems(sortedItems, groupBy, opened, () => !!slots['group-summary']);
22039
22115
  const allItems = vue.computed(() => extractRows(flatItems.value));
22040
22116
  const {
22041
22117
  isSelected,
@@ -22264,7 +22340,7 @@
22264
22340
  });
22265
22341
  const {
22266
22342
  flatItems
22267
- } = useGroupedItems(items, groupBy, opened);
22343
+ } = useGroupedItems(items, groupBy, opened, () => !!slots['group-summary']);
22268
22344
  const {
22269
22345
  isSelected,
22270
22346
  select,
@@ -26017,6 +26093,7 @@
26017
26093
  if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
26018
26094
  if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
26019
26095
  e.preventDefault();
26096
+ e.stopPropagation();
26020
26097
  clampModel();
26021
26098
  // _model is controlled, so need to wait until props['modelValue'] is updated
26022
26099
  await vue.nextTick();
@@ -30537,14 +30614,19 @@
30537
30614
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
30538
30615
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
30539
30616
  };
30540
- return vue.createVNode(VTreeviewItem, vue.mergeProps({
30617
+ return renderSlot(slots.header, {
30618
+ props: listItemProps,
30619
+ item: item.raw,
30620
+ internalItem: item,
30621
+ loading
30622
+ }, () => vue.createVNode(VTreeviewItem, vue.mergeProps({
30541
30623
  "ref": el => activatorItems.value[index] = el
30542
30624
  }, listItemProps, {
30543
30625
  "hideActions": props.hideActions,
30544
30626
  "indentLines": indentLines.node,
30545
30627
  "value": props.returnObject ? item.raw : itemProps.value,
30546
30628
  "loading": loading
30547
- }), slotsWithItem);
30629
+ }), slotsWithItem));
30548
30630
  },
30549
30631
  default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
30550
30632
  "items": children,
@@ -31346,12 +31428,23 @@
31346
31428
 
31347
31429
  // Types
31348
31430
 
31431
+ const availablePipLocations = ['prepend', 'prepend-inner', 'append', 'append-inner'];
31349
31432
  const makeVColorInputProps = propsFactory({
31350
- pip: Boolean,
31433
+ hidePip: Boolean,
31434
+ colorPip: Boolean,
31351
31435
  pipIcon: {
31352
31436
  type: String,
31353
31437
  default: '$color'
31354
31438
  },
31439
+ pipLocation: {
31440
+ type: String,
31441
+ default: 'prepend',
31442
+ validator: v => availablePipLocations.includes(v)
31443
+ },
31444
+ pipVariant: {
31445
+ type: String,
31446
+ default: 'text'
31447
+ },
31355
31448
  ...makeFocusProps(),
31356
31449
  ...makeVConfirmEditProps(),
31357
31450
  ...makeVTextFieldProps(),
@@ -31395,8 +31488,15 @@
31395
31488
  useRender(() => {
31396
31489
  const confirmEditProps = VConfirmEdit.filterProps(props);
31397
31490
  const colorPickerProps = VColorPicker.filterProps(omit(props, ['active', 'color']));
31398
- const textFieldProps = VTextField.filterProps(omit(props, ['prependInnerIcon']));
31399
- const hasPrepend = !!(slots.prepend || props.pipIcon);
31491
+ const textFieldProps = VTextField.filterProps(props);
31492
+ const slotWithPip = props.hidePip ? undefined : {
31493
+ [props.pipLocation]: arg => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VAvatar, {
31494
+ "class": "v-color-input__pip",
31495
+ "color": props.colorPip ? model.value : undefined,
31496
+ "variant": props.pipVariant,
31497
+ "icon": props.pipIcon
31498
+ }, null), slots[props.pipLocation]?.(arg)])
31499
+ };
31400
31500
  return vue.createVNode(VTextField, vue.mergeProps(textFieldProps, {
31401
31501
  "class": ['v-color-input', props.class],
31402
31502
  "style": props.style,
@@ -31412,10 +31512,7 @@
31412
31512
  }
31413
31513
  }), {
31414
31514
  ...slots,
31415
- prepend: props.pipIcon ? arg => vue.createElementVNode(vue.Fragment, null, [hasPrepend && vue.createVNode(VIcon, {
31416
- "color": props.pip ? model.value : undefined,
31417
- "icon": props.pipIcon
31418
- }, null), slots.prepend?.(arg)]) : undefined,
31515
+ ...slotWithPip,
31419
31516
  default: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VMenu, {
31420
31517
  "modelValue": menu.value,
31421
31518
  "onUpdate:modelValue": $event => menu.value = $event,
@@ -35160,7 +35257,7 @@
35160
35257
  };
35161
35258
  });
35162
35259
  }
35163
- const version$1 = "3.9.3-master.2025-07-30";
35260
+ const version$1 = "3.9.3-master.2025-08-01";
35164
35261
  createVuetify$1.version = version$1;
35165
35262
 
35166
35263
  // Vue's inject() can only be used in setup
@@ -35458,7 +35555,7 @@
35458
35555
 
35459
35556
  /* eslint-disable local-rules/sort-imports */
35460
35557
 
35461
- const version = "3.9.3-master.2025-07-30";
35558
+ const version = "3.9.3-master.2025-08-01";
35462
35559
 
35463
35560
  /* eslint-disable local-rules/sort-imports */
35464
35561