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

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 (217) hide show
  1. package/CHANGELOG.md +22 -3
  2. package/dist/json/attributes.json +3339 -3327
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +160 -160
  5. package/dist/json/tags.json +4 -1
  6. package/dist/json/web-types.json +6197 -6075
  7. package/dist/vuetify-labs.cjs +161 -73
  8. package/dist/vuetify-labs.css +5656 -5635
  9. package/dist/vuetify-labs.d.ts +207 -143
  10. package/dist/vuetify-labs.esm.js +161 -73
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +161 -73
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +139 -66
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +4033 -4027
  17. package/dist/vuetify.d.ts +95 -71
  18. package/dist/vuetify.esm.js +139 -66
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +139 -66
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +226 -226
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VColorPicker/VColorPickerEdit.css +5 -0
  26. package/lib/components/VColorPicker/VColorPickerEdit.js +8 -1
  27. package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  28. package/lib/components/VColorPicker/VColorPickerEdit.sass +5 -0
  29. package/lib/components/VColorPicker/VColorPickerPreview.js +8 -1
  30. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  31. package/lib/components/VColorPicker/util/index.d.ts +1 -0
  32. package/lib/components/VColorPicker/util/index.js +20 -10
  33. package/lib/components/VColorPicker/util/index.js.map +1 -1
  34. package/lib/components/VConfirmEdit/VConfirmEdit.js +1 -1
  35. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  36. package/lib/components/VDataIterator/VDataIterator.d.ts +2 -2
  37. package/lib/components/VDataIterator/VDataIterator.js +1 -1
  38. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTable.css +2 -1
  40. package/lib/components/VDataTable/VDataTable.d.ts +6 -4
  41. package/lib/components/VDataTable/VDataTable.js +1 -1
  42. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  43. package/lib/components/VDataTable/VDataTable.sass +2 -1
  44. package/lib/components/VDataTable/VDataTableRows.d.ts +14 -11
  45. package/lib/components/VDataTable/VDataTableRows.js +9 -0
  46. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  47. package/lib/components/VDataTable/VDataTableServer.d.ts +4 -2
  48. package/lib/components/VDataTable/VDataTableServer.js +1 -1
  49. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  50. package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -2
  51. package/lib/components/VDataTable/VDataTableVirtual.js +1 -1
  52. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  53. package/lib/components/VDataTable/composables/group.d.ts +13 -5
  54. package/lib/components/VDataTable/composables/group.js +11 -5
  55. package/lib/components/VDataTable/composables/group.js.map +1 -1
  56. package/lib/components/VDataTable/composables/headers.js +53 -42
  57. package/lib/components/VDataTable/composables/headers.js.map +1 -1
  58. package/lib/components/VDataTable/composables/paginate.d.ts +3 -3
  59. package/lib/components/VDataTable/composables/paginate.js.map +1 -1
  60. package/lib/components/VDataTable/composables/sort.js +1 -1
  61. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  62. package/lib/components/VDataTable/types.d.ts +7 -1
  63. package/lib/components/VDataTable/types.js.map +1 -1
  64. package/lib/components/VNumberInput/VNumberInput.js +1 -0
  65. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  66. package/lib/components/VSlider/VSliderThumb.css +2 -2
  67. package/lib/components/VSlider/VSliderThumb.sass +2 -2
  68. package/lib/components/VTable/VTable.css +2 -2
  69. package/lib/components/VTable/VTable.sass +4 -4
  70. package/lib/components/VTreeview/VTreeviewChildren.d.ts +20 -2
  71. package/lib/components/VTreeview/VTreeviewChildren.js +7 -2
  72. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  73. package/lib/entry-bundler.js +1 -1
  74. package/lib/framework.d.ts +56 -56
  75. package/lib/framework.js +1 -1
  76. package/lib/labs/VColorInput/VColorInput.css +15 -0
  77. package/lib/labs/VColorInput/VColorInput.d.ts +287 -215
  78. package/lib/labs/VColorInput/VColorInput.js +23 -8
  79. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  80. package/lib/labs/VColorInput/VColorInput.sass +8 -0
  81. package/lib/labs/VColorInput/_variables.scss +2 -0
  82. package/lib/labs/VVideo/VVideoControls.js +1 -1
  83. package/lib/labs/VVideo/VVideoControls.js.map +1 -1
  84. package/lib/labs/VVideo/VVideoVolume.js +1 -1
  85. package/lib/labs/VVideo/VVideoVolume.js.map +1 -1
  86. package/lib/locale/af.d.ts +17 -0
  87. package/lib/locale/af.js +17 -0
  88. package/lib/locale/af.js.map +1 -1
  89. package/lib/locale/ar.d.ts +17 -0
  90. package/lib/locale/ar.js +17 -0
  91. package/lib/locale/ar.js.map +1 -1
  92. package/lib/locale/az.d.ts +17 -0
  93. package/lib/locale/az.js +17 -0
  94. package/lib/locale/az.js.map +1 -1
  95. package/lib/locale/bg.d.ts +17 -0
  96. package/lib/locale/bg.js +17 -0
  97. package/lib/locale/bg.js.map +1 -1
  98. package/lib/locale/ca.d.ts +17 -0
  99. package/lib/locale/ca.js +17 -0
  100. package/lib/locale/ca.js.map +1 -1
  101. package/lib/locale/ckb.d.ts +17 -0
  102. package/lib/locale/ckb.js +17 -0
  103. package/lib/locale/ckb.js.map +1 -1
  104. package/lib/locale/cs.d.ts +17 -0
  105. package/lib/locale/cs.js +17 -0
  106. package/lib/locale/cs.js.map +1 -1
  107. package/lib/locale/da.d.ts +17 -0
  108. package/lib/locale/da.js +17 -0
  109. package/lib/locale/da.js.map +1 -1
  110. package/lib/locale/de.d.ts +17 -0
  111. package/lib/locale/de.js +17 -0
  112. package/lib/locale/de.js.map +1 -1
  113. package/lib/locale/el.d.ts +17 -0
  114. package/lib/locale/el.js +17 -0
  115. package/lib/locale/el.js.map +1 -1
  116. package/lib/locale/en.d.ts +17 -0
  117. package/lib/locale/en.js +17 -0
  118. package/lib/locale/en.js.map +1 -1
  119. package/lib/locale/es.d.ts +17 -0
  120. package/lib/locale/es.js +17 -0
  121. package/lib/locale/es.js.map +1 -1
  122. package/lib/locale/et.d.ts +17 -0
  123. package/lib/locale/et.js +17 -0
  124. package/lib/locale/et.js.map +1 -1
  125. package/lib/locale/fa.d.ts +17 -0
  126. package/lib/locale/fa.js +17 -0
  127. package/lib/locale/fa.js.map +1 -1
  128. package/lib/locale/fi.d.ts +17 -0
  129. package/lib/locale/fi.js +17 -0
  130. package/lib/locale/fi.js.map +1 -1
  131. package/lib/locale/fr.d.ts +17 -0
  132. package/lib/locale/fr.js +17 -0
  133. package/lib/locale/fr.js.map +1 -1
  134. package/lib/locale/he.d.ts +17 -0
  135. package/lib/locale/he.js +17 -0
  136. package/lib/locale/he.js.map +1 -1
  137. package/lib/locale/hr.d.ts +17 -0
  138. package/lib/locale/hr.js +17 -0
  139. package/lib/locale/hr.js.map +1 -1
  140. package/lib/locale/hu.d.ts +17 -0
  141. package/lib/locale/hu.js +17 -0
  142. package/lib/locale/hu.js.map +1 -1
  143. package/lib/locale/id.d.ts +17 -0
  144. package/lib/locale/id.js +17 -0
  145. package/lib/locale/id.js.map +1 -1
  146. package/lib/locale/it.d.ts +17 -0
  147. package/lib/locale/it.js +17 -0
  148. package/lib/locale/it.js.map +1 -1
  149. package/lib/locale/ja.d.ts +17 -0
  150. package/lib/locale/ja.js +17 -0
  151. package/lib/locale/ja.js.map +1 -1
  152. package/lib/locale/km.d.ts +17 -0
  153. package/lib/locale/km.js +17 -0
  154. package/lib/locale/km.js.map +1 -1
  155. package/lib/locale/ko.d.ts +17 -0
  156. package/lib/locale/ko.js +17 -0
  157. package/lib/locale/ko.js.map +1 -1
  158. package/lib/locale/lt.d.ts +17 -0
  159. package/lib/locale/lt.js +17 -0
  160. package/lib/locale/lt.js.map +1 -1
  161. package/lib/locale/lv.d.ts +17 -0
  162. package/lib/locale/lv.js +17 -0
  163. package/lib/locale/lv.js.map +1 -1
  164. package/lib/locale/nl.d.ts +17 -0
  165. package/lib/locale/nl.js +17 -0
  166. package/lib/locale/nl.js.map +1 -1
  167. package/lib/locale/no.d.ts +17 -0
  168. package/lib/locale/no.js +17 -0
  169. package/lib/locale/no.js.map +1 -1
  170. package/lib/locale/pl.d.ts +17 -0
  171. package/lib/locale/pl.js +17 -0
  172. package/lib/locale/pl.js.map +1 -1
  173. package/lib/locale/pt.d.ts +17 -0
  174. package/lib/locale/pt.js +17 -0
  175. package/lib/locale/pt.js.map +1 -1
  176. package/lib/locale/ro.d.ts +17 -0
  177. package/lib/locale/ro.js +17 -0
  178. package/lib/locale/ro.js.map +1 -1
  179. package/lib/locale/ru.d.ts +17 -0
  180. package/lib/locale/ru.js +17 -0
  181. package/lib/locale/ru.js.map +1 -1
  182. package/lib/locale/sk.d.ts +17 -0
  183. package/lib/locale/sk.js +17 -0
  184. package/lib/locale/sk.js.map +1 -1
  185. package/lib/locale/sl.d.ts +17 -0
  186. package/lib/locale/sl.js +17 -0
  187. package/lib/locale/sl.js.map +1 -1
  188. package/lib/locale/sr-Cyrl.d.ts +17 -0
  189. package/lib/locale/sr-Cyrl.js +17 -0
  190. package/lib/locale/sr-Cyrl.js.map +1 -1
  191. package/lib/locale/sr-Latn.d.ts +17 -0
  192. package/lib/locale/sr-Latn.js +17 -0
  193. package/lib/locale/sr-Latn.js.map +1 -1
  194. package/lib/locale/sv.d.ts +17 -0
  195. package/lib/locale/sv.js +17 -0
  196. package/lib/locale/sv.js.map +1 -1
  197. package/lib/locale/th.d.ts +17 -0
  198. package/lib/locale/th.js +17 -0
  199. package/lib/locale/th.js.map +1 -1
  200. package/lib/locale/tr.d.ts +17 -0
  201. package/lib/locale/tr.js +17 -0
  202. package/lib/locale/tr.js.map +1 -1
  203. package/lib/locale/uk.d.ts +17 -0
  204. package/lib/locale/uk.js +17 -0
  205. package/lib/locale/uk.js.map +1 -1
  206. package/lib/locale/vi.d.ts +17 -0
  207. package/lib/locale/vi.js +17 -0
  208. package/lib/locale/vi.js.map +1 -1
  209. package/lib/locale/zh-Hans.d.ts +17 -0
  210. package/lib/locale/zh-Hans.js +17 -0
  211. package/lib/locale/zh-Hans.js.map +1 -1
  212. package/lib/locale/zh-Hant.d.ts +17 -0
  213. package/lib/locale/zh-Hant.js +17 -0
  214. package/lib/locale/zh-Hant.js.map +1 -1
  215. package/lib/util/getScrollParent.js +3 -1
  216. package/lib/util/getScrollParent.js.map +1 -1
  217. 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-07-31
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1609,7 +1609,9 @@ function getScrollParents(el, stopAt) {
1609
1609
  function hasScrollbar(el) {
1610
1610
  if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
1611
1611
  const style = window.getComputedStyle(el);
1612
- return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1612
+ const hasVerticalScrollbar = style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1613
+ const hasHorizontalScrollbar = style.overflowX === 'scroll' || style.overflowX === 'auto' && el.scrollWidth > el.clientWidth;
1614
+ return hasVerticalScrollbar || hasHorizontalScrollbar;
1613
1615
  }
1614
1616
  function isPotentiallyScrollable(el) {
1615
1617
  if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
@@ -2721,6 +2723,23 @@ var en = {
2721
2723
  unmute: 'Unmute',
2722
2724
  enterFullscreen: 'Full screen',
2723
2725
  exitFullscreen: 'Exit full screen'
2726
+ },
2727
+ colorPicker: {
2728
+ ariaLabel: {
2729
+ eyedropper: 'Select color with eyedropper',
2730
+ hueSlider: 'Hue',
2731
+ alphaSlider: 'Alpha',
2732
+ redInput: 'Red value',
2733
+ greenInput: 'Green value',
2734
+ blueInput: 'Blue value',
2735
+ alphaInput: 'Alpha value',
2736
+ hueInput: 'Hue value',
2737
+ saturationInput: 'Saturation value',
2738
+ lightnessInput: 'Lightness value',
2739
+ hexInput: 'HEX value',
2740
+ hexaInput: 'HEX with alpha value',
2741
+ changeFormat: 'Change color format'
2742
+ }
2724
2743
  }
2725
2744
  };
2726
2745
 
@@ -16218,7 +16237,8 @@ const rgba = {
16218
16237
  getColor: (c, v) => ({
16219
16238
  ...c,
16220
16239
  r: Number(v)
16221
- })
16240
+ }),
16241
+ localeKey: 'redInput'
16222
16242
  }, {
16223
16243
  label: 'G',
16224
16244
  max: 255,
@@ -16227,7 +16247,8 @@ const rgba = {
16227
16247
  getColor: (c, v) => ({
16228
16248
  ...c,
16229
16249
  g: Number(v)
16230
- })
16250
+ }),
16251
+ localeKey: 'greenInput'
16231
16252
  }, {
16232
16253
  label: 'B',
16233
16254
  max: 255,
@@ -16236,7 +16257,8 @@ const rgba = {
16236
16257
  getColor: (c, v) => ({
16237
16258
  ...c,
16238
16259
  b: Number(v)
16239
- })
16260
+ }),
16261
+ localeKey: 'blueInput'
16240
16262
  }, {
16241
16263
  label: 'A',
16242
16264
  max: 1,
@@ -16250,7 +16272,8 @@ const rgba = {
16250
16272
  getColor: (c, v) => ({
16251
16273
  ...c,
16252
16274
  a: Number(v)
16253
- })
16275
+ }),
16276
+ localeKey: 'alphaInput'
16254
16277
  }],
16255
16278
  to: HSVtoRGB,
16256
16279
  from: RGBtoHSV
@@ -16272,7 +16295,8 @@ const hsla = {
16272
16295
  getColor: (c, v) => ({
16273
16296
  ...c,
16274
16297
  h: Number(v)
16275
- })
16298
+ }),
16299
+ localeKey: 'hueInput'
16276
16300
  }, {
16277
16301
  label: 'S',
16278
16302
  max: 1,
@@ -16281,7 +16305,8 @@ const hsla = {
16281
16305
  getColor: (c, v) => ({
16282
16306
  ...c,
16283
16307
  s: Number(v)
16284
- })
16308
+ }),
16309
+ localeKey: 'saturationInput'
16285
16310
  }, {
16286
16311
  label: 'L',
16287
16312
  max: 1,
@@ -16290,7 +16315,8 @@ const hsla = {
16290
16315
  getColor: (c, v) => ({
16291
16316
  ...c,
16292
16317
  l: Number(v)
16293
- })
16318
+ }),
16319
+ localeKey: 'lightnessInput'
16294
16320
  }, {
16295
16321
  label: 'A',
16296
16322
  max: 1,
@@ -16304,7 +16330,8 @@ const hsla = {
16304
16330
  getColor: (c, v) => ({
16305
16331
  ...c,
16306
16332
  a: Number(v)
16307
- })
16333
+ }),
16334
+ localeKey: 'alphaInput'
16308
16335
  }],
16309
16336
  to: HSVtoHSL,
16310
16337
  from: HSLtoHSV
@@ -16320,7 +16347,8 @@ const hexa = {
16320
16347
  inputs: [{
16321
16348
  label: 'HEXA',
16322
16349
  getValue: c => c,
16323
- getColor: (c, v) => v
16350
+ getColor: (c, v) => v,
16351
+ localeKey: 'hexaInput'
16324
16352
  }],
16325
16353
  to: HSVtoHex,
16326
16354
  from: HexToHSV
@@ -16330,7 +16358,8 @@ const hex = {
16330
16358
  inputs: [{
16331
16359
  label: 'HEX',
16332
16360
  getValue: c => c.slice(0, 7),
16333
- getColor: (c, v) => v
16361
+ getColor: (c, v) => v,
16362
+ localeKey: 'hexInput'
16334
16363
  }]
16335
16364
  };
16336
16365
  const modes = {
@@ -16379,6 +16408,9 @@ const VColorPickerEdit = defineComponent({
16379
16408
  let {
16380
16409
  emit
16381
16410
  } = _ref2;
16411
+ const {
16412
+ t
16413
+ } = useLocale();
16382
16414
  const enabledModes = computed(() => {
16383
16415
  return props.modes.map(key => ({
16384
16416
  ...modes[key],
@@ -16393,11 +16425,13 @@ const VColorPickerEdit = defineComponent({
16393
16425
  let {
16394
16426
  getValue,
16395
16427
  getColor,
16428
+ localeKey,
16396
16429
  ...inputProps
16397
16430
  } = _ref3;
16398
16431
  return {
16399
16432
  ...mode.inputProps,
16400
16433
  ...inputProps,
16434
+ ariaLabel: t(`$vuetify.colorPicker.ariaLabel.${localeKey}`),
16401
16435
  disabled: props.disabled,
16402
16436
  value: color && getValue(color),
16403
16437
  onChange: e => {
@@ -16415,6 +16449,7 @@ const VColorPickerEdit = defineComponent({
16415
16449
  "icon": "$unfold",
16416
16450
  "size": "x-small",
16417
16451
  "variant": "plain",
16452
+ "aria-label": t('$vuetify.colorPicker.ariaLabel.changeFormat'),
16418
16453
  "onClick": () => {
16419
16454
  const mi = enabledModes.value.findIndex(m => m.name === props.mode);
16420
16455
  emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name);
@@ -17180,6 +17215,9 @@ const VColorPickerPreview = defineComponent({
17180
17215
  let {
17181
17216
  emit
17182
17217
  } = _ref;
17218
+ const {
17219
+ t
17220
+ } = useLocale();
17183
17221
  const abortController = new AbortController();
17184
17222
  onUnmounted(() => abortController.abort());
17185
17223
  async function openEyeDropper() {
@@ -17205,6 +17243,7 @@ const VColorPickerPreview = defineComponent({
17205
17243
  "class": "v-color-picker-preview__eye-dropper",
17206
17244
  "key": "eyeDropper"
17207
17245
  }, [createVNode(VBtn, {
17246
+ "aria-label": t('$vuetify.colorPicker.ariaLabel.eyedropper'),
17208
17247
  "density": "comfortable",
17209
17248
  "disabled": props.disabled,
17210
17249
  "icon": "$eyeDropper",
@@ -17220,6 +17259,7 @@ const VColorPickerPreview = defineComponent({
17220
17259
  "class": "v-color-picker-preview__sliders"
17221
17260
  }, [createVNode(VSlider, {
17222
17261
  "class": "v-color-picker-preview__track v-color-picker-preview__hue",
17262
+ "name": t('$vuetify.colorPicker.ariaLabel.hueSlider'),
17223
17263
  "modelValue": props.color?.h,
17224
17264
  "onUpdate:modelValue": h => emit('update:color', {
17225
17265
  ...(props.color ?? nullColor),
@@ -17235,6 +17275,7 @@ const VColorPickerPreview = defineComponent({
17235
17275
  "hideDetails": true
17236
17276
  }, null), !props.hideAlpha && createVNode(VSlider, {
17237
17277
  "class": "v-color-picker-preview__track v-color-picker-preview__alpha",
17278
+ "name": t('$vuetify.colorPicker.ariaLabel.alphaSlider'),
17238
17279
  "modelValue": props.color?.a ?? 1,
17239
17280
  "onUpdate:modelValue": a => emit('update:color', {
17240
17281
  ...(props.color ?? nullColor),
@@ -19755,7 +19796,7 @@ function groupItems(items, groupBy) {
19755
19796
  });
19756
19797
  return groups;
19757
19798
  }
19758
- function flattenItems(items, opened) {
19799
+ function flattenItems(items, opened, hasSummary) {
19759
19800
  const flatItems = [];
19760
19801
  for (const item of items) {
19761
19802
  // TODO: make this better
@@ -19764,7 +19805,13 @@ function flattenItems(items, opened) {
19764
19805
  flatItems.push(item);
19765
19806
  }
19766
19807
  if (opened.has(item.id) || item.value == null) {
19767
- flatItems.push(...flattenItems(item.items, opened));
19808
+ flatItems.push(...flattenItems(item.items, opened, hasSummary));
19809
+ if (hasSummary) {
19810
+ flatItems.push({
19811
+ ...item,
19812
+ type: 'group-summary'
19813
+ });
19814
+ }
19768
19815
  }
19769
19816
  } else {
19770
19817
  flatItems.push(item);
@@ -19772,11 +19819,11 @@ function flattenItems(items, opened) {
19772
19819
  }
19773
19820
  return flatItems;
19774
19821
  }
19775
- function useGroupedItems(items, groupBy, opened) {
19822
+ function useGroupedItems(items, groupBy, opened, hasSummary) {
19776
19823
  const flatItems = computed(() => {
19777
19824
  if (!groupBy.value.length) return items.value;
19778
19825
  const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));
19779
- return flattenItems(groupedItems, opened.value);
19826
+ return flattenItems(groupedItems, opened.value, toValue(hasSummary));
19780
19827
  });
19781
19828
  return {
19782
19829
  flatItems
@@ -20394,7 +20441,7 @@ const VDataIterator = genericComponent()({
20394
20441
  });
20395
20442
  const {
20396
20443
  flatItems
20397
- } = useGroupedItems(sortedItems, groupBy, opened);
20444
+ } = useGroupedItems(sortedItems, groupBy, opened, false);
20398
20445
  const itemsLength = toRef(() => flatItems.value.length);
20399
20446
  const {
20400
20447
  startIndex,
@@ -21099,11 +21146,16 @@ function parseFixedColumns(items) {
21099
21146
  if (item.fixed === true) {
21100
21147
  item.fixed = 'start';
21101
21148
  }
21102
- const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
21103
21149
  if (item.fixed === side) {
21104
- if (orderedChildren) {
21105
- for (const child of orderedChildren) {
21106
- setFixed(child, side, side);
21150
+ if (item.children) {
21151
+ if (side === 'start') {
21152
+ for (let i = item.children.length - 1; i >= 0; i--) {
21153
+ setFixed(item.children[i], side, side);
21154
+ }
21155
+ } else {
21156
+ for (let i = 0; i < item.children.length; i++) {
21157
+ setFixed(item.children[i], side, side);
21158
+ }
21107
21159
  }
21108
21160
  } else {
21109
21161
  if (!seenFixed && side === 'start') {
@@ -21118,57 +21170,63 @@ function parseFixedColumns(items) {
21118
21170
  seenFixed = true;
21119
21171
  }
21120
21172
  } else {
21121
- if (orderedChildren) {
21122
- for (const child of orderedChildren) {
21123
- setFixed(child, side);
21173
+ if (item.children) {
21174
+ if (side === 'start') {
21175
+ for (let i = item.children.length - 1; i >= 0; i--) {
21176
+ setFixed(item.children[i], side);
21177
+ }
21178
+ } else {
21179
+ for (let i = 0; i < item.children.length; i++) {
21180
+ setFixed(item.children[i], side);
21181
+ }
21124
21182
  }
21125
21183
  } else {
21126
21184
  seenFixed = false;
21127
21185
  }
21128
21186
  }
21129
21187
  }
21130
- for (const item of items.toReversed()) {
21131
- setFixed(item, 'start');
21188
+ for (let i = items.length - 1; i >= 0; i--) {
21189
+ setFixed(items[i], 'start');
21132
21190
  }
21133
- for (const item of items) {
21134
- setFixed(item, 'end');
21135
- }
21136
- function setFixedOffset(item) {
21137
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
21138
- if (!item) return offset;
21139
- if (item.children) {
21140
- item.fixedOffset = offset;
21141
- for (const child of item.children) {
21142
- offset = setFixedOffset(child, offset);
21143
- }
21144
- } else if (item.fixed && item.fixed !== 'end') {
21145
- item.fixedOffset = offset;
21146
- offset += parseFloat(item.width || '0') || 0;
21147
- }
21148
- return offset;
21191
+ for (let i = 0; i < items.length; i++) {
21192
+ setFixed(items[i], 'end');
21149
21193
  }
21150
21194
  let fixedOffset = 0;
21151
- for (const item of items) {
21152
- fixedOffset = setFixedOffset(item, fixedOffset);
21195
+ for (let i = 0; i < items.length; i++) {
21196
+ fixedOffset = setFixedOffset(items[i], fixedOffset);
21153
21197
  }
21154
- function setFixedEndOffset(item) {
21155
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
21156
- if (!item) return offset;
21157
- if (item.children) {
21158
- item.fixedEndOffset = offset;
21159
- for (const child of item.children) {
21160
- offset = setFixedEndOffset(child, offset);
21161
- }
21162
- } else if (item.fixed === 'end') {
21163
- item.fixedEndOffset = offset;
21164
- offset += parseFloat(item.width || '0') || 0;
21198
+ let fixedEndOffset = 0;
21199
+ for (let i = items.length - 1; i >= 0; i--) {
21200
+ fixedEndOffset = setFixedEndOffset(items[i], fixedEndOffset);
21201
+ }
21202
+ }
21203
+ function setFixedOffset(item) {
21204
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
21205
+ if (!item) return offset;
21206
+ if (item.children) {
21207
+ item.fixedOffset = offset;
21208
+ for (const child of item.children) {
21209
+ offset = setFixedOffset(child, offset);
21165
21210
  }
21166
- return offset;
21211
+ } else if (item.fixed && item.fixed !== 'end') {
21212
+ item.fixedOffset = offset;
21213
+ offset += parseFloat(item.width || '0') || 0;
21167
21214
  }
21168
- let fixedEndOffset = 0;
21169
- for (const item of items.toReversed()) {
21170
- fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
21215
+ return offset;
21216
+ }
21217
+ function setFixedEndOffset(item) {
21218
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
21219
+ if (!item) return offset;
21220
+ if (item.children) {
21221
+ item.fixedEndOffset = offset;
21222
+ for (const child of item.children) {
21223
+ offset = setFixedEndOffset(child, offset);
21224
+ }
21225
+ } else if (item.fixed === 'end') {
21226
+ item.fixedEndOffset = offset;
21227
+ offset += parseFloat(item.width || '0') || 0;
21171
21228
  }
21229
+ return offset;
21172
21230
  }
21173
21231
  function parse(items, maxDepth) {
21174
21232
  const headers = [];
@@ -21834,6 +21892,15 @@ const VDataTableRows = genericComponent()({
21834
21892
  "item": item
21835
21893
  }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);
21836
21894
  }
21895
+ if (item.type === 'group-summary') {
21896
+ const slotProps = {
21897
+ index,
21898
+ item,
21899
+ columns: columns.value,
21900
+ toggleGroup
21901
+ };
21902
+ return slots['group-summary']?.(slotProps) ?? '';
21903
+ }
21837
21904
  const slotProps = {
21838
21905
  index,
21839
21906
  item: item.raw,
@@ -22083,7 +22150,7 @@ const VDataTable = genericComponent()({
22083
22150
  });
22084
22151
  const {
22085
22152
  flatItems
22086
- } = useGroupedItems(sortedItems, groupBy, opened);
22153
+ } = useGroupedItems(sortedItems, groupBy, opened, () => !!slots['group-summary']);
22087
22154
  const itemsLength = computed(() => flatItems.value.length);
22088
22155
  const {
22089
22156
  startIndex,
@@ -22271,7 +22338,7 @@ const VDataTableVirtual = genericComponent()({
22271
22338
  });
22272
22339
  const {
22273
22340
  flatItems
22274
- } = useGroupedItems(sortedItems, groupBy, opened);
22341
+ } = useGroupedItems(sortedItems, groupBy, opened, () => !!slots['group-summary']);
22275
22342
  const allItems = computed(() => extractRows(flatItems.value));
22276
22343
  const {
22277
22344
  isSelected,
@@ -22500,7 +22567,7 @@ const VDataTableServer = genericComponent()({
22500
22567
  });
22501
22568
  const {
22502
22569
  flatItems
22503
- } = useGroupedItems(items, groupBy, opened);
22570
+ } = useGroupedItems(items, groupBy, opened, () => !!slots['group-summary']);
22504
22571
  const {
22505
22572
  isSelected,
22506
22573
  select,
@@ -26253,6 +26320,7 @@ const VNumberInput = genericComponent()({
26253
26320
  if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
26254
26321
  if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
26255
26322
  e.preventDefault();
26323
+ e.stopPropagation();
26256
26324
  clampModel();
26257
26325
  // _model is controlled, so need to wait until props['modelValue'] is updated
26258
26326
  await nextTick();
@@ -30773,14 +30841,19 @@ const VTreeviewChildren = genericComponent()({
30773
30841
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
30774
30842
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
30775
30843
  };
30776
- return createVNode(VTreeviewItem, mergeProps({
30844
+ return renderSlot(slots.header, {
30845
+ props: listItemProps,
30846
+ item: item.raw,
30847
+ internalItem: item,
30848
+ loading
30849
+ }, () => createVNode(VTreeviewItem, mergeProps({
30777
30850
  "ref": el => activatorItems.value[index] = el
30778
30851
  }, listItemProps, {
30779
30852
  "hideActions": props.hideActions,
30780
30853
  "indentLines": indentLines.node,
30781
30854
  "value": props.returnObject ? item.raw : itemProps.value,
30782
30855
  "loading": loading
30783
- }), slotsWithItem);
30856
+ }), slotsWithItem));
30784
30857
  },
30785
30858
  default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
30786
30859
  "items": children,
@@ -31471,7 +31544,7 @@ function createVuetify$1() {
31471
31544
  };
31472
31545
  });
31473
31546
  }
31474
- const version$1 = "3.9.3-master.2025-07-30";
31547
+ const version$1 = "3.9.3-master.2025-07-31";
31475
31548
  createVuetify$1.version = version$1;
31476
31549
 
31477
31550
  // Vue's inject() can only be used in setup
@@ -31496,7 +31569,7 @@ const createVuetify = function () {
31496
31569
  ...options
31497
31570
  });
31498
31571
  };
31499
- const version = "3.9.3-master.2025-07-30";
31572
+ const version = "3.9.3-master.2025-07-31";
31500
31573
  createVuetify.version = version;
31501
31574
 
31502
31575
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };