@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
package/dist/vuetify.js CHANGED
@@ -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
  */
@@ -9104,7 +9104,7 @@
9104
9104
  selected.set(id, value ? 'on' : 'off');
9105
9105
  return selected;
9106
9106
  },
9107
- in: (v, children, parents) => {
9107
+ in: (v, children, parents, disabled) => {
9108
9108
  const map = new Map();
9109
9109
  for (const id of v || []) {
9110
9110
  strategy.select({
@@ -9112,7 +9112,8 @@
9112
9112
  value: true,
9113
9113
  selected: map,
9114
9114
  children,
9115
- parents
9115
+ parents,
9116
+ disabled
9116
9117
  });
9117
9118
  }
9118
9119
  return map;
@@ -9144,9 +9145,9 @@
9144
9145
  selected: singleSelected
9145
9146
  });
9146
9147
  },
9147
- in: (v, children, parents) => {
9148
+ in: (v, children, parents, disabled) => {
9148
9149
  if (v?.length) {
9149
- return parentStrategy.in(v.slice(0, 1), children, parents);
9150
+ return parentStrategy.in(v.slice(0, 1), children, parents, disabled);
9150
9151
  }
9151
9152
  return new Map();
9152
9153
  },
@@ -9212,23 +9213,32 @@
9212
9213
  value,
9213
9214
  selected,
9214
9215
  children,
9215
- parents
9216
+ parents,
9217
+ disabled
9216
9218
  } = _ref6;
9217
9219
  id = vue.toRaw(id);
9218
9220
  const original = new Map(selected);
9219
9221
  const items = [id];
9220
9222
  while (items.length) {
9221
9223
  const item = items.shift();
9222
- selected.set(vue.toRaw(item), value ? 'on' : 'off');
9224
+ if (!disabled.has(item)) {
9225
+ selected.set(vue.toRaw(item), value ? 'on' : 'off');
9226
+ }
9223
9227
  if (children.has(item)) {
9224
9228
  items.push(...children.get(item));
9225
9229
  }
9226
9230
  }
9227
9231
  let parent = vue.toRaw(parents.get(id));
9228
9232
  while (parent) {
9229
- const childrenIds = children.get(parent);
9230
- const everySelected = childrenIds.every(cid => selected.get(vue.toRaw(cid)) === 'on');
9231
- const noneSelected = childrenIds.every(cid => !selected.has(vue.toRaw(cid)) || selected.get(vue.toRaw(cid)) === 'off');
9233
+ let everySelected = true;
9234
+ let noneSelected = true;
9235
+ for (const child of children.get(parent)) {
9236
+ const cid = vue.toRaw(child);
9237
+ if (disabled.has(cid)) continue;
9238
+ if (selected.get(cid) !== 'on') everySelected = false;
9239
+ if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false;
9240
+ if (!everySelected && !noneSelected) break;
9241
+ }
9232
9242
  selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
9233
9243
  parent = vue.toRaw(parents.get(parent));
9234
9244
  }
@@ -9245,7 +9255,7 @@
9245
9255
  }
9246
9256
  return selected;
9247
9257
  },
9248
- in: (v, children, parents) => {
9258
+ in: (v, children, parents, disabled) => {
9249
9259
  let map = new Map();
9250
9260
  for (const id of v || []) {
9251
9261
  map = strategy.select({
@@ -9253,7 +9263,8 @@
9253
9263
  value: true,
9254
9264
  selected: map,
9255
9265
  children,
9256
- parents
9266
+ parents,
9267
+ disabled
9257
9268
  });
9258
9269
  }
9259
9270
  return map;
@@ -9300,8 +9311,9 @@
9300
9311
  root: {
9301
9312
  register: () => null,
9302
9313
  unregister: () => null,
9303
- parents: vue.ref(new Map()),
9304
9314
  children: vue.ref(new Map()),
9315
+ parents: vue.ref(new Map()),
9316
+ disabled: vue.ref(new Set()),
9305
9317
  open: () => null,
9306
9318
  openOnSelect: () => null,
9307
9319
  activate: () => null,
@@ -9330,6 +9342,7 @@
9330
9342
  let isUnmounted = false;
9331
9343
  const children = vue.shallowRef(new Map());
9332
9344
  const parents = vue.shallowRef(new Map());
9345
+ const disabled = vue.shallowRef(new Set());
9333
9346
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => vue.toRaw(i)) : v), v => [...v.values()]);
9334
9347
  const activeStrategy = vue.computed(() => {
9335
9348
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
@@ -9378,7 +9391,7 @@
9378
9391
  }
9379
9392
  });
9380
9393
  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));
9381
- 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));
9394
+ 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));
9382
9395
  vue.onBeforeUnmount(() => {
9383
9396
  isUnmounted = true;
9384
9397
  });
@@ -9408,7 +9421,7 @@
9408
9421
  }
9409
9422
  return arr;
9410
9423
  }),
9411
- register: (id, parentId, isGroup) => {
9424
+ register: (id, parentId, isDisabled, isGroup) => {
9412
9425
  if (nodeIds.has(id)) {
9413
9426
  const path = getPath(id).map(String).join(' -> ');
9414
9427
  const newPath = getPath(parentId).concat(id).map(String).join(' -> ');
@@ -9418,6 +9431,7 @@
9418
9431
  nodeIds.add(id);
9419
9432
  }
9420
9433
  parentId && id !== parentId && parents.value.set(id, parentId);
9434
+ isDisabled && disabled.value.add(id);
9421
9435
  isGroup && children.value.set(id, []);
9422
9436
  if (parentId != null) {
9423
9437
  children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
@@ -9427,6 +9441,7 @@
9427
9441
  if (isUnmounted) return;
9428
9442
  nodeIds.delete(id);
9429
9443
  children.value.delete(id);
9444
+ disabled.value.delete(id);
9430
9445
  const parent = parents.value.get(id);
9431
9446
  if (parent) {
9432
9447
  const list = children.value.get(parent) ?? [];
@@ -9476,6 +9491,7 @@
9476
9491
  selected: new Map(selected.value),
9477
9492
  children: children.value,
9478
9493
  parents: parents.value,
9494
+ disabled: disabled.value,
9479
9495
  event
9480
9496
  });
9481
9497
  newSelected && (selected.value = newSelected);
@@ -9518,13 +9534,14 @@
9518
9534
  },
9519
9535
  children,
9520
9536
  parents,
9537
+ disabled,
9521
9538
  getPath
9522
9539
  }
9523
9540
  };
9524
9541
  vue.provide(VNestedSymbol, nested);
9525
9542
  return nested.root;
9526
9543
  };
9527
- const useNestedItem = (id, isGroup) => {
9544
+ const useNestedItem = (id, isDisabled, isGroup) => {
9528
9545
  const parent = vue.inject(VNestedSymbol, emptyNested);
9529
9546
  const uidSymbol = Symbol('nested item');
9530
9547
  const computedId = vue.computed(() => vue.toRaw(vue.toValue(id)) ?? uidSymbol);
@@ -9544,10 +9561,14 @@
9544
9561
  isGroupActivator: parent.isGroupActivator
9545
9562
  };
9546
9563
  vue.onBeforeMount(() => {
9547
- !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup);
9564
+ if (!parent.isGroupActivator) {
9565
+ parent.root.register(computedId.value, parent.id.value, vue.toValue(isDisabled), isGroup);
9566
+ }
9548
9567
  });
9549
9568
  vue.onBeforeUnmount(() => {
9550
- !parent.isGroupActivator && parent.root.unregister(computedId.value);
9569
+ if (!parent.isGroupActivator) {
9570
+ parent.root.unregister(computedId.value);
9571
+ }
9551
9572
  });
9552
9573
  isGroup && vue.provide(VNestedSymbol, item);
9553
9574
  return item;
@@ -9579,6 +9600,7 @@
9579
9600
  type: IconValue,
9580
9601
  default: '$collapse'
9581
9602
  },
9603
+ disabled: Boolean,
9582
9604
  expandIcon: {
9583
9605
  type: IconValue,
9584
9606
  default: '$expand'
@@ -9604,7 +9626,7 @@
9604
9626
  isOpen,
9605
9627
  open,
9606
9628
  id: _id
9607
- } = useNestedItem(() => props.value, true);
9629
+ } = useNestedItem(() => props.value, () => props.disabled, true);
9608
9630
  const id = vue.computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
9609
9631
  const list = useList();
9610
9632
  const {
@@ -9774,7 +9796,7 @@
9774
9796
  parent,
9775
9797
  openOnSelect,
9776
9798
  id: uid
9777
- } = useNestedItem(id, false);
9799
+ } = useNestedItem(id, () => props.disabled, false);
9778
9800
  const list = useList();
9779
9801
  const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
9780
9802
  const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
@@ -20833,10 +20855,15 @@
20833
20855
  type: String,
20834
20856
  default: 'start'
20835
20857
  },
20836
- fixed: Boolean,
20858
+ fixed: {
20859
+ type: [Boolean, String],
20860
+ default: false
20861
+ },
20837
20862
  fixedOffset: [Number, String],
20863
+ fixedEndOffset: [Number, String],
20838
20864
  height: [Number, String],
20839
20865
  lastFixed: Boolean,
20866
+ firstFixedEnd: Boolean,
20840
20867
  noPadding: Boolean,
20841
20868
  tag: String,
20842
20869
  width: [Number, String],
@@ -20847,10 +20874,13 @@
20847
20874
  slots
20848
20875
  } = _ref;
20849
20876
  const Tag = props.tag ?? 'td';
20877
+ const fixedSide = typeof props.fixed === 'string' ? props.fixed : props.fixed ? 'start' : 'none';
20850
20878
  return vue.createVNode(Tag, {
20851
20879
  "class": vue.normalizeClass(['v-data-table__td', {
20852
- 'v-data-table-column--fixed': props.fixed,
20880
+ 'v-data-table-column--fixed': fixedSide === 'start',
20881
+ 'v-data-table-column--fixed-end': fixedSide === 'end',
20853
20882
  'v-data-table-column--last-fixed': props.lastFixed,
20883
+ 'v-data-table-column--first-fixed-end': props.firstFixedEnd,
20854
20884
  'v-data-table-column--no-padding': props.noPadding,
20855
20885
  'v-data-table-column--nowrap': props.nowrap
20856
20886
  }, `v-data-table-column--align-${props.align}`]),
@@ -20858,7 +20888,8 @@
20858
20888
  height: convertToUnit(props.height),
20859
20889
  width: convertToUnit(props.width),
20860
20890
  maxWidth: convertToUnit(props.maxWidth),
20861
- left: convertToUnit(props.fixedOffset || null)
20891
+ left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
20892
+ right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
20862
20893
  }
20863
20894
  }, {
20864
20895
  default: () => [slots.default?.()]
@@ -20955,20 +20986,28 @@
20955
20986
  }
20956
20987
  function parseFixedColumns(items) {
20957
20988
  let seenFixed = false;
20958
- function setFixed(item) {
20959
- let parentFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
20989
+ function setFixed(item, side) {
20990
+ let parentFixedSide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
20960
20991
  if (!item) return;
20961
- if (parentFixed) {
20962
- item.fixed = true;
20992
+ if (parentFixedSide !== 'none') {
20993
+ item.fixed = parentFixedSide;
20963
20994
  }
20964
- if (item.fixed) {
20965
- if (item.children) {
20966
- for (let i = item.children.length - 1; i >= 0; i--) {
20967
- setFixed(item.children[i], true);
20995
+
20996
+ // normalize to simplify logic below
20997
+ if (item.fixed === true) {
20998
+ item.fixed = 'start';
20999
+ }
21000
+ const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
21001
+ if (item.fixed === side) {
21002
+ if (orderedChildren) {
21003
+ for (const child of orderedChildren) {
21004
+ setFixed(child, side, side);
20968
21005
  }
20969
21006
  } else {
20970
- if (!seenFixed) {
21007
+ if (!seenFixed && side === 'start') {
20971
21008
  item.lastFixed = true;
21009
+ } else if (!seenFixed && side === 'end') {
21010
+ item.firstFixedEnd = true;
20972
21011
  } else if (isNaN(Number(item.width))) {
20973
21012
  consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
20974
21013
  } else {
@@ -20977,36 +21016,57 @@
20977
21016
  seenFixed = true;
20978
21017
  }
20979
21018
  } else {
20980
- if (item.children) {
20981
- for (let i = item.children.length - 1; i >= 0; i--) {
20982
- setFixed(item.children[i]);
21019
+ if (orderedChildren) {
21020
+ for (const child of orderedChildren) {
21021
+ setFixed(child, side);
20983
21022
  }
20984
21023
  } else {
20985
21024
  seenFixed = false;
20986
21025
  }
20987
21026
  }
20988
21027
  }
20989
- for (let i = items.length - 1; i >= 0; i--) {
20990
- setFixed(items[i]);
21028
+ for (const item of items.toReversed()) {
21029
+ setFixed(item, 'start');
21030
+ }
21031
+ for (const item of items) {
21032
+ setFixed(item, 'end');
20991
21033
  }
20992
21034
  function setFixedOffset(item) {
20993
- let fixedOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
20994
- if (!item) return fixedOffset;
21035
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
21036
+ if (!item) return offset;
20995
21037
  if (item.children) {
20996
- item.fixedOffset = fixedOffset;
21038
+ item.fixedOffset = offset;
20997
21039
  for (const child of item.children) {
20998
- fixedOffset = setFixedOffset(child, fixedOffset);
21040
+ offset = setFixedOffset(child, offset);
20999
21041
  }
21000
- } else if (item.fixed) {
21001
- item.fixedOffset = fixedOffset;
21002
- fixedOffset += parseFloat(item.width || '0') || 0;
21042
+ } else if (item.fixed && item.fixed !== 'end') {
21043
+ item.fixedOffset = offset;
21044
+ offset += parseFloat(item.width || '0') || 0;
21003
21045
  }
21004
- return fixedOffset;
21046
+ return offset;
21005
21047
  }
21006
21048
  let fixedOffset = 0;
21007
21049
  for (const item of items) {
21008
21050
  fixedOffset = setFixedOffset(item, fixedOffset);
21009
21051
  }
21052
+ function setFixedEndOffset(item) {
21053
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
21054
+ if (!item) return offset;
21055
+ if (item.children) {
21056
+ item.fixedEndOffset = offset;
21057
+ for (const child of item.children) {
21058
+ offset = setFixedEndOffset(child, offset);
21059
+ }
21060
+ } else if (item.fixed === 'end') {
21061
+ item.fixedEndOffset = offset;
21062
+ offset += parseFloat(item.width || '0') || 0;
21063
+ }
21064
+ return offset;
21065
+ }
21066
+ let fixedEndOffset = 0;
21067
+ for (const item of items.toReversed()) {
21068
+ fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
21069
+ }
21010
21070
  }
21011
21071
  function parse(items, maxDepth) {
21012
21072
  const headers = [];
@@ -21139,7 +21199,6 @@
21139
21199
  color: String,
21140
21200
  disableSort: Boolean,
21141
21201
  fixedHeader: Boolean,
21142
- lastFixed: Boolean,
21143
21202
  multiSort: Boolean,
21144
21203
  sortAscIcon: {
21145
21204
  type: IconValue,
@@ -21186,11 +21245,12 @@
21186
21245
  loaderClasses
21187
21246
  } = useLoader(props);
21188
21247
  function getFixedStyles(column, y) {
21189
- if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
21248
+ if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
21249
+ const fixedSide = typeof column.fixed === 'string' ? column.fixed : column.fixed ? 'start' : 'none';
21190
21250
  return {
21191
21251
  position: 'sticky',
21192
- left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
21193
- right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
21252
+ left: fixedSide === 'start' ? convertToUnit(column.fixedOffset) : undefined,
21253
+ right: fixedSide === 'end' ? convertToUnit(column.fixedEndOffset) : undefined,
21194
21254
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
21195
21255
  };
21196
21256
  }
@@ -21253,6 +21313,7 @@
21253
21313
  "fixed": column.fixed,
21254
21314
  "nowrap": column.nowrap,
21255
21315
  "lastFixed": column.lastFixed,
21316
+ "firstFixedEnd": column.firstFixedEnd,
21256
21317
  "noPadding": noPadding,
21257
21318
  "tabindex": column.sortable ? 0 : undefined,
21258
21319
  "onClick": column.sortable ? () => toggleSort(column) : undefined,
@@ -21533,7 +21594,9 @@
21533
21594
  },
21534
21595
  "fixed": column.fixed,
21535
21596
  "fixedOffset": column.fixedOffset,
21597
+ "fixedEndOffset": column.fixedEndOffset,
21536
21598
  "lastFixed": column.lastFixed,
21599
+ "firstFixedEnd": column.firstFixedEnd,
21537
21600
  "maxWidth": !mobile.value ? column.maxWidth : undefined,
21538
21601
  "noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
21539
21602
  "nowrap": column.nowrap,
@@ -30386,7 +30449,7 @@
30386
30449
  return vue.createVNode(VListItem, vue.mergeProps({
30387
30450
  "ref": vListItemRef
30388
30451
  }, listItemProps, {
30389
- "active": vListItemRef.value?.isActivated,
30452
+ "active": vListItemRef.value?.isActivated || undefined,
30390
30453
  "class": ['v-treeview-item', {
30391
30454
  'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
30392
30455
  'v-treeview-item--filtered': isFiltered.value
@@ -30598,10 +30661,7 @@
30598
30661
  expandIcon: '$treeviewExpand',
30599
30662
  slim: true
30600
30663
  }), ['itemType', 'nav', 'openStrategy']),
30601
- modelValue: {
30602
- type: Array,
30603
- default: () => []
30604
- }
30664
+ modelValue: Array
30605
30665
  }, 'VTreeview');
30606
30666
  const VTreeview = genericComponent()({
30607
30667
  name: 'VTreeview',
@@ -30616,7 +30676,8 @@
30616
30676
  },
30617
30677
  setup(props, _ref) {
30618
30678
  let {
30619
- slots
30679
+ slots,
30680
+ emit
30620
30681
  } = _ref;
30621
30682
  const {
30622
30683
  items
@@ -30625,13 +30686,12 @@
30625
30686
  const baseColor = vue.toRef(() => props.baseColor);
30626
30687
  const color = vue.toRef(() => props.color);
30627
30688
  const activated = useProxiedModel(props, 'activated');
30628
- const model = useProxiedModel(props, 'modelValue');
30629
- const _selected = useProxiedModel(props, 'selected', props.modelValue);
30689
+ const _selected = useProxiedModel(props, 'selected');
30630
30690
  const selected = vue.computed({
30631
- get: () => _selected.value,
30691
+ get: () => props.modelValue ?? _selected.value,
30632
30692
  set(val) {
30633
30693
  _selected.value = val;
30634
- model.value = val;
30694
+ emit('update:modelValue', val);
30635
30695
  }
30636
30696
  });
30637
30697
  const vListRef = vue.ref();
@@ -31234,7 +31294,7 @@
31234
31294
  };
31235
31295
  });
31236
31296
  }
31237
- const version$1 = "3.9.0-beta.1-dev.2025-07-02";
31297
+ const version$1 = "3.9.0-beta.1-dev.2025-07-04";
31238
31298
  createVuetify$1.version = version$1;
31239
31299
 
31240
31300
  // Vue's inject() can only be used in setup
@@ -31259,7 +31319,7 @@
31259
31319
  ...options
31260
31320
  });
31261
31321
  };
31262
- const version = "3.9.0-beta.1-dev.2025-07-02";
31322
+ const version = "3.9.0-beta.1-dev.2025-07-04";
31263
31323
  createVuetify.version = version;
31264
31324
 
31265
31325
  exports.blueprints = index;