@vuetify/nightly 3.9.0-beta.1-dev.2025-07-05 → 3.9.0-dev.2025-07-15

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 (79) hide show
  1. package/CHANGELOG.md +4 -113
  2. package/dist/json/attributes.json +3780 -3744
  3. package/dist/json/importMap-labs.json +16 -16
  4. package/dist/json/importMap.json +190 -190
  5. package/dist/json/tags.json +9 -0
  6. package/dist/json/web-types.json +6526 -6437
  7. package/dist/vuetify-labs.cjs +136 -34
  8. package/dist/vuetify-labs.css +4604 -4547
  9. package/dist/vuetify-labs.d.ts +280 -185
  10. package/dist/vuetify-labs.esm.js +136 -34
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +136 -34
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +135 -33
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3908 -3851
  17. package/dist/vuetify.d.ts +280 -185
  18. package/dist/vuetify.esm.js +135 -33
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +135 -33
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +1089 -1085
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +39 -14
  26. package/lib/components/VAutocomplete/VAutocomplete.js +3 -2
  27. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  28. package/lib/components/VCombobox/VCombobox.d.ts +39 -14
  29. package/lib/components/VCombobox/VCombobox.js +3 -2
  30. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  31. package/lib/components/VDataIterator/composables/items.d.ts +2 -1
  32. package/lib/components/VDataIterator/composables/items.js.map +1 -1
  33. package/lib/components/VDataTable/types.d.ts +1 -1
  34. package/lib/components/VDataTable/types.js.map +1 -1
  35. package/lib/components/VDatePicker/VDatePicker.js +2 -1
  36. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  37. package/lib/components/VList/VList.d.ts +24 -27
  38. package/lib/components/VList/VList.js +2 -5
  39. package/lib/components/VList/VList.js.map +1 -1
  40. package/lib/components/VList/VListItem.js +7 -1
  41. package/lib/components/VList/VListItem.js.map +1 -1
  42. package/lib/components/VSelect/VSelect.d.ts +58 -22
  43. package/lib/components/VSelect/VSelect.js +3 -2
  44. package/lib/components/VSelect/VSelect.js.map +1 -1
  45. package/lib/components/VTreeview/VTreeview.d.ts +229 -167
  46. package/lib/components/VTreeview/VTreeview.js +7 -3
  47. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  48. package/lib/components/VTreeview/VTreeviewChildren.d.ts +81 -10
  49. package/lib/components/VTreeview/VTreeviewChildren.js +50 -11
  50. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  51. package/lib/components/VTreeview/VTreeviewItem.css +57 -0
  52. package/lib/components/VTreeview/VTreeviewItem.d.ts +119 -94
  53. package/lib/components/VTreeview/VTreeviewItem.js +13 -3
  54. package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
  55. package/lib/components/VTreeview/VTreeviewItem.sass +60 -0
  56. package/lib/components/VTreeview/_variables.scss +15 -0
  57. package/lib/composables/filter.d.ts +1 -0
  58. package/lib/composables/filter.js +1 -1
  59. package/lib/composables/filter.js.map +1 -1
  60. package/lib/composables/list-items.d.ts +14 -1
  61. package/lib/composables/list-items.js +9 -3
  62. package/lib/composables/list-items.js.map +1 -1
  63. package/lib/entry-bundler.js +1 -1
  64. package/lib/entry-bundler.js.map +1 -1
  65. package/lib/framework.d.ts +65 -64
  66. package/lib/framework.js +1 -1
  67. package/lib/framework.js.map +1 -1
  68. package/lib/labs/VCalendar/VCalendar.js +1 -1
  69. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  70. package/lib/util/helpers.d.ts +3 -0
  71. package/lib/util/helpers.js +4 -0
  72. package/lib/util/helpers.js.map +1 -1
  73. package/lib/util/indentLines.d.ts +17 -0
  74. package/lib/util/indentLines.js +34 -0
  75. package/lib/util/indentLines.js.map +1 -0
  76. package/lib/util/index.d.ts +1 -0
  77. package/lib/util/index.js +1 -0
  78. package/lib/util/index.js.map +1 -1
  79. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.0-beta.1-dev.2025-07-05
2
+ * Vuetify v3.9.0-dev.2025-07-15
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -550,6 +550,10 @@
550
550
  return child.type !== vue.Fragment || ensureValidVNode(child.children);
551
551
  }) ? vnodes : null;
552
552
  }
553
+ function renderSlot(slot, props, fallback) {
554
+ // TODO: check if slot returns elements: #18308
555
+ return slot?.(props) ?? fallback?.(props);
556
+ }
553
557
  function defer(timeout, cb) {
554
558
  if (!IN_BROWSER || timeout === 0) {
555
559
  cb();
@@ -1624,6 +1628,40 @@
1624
1628
  return ['scroll', 'auto'].includes(style.overflowY);
1625
1629
  }
1626
1630
 
1631
+ // Types
1632
+
1633
+ function getIndentLines(_ref) {
1634
+ let {
1635
+ depth,
1636
+ isLast,
1637
+ isLastGroup,
1638
+ leafLinks,
1639
+ separateRoots,
1640
+ parentIndentLines,
1641
+ variant
1642
+ } = _ref;
1643
+ if (!parentIndentLines || !depth) {
1644
+ return {
1645
+ leaf: undefined,
1646
+ node: undefined,
1647
+ children: parentIndentLines
1648
+ };
1649
+ }
1650
+ if (variant === 'simple') {
1651
+ return {
1652
+ leaf: [...parentIndentLines, 'line'],
1653
+ node: [...parentIndentLines, 'line'],
1654
+ children: [...parentIndentLines, 'line']
1655
+ };
1656
+ }
1657
+ const isLastLeaf = isLast && (!isLastGroup || separateRoots || depth > 1);
1658
+ return {
1659
+ leaf: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf', ...(leafLinks ? ['leaf-link'] : [])],
1660
+ node: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf'],
1661
+ children: [...parentIndentLines, isLastLeaf ? 'none' : 'line']
1662
+ };
1663
+ }
1664
+
1627
1665
  function isFixedPosition(el) {
1628
1666
  while (el) {
1629
1667
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -9524,6 +9562,11 @@
9524
9562
  const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
9525
9563
  const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9526
9564
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9565
+ const role = vue.computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
9566
+ const ariaSelected = vue.computed(() => {
9567
+ if (!isSelectable.value) return undefined;
9568
+ return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
9569
+ });
9527
9570
  const roundedProps = vue.toRef(() => props.rounded || props.nav);
9528
9571
  const color = vue.toRef(() => props.color ?? props.activeColor);
9529
9572
  const variantProps = vue.toRef(() => ({
@@ -9627,7 +9670,8 @@
9627
9670
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
9628
9671
  "style": [colorStyles.value, dimensionStyles.value, props.style],
9629
9672
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
9630
- "aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
9673
+ "aria-selected": ariaSelected.value,
9674
+ "role": role.value,
9631
9675
  "onClick": onClick,
9632
9676
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9633
9677
  }, link.linkProps), {
@@ -9870,6 +9914,10 @@
9870
9914
  type: [Boolean, String, Array, Function],
9871
9915
  default: 'props'
9872
9916
  },
9917
+ itemType: {
9918
+ type: [Boolean, String, Array, Function],
9919
+ default: 'type'
9920
+ },
9873
9921
  returnObject: Boolean,
9874
9922
  valueComparator: Function
9875
9923
  }, 'list-items');
@@ -9877,6 +9925,7 @@
9877
9925
  const title = getPropertyFromItem(item, props.itemTitle, item);
9878
9926
  const value = getPropertyFromItem(item, props.itemValue, title);
9879
9927
  const children = getPropertyFromItem(item, props.itemChildren);
9928
+ const type = getPropertyFromItem(item, props.itemType, 'item');
9880
9929
  const itemProps = props.itemProps === true ? typeof item === 'object' && item != null && !Array.isArray(item) ? 'children' in item ? omit(item, ['children']) : item : undefined : getPropertyFromItem(item, props.itemProps);
9881
9930
  const _props = {
9882
9931
  title,
@@ -9884,15 +9933,16 @@
9884
9933
  ...itemProps
9885
9934
  };
9886
9935
  return {
9936
+ type,
9887
9937
  title: String(_props.title ?? ''),
9888
9938
  value: _props.value,
9889
9939
  props: _props,
9890
- children: Array.isArray(children) ? transformItems$3(props, children) : undefined,
9940
+ children: type === 'item' && Array.isArray(children) ? transformItems$3(props, children) : undefined,
9891
9941
  raw: item
9892
9942
  };
9893
9943
  }
9894
9944
  function transformItems$3(props, items) {
9895
- const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
9945
+ const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'itemType', 'returnObject', 'valueComparator']);
9896
9946
  const array = [];
9897
9947
  for (const item of items) {
9898
9948
  array.push(transformItem$3(_props, item));
@@ -9934,7 +9984,7 @@
9934
9984
  const _returnObject = props.returnObject;
9935
9985
  const hasValueComparator = !!props.valueComparator;
9936
9986
  const valueComparator = props.valueComparator || deepEqual;
9937
- const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
9987
+ const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'itemType', 'returnObject', 'valueComparator']);
9938
9988
  const returnValue = [];
9939
9989
  main: for (const v of value) {
9940
9990
  // When the model value is null, return an InternalItem
@@ -10054,10 +10104,6 @@
10054
10104
  ...makeDensityProps(),
10055
10105
  ...makeDimensionProps(),
10056
10106
  ...makeElevationProps(),
10057
- itemType: {
10058
- type: String,
10059
- default: 'type'
10060
- },
10061
10107
  ...makeItemsProps(),
10062
10108
  ...makeRoundedProps(),
10063
10109
  ...makeTagProps(),
@@ -10117,6 +10163,7 @@
10117
10163
  const activeColor = vue.toRef(() => props.activeColor);
10118
10164
  const baseColor = vue.toRef(() => props.baseColor);
10119
10165
  const color = vue.toRef(() => props.color);
10166
+ const isSelectable = vue.toRef(() => props.selectable || props.activatable);
10120
10167
  createList({
10121
10168
  filterable: props.filterable
10122
10169
  });
@@ -10186,7 +10233,7 @@
10186
10233
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
10187
10234
  "style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
10188
10235
  "tabindex": props.disabled ? -1 : 0,
10189
- "role": "listbox",
10236
+ "role": isSelectable.value ? 'listbox' : 'list',
10190
10237
  "aria-activedescendant": undefined,
10191
10238
  "onFocusin": onFocusin,
10192
10239
  "onFocusout": onFocusout,
@@ -13251,6 +13298,7 @@
13251
13298
  "onKeydown": onListKeydown,
13252
13299
  "onFocusin": onFocusin,
13253
13300
  "tabindex": "-1",
13301
+ "selectable": true,
13254
13302
  "aria-live": "polite",
13255
13303
  "aria-label": `${props.label}-list`,
13256
13304
  "color": props.itemColor ?? props.color
@@ -13276,7 +13324,7 @@
13276
13324
  key: item.value,
13277
13325
  onClick: () => select(item, null)
13278
13326
  });
13279
- if (item.raw.type === 'divider') {
13327
+ if (item.type === 'divider') {
13280
13328
  return slots.divider?.({
13281
13329
  props: item.raw,
13282
13330
  index
@@ -13284,7 +13332,7 @@
13284
13332
  "key": `divider-${index}`
13285
13333
  }), null);
13286
13334
  }
13287
- if (item.raw.type === 'subheader') {
13335
+ if (item.type === 'subheader') {
13288
13336
  return slots.subheader?.({
13289
13337
  props: item.raw,
13290
13338
  index
@@ -13452,7 +13500,7 @@
13452
13500
  let match = -1;
13453
13501
  if ((query || customFiltersLength > 0) && !options?.noFilter) {
13454
13502
  if (typeof item === 'object') {
13455
- if (['divider', 'subheader'].includes(item.raw?.type)) {
13503
+ if (item.type === 'divider' || item.type === 'subheader') {
13456
13504
  continue;
13457
13505
  }
13458
13506
  const filterKeys = keys || Object.keys(transformed);
@@ -13870,6 +13918,7 @@
13870
13918
  "onFocusin": onFocusin,
13871
13919
  "onFocusout": onFocusout,
13872
13920
  "tabindex": "-1",
13921
+ "selectable": true,
13873
13922
  "aria-live": "polite",
13874
13923
  "color": props.itemColor ?? props.color
13875
13924
  }, listEvents, props.listProps), {
@@ -13894,7 +13943,7 @@
13894
13943
  active: highlightFirst.value && index === 0 ? true : undefined,
13895
13944
  onClick: () => select(item, null)
13896
13945
  });
13897
- if (item.raw.type === 'divider') {
13946
+ if (item.type === 'divider') {
13898
13947
  return slots.divider?.({
13899
13948
  props: item.raw,
13900
13949
  index
@@ -13902,7 +13951,7 @@
13902
13951
  "key": `divider-${index}`
13903
13952
  }), null);
13904
13953
  }
13905
- if (item.raw.type === 'subheader') {
13954
+ if (item.type === 'subheader') {
13906
13955
  return slots.subheader?.({
13907
13956
  props: item.raw,
13908
13957
  index
@@ -18957,6 +19006,7 @@
18957
19006
  "selected": selectedValues.value,
18958
19007
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18959
19008
  "onMousedown": e => e.preventDefault(),
19009
+ "selectable": true,
18960
19010
  "onKeydown": onListKeydown,
18961
19011
  "onFocusin": onFocusin,
18962
19012
  "onFocusout": onFocusout,
@@ -18985,7 +19035,7 @@
18985
19035
  active: highlightFirst.value && index === 0 ? true : undefined,
18986
19036
  onClick: () => select(item, null)
18987
19037
  });
18988
- if (item.raw.type === 'divider') {
19038
+ if (item.type === 'divider') {
18989
19039
  return slots.divider?.({
18990
19040
  props: item.raw,
18991
19041
  index
@@ -18993,7 +19043,7 @@
18993
19043
  "key": `divider-${index}`
18994
19044
  }), null);
18995
19045
  }
18996
- if (item.raw.type === 'subheader') {
19046
+ if (item.type === 'subheader') {
18997
19047
  return slots.subheader?.({
18998
19048
  props: item.raw,
18999
19049
  index
@@ -23335,7 +23385,8 @@
23335
23385
  }
23336
23386
  function allowedMonths(month) {
23337
23387
  if (typeof props.allowedDates === 'function') {
23338
- const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
23388
+ const monthTwoDigits = String(month + 1).padStart(2, '0');
23389
+ const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`);
23339
23390
  return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
23340
23391
  }
23341
23392
  if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
@@ -30131,6 +30182,8 @@
30131
30182
 
30132
30183
  const makeVTreeviewItemProps = propsFactory({
30133
30184
  loading: Boolean,
30185
+ hideActions: Boolean,
30186
+ indentLines: Array,
30134
30187
  toggleIcon: IconValue,
30135
30188
  ...makeVListItemProps({
30136
30189
  slim: true
@@ -30167,7 +30220,7 @@
30167
30220
  }
30168
30221
  useRender(() => {
30169
30222
  const listItemProps = VListItem.filterProps(props);
30170
- const hasPrepend = slots.prepend || props.toggleIcon;
30223
+ const hasPrepend = slots.prepend || props.toggleIcon || props.indentLines;
30171
30224
  return vue.createVNode(VListItem, vue.mergeProps({
30172
30225
  "ref": vListItemRef
30173
30226
  }, listItemProps, {
@@ -30181,7 +30234,15 @@
30181
30234
  }), {
30182
30235
  ...slots,
30183
30236
  prepend: hasPrepend ? slotProps => {
30184
- return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VListItemAction, {
30237
+ return vue.createElementVNode(vue.Fragment, null, [props.indentLines && props.indentLines.length > 0 ? vue.createElementVNode("div", {
30238
+ "key": "indent-lines",
30239
+ "class": "v-treeview-indent-lines",
30240
+ "style": {
30241
+ '--v-indent-parts': props.indentLines.length
30242
+ }
30243
+ }, [props.indentLines.map(type => vue.createElementVNode("div", {
30244
+ "class": vue.normalizeClass(`v-treeview-indent-line v-treeview-indent-line--${type}`)
30245
+ }, null))]) : '', !props.hideActions && vue.createVNode(VListItemAction, {
30185
30246
  "start": true
30186
30247
  }, {
30187
30248
  default: () => [props.toggleIcon ? vue.createVNode(VBtn, {
@@ -30233,10 +30294,15 @@
30233
30294
  selectedColor: String,
30234
30295
  selectStrategy: [String, Function, Object],
30235
30296
  index: Number,
30297
+ isLastGroup: Boolean,
30298
+ separateRoots: Boolean,
30299
+ parentIndentLines: Array,
30300
+ indentLinesVariant: String,
30236
30301
  path: {
30237
30302
  type: Array,
30238
30303
  default: () => []
30239
30304
  },
30305
+ ...pick(makeVTreeviewItemProps(), ['hideActions']),
30240
30306
  ...makeDensityProps()
30241
30307
  }, 'VTreeviewChildren');
30242
30308
  const VTreeviewChildren = genericComponent()({
@@ -30265,19 +30331,32 @@
30265
30331
  select(isSelected);
30266
30332
  }
30267
30333
  }
30268
- return () => slots.default?.() ?? props.items?.map((item, index) => {
30334
+ return () => slots.default?.() ?? props.items?.map((item, index, items) => {
30269
30335
  const {
30270
30336
  children,
30271
30337
  props: itemProps
30272
30338
  } = item;
30273
30339
  const loading = isLoading.has(item.value);
30340
+ const nextItemHasChildren = !!items.at(index + 1)?.children;
30341
+ const depth = props.path?.length ?? 0;
30342
+ const isLast = items.length - 1 === index;
30274
30343
  const treeItemProps = {
30275
30344
  index,
30276
- depth: props.path?.length ?? 0,
30345
+ depth,
30277
30346
  isFirst: index === 0,
30278
- isLast: props.items ? props.items.length - 1 === index : false,
30279
- path: [...props.path, index]
30347
+ isLast,
30348
+ path: [...props.path, index],
30349
+ hideAction: props.hideActions
30280
30350
  };
30351
+ const indentLines = getIndentLines({
30352
+ depth,
30353
+ isLast,
30354
+ isLastGroup: props.isLastGroup,
30355
+ leafLinks: !props.hideActions,
30356
+ separateRoots: props.separateRoots,
30357
+ parentIndentLines: props.parentIndentLines,
30358
+ variant: props.indentLinesVariant
30359
+ });
30281
30360
  const slotsWithItem = {
30282
30361
  prepend: slotProps => vue.createElementVNode(vue.Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && vue.createElementVNode("div", null, [vue.createVNode(VCheckboxBtn, {
30283
30362
  "key": item.value,
@@ -30343,21 +30422,40 @@
30343
30422
  return vue.createVNode(VTreeviewItem, vue.mergeProps({
30344
30423
  "ref": el => activatorItems.value[index] = el
30345
30424
  }, listItemProps, {
30425
+ "hideActions": props.hideActions,
30426
+ "indentLines": indentLines.node,
30346
30427
  "value": props.returnObject ? item.raw : itemProps.value,
30347
30428
  "loading": loading
30348
30429
  }), slotsWithItem);
30349
30430
  },
30350
30431
  default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
30351
30432
  "items": children,
30433
+ "indentLinesVariant": props.indentLinesVariant,
30434
+ "parentIndentLines": indentLines.children,
30435
+ "isLastGroup": nextItemHasChildren,
30352
30436
  "returnObject": props.returnObject
30353
30437
  }), slots)
30354
- }) : slots.item?.({
30438
+ }) : renderSlot(slots.item, {
30355
30439
  props: itemProps,
30356
30440
  item: item.raw,
30357
30441
  internalItem: item
30358
- }) ?? vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, {
30359
- "value": props.returnObject ? vue.toRaw(item.raw) : itemProps.value
30360
- }), slotsWithItem);
30442
+ }, () => {
30443
+ if (item.type === 'divider') {
30444
+ return renderSlot(slots.divider, {
30445
+ props: item.raw
30446
+ }, () => vue.createVNode(VDivider, item.props, null));
30447
+ }
30448
+ if (item.type === 'subheader') {
30449
+ return renderSlot(slots.subheader, {
30450
+ props: item.raw
30451
+ }, () => vue.createVNode(VListSubheader, item.props, null));
30452
+ }
30453
+ return vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, {
30454
+ "hideActions": props.hideActions,
30455
+ "indentLines": indentLines.leaf,
30456
+ "value": props.returnObject ? vue.toRaw(item.raw) : itemProps.value
30457
+ }), slotsWithItem);
30458
+ });
30361
30459
  });
30362
30460
  }
30363
30461
  });
@@ -30373,16 +30471,17 @@
30373
30471
  const makeVTreeviewProps = propsFactory({
30374
30472
  fluid: Boolean,
30375
30473
  openAll: Boolean,
30474
+ indentLines: [Boolean, String],
30376
30475
  search: String,
30377
30476
  ...makeFilterProps({
30378
30477
  filterKeys: ['title']
30379
30478
  }),
30380
- ...omit(makeVTreeviewChildrenProps(), ['index', 'path']),
30479
+ ...omit(makeVTreeviewChildrenProps(), ['index', 'path', 'indentLinesVariant', 'parentIndentLines', 'isLastGroup']),
30381
30480
  ...omit(makeVListProps({
30382
30481
  collapseIcon: '$treeviewCollapse',
30383
30482
  expandIcon: '$treeviewExpand',
30384
30483
  slim: true
30385
- }), ['itemType', 'nav', 'openStrategy']),
30484
+ }), ['nav', 'openStrategy']),
30386
30485
  modelValue: Array
30387
30486
  }, 'VTreeview');
30388
30487
  const VTreeview = genericComponent()({
@@ -30479,6 +30578,7 @@
30479
30578
  useRender(() => {
30480
30579
  const listProps = VList.filterProps(props);
30481
30580
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
30581
+ const indentLinesVariant = typeof props.indentLines === 'boolean' ? 'default' : props.indentLines;
30482
30582
  return vue.createVNode(VList, vue.mergeProps({
30483
30583
  "ref": vListRef
30484
30584
  }, listProps, {
@@ -30496,7 +30596,9 @@
30496
30596
  default: () => [vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
30497
30597
  "density": props.density,
30498
30598
  "returnObject": props.returnObject,
30499
- "items": items.value
30599
+ "items": items.value,
30600
+ "parentIndentLines": props.indentLines ? [] : undefined,
30601
+ "indentLinesVariant": indentLinesVariant
30500
30602
  }), slots)]
30501
30603
  });
30502
30604
  });
@@ -31089,7 +31191,7 @@
31089
31191
  weekNumber: weekNumbers.value[wi],
31090
31192
  week
31091
31193
  }))), [weekNumbers.value[wi]]) : '', week.map(day => vue.createVNode(VCalendarMonthDay, vue.mergeProps({
31092
- "key": day.date.getTime()
31194
+ "key": adapter.toJsDate(day.date).getTime()
31093
31195
  }, calendarDayProps, {
31094
31196
  "day": day,
31095
31197
  "title": adapter.format(day.date, 'dayOfMonth'),
@@ -33584,7 +33686,7 @@
33584
33686
  };
33585
33687
  });
33586
33688
  }
33587
- const version$1 = "3.9.0-beta.1-dev.2025-07-05";
33689
+ const version$1 = "3.9.0-dev.2025-07-15";
33588
33690
  createVuetify$1.version = version$1;
33589
33691
 
33590
33692
  // Vue's inject() can only be used in setup
@@ -33882,7 +33984,7 @@
33882
33984
 
33883
33985
  /* eslint-disable local-rules/sort-imports */
33884
33986
 
33885
- const version = "3.9.0-beta.1-dev.2025-07-05";
33987
+ const version = "3.9.0-dev.2025-07-15";
33886
33988
 
33887
33989
  /* eslint-disable local-rules/sort-imports */
33888
33990