@vuetify/nightly 3.9.0-beta.1-dev.2025-07-02 → 3.9.0-beta.1-dev.2025-07-04

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 (65) hide show
  1. package/CHANGELOG.md +15 -3
  2. package/dist/json/attributes.json +3406 -3414
  3. package/dist/json/importMap-labs.json +12 -12
  4. package/dist/json/importMap.json +166 -166
  5. package/dist/json/tags.json +2 -4
  6. package/dist/json/web-types.json +6709 -6730
  7. package/dist/vuetify-labs.cjs +121 -61
  8. package/dist/vuetify-labs.css +4732 -4721
  9. package/dist/vuetify-labs.d.ts +106 -116
  10. package/dist/vuetify-labs.esm.js +121 -61
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +121 -61
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +121 -61
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3631 -3620
  17. package/dist/vuetify.d.ts +106 -116
  18. package/dist/vuetify.esm.js +121 -61
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +121 -61
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +73 -59
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataTable/VDataTable.css +12 -1
  26. package/lib/components/VDataTable/VDataTable.d.ts +20 -38
  27. package/lib/components/VDataTable/VDataTable.sass +12 -2
  28. package/lib/components/VDataTable/VDataTableColumn.d.ts +9 -3
  29. package/lib/components/VDataTable/VDataTableColumn.js +12 -3
  30. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  31. package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
  32. package/lib/components/VDataTable/VDataTableHeaders.js +5 -4
  33. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  34. package/lib/components/VDataTable/VDataTableRow.js +2 -0
  35. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableServer.d.ts +10 -23
  37. package/lib/components/VDataTable/VDataTableVirtual.d.ts +10 -23
  38. package/lib/components/VDataTable/composables/headers.d.ts +22 -14
  39. package/lib/components/VDataTable/composables/headers.js +51 -22
  40. package/lib/components/VDataTable/composables/headers.js.map +1 -1
  41. package/lib/components/VDataTable/types.d.ts +3 -1
  42. package/lib/components/VDataTable/types.js.map +1 -1
  43. package/lib/components/VList/VListGroup.d.ts +13 -0
  44. package/lib/components/VList/VListGroup.js +2 -1
  45. package/lib/components/VList/VListGroup.js.map +1 -1
  46. package/lib/components/VList/VListItem.d.ts +6 -3
  47. package/lib/components/VList/VListItem.js +1 -1
  48. package/lib/components/VList/VListItem.js.map +1 -1
  49. package/lib/components/VTreeview/VTreeview.d.ts +6 -21
  50. package/lib/components/VTreeview/VTreeview.js +6 -9
  51. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  52. package/lib/components/VTreeview/VTreeviewGroup.d.ts +13 -0
  53. package/lib/components/VTreeview/VTreeviewItem.d.ts +18 -9
  54. package/lib/components/VTreeview/VTreeviewItem.js +1 -1
  55. package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
  56. package/lib/composables/nested/nested.d.ts +7 -4
  57. package/lib/composables/nested/nested.js +16 -6
  58. package/lib/composables/nested/nested.js.map +1 -1
  59. package/lib/composables/nested/selectStrategies.d.ts +2 -1
  60. package/lib/composables/nested/selectStrategies.js +22 -11
  61. package/lib/composables/nested/selectStrategies.js.map +1 -1
  62. package/lib/entry-bundler.js +1 -1
  63. package/lib/framework.d.ts +61 -58
  64. package/lib/framework.js +1 -1
  65. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.0-beta.1-dev.2025-07-02
2
+ * Vuetify v3.9.0-beta.1-dev.2025-07-04
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -8826,7 +8826,7 @@
8826
8826
  selected.set(id, value ? 'on' : 'off');
8827
8827
  return selected;
8828
8828
  },
8829
- in: (v, children, parents) => {
8829
+ in: (v, children, parents, disabled) => {
8830
8830
  const map = new Map();
8831
8831
  for (const id of v || []) {
8832
8832
  strategy.select({
@@ -8834,7 +8834,8 @@
8834
8834
  value: true,
8835
8835
  selected: map,
8836
8836
  children,
8837
- parents
8837
+ parents,
8838
+ disabled
8838
8839
  });
8839
8840
  }
8840
8841
  return map;
@@ -8866,9 +8867,9 @@
8866
8867
  selected: singleSelected
8867
8868
  });
8868
8869
  },
8869
- in: (v, children, parents) => {
8870
+ in: (v, children, parents, disabled) => {
8870
8871
  if (v?.length) {
8871
- return parentStrategy.in(v.slice(0, 1), children, parents);
8872
+ return parentStrategy.in(v.slice(0, 1), children, parents, disabled);
8872
8873
  }
8873
8874
  return new Map();
8874
8875
  },
@@ -8934,23 +8935,32 @@
8934
8935
  value,
8935
8936
  selected,
8936
8937
  children,
8937
- parents
8938
+ parents,
8939
+ disabled
8938
8940
  } = _ref6;
8939
8941
  id = vue.toRaw(id);
8940
8942
  const original = new Map(selected);
8941
8943
  const items = [id];
8942
8944
  while (items.length) {
8943
8945
  const item = items.shift();
8944
- selected.set(vue.toRaw(item), value ? 'on' : 'off');
8946
+ if (!disabled.has(item)) {
8947
+ selected.set(vue.toRaw(item), value ? 'on' : 'off');
8948
+ }
8945
8949
  if (children.has(item)) {
8946
8950
  items.push(...children.get(item));
8947
8951
  }
8948
8952
  }
8949
8953
  let parent = vue.toRaw(parents.get(id));
8950
8954
  while (parent) {
8951
- const childrenIds = children.get(parent);
8952
- const everySelected = childrenIds.every(cid => selected.get(vue.toRaw(cid)) === 'on');
8953
- const noneSelected = childrenIds.every(cid => !selected.has(vue.toRaw(cid)) || selected.get(vue.toRaw(cid)) === 'off');
8955
+ let everySelected = true;
8956
+ let noneSelected = true;
8957
+ for (const child of children.get(parent)) {
8958
+ const cid = vue.toRaw(child);
8959
+ if (disabled.has(cid)) continue;
8960
+ if (selected.get(cid) !== 'on') everySelected = false;
8961
+ if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false;
8962
+ if (!everySelected && !noneSelected) break;
8963
+ }
8954
8964
  selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
8955
8965
  parent = vue.toRaw(parents.get(parent));
8956
8966
  }
@@ -8967,7 +8977,7 @@
8967
8977
  }
8968
8978
  return selected;
8969
8979
  },
8970
- in: (v, children, parents) => {
8980
+ in: (v, children, parents, disabled) => {
8971
8981
  let map = new Map();
8972
8982
  for (const id of v || []) {
8973
8983
  map = strategy.select({
@@ -8975,7 +8985,8 @@
8975
8985
  value: true,
8976
8986
  selected: map,
8977
8987
  children,
8978
- parents
8988
+ parents,
8989
+ disabled
8979
8990
  });
8980
8991
  }
8981
8992
  return map;
@@ -9022,8 +9033,9 @@
9022
9033
  root: {
9023
9034
  register: () => null,
9024
9035
  unregister: () => null,
9025
- parents: vue.ref(new Map()),
9026
9036
  children: vue.ref(new Map()),
9037
+ parents: vue.ref(new Map()),
9038
+ disabled: vue.ref(new Set()),
9027
9039
  open: () => null,
9028
9040
  openOnSelect: () => null,
9029
9041
  activate: () => null,
@@ -9052,6 +9064,7 @@
9052
9064
  let isUnmounted = false;
9053
9065
  const children = vue.shallowRef(new Map());
9054
9066
  const parents = vue.shallowRef(new Map());
9067
+ const disabled = vue.shallowRef(new Set());
9055
9068
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => vue.toRaw(i)) : v), v => [...v.values()]);
9056
9069
  const activeStrategy = vue.computed(() => {
9057
9070
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
@@ -9100,7 +9113,7 @@
9100
9113
  }
9101
9114
  });
9102
9115
  const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
9103
- const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));
9116
+ const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
9104
9117
  vue.onBeforeUnmount(() => {
9105
9118
  isUnmounted = true;
9106
9119
  });
@@ -9130,7 +9143,7 @@
9130
9143
  }
9131
9144
  return arr;
9132
9145
  }),
9133
- register: (id, parentId, isGroup) => {
9146
+ register: (id, parentId, isDisabled, isGroup) => {
9134
9147
  if (nodeIds.has(id)) {
9135
9148
  const path = getPath(id).map(String).join(' -> ');
9136
9149
  const newPath = getPath(parentId).concat(id).map(String).join(' -> ');
@@ -9140,6 +9153,7 @@
9140
9153
  nodeIds.add(id);
9141
9154
  }
9142
9155
  parentId && id !== parentId && parents.value.set(id, parentId);
9156
+ isDisabled && disabled.value.add(id);
9143
9157
  isGroup && children.value.set(id, []);
9144
9158
  if (parentId != null) {
9145
9159
  children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
@@ -9149,6 +9163,7 @@
9149
9163
  if (isUnmounted) return;
9150
9164
  nodeIds.delete(id);
9151
9165
  children.value.delete(id);
9166
+ disabled.value.delete(id);
9152
9167
  const parent = parents.value.get(id);
9153
9168
  if (parent) {
9154
9169
  const list = children.value.get(parent) ?? [];
@@ -9198,6 +9213,7 @@
9198
9213
  selected: new Map(selected.value),
9199
9214
  children: children.value,
9200
9215
  parents: parents.value,
9216
+ disabled: disabled.value,
9201
9217
  event
9202
9218
  });
9203
9219
  newSelected && (selected.value = newSelected);
@@ -9240,13 +9256,14 @@
9240
9256
  },
9241
9257
  children,
9242
9258
  parents,
9259
+ disabled,
9243
9260
  getPath
9244
9261
  }
9245
9262
  };
9246
9263
  vue.provide(VNestedSymbol, nested);
9247
9264
  return nested.root;
9248
9265
  };
9249
- const useNestedItem = (id, isGroup) => {
9266
+ const useNestedItem = (id, isDisabled, isGroup) => {
9250
9267
  const parent = vue.inject(VNestedSymbol, emptyNested);
9251
9268
  const uidSymbol = Symbol('nested item');
9252
9269
  const computedId = vue.computed(() => vue.toRaw(vue.toValue(id)) ?? uidSymbol);
@@ -9266,10 +9283,14 @@
9266
9283
  isGroupActivator: parent.isGroupActivator
9267
9284
  };
9268
9285
  vue.onBeforeMount(() => {
9269
- !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup);
9286
+ if (!parent.isGroupActivator) {
9287
+ parent.root.register(computedId.value, parent.id.value, vue.toValue(isDisabled), isGroup);
9288
+ }
9270
9289
  });
9271
9290
  vue.onBeforeUnmount(() => {
9272
- !parent.isGroupActivator && parent.root.unregister(computedId.value);
9291
+ if (!parent.isGroupActivator) {
9292
+ parent.root.unregister(computedId.value);
9293
+ }
9273
9294
  });
9274
9295
  isGroup && vue.provide(VNestedSymbol, item);
9275
9296
  return item;
@@ -9301,6 +9322,7 @@
9301
9322
  type: IconValue,
9302
9323
  default: '$collapse'
9303
9324
  },
9325
+ disabled: Boolean,
9304
9326
  expandIcon: {
9305
9327
  type: IconValue,
9306
9328
  default: '$expand'
@@ -9326,7 +9348,7 @@
9326
9348
  isOpen,
9327
9349
  open,
9328
9350
  id: _id
9329
- } = useNestedItem(() => props.value, true);
9351
+ } = useNestedItem(() => props.value, () => props.disabled, true);
9330
9352
  const id = vue.computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
9331
9353
  const list = useList();
9332
9354
  const {
@@ -9496,7 +9518,7 @@
9496
9518
  parent,
9497
9519
  openOnSelect,
9498
9520
  id: uid
9499
- } = useNestedItem(id, false);
9521
+ } = useNestedItem(id, () => props.disabled, false);
9500
9522
  const list = useList();
9501
9523
  const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
9502
9524
  const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
@@ -20555,10 +20577,15 @@
20555
20577
  type: String,
20556
20578
  default: 'start'
20557
20579
  },
20558
- fixed: Boolean,
20580
+ fixed: {
20581
+ type: [Boolean, String],
20582
+ default: false
20583
+ },
20559
20584
  fixedOffset: [Number, String],
20585
+ fixedEndOffset: [Number, String],
20560
20586
  height: [Number, String],
20561
20587
  lastFixed: Boolean,
20588
+ firstFixedEnd: Boolean,
20562
20589
  noPadding: Boolean,
20563
20590
  tag: String,
20564
20591
  width: [Number, String],
@@ -20569,10 +20596,13 @@
20569
20596
  slots
20570
20597
  } = _ref;
20571
20598
  const Tag = props.tag ?? 'td';
20599
+ const fixedSide = typeof props.fixed === 'string' ? props.fixed : props.fixed ? 'start' : 'none';
20572
20600
  return vue.createVNode(Tag, {
20573
20601
  "class": vue.normalizeClass(['v-data-table__td', {
20574
- 'v-data-table-column--fixed': props.fixed,
20602
+ 'v-data-table-column--fixed': fixedSide === 'start',
20603
+ 'v-data-table-column--fixed-end': fixedSide === 'end',
20575
20604
  'v-data-table-column--last-fixed': props.lastFixed,
20605
+ 'v-data-table-column--first-fixed-end': props.firstFixedEnd,
20576
20606
  'v-data-table-column--no-padding': props.noPadding,
20577
20607
  'v-data-table-column--nowrap': props.nowrap
20578
20608
  }, `v-data-table-column--align-${props.align}`]),
@@ -20580,7 +20610,8 @@
20580
20610
  height: convertToUnit(props.height),
20581
20611
  width: convertToUnit(props.width),
20582
20612
  maxWidth: convertToUnit(props.maxWidth),
20583
- left: convertToUnit(props.fixedOffset || null)
20613
+ left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
20614
+ right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
20584
20615
  }
20585
20616
  }, {
20586
20617
  default: () => [slots.default?.()]
@@ -20677,20 +20708,28 @@
20677
20708
  }
20678
20709
  function parseFixedColumns(items) {
20679
20710
  let seenFixed = false;
20680
- function setFixed(item) {
20681
- let parentFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
20711
+ function setFixed(item, side) {
20712
+ let parentFixedSide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
20682
20713
  if (!item) return;
20683
- if (parentFixed) {
20684
- item.fixed = true;
20714
+ if (parentFixedSide !== 'none') {
20715
+ item.fixed = parentFixedSide;
20685
20716
  }
20686
- if (item.fixed) {
20687
- if (item.children) {
20688
- for (let i = item.children.length - 1; i >= 0; i--) {
20689
- setFixed(item.children[i], true);
20717
+
20718
+ // normalize to simplify logic below
20719
+ if (item.fixed === true) {
20720
+ item.fixed = 'start';
20721
+ }
20722
+ const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
20723
+ if (item.fixed === side) {
20724
+ if (orderedChildren) {
20725
+ for (const child of orderedChildren) {
20726
+ setFixed(child, side, side);
20690
20727
  }
20691
20728
  } else {
20692
- if (!seenFixed) {
20729
+ if (!seenFixed && side === 'start') {
20693
20730
  item.lastFixed = true;
20731
+ } else if (!seenFixed && side === 'end') {
20732
+ item.firstFixedEnd = true;
20694
20733
  } else if (isNaN(Number(item.width))) {
20695
20734
  consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
20696
20735
  } else {
@@ -20699,36 +20738,57 @@
20699
20738
  seenFixed = true;
20700
20739
  }
20701
20740
  } else {
20702
- if (item.children) {
20703
- for (let i = item.children.length - 1; i >= 0; i--) {
20704
- setFixed(item.children[i]);
20741
+ if (orderedChildren) {
20742
+ for (const child of orderedChildren) {
20743
+ setFixed(child, side);
20705
20744
  }
20706
20745
  } else {
20707
20746
  seenFixed = false;
20708
20747
  }
20709
20748
  }
20710
20749
  }
20711
- for (let i = items.length - 1; i >= 0; i--) {
20712
- setFixed(items[i]);
20750
+ for (const item of items.toReversed()) {
20751
+ setFixed(item, 'start');
20752
+ }
20753
+ for (const item of items) {
20754
+ setFixed(item, 'end');
20713
20755
  }
20714
20756
  function setFixedOffset(item) {
20715
- let fixedOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20716
- if (!item) return fixedOffset;
20757
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20758
+ if (!item) return offset;
20717
20759
  if (item.children) {
20718
- item.fixedOffset = fixedOffset;
20760
+ item.fixedOffset = offset;
20719
20761
  for (const child of item.children) {
20720
- fixedOffset = setFixedOffset(child, fixedOffset);
20762
+ offset = setFixedOffset(child, offset);
20721
20763
  }
20722
- } else if (item.fixed) {
20723
- item.fixedOffset = fixedOffset;
20724
- fixedOffset += parseFloat(item.width || '0') || 0;
20764
+ } else if (item.fixed && item.fixed !== 'end') {
20765
+ item.fixedOffset = offset;
20766
+ offset += parseFloat(item.width || '0') || 0;
20725
20767
  }
20726
- return fixedOffset;
20768
+ return offset;
20727
20769
  }
20728
20770
  let fixedOffset = 0;
20729
20771
  for (const item of items) {
20730
20772
  fixedOffset = setFixedOffset(item, fixedOffset);
20731
20773
  }
20774
+ function setFixedEndOffset(item) {
20775
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20776
+ if (!item) return offset;
20777
+ if (item.children) {
20778
+ item.fixedEndOffset = offset;
20779
+ for (const child of item.children) {
20780
+ offset = setFixedEndOffset(child, offset);
20781
+ }
20782
+ } else if (item.fixed === 'end') {
20783
+ item.fixedEndOffset = offset;
20784
+ offset += parseFloat(item.width || '0') || 0;
20785
+ }
20786
+ return offset;
20787
+ }
20788
+ let fixedEndOffset = 0;
20789
+ for (const item of items.toReversed()) {
20790
+ fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
20791
+ }
20732
20792
  }
20733
20793
  function parse(items, maxDepth) {
20734
20794
  const headers = [];
@@ -20861,7 +20921,6 @@
20861
20921
  color: String,
20862
20922
  disableSort: Boolean,
20863
20923
  fixedHeader: Boolean,
20864
- lastFixed: Boolean,
20865
20924
  multiSort: Boolean,
20866
20925
  sortAscIcon: {
20867
20926
  type: IconValue,
@@ -20908,11 +20967,12 @@
20908
20967
  loaderClasses
20909
20968
  } = useLoader(props);
20910
20969
  function getFixedStyles(column, y) {
20911
- if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
20970
+ if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
20971
+ const fixedSide = typeof column.fixed === 'string' ? column.fixed : column.fixed ? 'start' : 'none';
20912
20972
  return {
20913
20973
  position: 'sticky',
20914
- left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
20915
- right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
20974
+ left: fixedSide === 'start' ? convertToUnit(column.fixedOffset) : undefined,
20975
+ right: fixedSide === 'end' ? convertToUnit(column.fixedEndOffset) : undefined,
20916
20976
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20917
20977
  };
20918
20978
  }
@@ -20975,6 +21035,7 @@
20975
21035
  "fixed": column.fixed,
20976
21036
  "nowrap": column.nowrap,
20977
21037
  "lastFixed": column.lastFixed,
21038
+ "firstFixedEnd": column.firstFixedEnd,
20978
21039
  "noPadding": noPadding,
20979
21040
  "tabindex": column.sortable ? 0 : undefined,
20980
21041
  "onClick": column.sortable ? () => toggleSort(column) : undefined,
@@ -21255,7 +21316,9 @@
21255
21316
  },
21256
21317
  "fixed": column.fixed,
21257
21318
  "fixedOffset": column.fixedOffset,
21319
+ "fixedEndOffset": column.fixedEndOffset,
21258
21320
  "lastFixed": column.lastFixed,
21321
+ "firstFixedEnd": column.firstFixedEnd,
21259
21322
  "maxWidth": !mobile.value ? column.maxWidth : undefined,
21260
21323
  "noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
21261
21324
  "nowrap": column.nowrap,
@@ -30108,7 +30171,7 @@
30108
30171
  return vue.createVNode(VListItem, vue.mergeProps({
30109
30172
  "ref": vListItemRef
30110
30173
  }, listItemProps, {
30111
- "active": vListItemRef.value?.isActivated,
30174
+ "active": vListItemRef.value?.isActivated || undefined,
30112
30175
  "class": ['v-treeview-item', {
30113
30176
  'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
30114
30177
  'v-treeview-item--filtered': isFiltered.value
@@ -30320,10 +30383,7 @@
30320
30383
  expandIcon: '$treeviewExpand',
30321
30384
  slim: true
30322
30385
  }), ['itemType', 'nav', 'openStrategy']),
30323
- modelValue: {
30324
- type: Array,
30325
- default: () => []
30326
- }
30386
+ modelValue: Array
30327
30387
  }, 'VTreeview');
30328
30388
  const VTreeview = genericComponent()({
30329
30389
  name: 'VTreeview',
@@ -30338,7 +30398,8 @@
30338
30398
  },
30339
30399
  setup(props, _ref) {
30340
30400
  let {
30341
- slots
30401
+ slots,
30402
+ emit
30342
30403
  } = _ref;
30343
30404
  const {
30344
30405
  items
@@ -30347,13 +30408,12 @@
30347
30408
  const baseColor = vue.toRef(() => props.baseColor);
30348
30409
  const color = vue.toRef(() => props.color);
30349
30410
  const activated = useProxiedModel(props, 'activated');
30350
- const model = useProxiedModel(props, 'modelValue');
30351
- const _selected = useProxiedModel(props, 'selected', props.modelValue);
30411
+ const _selected = useProxiedModel(props, 'selected');
30352
30412
  const selected = vue.computed({
30353
- get: () => _selected.value,
30413
+ get: () => props.modelValue ?? _selected.value,
30354
30414
  set(val) {
30355
30415
  _selected.value = val;
30356
- model.value = val;
30416
+ emit('update:modelValue', val);
30357
30417
  }
30358
30418
  });
30359
30419
  const vListRef = vue.ref();
@@ -33524,7 +33584,7 @@
33524
33584
  };
33525
33585
  });
33526
33586
  }
33527
- const version$1 = "3.9.0-beta.1-dev.2025-07-02";
33587
+ const version$1 = "3.9.0-beta.1-dev.2025-07-04";
33528
33588
  createVuetify$1.version = version$1;
33529
33589
 
33530
33590
  // Vue's inject() can only be used in setup
@@ -33822,7 +33882,7 @@
33822
33882
 
33823
33883
  /* eslint-disable local-rules/sort-imports */
33824
33884
 
33825
- const version = "3.9.0-beta.1-dev.2025-07-02";
33885
+ const version = "3.9.0-beta.1-dev.2025-07-04";
33826
33886
 
33827
33887
  /* eslint-disable local-rules/sort-imports */
33828
33888