vuetify 3.6.13 → 3.7.0-beta.1

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 (177) hide show
  1. package/dist/json/attributes.json +166 -26
  2. package/dist/json/importMap-labs.json +16 -16
  3. package/dist/json/importMap.json +138 -138
  4. package/dist/json/tags.json +40 -5
  5. package/dist/json/web-types.json +394 -41
  6. package/dist/vuetify-labs.css +2300 -2284
  7. package/dist/vuetify-labs.d.ts +12763 -12509
  8. package/dist/vuetify-labs.esm.js +153 -145
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +153 -145
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +887 -871
  13. package/dist/vuetify.d.ts +11161 -10982
  14. package/dist/vuetify.esm.js +107 -65
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +107 -65
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +1076 -1078
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/index.d.mts +55 -55
  22. package/lib/components/VAppBar/index.d.mts +175 -169
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +15 -8
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VAutocomplete/index.d.mts +635 -634
  26. package/lib/components/VAvatar/VAvatar.css +7 -0
  27. package/lib/components/VAvatar/VAvatar.mjs +6 -1
  28. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  29. package/lib/components/VAvatar/VAvatar.sass +1 -0
  30. package/lib/components/VAvatar/_variables.scss +13 -0
  31. package/lib/components/VAvatar/index.d.mts +36 -30
  32. package/lib/components/VBadge/index.d.mts +58 -58
  33. package/lib/components/VBanner/index.d.mts +59 -59
  34. package/lib/components/VBottomNavigation/index.d.mts +58 -58
  35. package/lib/components/VBottomSheet/index.d.mts +125 -125
  36. package/lib/components/VBreadcrumbs/index.d.mts +42 -42
  37. package/lib/components/VBtn/VBtn.mjs +3 -1
  38. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  39. package/lib/components/VBtn/index.d.mts +113 -107
  40. package/lib/components/VBtnGroup/index.d.mts +23 -23
  41. package/lib/components/VBtnToggle/index.d.mts +40 -40
  42. package/lib/components/VCard/index.d.mts +93 -93
  43. package/lib/components/VCarousel/index.d.mts +130 -121
  44. package/lib/components/VCheckbox/index.d.mts +166 -166
  45. package/lib/components/VChip/index.d.mts +86 -86
  46. package/lib/components/VChipGroup/index.d.mts +46 -46
  47. package/lib/components/VColorPicker/index.d.mts +96 -96
  48. package/lib/components/VCombobox/VCombobox.mjs +15 -8
  49. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  50. package/lib/components/VCombobox/index.d.mts +635 -634
  51. package/lib/components/VConfirmEdit/index.d.mts +2 -2
  52. package/lib/components/VCounter/index.d.mts +27 -27
  53. package/lib/components/VDataIterator/index.d.mts +50 -50
  54. package/lib/components/VDataTable/index.d.mts +253 -253
  55. package/lib/components/VDatePicker/index.d.mts +134 -134
  56. package/lib/components/VDialog/index.d.mts +378 -378
  57. package/lib/components/VDivider/index.d.mts +15 -15
  58. package/lib/components/VEmptyState/index.d.mts +47 -47
  59. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +7 -2
  60. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  61. package/lib/components/VExpansionPanel/index.d.mts +196 -124
  62. package/lib/components/VFab/index.d.mts +233 -227
  63. package/lib/components/VField/index.d.mts +46 -46
  64. package/lib/components/VFileInput/index.d.mts +243 -243
  65. package/lib/components/VFooter/index.d.mts +50 -50
  66. package/lib/components/VForm/index.d.mts +9 -9
  67. package/lib/components/VGrid/VContainer.mjs +6 -1
  68. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  69. package/lib/components/VGrid/index.d.mts +178 -142
  70. package/lib/components/VIcon/index.d.mts +24 -24
  71. package/lib/components/VImg/VImg.css +9 -0
  72. package/lib/components/VImg/VImg.mjs +2 -0
  73. package/lib/components/VImg/VImg.mjs.map +1 -1
  74. package/lib/components/VImg/VImg.sass +9 -0
  75. package/lib/components/VImg/index.d.mts +101 -92
  76. package/lib/components/VInfiniteScroll/index.d.mts +22 -22
  77. package/lib/components/VInput/index.d.mts +53 -53
  78. package/lib/components/VItemGroup/index.d.mts +17 -17
  79. package/lib/components/VLabel/index.d.mts +8 -8
  80. package/lib/components/VLayout/index.d.mts +36 -36
  81. package/lib/components/VLazy/index.d.mts +31 -31
  82. package/lib/components/VList/VListItem.css +2 -2
  83. package/lib/components/VList/VListItem.mjs +2 -0
  84. package/lib/components/VList/VListItem.mjs.map +1 -1
  85. package/lib/components/VList/VListItem.sass +1 -1
  86. package/lib/components/VList/index.d.mts +191 -190
  87. package/lib/components/VLocaleProvider/index.d.mts +7 -7
  88. package/lib/components/VMain/index.d.mts +10 -10
  89. package/lib/components/VMenu/VMenu.mjs +7 -5
  90. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  91. package/lib/components/VMenu/index.d.mts +423 -423
  92. package/lib/components/VMessages/index.d.mts +20 -20
  93. package/lib/components/VNavigationDrawer/index.d.mts +72 -72
  94. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  95. package/lib/components/VOtpInput/index.d.mts +88 -88
  96. package/lib/components/VOverlay/index.d.mts +104 -104
  97. package/lib/components/VOverlay/locationStrategies.mjs +0 -6
  98. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  99. package/lib/components/VPagination/index.d.mts +55 -55
  100. package/lib/components/VParallax/index.d.mts +7 -7
  101. package/lib/components/VProgressCircular/index.d.mts +24 -24
  102. package/lib/components/VProgressLinear/index.d.mts +52 -52
  103. package/lib/components/VRadio/index.d.mts +41 -41
  104. package/lib/components/VRadioGroup/index.d.mts +97 -97
  105. package/lib/components/VRangeSlider/index.d.mts +94 -94
  106. package/lib/components/VRating/index.d.mts +22 -22
  107. package/lib/components/VResponsive/index.d.mts +23 -23
  108. package/lib/components/VSelect/VSelect.mjs +15 -13
  109. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  110. package/lib/components/VSelect/index.d.mts +635 -634
  111. package/lib/components/VSelect/useScrolling.mjs +3 -3
  112. package/lib/components/VSelect/useScrolling.mjs.map +1 -1
  113. package/lib/components/VSelectionControl/index.d.mts +43 -43
  114. package/lib/components/VSelectionControlGroup/index.d.mts +39 -39
  115. package/lib/components/VSheet/index.d.mts +34 -34
  116. package/lib/components/VSkeletonLoader/index.d.mts +17 -17
  117. package/lib/components/VSlideGroup/VSlideGroup.mjs +3 -1
  118. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  119. package/lib/components/VSlideGroup/index.d.mts +39 -33
  120. package/lib/components/VSlider/index.d.mts +87 -87
  121. package/lib/components/VSnackbar/index.d.mts +436 -436
  122. package/lib/components/VSparkline/index.d.mts +38 -38
  123. package/lib/components/VSpeedDial/index.d.mts +185 -185
  124. package/lib/components/VStepper/index.d.mts +119 -119
  125. package/lib/components/VSwitch/index.d.mts +100 -100
  126. package/lib/components/VSystemBar/index.d.mts +39 -39
  127. package/lib/components/VTable/index.d.mts +4 -4
  128. package/lib/components/VTabs/index.d.mts +530 -512
  129. package/lib/components/VTextField/index.d.mts +397 -397
  130. package/lib/components/VTextarea/index.d.mts +274 -274
  131. package/lib/components/VTimeline/index.d.mts +26 -26
  132. package/lib/components/VToolbar/index.d.mts +53 -53
  133. package/lib/components/VTooltip/index.d.mts +451 -451
  134. package/lib/components/VValidation/index.d.mts +22 -21
  135. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +2 -0
  136. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  137. package/lib/components/VVirtualScroll/index.d.mts +13 -10
  138. package/lib/components/VWindow/index.d.mts +31 -31
  139. package/lib/components/index.d.mts +11225 -11046
  140. package/lib/components/transitions/index.d.mts +200 -200
  141. package/lib/composables/nested/nested.mjs +3 -4
  142. package/lib/composables/nested/nested.mjs.map +1 -1
  143. package/lib/composables/nested/openStrategies.mjs +4 -2
  144. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  145. package/lib/composables/nested/selectStrategies.mjs +5 -5
  146. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  147. package/lib/composables/validation.mjs +8 -6
  148. package/lib/composables/validation.mjs.map +1 -1
  149. package/lib/composables/virtual.mjs +1 -0
  150. package/lib/composables/virtual.mjs.map +1 -1
  151. package/lib/entry-bundler.mjs +1 -1
  152. package/lib/entry-bundler.mjs.map +1 -1
  153. package/lib/framework.mjs +1 -1
  154. package/lib/framework.mjs.map +1 -1
  155. package/lib/index.d.mts +44 -44
  156. package/lib/labs/VCalendar/index.d.mts +52 -52
  157. package/lib/labs/VDateInput/index.d.mts +244 -244
  158. package/lib/labs/VNumberInput/index.d.mts +235 -235
  159. package/lib/labs/VPicker/index.d.mts +45 -45
  160. package/lib/labs/VSnackbarQueue/index.d.mts +642 -642
  161. package/lib/labs/VStepperVertical/index.d.mts +224 -188
  162. package/lib/labs/VTimePicker/VTimePickerClock.mjs +0 -1
  163. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  164. package/lib/labs/VTimePicker/index.d.mts +115 -115
  165. package/lib/labs/VTreeview/VTreeview.mjs +7 -5
  166. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  167. package/lib/labs/VTreeview/VTreeviewChildren.mjs +33 -10
  168. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  169. package/lib/labs/VTreeview/VTreeviewItem.css +1 -1
  170. package/lib/labs/VTreeview/VTreeviewItem.mjs +14 -74
  171. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  172. package/lib/labs/VTreeview/VTreeviewItem.sass +2 -5
  173. package/lib/labs/VTreeview/index.d.mts +270 -253
  174. package/lib/labs/components.d.mts +1835 -1782
  175. package/lib/util/helpers.mjs +5 -0
  176. package/lib/util/helpers.mjs.map +1 -1
  177. package/package.json +10 -5
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.13
2
+ * Vuetify v3.7.0-beta.1
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -575,6 +575,11 @@ function templateRef() {
575
575
  });
576
576
  return fn;
577
577
  }
578
+ function checkPrintable(e) {
579
+ const isPrintableChar = e.key.length === 1;
580
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
581
+ return isPrintableChar && noModifier;
582
+ }
578
583
 
579
584
  // Utilities
580
585
  const block = ['top', 'bottom'];
@@ -3248,6 +3253,7 @@ const Intersect = {
3248
3253
  // not intended for public use, this is passed in by vuetify-loader
3249
3254
 
3250
3255
  const makeVImgProps = propsFactory({
3256
+ absolute: Boolean,
3251
3257
  alt: String,
3252
3258
  cover: Boolean,
3253
3259
  color: String,
@@ -3504,6 +3510,7 @@ const VImg = genericComponent()({
3504
3510
  const responsiveProps = VResponsive.filterProps(props);
3505
3511
  return withDirectives(createVNode(VResponsive, mergeProps({
3506
3512
  "class": ['v-img', {
3513
+ 'v-img--absolute': props.absolute,
3507
3514
  'v-img--booting': !isBooted.value
3508
3515
  }, backgroundColorClasses.value, roundedClasses.value, props.class],
3509
3516
  "style": [{
@@ -5511,6 +5518,7 @@ const makeVBtnProps = propsFactory({
5511
5518
  type: Boolean,
5512
5519
  default: undefined
5513
5520
  },
5521
+ activeColor: String,
5514
5522
  baseColor: String,
5515
5523
  symbol: {
5516
5524
  type: null,
@@ -5602,10 +5610,11 @@ const VBtn = genericComponent()({
5602
5610
  }
5603
5611
  return group?.isSelected.value;
5604
5612
  });
5613
+ const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5605
5614
  const variantProps = computed(() => {
5606
5615
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5607
5616
  return {
5608
- color: showColor ? props.color ?? props.baseColor : props.baseColor,
5617
+ color: showColor ? color.value ?? props.baseColor : props.baseColor,
5609
5618
  variant: props.variant
5610
5619
  };
5611
5620
  });
@@ -5946,6 +5955,7 @@ const makeVAvatarProps = propsFactory({
5946
5955
  icon: IconValue,
5947
5956
  image: String,
5948
5957
  text: String,
5958
+ ...makeBorderProps(),
5949
5959
  ...makeComponentProps(),
5950
5960
  ...makeDensityProps(),
5951
5961
  ...makeRoundedProps(),
@@ -5966,6 +5976,9 @@ const VAvatar = genericComponent()({
5966
5976
  const {
5967
5977
  themeClasses
5968
5978
  } = provideTheme(props);
5979
+ const {
5980
+ borderClasses
5981
+ } = useBorder(props);
5969
5982
  const {
5970
5983
  colorClasses,
5971
5984
  colorStyles,
@@ -5985,7 +5998,7 @@ const VAvatar = genericComponent()({
5985
5998
  "class": ['v-avatar', {
5986
5999
  'v-avatar--start': props.start,
5987
6000
  'v-avatar--end': props.end
5988
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6001
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5989
6002
  "style": [colorStyles.value, sizeStyles.value, props.style]
5990
6003
  }, {
5991
6004
  default: () => [!slots.default ? props.image ? createVNode(VImg, {
@@ -6685,12 +6698,14 @@ function useValidation(props) {
6685
6698
  const validateOn = computed(() => {
6686
6699
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
6687
6700
  if (value === 'lazy') value = 'input lazy';
6701
+ if (value === 'eager') value = 'input eager';
6688
6702
  const set = new Set(value?.split(' ') ?? []);
6689
6703
  return {
6690
- blur: set.has('blur') || set.has('input'),
6691
6704
  input: set.has('input'),
6692
- submit: set.has('submit'),
6693
- lazy: set.has('lazy')
6705
+ blur: set.has('blur') || set.has('input') || set.has('invalid-input'),
6706
+ invalidInput: set.has('invalid-input'),
6707
+ lazy: set.has('lazy'),
6708
+ eager: set.has('eager')
6694
6709
  };
6695
6710
  });
6696
6711
  const isValid = computed(() => {
@@ -6727,11 +6742,11 @@ function useValidation(props) {
6727
6742
  });
6728
6743
  onMounted(async () => {
6729
6744
  if (!validateOn.value.lazy) {
6730
- await validate(true);
6745
+ await validate(!validateOn.value.eager);
6731
6746
  }
6732
6747
  form?.update(uid.value, isValid.value, errorMessages.value);
6733
6748
  });
6734
- useToggleScope(() => validateOn.value.input, () => {
6749
+ useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
6735
6750
  watch(validationModel, () => {
6736
6751
  if (validationModel.value != null) {
6737
6752
  validate();
@@ -6759,7 +6774,7 @@ function useValidation(props) {
6759
6774
  async function resetValidation() {
6760
6775
  isPristine.value = true;
6761
6776
  if (!validateOn.value.lazy) {
6762
- await validate(true);
6777
+ await validate(!validateOn.value.eager);
6763
6778
  } else {
6764
6779
  internalErrorMessages.value = [];
6765
6780
  }
@@ -7699,7 +7714,9 @@ const VSlideGroup = genericComponent()({
7699
7714
  selected: group.selected,
7700
7715
  scrollTo,
7701
7716
  scrollOffset,
7702
- focus
7717
+ focus,
7718
+ hasPrev,
7719
+ hasNext
7703
7720
  };
7704
7721
  }
7705
7722
  });
@@ -8169,6 +8186,7 @@ const leafSingleActiveStrategy = mandatory => {
8169
8186
  return strategy;
8170
8187
  };
8171
8188
 
8189
+ // Utilities
8172
8190
  const singleOpenStrategy = {
8173
8191
  open: _ref => {
8174
8192
  let {
@@ -8202,11 +8220,11 @@ const multipleOpenStrategy = {
8202
8220
  parents
8203
8221
  } = _ref2;
8204
8222
  if (value) {
8205
- let parent = parents.get(id);
8223
+ let parent = toRaw(parents.get(id));
8206
8224
  opened.add(id);
8207
8225
  while (parent != null && parent !== id) {
8208
8226
  opened.add(parent);
8209
- parent = parents.get(parent);
8227
+ parent = toRaw(parents.get(parent));
8210
8228
  }
8211
8229
  return opened;
8212
8230
  } else {
@@ -8377,18 +8395,18 @@ const classicSelectStrategy = mandatory => {
8377
8395
  const items = [id];
8378
8396
  while (items.length) {
8379
8397
  const item = items.shift();
8380
- selected.set(item, value ? 'on' : 'off');
8398
+ selected.set(toRaw(item), value ? 'on' : 'off');
8381
8399
  if (children.has(item)) {
8382
8400
  items.push(...children.get(item));
8383
8401
  }
8384
8402
  }
8385
- let parent = parents.get(id);
8403
+ let parent = toRaw(parents.get(id));
8386
8404
  while (parent) {
8387
8405
  const childrenIds = children.get(parent);
8388
- const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
8389
- const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
8406
+ const everySelected = childrenIds.every(cid => selected.get(toRaw(cid)) === 'on');
8407
+ const noneSelected = childrenIds.every(cid => !selected.has(toRaw(cid)) || selected.get(toRaw(cid)) === 'off');
8390
8408
  selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
8391
- parent = parents.get(parent);
8409
+ parent = toRaw(parents.get(parent));
8392
8410
  }
8393
8411
 
8394
8412
  // If mandatory and planned deselect results in no selected
@@ -8466,7 +8484,7 @@ const useNested = props => {
8466
8484
  let isUnmounted = false;
8467
8485
  const children = ref(new Map());
8468
8486
  const parents = ref(new Map());
8469
- const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8487
+ const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(toRaw(v)), v => [...v.values()]);
8470
8488
  const activeStrategy = computed(() => {
8471
8489
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8472
8490
  if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
@@ -8557,7 +8575,6 @@ const useNested = props => {
8557
8575
  children.value.set(parent, list.filter(child => child !== id));
8558
8576
  }
8559
8577
  parents.value.delete(id);
8560
- opened.value.delete(id);
8561
8578
  },
8562
8579
  open: (id, value, event) => {
8563
8580
  vm.emit('click:open', {
@@ -8640,9 +8657,9 @@ const useNestedItem = (id, isGroup) => {
8640
8657
  const item = {
8641
8658
  ...parent,
8642
8659
  id: computedId,
8643
- open: (open, e) => parent.root.open(computedId.value, open, e),
8660
+ open: (open, e) => parent.root.open(toRaw(computedId.value), open, e),
8644
8661
  openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
8645
- isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
8662
+ isOpen: computed(() => parent.root.opened.value.has(toRaw(computedId.value))),
8646
8663
  parent: computed(() => parent.root.parents.value.get(computedId.value)),
8647
8664
  activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
8648
8665
  isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
@@ -8866,6 +8883,7 @@ const VListItem = genericComponent()({
8866
8883
  activate,
8867
8884
  isActivated,
8868
8885
  select,
8886
+ isOpen,
8869
8887
  isSelected,
8870
8888
  isIndeterminate,
8871
8889
  isGroupActivator,
@@ -8920,6 +8938,7 @@ const VListItem = genericComponent()({
8920
8938
  const slotProps = computed(() => ({
8921
8939
  isActive: isActive.value,
8922
8940
  select,
8941
+ isOpen: isOpen.value,
8923
8942
  isSelected: isSelected.value,
8924
8943
  isIndeterminate: isIndeterminate.value
8925
8944
  }));
@@ -9729,12 +9748,6 @@ function getIntrinsicSize(el, isRtl) {
9729
9748
  // el.style.removeProperty('max-width')
9730
9749
  // el.style.removeProperty('max-height')
9731
9750
 
9732
- if (isRtl) {
9733
- el.style.removeProperty('left');
9734
- } else {
9735
- el.style.removeProperty('right');
9736
- }
9737
-
9738
9751
  /* eslint-disable-next-line sonarjs/prefer-immediate-return */
9739
9752
  const contentBox = nullifyTransforms(el);
9740
9753
  if (isRtl) {
@@ -11126,23 +11139,25 @@ const VMenu = genericComponent()({
11126
11139
  const id = computed(() => props.id || `v-menu-${uid}`);
11127
11140
  const overlay = ref();
11128
11141
  const parent = inject$1(VMenuSymbol, null);
11129
- const openChildren = shallowRef(0);
11142
+ const openChildren = shallowRef(new Set());
11130
11143
  provide(VMenuSymbol, {
11131
11144
  register() {
11132
- ++openChildren.value;
11145
+ openChildren.value.add(uid);
11133
11146
  },
11134
11147
  unregister() {
11135
- --openChildren.value;
11148
+ openChildren.value.delete(uid);
11136
11149
  },
11137
11150
  closeParents(e) {
11138
11151
  setTimeout(() => {
11139
- if (!openChildren.value && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11152
+ if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11140
11153
  isActive.value = false;
11141
11154
  parent?.closeParents();
11142
11155
  }
11143
11156
  }, 40);
11144
11157
  }
11145
11158
  });
11159
+ onBeforeUnmount(() => parent?.unregister());
11160
+ onDeactivated(() => isActive.value = false);
11146
11161
  async function onFocusIn(e) {
11147
11162
  const before = e.relatedTarget;
11148
11163
  const after = e.target;
@@ -12054,6 +12069,7 @@ function useVirtual(props, items) {
12054
12069
  deep: true
12055
12070
  });
12056
12071
  return {
12072
+ calculateVisibleItems,
12057
12073
  containerRef,
12058
12074
  markerRef,
12059
12075
  computedItems,
@@ -12117,6 +12133,7 @@ const VVirtualScroll = genericComponent()({
12117
12133
  dimensionStyles
12118
12134
  } = useDimension(props);
12119
12135
  const {
12136
+ calculateVisibleItems,
12120
12137
  containerRef,
12121
12138
  markerRef,
12122
12139
  handleScroll,
@@ -12188,6 +12205,7 @@ const VVirtualScroll = genericComponent()({
12188
12205
  }, [children])]);
12189
12206
  });
12190
12207
  return {
12208
+ calculateVisibleItems,
12191
12209
  scrollToIndex
12192
12210
  };
12193
12211
  }
@@ -12256,9 +12274,9 @@ function useScrolling(listRef, textFieldRef) {
12256
12274
  }
12257
12275
  }
12258
12276
  return {
12259
- onListScroll,
12260
- onListKeydown
12261
- };
12277
+ onScrollPassive: onListScroll,
12278
+ onKeydown: onListKeydown
12279
+ }; // typescript doesn't know about vue's event merging
12262
12280
  }
12263
12281
 
12264
12282
  // Types
@@ -12333,7 +12351,7 @@ const VSelect = genericComponent()({
12333
12351
  const menu = computed({
12334
12352
  get: () => _menu.value,
12335
12353
  set: v => {
12336
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12354
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12337
12355
  _menu.value = v;
12338
12356
  }
12339
12357
  });
@@ -12372,10 +12390,7 @@ const VSelect = genericComponent()({
12372
12390
  };
12373
12391
  });
12374
12392
  const listRef = ref();
12375
- const {
12376
- onListScroll,
12377
- onListKeydown
12378
- } = useScrolling(listRef, vTextFieldRef);
12393
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12379
12394
  function onClear(e) {
12380
12395
  if (props.openOnClear) {
12381
12396
  menu.value = true;
@@ -12385,6 +12400,11 @@ const VSelect = genericComponent()({
12385
12400
  if (menuDisabled.value) return;
12386
12401
  menu.value = !menu.value;
12387
12402
  }
12403
+ function onListKeydown(e) {
12404
+ if (checkPrintable(e)) {
12405
+ onKeydown(e);
12406
+ }
12407
+ }
12388
12408
  function onKeydown(e) {
12389
12409
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12390
12410
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12405,11 +12425,6 @@ const VSelect = genericComponent()({
12405
12425
  // html select hotkeys
12406
12426
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12407
12427
 
12408
- function checkPrintable(e) {
12409
- const isPrintableChar = e.key.length === 1;
12410
- const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
12411
- return isPrintableChar && noModifier;
12412
- }
12413
12428
  if (props.multiple || !checkPrintable(e)) return;
12414
12429
  const now = performance.now();
12415
12430
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12454,6 +12469,11 @@ const VSelect = genericComponent()({
12454
12469
  menu.value = false;
12455
12470
  }
12456
12471
  }
12472
+ function onAfterEnter() {
12473
+ if (props.eager) {
12474
+ vVirtualScrollRef.value?.calculateVisibleItems();
12475
+ }
12476
+ }
12457
12477
  function onAfterLeave() {
12458
12478
  if (isFocused.value) {
12459
12479
  vTextFieldRef.value?.focus();
@@ -12532,6 +12552,7 @@ const VSelect = genericComponent()({
12532
12552
  "openOnClick": false,
12533
12553
  "closeOnContentClick": false,
12534
12554
  "transition": props.transition,
12555
+ "onAfterEnter": onAfterEnter,
12535
12556
  "onAfterLeave": onAfterLeave
12536
12557
  }, computedMenuProps.value), {
12537
12558
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -12541,11 +12562,10 @@ const VSelect = genericComponent()({
12541
12562
  "onMousedown": e => e.preventDefault(),
12542
12563
  "onKeydown": onListKeydown,
12543
12564
  "onFocusin": onFocusin,
12544
- "onScrollPassive": onListScroll,
12545
12565
  "tabindex": "-1",
12546
12566
  "aria-live": "polite",
12547
12567
  "color": props.itemColor ?? props.color
12548
- }, props.listProps), {
12568
+ }, listEvents, props.listProps), {
12549
12569
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
12550
12570
  "title": t(props.noDataText)
12551
12571
  }, null)), createVNode(VVirtualScroll, {
@@ -12840,7 +12860,7 @@ const VAutocomplete = genericComponent()({
12840
12860
  const menu = computed({
12841
12861
  get: () => _menu.value,
12842
12862
  set: v => {
12843
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12863
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12844
12864
  _menu.value = v;
12845
12865
  }
12846
12866
  });
@@ -12884,10 +12904,7 @@ const VAutocomplete = genericComponent()({
12884
12904
  });
12885
12905
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12886
12906
  const listRef = ref();
12887
- const {
12888
- onListScroll,
12889
- onListKeydown
12890
- } = useScrolling(listRef, vTextFieldRef);
12907
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12891
12908
  function onClear(e) {
12892
12909
  if (props.openOnClear) {
12893
12910
  menu.value = true;
@@ -12906,6 +12923,11 @@ const VAutocomplete = genericComponent()({
12906
12923
  }
12907
12924
  menu.value = !menu.value;
12908
12925
  }
12926
+ function onListKeydown(e) {
12927
+ if (checkPrintable(e)) {
12928
+ vTextFieldRef.value?.focus();
12929
+ }
12930
+ }
12909
12931
  function onKeydown(e) {
12910
12932
  if (props.readonly || form?.isReadonly.value) return;
12911
12933
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -12970,6 +12992,11 @@ const VAutocomplete = genericComponent()({
12970
12992
  }
12971
12993
  }
12972
12994
  }
12995
+ function onAfterEnter() {
12996
+ if (props.eager) {
12997
+ vVirtualScrollRef.value?.calculateVisibleItems();
12998
+ }
12999
+ }
12973
13000
  function onAfterLeave() {
12974
13001
  if (isFocused.value) {
12975
13002
  isPristine.value = true;
@@ -13098,6 +13125,7 @@ const VAutocomplete = genericComponent()({
13098
13125
  "openOnClick": false,
13099
13126
  "closeOnContentClick": false,
13100
13127
  "transition": props.transition,
13128
+ "onAfterEnter": onAfterEnter,
13101
13129
  "onAfterLeave": onAfterLeave
13102
13130
  }, props.menuProps), {
13103
13131
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -13108,11 +13136,10 @@ const VAutocomplete = genericComponent()({
13108
13136
  "onKeydown": onListKeydown,
13109
13137
  "onFocusin": onFocusin,
13110
13138
  "onFocusout": onFocusout,
13111
- "onScrollPassive": onListScroll,
13112
13139
  "tabindex": "-1",
13113
13140
  "aria-live": "polite",
13114
13141
  "color": props.itemColor ?? props.color
13115
- }, props.listProps), {
13142
+ }, listEvents, props.listProps), {
13116
13143
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
13117
13144
  "title": t(props.noDataText)
13118
13145
  }, null)), createVNode(VVirtualScroll, {
@@ -16673,7 +16700,7 @@ const VCombobox = genericComponent()({
16673
16700
  const menu = computed({
16674
16701
  get: () => _menu.value,
16675
16702
  set: v => {
16676
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16703
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16677
16704
  _menu.value = v;
16678
16705
  }
16679
16706
  });
@@ -16756,10 +16783,7 @@ const VCombobox = genericComponent()({
16756
16783
  });
16757
16784
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
16758
16785
  const listRef = ref();
16759
- const {
16760
- onListScroll,
16761
- onListKeydown
16762
- } = useScrolling(listRef, vTextFieldRef);
16786
+ const listEvents = useScrolling(listRef, vTextFieldRef);
16763
16787
  function onClear(e) {
16764
16788
  cleared = true;
16765
16789
  if (props.openOnClear) {
@@ -16778,6 +16802,11 @@ const VCombobox = genericComponent()({
16778
16802
  }
16779
16803
  menu.value = !menu.value;
16780
16804
  }
16805
+ function onListKeydown(e) {
16806
+ if (checkPrintable(e)) {
16807
+ vTextFieldRef.value?.focus();
16808
+ }
16809
+ }
16781
16810
  // eslint-disable-next-line complexity
16782
16811
  function onKeydown(e) {
16783
16812
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -16842,6 +16871,11 @@ const VCombobox = genericComponent()({
16842
16871
  }
16843
16872
  }
16844
16873
  }
16874
+ function onAfterEnter() {
16875
+ if (props.eager) {
16876
+ vVirtualScrollRef.value?.calculateVisibleItems();
16877
+ }
16878
+ }
16845
16879
  function onAfterLeave() {
16846
16880
  if (isFocused.value) {
16847
16881
  isPristine.value = true;
@@ -16966,6 +17000,7 @@ const VCombobox = genericComponent()({
16966
17000
  "openOnClick": false,
16967
17001
  "closeOnContentClick": false,
16968
17002
  "transition": props.transition,
17003
+ "onAfterEnter": onAfterEnter,
16969
17004
  "onAfterLeave": onAfterLeave
16970
17005
  }, props.menuProps), {
16971
17006
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -16976,11 +17011,10 @@ const VCombobox = genericComponent()({
16976
17011
  "onKeydown": onListKeydown,
16977
17012
  "onFocusin": onFocusin,
16978
17013
  "onFocusout": onFocusout,
16979
- "onScrollPassive": onListScroll,
16980
17014
  "tabindex": "-1",
16981
17015
  "aria-live": "polite",
16982
17016
  "color": props.itemColor ?? props.color
16983
- }, props.listProps), {
17017
+ }, listEvents, props.listProps), {
16984
17018
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
16985
17019
  "title": t(props.noDataText)
16986
17020
  }, null)), createVNode(VVirtualScroll, {
@@ -20924,6 +20958,7 @@ const makeVContainerProps = propsFactory({
20924
20958
  default: false
20925
20959
  },
20926
20960
  ...makeComponentProps(),
20961
+ ...makeDimensionProps(),
20927
20962
  ...makeTagProps()
20928
20963
  }, 'VContainer');
20929
20964
  const VContainer = genericComponent()({
@@ -20936,11 +20971,14 @@ const VContainer = genericComponent()({
20936
20971
  const {
20937
20972
  rtlClasses
20938
20973
  } = useRtl();
20974
+ const {
20975
+ dimensionStyles
20976
+ } = useDimension(props);
20939
20977
  useRender(() => createVNode(props.tag, {
20940
20978
  "class": ['v-container', {
20941
20979
  'v-container--fluid': props.fluid
20942
20980
  }, rtlClasses.value, props.class],
20943
- "style": props.style
20981
+ "style": [dimensionStyles.value, props.style]
20944
20982
  }, slots));
20945
20983
  return {};
20946
20984
  }
@@ -22362,7 +22400,8 @@ const makeVExpansionPanelTitleProps = propsFactory({
22362
22400
  default: false
22363
22401
  },
22364
22402
  readonly: Boolean,
22365
- ...makeComponentProps()
22403
+ ...makeComponentProps(),
22404
+ ...makeDimensionProps()
22366
22405
  }, 'VExpansionPanelTitle');
22367
22406
  const VExpansionPanelTitle = genericComponent()({
22368
22407
  name: 'VExpansionPanelTitle',
@@ -22380,6 +22419,9 @@ const VExpansionPanelTitle = genericComponent()({
22380
22419
  backgroundColorClasses,
22381
22420
  backgroundColorStyles
22382
22421
  } = useBackgroundColor(props, 'color');
22422
+ const {
22423
+ dimensionStyles
22424
+ } = useDimension(props);
22383
22425
  const slotProps = computed(() => ({
22384
22426
  collapseIcon: props.collapseIcon,
22385
22427
  disabled: expansionPanel.disabled.value,
@@ -22394,7 +22436,7 @@ const VExpansionPanelTitle = genericComponent()({
22394
22436
  'v-expansion-panel-title--focusable': props.focusable,
22395
22437
  'v-expansion-panel-title--static': props.static
22396
22438
  }, backgroundColorClasses.value, props.class],
22397
- "style": [backgroundColorStyles.value, props.style],
22439
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
22398
22440
  "type": "button",
22399
22441
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
22400
22442
  "disabled": expansionPanel.disabled.value,
@@ -29431,6 +29473,7 @@ const VTreeviewSymbol = Symbol.for('vuetify:v-treeview');
29431
29473
 
29432
29474
  const makeVTreeviewItemProps = propsFactory({
29433
29475
  loading: Boolean,
29476
+ onToggleExpand: EventProp(),
29434
29477
  toggleIcon: IconValue,
29435
29478
  ...makeVListItemProps({
29436
29479
  slim: true
@@ -29451,24 +29494,12 @@ const VTreeviewItem = genericComponent()({
29451
29494
  const {
29452
29495
  activate,
29453
29496
  isActivated,
29454
- select,
29455
- isSelected,
29456
- isIndeterminate,
29457
29497
  isGroupActivator,
29458
29498
  root,
29459
29499
  id
29460
29500
  } = useNestedItem(rawId, false);
29461
29501
  const isActivatableGroupActivator = computed(() => root.activatable.value && isGroupActivator);
29462
- const {
29463
- densityClasses
29464
- } = useDensity(props, 'v-list-item');
29465
- const slotProps = computed(() => ({
29466
- isActive: isActivated.value,
29467
- select,
29468
- isSelected: isSelected.value,
29469
- isIndeterminate: isIndeterminate.value
29470
- }));
29471
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list));
29502
+ const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
29472
29503
  function activateItem(e) {
29473
29504
  if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
29474
29505
  if (root.activatable.value) {
@@ -29479,68 +29510,20 @@ const VTreeviewItem = genericComponent()({
29479
29510
  }
29480
29511
  }
29481
29512
  }
29482
- function onKeyDown(e) {
29483
- if (e.key === 'Enter' || e.key === ' ') {
29484
- e.preventDefault();
29485
- activateItem(e);
29486
- }
29487
- }
29488
29513
  const visibleIds = inject$1(VTreeviewSymbol, {
29489
29514
  visibleIds: ref()
29490
29515
  }).visibleIds;
29491
29516
  useRender(() => {
29492
- const hasTitle = slots.title || props.title != null;
29493
- const hasSubtitle = slots.subtitle || props.subtitle != null;
29494
- const listItemProps = VListItem.filterProps(props);
29517
+ const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
29495
29518
  const hasPrepend = slots.prepend || props.toggleIcon;
29496
- return isActivatableGroupActivator.value ? withDirectives(createVNode("div", {
29497
- "class": ['v-list-item', 'v-list-item--one-line', 'v-treeview-item', 'v-treeview-item--activetable-group-activator', {
29498
- 'v-list-item--active': isActivated.value || isSelected.value,
29499
- 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29500
- }, densityClasses.value, props.class],
29501
- "onClick": activateItem
29502
- }, [createVNode(Fragment, null, [genOverlays(isActivated.value || isSelected.value, 'v-list-item'), props.toggleIcon && createVNode(VListItemAction, {
29503
- "start": false
29504
- }, {
29505
- default: () => [createVNode(VBtn, {
29506
- "density": "compact",
29507
- "icon": props.toggleIcon,
29508
- "loading": props.loading,
29509
- "variant": "text",
29510
- "onClick": props.onClick
29511
- }, {
29512
- loader() {
29513
- return createVNode(VProgressCircular, {
29514
- "indeterminate": "disable-shrink",
29515
- "size": "20",
29516
- "width": "2"
29517
- }, null);
29518
- }
29519
- })]
29520
- })]), createVNode("div", {
29521
- "class": "v-list-item__content",
29522
- "data-no-activator": ""
29523
- }, [hasTitle && createVNode(VListItemTitle, {
29524
- "key": "title"
29525
- }, {
29526
- default: () => [slots.title?.({
29527
- title: props.title
29528
- }) ?? props.title]
29529
- }), hasSubtitle && createVNode(VListItemSubtitle, {
29530
- "key": "subtitle"
29531
- }, {
29532
- default: () => [slots.subtitle?.({
29533
- subtitle: props.subtitle
29534
- }) ?? props.subtitle]
29535
- }), slots.default?.(slotProps.value)])]), [[resolveDirective("ripple"), isClickable.value && props.ripple]]) : createVNode(VListItem, mergeProps({
29536
- "ref": vListItemRef
29537
- }, listItemProps, {
29519
+ return createVNode(VListItem, mergeProps(listItemProps, {
29520
+ "active": isActivated.value,
29538
29521
  "class": ['v-treeview-item', {
29522
+ 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
29539
29523
  'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29540
29524
  }, props.class],
29541
- "value": id.value,
29542
- "onClick": activateItem,
29543
- "onKeydown": isClickable.value && onKeyDown
29525
+ "ripple": false,
29526
+ "onClick": props.onClick ?? activateItem
29544
29527
  }), {
29545
29528
  ...slots,
29546
29529
  prepend: hasPrepend ? slotProps => {
@@ -29551,7 +29534,8 @@ const VTreeviewItem = genericComponent()({
29551
29534
  "density": "compact",
29552
29535
  "icon": props.toggleIcon,
29553
29536
  "loading": props.loading,
29554
- "variant": "text"
29537
+ "variant": "text",
29538
+ "onClick": props.onToggleExpand
29555
29539
  }, {
29556
29540
  loader() {
29557
29541
  return createVNode(VProgressCircular, {
@@ -29578,7 +29562,19 @@ const makeVTreeviewChildrenProps = propsFactory({
29578
29562
  default: '$loading'
29579
29563
  },
29580
29564
  items: Array,
29565
+ openOnClick: {
29566
+ type: Boolean,
29567
+ default: undefined
29568
+ },
29569
+ indeterminateIcon: {
29570
+ type: IconValue,
29571
+ default: '$checkboxIndeterminate'
29572
+ },
29573
+ falseIcon: IconValue,
29574
+ trueIcon: IconValue,
29575
+ returnObject: Boolean,
29581
29576
  selectable: Boolean,
29577
+ selectedColor: String,
29582
29578
  selectStrategy: [String, Function, Object]
29583
29579
  }, 'VTreeviewChildren');
29584
29580
  const VTreeviewChildren = genericComponent()({
@@ -29590,6 +29586,7 @@ const VTreeviewChildren = genericComponent()({
29590
29586
  slots
29591
29587
  } = _ref;
29592
29588
  const isLoading = shallowRef(null);
29589
+ const isClickOnOpen = computed(() => props.openOnClick != null ? props.openOnClick : props.selectable);
29593
29590
  function checkChildren(item) {
29594
29591
  return new Promise(resolve => {
29595
29592
  if (!props.items?.length || !props.loadChildren) return resolve();
@@ -29620,7 +29617,11 @@ const VTreeviewChildren = genericComponent()({
29620
29617
  "key": item.value,
29621
29618
  "modelValue": slotProps.isSelected,
29622
29619
  "loading": loading,
29620
+ "color": props.selectedColor,
29623
29621
  "indeterminate": slotProps.isIndeterminate,
29622
+ "indeterminateIcon": props.indeterminateIcon,
29623
+ "falseIcon": props.falseIcon,
29624
+ "trueIcon": props.trueIcon,
29624
29625
  "onClick": withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
29625
29626
  "onKeydown": e => {
29626
29627
  if (!['Enter', 'Space'].includes(e.key)) return;
@@ -29642,9 +29643,9 @@ const VTreeviewChildren = genericComponent()({
29642
29643
  };
29643
29644
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
29644
29645
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
29645
- return children ? createVNode(VTreeviewGroup, mergeProps({
29646
- "value": itemProps?.value
29647
- }, treeviewGroupProps), {
29646
+ return children ? createVNode(VTreeviewGroup, mergeProps(treeviewGroupProps, {
29647
+ "value": props.returnObject ? item : treeviewGroupProps?.value
29648
+ }), {
29648
29649
  activator: _ref3 => {
29649
29650
  let {
29650
29651
  props: activatorProps
@@ -29652,19 +29653,24 @@ const VTreeviewChildren = genericComponent()({
29652
29653
  const listItemProps = {
29653
29654
  ...itemProps,
29654
29655
  ...activatorProps,
29655
- value: itemProps?.value
29656
+ value: itemProps?.value,
29657
+ onToggleExpand: activatorProps.onClick,
29658
+ onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
29656
29659
  };
29657
29660
  return createVNode(VTreeviewItem, mergeProps(listItemProps, {
29658
- "loading": loading,
29659
- "onClick": () => checkChildren(item)
29661
+ "value": props.returnObject ? toRaw(item) : itemProps.value,
29662
+ "loading": loading
29660
29663
  }), slotsWithItem);
29661
29664
  },
29662
29665
  default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
29663
- "items": children
29666
+ "items": children,
29667
+ "returnObject": props.returnObject
29664
29668
  }), slots)
29665
29669
  }) : slots.item?.({
29666
29670
  props: itemProps
29667
- }) ?? createVNode(VTreeviewItem, itemProps, slotsWithItem);
29671
+ }) ?? createVNode(VTreeviewItem, mergeProps(itemProps, {
29672
+ "value": props.returnObject ? toRaw(item) : itemProps.value
29673
+ }), slotsWithItem);
29668
29674
  });
29669
29675
  }
29670
29676
  });
@@ -29688,7 +29694,7 @@ const makeVTreeviewProps = propsFactory({
29688
29694
  collapseIcon: '$treeviewCollapse',
29689
29695
  expandIcon: '$treeviewExpand',
29690
29696
  slim: true
29691
- }), ['nav'])
29697
+ }), ['nav', 'openStrategy'])
29692
29698
  }, 'VTreeview');
29693
29699
  const VTreeview = genericComponent()({
29694
29700
  name: 'VTreeview',
@@ -29747,11 +29753,11 @@ const VTreeview = genericComponent()({
29747
29753
  }
29748
29754
  return arr;
29749
29755
  }
29750
- function openAll(item) {
29756
+ function openAll(items) {
29751
29757
  let ids = [];
29752
- for (const i of item) {
29758
+ for (const i of items) {
29753
29759
  if (!i.children) continue;
29754
- ids.push(i.value);
29760
+ ids.push(props.returnObject ? toRaw(i.raw) : i.value);
29755
29761
  if (i.children) {
29756
29762
  ids = ids.concat(openAll(i.children));
29757
29763
  }
@@ -29787,6 +29793,7 @@ const VTreeview = genericComponent()({
29787
29793
  "ref": vListRef
29788
29794
  }, listProps, {
29789
29795
  "class": ['v-treeview', props.class],
29796
+ "open-strategy": "multiple",
29790
29797
  "style": props.style,
29791
29798
  "opened": opened.value,
29792
29799
  "activated": activated.value,
@@ -29795,6 +29802,7 @@ const VTreeview = genericComponent()({
29795
29802
  "onUpdate:selected": $event => selected.value = $event
29796
29803
  }), {
29797
29804
  default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
29805
+ "returnObject": props.returnObject,
29798
29806
  "items": items.value
29799
29807
  }), slots)]
29800
29808
  });
@@ -30300,7 +30308,7 @@ function createVuetify$1() {
30300
30308
  goTo
30301
30309
  };
30302
30310
  }
30303
- const version$1 = "3.6.13";
30311
+ const version$1 = "3.7.0-beta.1";
30304
30312
  createVuetify$1.version = version$1;
30305
30313
 
30306
30314
  // Vue's inject() can only be used in setup
@@ -30553,7 +30561,7 @@ var index = /*#__PURE__*/Object.freeze({
30553
30561
 
30554
30562
  /* eslint-disable local-rules/sort-imports */
30555
30563
 
30556
- const version = "3.6.13";
30564
+ const version = "3.7.0-beta.1";
30557
30565
 
30558
30566
  /* eslint-disable local-rules/sort-imports */
30559
30567