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
  */
@@ -579,6 +579,11 @@
579
579
  });
580
580
  return fn;
581
581
  }
582
+ function checkPrintable(e) {
583
+ const isPrintableChar = e.key.length === 1;
584
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
585
+ return isPrintableChar && noModifier;
586
+ }
582
587
 
583
588
  // Utilities
584
589
  const block = ['top', 'bottom'];
@@ -3252,6 +3257,7 @@
3252
3257
  // not intended for public use, this is passed in by vuetify-loader
3253
3258
 
3254
3259
  const makeVImgProps = propsFactory({
3260
+ absolute: Boolean,
3255
3261
  alt: String,
3256
3262
  cover: Boolean,
3257
3263
  color: String,
@@ -3508,6 +3514,7 @@
3508
3514
  const responsiveProps = VResponsive.filterProps(props);
3509
3515
  return vue.withDirectives(vue.createVNode(VResponsive, vue.mergeProps({
3510
3516
  "class": ['v-img', {
3517
+ 'v-img--absolute': props.absolute,
3511
3518
  'v-img--booting': !isBooted.value
3512
3519
  }, backgroundColorClasses.value, roundedClasses.value, props.class],
3513
3520
  "style": [{
@@ -5515,6 +5522,7 @@
5515
5522
  type: Boolean,
5516
5523
  default: undefined
5517
5524
  },
5525
+ activeColor: String,
5518
5526
  baseColor: String,
5519
5527
  symbol: {
5520
5528
  type: null,
@@ -5606,10 +5614,11 @@
5606
5614
  }
5607
5615
  return group?.isSelected.value;
5608
5616
  });
5617
+ const color = vue.computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5609
5618
  const variantProps = vue.computed(() => {
5610
5619
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5611
5620
  return {
5612
- color: showColor ? props.color ?? props.baseColor : props.baseColor,
5621
+ color: showColor ? color.value ?? props.baseColor : props.baseColor,
5613
5622
  variant: props.variant
5614
5623
  };
5615
5624
  });
@@ -5950,6 +5959,7 @@
5950
5959
  icon: IconValue,
5951
5960
  image: String,
5952
5961
  text: String,
5962
+ ...makeBorderProps(),
5953
5963
  ...makeComponentProps(),
5954
5964
  ...makeDensityProps(),
5955
5965
  ...makeRoundedProps(),
@@ -5970,6 +5980,9 @@
5970
5980
  const {
5971
5981
  themeClasses
5972
5982
  } = provideTheme(props);
5983
+ const {
5984
+ borderClasses
5985
+ } = useBorder(props);
5973
5986
  const {
5974
5987
  colorClasses,
5975
5988
  colorStyles,
@@ -5989,7 +6002,7 @@
5989
6002
  "class": ['v-avatar', {
5990
6003
  'v-avatar--start': props.start,
5991
6004
  'v-avatar--end': props.end
5992
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6005
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5993
6006
  "style": [colorStyles.value, sizeStyles.value, props.style]
5994
6007
  }, {
5995
6008
  default: () => [!slots.default ? props.image ? vue.createVNode(VImg, {
@@ -6689,12 +6702,14 @@
6689
6702
  const validateOn = vue.computed(() => {
6690
6703
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
6691
6704
  if (value === 'lazy') value = 'input lazy';
6705
+ if (value === 'eager') value = 'input eager';
6692
6706
  const set = new Set(value?.split(' ') ?? []);
6693
6707
  return {
6694
- blur: set.has('blur') || set.has('input'),
6695
6708
  input: set.has('input'),
6696
- submit: set.has('submit'),
6697
- lazy: set.has('lazy')
6709
+ blur: set.has('blur') || set.has('input') || set.has('invalid-input'),
6710
+ invalidInput: set.has('invalid-input'),
6711
+ lazy: set.has('lazy'),
6712
+ eager: set.has('eager')
6698
6713
  };
6699
6714
  });
6700
6715
  const isValid = vue.computed(() => {
@@ -6731,11 +6746,11 @@
6731
6746
  });
6732
6747
  vue.onMounted(async () => {
6733
6748
  if (!validateOn.value.lazy) {
6734
- await validate(true);
6749
+ await validate(!validateOn.value.eager);
6735
6750
  }
6736
6751
  form?.update(uid.value, isValid.value, errorMessages.value);
6737
6752
  });
6738
- useToggleScope(() => validateOn.value.input, () => {
6753
+ useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
6739
6754
  vue.watch(validationModel, () => {
6740
6755
  if (validationModel.value != null) {
6741
6756
  validate();
@@ -6763,7 +6778,7 @@
6763
6778
  async function resetValidation() {
6764
6779
  isPristine.value = true;
6765
6780
  if (!validateOn.value.lazy) {
6766
- await validate(true);
6781
+ await validate(!validateOn.value.eager);
6767
6782
  } else {
6768
6783
  internalErrorMessages.value = [];
6769
6784
  }
@@ -7703,7 +7718,9 @@
7703
7718
  selected: group.selected,
7704
7719
  scrollTo,
7705
7720
  scrollOffset,
7706
- focus
7721
+ focus,
7722
+ hasPrev,
7723
+ hasNext
7707
7724
  };
7708
7725
  }
7709
7726
  });
@@ -8173,6 +8190,7 @@
8173
8190
  return strategy;
8174
8191
  };
8175
8192
 
8193
+ // Utilities
8176
8194
  const singleOpenStrategy = {
8177
8195
  open: _ref => {
8178
8196
  let {
@@ -8206,11 +8224,11 @@
8206
8224
  parents
8207
8225
  } = _ref2;
8208
8226
  if (value) {
8209
- let parent = parents.get(id);
8227
+ let parent = vue.toRaw(parents.get(id));
8210
8228
  opened.add(id);
8211
8229
  while (parent != null && parent !== id) {
8212
8230
  opened.add(parent);
8213
- parent = parents.get(parent);
8231
+ parent = vue.toRaw(parents.get(parent));
8214
8232
  }
8215
8233
  return opened;
8216
8234
  } else {
@@ -8381,18 +8399,18 @@
8381
8399
  const items = [id];
8382
8400
  while (items.length) {
8383
8401
  const item = items.shift();
8384
- selected.set(item, value ? 'on' : 'off');
8402
+ selected.set(vue.toRaw(item), value ? 'on' : 'off');
8385
8403
  if (children.has(item)) {
8386
8404
  items.push(...children.get(item));
8387
8405
  }
8388
8406
  }
8389
- let parent = parents.get(id);
8407
+ let parent = vue.toRaw(parents.get(id));
8390
8408
  while (parent) {
8391
8409
  const childrenIds = children.get(parent);
8392
- const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
8393
- const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
8410
+ const everySelected = childrenIds.every(cid => selected.get(vue.toRaw(cid)) === 'on');
8411
+ const noneSelected = childrenIds.every(cid => !selected.has(vue.toRaw(cid)) || selected.get(vue.toRaw(cid)) === 'off');
8394
8412
  selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
8395
- parent = parents.get(parent);
8413
+ parent = vue.toRaw(parents.get(parent));
8396
8414
  }
8397
8415
 
8398
8416
  // If mandatory and planned deselect results in no selected
@@ -8470,7 +8488,7 @@
8470
8488
  let isUnmounted = false;
8471
8489
  const children = vue.ref(new Map());
8472
8490
  const parents = vue.ref(new Map());
8473
- const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8491
+ const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(vue.toRaw(v)), v => [...v.values()]);
8474
8492
  const activeStrategy = vue.computed(() => {
8475
8493
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8476
8494
  if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
@@ -8561,7 +8579,6 @@
8561
8579
  children.value.set(parent, list.filter(child => child !== id));
8562
8580
  }
8563
8581
  parents.value.delete(id);
8564
- opened.value.delete(id);
8565
8582
  },
8566
8583
  open: (id, value, event) => {
8567
8584
  vm.emit('click:open', {
@@ -8644,9 +8661,9 @@
8644
8661
  const item = {
8645
8662
  ...parent,
8646
8663
  id: computedId,
8647
- open: (open, e) => parent.root.open(computedId.value, open, e),
8664
+ open: (open, e) => parent.root.open(vue.toRaw(computedId.value), open, e),
8648
8665
  openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
8649
- isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
8666
+ isOpen: vue.computed(() => parent.root.opened.value.has(vue.toRaw(computedId.value))),
8650
8667
  parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
8651
8668
  activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
8652
8669
  isActivated: vue.computed(() => parent.root.activated.value.has(vue.toRaw(computedId.value))),
@@ -8870,6 +8887,7 @@
8870
8887
  activate,
8871
8888
  isActivated,
8872
8889
  select,
8890
+ isOpen,
8873
8891
  isSelected,
8874
8892
  isIndeterminate,
8875
8893
  isGroupActivator,
@@ -8924,6 +8942,7 @@
8924
8942
  const slotProps = vue.computed(() => ({
8925
8943
  isActive: isActive.value,
8926
8944
  select,
8945
+ isOpen: isOpen.value,
8927
8946
  isSelected: isSelected.value,
8928
8947
  isIndeterminate: isIndeterminate.value
8929
8948
  }));
@@ -9733,12 +9752,6 @@
9733
9752
  // el.style.removeProperty('max-width')
9734
9753
  // el.style.removeProperty('max-height')
9735
9754
 
9736
- if (isRtl) {
9737
- el.style.removeProperty('left');
9738
- } else {
9739
- el.style.removeProperty('right');
9740
- }
9741
-
9742
9755
  /* eslint-disable-next-line sonarjs/prefer-immediate-return */
9743
9756
  const contentBox = nullifyTransforms(el);
9744
9757
  if (isRtl) {
@@ -11130,23 +11143,25 @@
11130
11143
  const id = vue.computed(() => props.id || `v-menu-${uid}`);
11131
11144
  const overlay = vue.ref();
11132
11145
  const parent = vue.inject(VMenuSymbol, null);
11133
- const openChildren = vue.shallowRef(0);
11146
+ const openChildren = vue.shallowRef(new Set());
11134
11147
  vue.provide(VMenuSymbol, {
11135
11148
  register() {
11136
- ++openChildren.value;
11149
+ openChildren.value.add(uid);
11137
11150
  },
11138
11151
  unregister() {
11139
- --openChildren.value;
11152
+ openChildren.value.delete(uid);
11140
11153
  },
11141
11154
  closeParents(e) {
11142
11155
  setTimeout(() => {
11143
- if (!openChildren.value && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11156
+ if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11144
11157
  isActive.value = false;
11145
11158
  parent?.closeParents();
11146
11159
  }
11147
11160
  }, 40);
11148
11161
  }
11149
11162
  });
11163
+ vue.onBeforeUnmount(() => parent?.unregister());
11164
+ vue.onDeactivated(() => isActive.value = false);
11150
11165
  async function onFocusIn(e) {
11151
11166
  const before = e.relatedTarget;
11152
11167
  const after = e.target;
@@ -12058,6 +12073,7 @@
12058
12073
  deep: true
12059
12074
  });
12060
12075
  return {
12076
+ calculateVisibleItems,
12061
12077
  containerRef,
12062
12078
  markerRef,
12063
12079
  computedItems,
@@ -12121,6 +12137,7 @@
12121
12137
  dimensionStyles
12122
12138
  } = useDimension(props);
12123
12139
  const {
12140
+ calculateVisibleItems,
12124
12141
  containerRef,
12125
12142
  markerRef,
12126
12143
  handleScroll,
@@ -12192,6 +12209,7 @@
12192
12209
  }, [children])]);
12193
12210
  });
12194
12211
  return {
12212
+ calculateVisibleItems,
12195
12213
  scrollToIndex
12196
12214
  };
12197
12215
  }
@@ -12260,9 +12278,9 @@
12260
12278
  }
12261
12279
  }
12262
12280
  return {
12263
- onListScroll,
12264
- onListKeydown
12265
- };
12281
+ onScrollPassive: onListScroll,
12282
+ onKeydown: onListKeydown
12283
+ }; // typescript doesn't know about vue's event merging
12266
12284
  }
12267
12285
 
12268
12286
  // Types
@@ -12337,7 +12355,7 @@
12337
12355
  const menu = vue.computed({
12338
12356
  get: () => _menu.value,
12339
12357
  set: v => {
12340
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12358
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12341
12359
  _menu.value = v;
12342
12360
  }
12343
12361
  });
@@ -12376,10 +12394,7 @@
12376
12394
  };
12377
12395
  });
12378
12396
  const listRef = vue.ref();
12379
- const {
12380
- onListScroll,
12381
- onListKeydown
12382
- } = useScrolling(listRef, vTextFieldRef);
12397
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12383
12398
  function onClear(e) {
12384
12399
  if (props.openOnClear) {
12385
12400
  menu.value = true;
@@ -12389,6 +12404,11 @@
12389
12404
  if (menuDisabled.value) return;
12390
12405
  menu.value = !menu.value;
12391
12406
  }
12407
+ function onListKeydown(e) {
12408
+ if (checkPrintable(e)) {
12409
+ onKeydown(e);
12410
+ }
12411
+ }
12392
12412
  function onKeydown(e) {
12393
12413
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12394
12414
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12409,11 +12429,6 @@
12409
12429
  // html select hotkeys
12410
12430
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12411
12431
 
12412
- function checkPrintable(e) {
12413
- const isPrintableChar = e.key.length === 1;
12414
- const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
12415
- return isPrintableChar && noModifier;
12416
- }
12417
12432
  if (props.multiple || !checkPrintable(e)) return;
12418
12433
  const now = performance.now();
12419
12434
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12458,6 +12473,11 @@
12458
12473
  menu.value = false;
12459
12474
  }
12460
12475
  }
12476
+ function onAfterEnter() {
12477
+ if (props.eager) {
12478
+ vVirtualScrollRef.value?.calculateVisibleItems();
12479
+ }
12480
+ }
12461
12481
  function onAfterLeave() {
12462
12482
  if (isFocused.value) {
12463
12483
  vTextFieldRef.value?.focus();
@@ -12536,6 +12556,7 @@
12536
12556
  "openOnClick": false,
12537
12557
  "closeOnContentClick": false,
12538
12558
  "transition": props.transition,
12559
+ "onAfterEnter": onAfterEnter,
12539
12560
  "onAfterLeave": onAfterLeave
12540
12561
  }, computedMenuProps.value), {
12541
12562
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -12545,11 +12566,10 @@
12545
12566
  "onMousedown": e => e.preventDefault(),
12546
12567
  "onKeydown": onListKeydown,
12547
12568
  "onFocusin": onFocusin,
12548
- "onScrollPassive": onListScroll,
12549
12569
  "tabindex": "-1",
12550
12570
  "aria-live": "polite",
12551
12571
  "color": props.itemColor ?? props.color
12552
- }, props.listProps), {
12572
+ }, listEvents, props.listProps), {
12553
12573
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
12554
12574
  "title": t(props.noDataText)
12555
12575
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -12844,7 +12864,7 @@
12844
12864
  const menu = vue.computed({
12845
12865
  get: () => _menu.value,
12846
12866
  set: v => {
12847
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12867
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12848
12868
  _menu.value = v;
12849
12869
  }
12850
12870
  });
@@ -12888,10 +12908,7 @@
12888
12908
  });
12889
12909
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12890
12910
  const listRef = vue.ref();
12891
- const {
12892
- onListScroll,
12893
- onListKeydown
12894
- } = useScrolling(listRef, vTextFieldRef);
12911
+ const listEvents = useScrolling(listRef, vTextFieldRef);
12895
12912
  function onClear(e) {
12896
12913
  if (props.openOnClear) {
12897
12914
  menu.value = true;
@@ -12910,6 +12927,11 @@
12910
12927
  }
12911
12928
  menu.value = !menu.value;
12912
12929
  }
12930
+ function onListKeydown(e) {
12931
+ if (checkPrintable(e)) {
12932
+ vTextFieldRef.value?.focus();
12933
+ }
12934
+ }
12913
12935
  function onKeydown(e) {
12914
12936
  if (props.readonly || form?.isReadonly.value) return;
12915
12937
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -12974,6 +12996,11 @@
12974
12996
  }
12975
12997
  }
12976
12998
  }
12999
+ function onAfterEnter() {
13000
+ if (props.eager) {
13001
+ vVirtualScrollRef.value?.calculateVisibleItems();
13002
+ }
13003
+ }
12977
13004
  function onAfterLeave() {
12978
13005
  if (isFocused.value) {
12979
13006
  isPristine.value = true;
@@ -13102,6 +13129,7 @@
13102
13129
  "openOnClick": false,
13103
13130
  "closeOnContentClick": false,
13104
13131
  "transition": props.transition,
13132
+ "onAfterEnter": onAfterEnter,
13105
13133
  "onAfterLeave": onAfterLeave
13106
13134
  }, props.menuProps), {
13107
13135
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -13112,11 +13140,10 @@
13112
13140
  "onKeydown": onListKeydown,
13113
13141
  "onFocusin": onFocusin,
13114
13142
  "onFocusout": onFocusout,
13115
- "onScrollPassive": onListScroll,
13116
13143
  "tabindex": "-1",
13117
13144
  "aria-live": "polite",
13118
13145
  "color": props.itemColor ?? props.color
13119
- }, props.listProps), {
13146
+ }, listEvents, props.listProps), {
13120
13147
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
13121
13148
  "title": t(props.noDataText)
13122
13149
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -16677,7 +16704,7 @@
16677
16704
  const menu = vue.computed({
16678
16705
  get: () => _menu.value,
16679
16706
  set: v => {
16680
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16707
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16681
16708
  _menu.value = v;
16682
16709
  }
16683
16710
  });
@@ -16760,10 +16787,7 @@
16760
16787
  });
16761
16788
  const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
16762
16789
  const listRef = vue.ref();
16763
- const {
16764
- onListScroll,
16765
- onListKeydown
16766
- } = useScrolling(listRef, vTextFieldRef);
16790
+ const listEvents = useScrolling(listRef, vTextFieldRef);
16767
16791
  function onClear(e) {
16768
16792
  cleared = true;
16769
16793
  if (props.openOnClear) {
@@ -16782,6 +16806,11 @@
16782
16806
  }
16783
16807
  menu.value = !menu.value;
16784
16808
  }
16809
+ function onListKeydown(e) {
16810
+ if (checkPrintable(e)) {
16811
+ vTextFieldRef.value?.focus();
16812
+ }
16813
+ }
16785
16814
  // eslint-disable-next-line complexity
16786
16815
  function onKeydown(e) {
16787
16816
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -16846,6 +16875,11 @@
16846
16875
  }
16847
16876
  }
16848
16877
  }
16878
+ function onAfterEnter() {
16879
+ if (props.eager) {
16880
+ vVirtualScrollRef.value?.calculateVisibleItems();
16881
+ }
16882
+ }
16849
16883
  function onAfterLeave() {
16850
16884
  if (isFocused.value) {
16851
16885
  isPristine.value = true;
@@ -16970,6 +17004,7 @@
16970
17004
  "openOnClick": false,
16971
17005
  "closeOnContentClick": false,
16972
17006
  "transition": props.transition,
17007
+ "onAfterEnter": onAfterEnter,
16973
17008
  "onAfterLeave": onAfterLeave
16974
17009
  }, props.menuProps), {
16975
17010
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
@@ -16980,11 +17015,10 @@
16980
17015
  "onKeydown": onListKeydown,
16981
17016
  "onFocusin": onFocusin,
16982
17017
  "onFocusout": onFocusout,
16983
- "onScrollPassive": onListScroll,
16984
17018
  "tabindex": "-1",
16985
17019
  "aria-live": "polite",
16986
17020
  "color": props.itemColor ?? props.color
16987
- }, props.listProps), {
17021
+ }, listEvents, props.listProps), {
16988
17022
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
16989
17023
  "title": t(props.noDataText)
16990
17024
  }, null)), vue.createVNode(VVirtualScroll, {
@@ -20928,6 +20962,7 @@
20928
20962
  default: false
20929
20963
  },
20930
20964
  ...makeComponentProps(),
20965
+ ...makeDimensionProps(),
20931
20966
  ...makeTagProps()
20932
20967
  }, 'VContainer');
20933
20968
  const VContainer = genericComponent()({
@@ -20940,11 +20975,14 @@
20940
20975
  const {
20941
20976
  rtlClasses
20942
20977
  } = useRtl();
20978
+ const {
20979
+ dimensionStyles
20980
+ } = useDimension(props);
20943
20981
  useRender(() => vue.createVNode(props.tag, {
20944
20982
  "class": ['v-container', {
20945
20983
  'v-container--fluid': props.fluid
20946
20984
  }, rtlClasses.value, props.class],
20947
- "style": props.style
20985
+ "style": [dimensionStyles.value, props.style]
20948
20986
  }, slots));
20949
20987
  return {};
20950
20988
  }
@@ -22366,7 +22404,8 @@
22366
22404
  default: false
22367
22405
  },
22368
22406
  readonly: Boolean,
22369
- ...makeComponentProps()
22407
+ ...makeComponentProps(),
22408
+ ...makeDimensionProps()
22370
22409
  }, 'VExpansionPanelTitle');
22371
22410
  const VExpansionPanelTitle = genericComponent()({
22372
22411
  name: 'VExpansionPanelTitle',
@@ -22384,6 +22423,9 @@
22384
22423
  backgroundColorClasses,
22385
22424
  backgroundColorStyles
22386
22425
  } = useBackgroundColor(props, 'color');
22426
+ const {
22427
+ dimensionStyles
22428
+ } = useDimension(props);
22387
22429
  const slotProps = vue.computed(() => ({
22388
22430
  collapseIcon: props.collapseIcon,
22389
22431
  disabled: expansionPanel.disabled.value,
@@ -22398,7 +22440,7 @@
22398
22440
  'v-expansion-panel-title--focusable': props.focusable,
22399
22441
  'v-expansion-panel-title--static': props.static
22400
22442
  }, backgroundColorClasses.value, props.class],
22401
- "style": [backgroundColorStyles.value, props.style],
22443
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
22402
22444
  "type": "button",
22403
22445
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
22404
22446
  "disabled": expansionPanel.disabled.value,
@@ -29435,6 +29477,7 @@
29435
29477
 
29436
29478
  const makeVTreeviewItemProps = propsFactory({
29437
29479
  loading: Boolean,
29480
+ onToggleExpand: EventProp(),
29438
29481
  toggleIcon: IconValue,
29439
29482
  ...makeVListItemProps({
29440
29483
  slim: true
@@ -29455,24 +29498,12 @@
29455
29498
  const {
29456
29499
  activate,
29457
29500
  isActivated,
29458
- select,
29459
- isSelected,
29460
- isIndeterminate,
29461
29501
  isGroupActivator,
29462
29502
  root,
29463
29503
  id
29464
29504
  } = useNestedItem(rawId, false);
29465
29505
  const isActivatableGroupActivator = vue.computed(() => root.activatable.value && isGroupActivator);
29466
- const {
29467
- densityClasses
29468
- } = useDensity(props, 'v-list-item');
29469
- const slotProps = vue.computed(() => ({
29470
- isActive: isActivated.value,
29471
- select,
29472
- isSelected: isSelected.value,
29473
- isIndeterminate: isIndeterminate.value
29474
- }));
29475
- const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list));
29506
+ const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
29476
29507
  function activateItem(e) {
29477
29508
  if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
29478
29509
  if (root.activatable.value) {
@@ -29483,68 +29514,20 @@
29483
29514
  }
29484
29515
  }
29485
29516
  }
29486
- function onKeyDown(e) {
29487
- if (e.key === 'Enter' || e.key === ' ') {
29488
- e.preventDefault();
29489
- activateItem(e);
29490
- }
29491
- }
29492
29517
  const visibleIds = vue.inject(VTreeviewSymbol, {
29493
29518
  visibleIds: vue.ref()
29494
29519
  }).visibleIds;
29495
29520
  useRender(() => {
29496
- const hasTitle = slots.title || props.title != null;
29497
- const hasSubtitle = slots.subtitle || props.subtitle != null;
29498
- const listItemProps = VListItem.filterProps(props);
29521
+ const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
29499
29522
  const hasPrepend = slots.prepend || props.toggleIcon;
29500
- return isActivatableGroupActivator.value ? vue.withDirectives(vue.createVNode("div", {
29501
- "class": ['v-list-item', 'v-list-item--one-line', 'v-treeview-item', 'v-treeview-item--activetable-group-activator', {
29502
- 'v-list-item--active': isActivated.value || isSelected.value,
29503
- 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29504
- }, densityClasses.value, props.class],
29505
- "onClick": activateItem
29506
- }, [vue.createVNode(vue.Fragment, null, [genOverlays(isActivated.value || isSelected.value, 'v-list-item'), props.toggleIcon && vue.createVNode(VListItemAction, {
29507
- "start": false
29508
- }, {
29509
- default: () => [vue.createVNode(VBtn, {
29510
- "density": "compact",
29511
- "icon": props.toggleIcon,
29512
- "loading": props.loading,
29513
- "variant": "text",
29514
- "onClick": props.onClick
29515
- }, {
29516
- loader() {
29517
- return vue.createVNode(VProgressCircular, {
29518
- "indeterminate": "disable-shrink",
29519
- "size": "20",
29520
- "width": "2"
29521
- }, null);
29522
- }
29523
- })]
29524
- })]), vue.createVNode("div", {
29525
- "class": "v-list-item__content",
29526
- "data-no-activator": ""
29527
- }, [hasTitle && vue.createVNode(VListItemTitle, {
29528
- "key": "title"
29529
- }, {
29530
- default: () => [slots.title?.({
29531
- title: props.title
29532
- }) ?? props.title]
29533
- }), hasSubtitle && vue.createVNode(VListItemSubtitle, {
29534
- "key": "subtitle"
29535
- }, {
29536
- default: () => [slots.subtitle?.({
29537
- subtitle: props.subtitle
29538
- }) ?? props.subtitle]
29539
- }), slots.default?.(slotProps.value)])]), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]) : vue.createVNode(VListItem, vue.mergeProps({
29540
- "ref": vListItemRef
29541
- }, listItemProps, {
29523
+ return vue.createVNode(VListItem, vue.mergeProps(listItemProps, {
29524
+ "active": isActivated.value,
29542
29525
  "class": ['v-treeview-item', {
29526
+ 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
29543
29527
  'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29544
29528
  }, props.class],
29545
- "value": id.value,
29546
- "onClick": activateItem,
29547
- "onKeydown": isClickable.value && onKeyDown
29529
+ "ripple": false,
29530
+ "onClick": props.onClick ?? activateItem
29548
29531
  }), {
29549
29532
  ...slots,
29550
29533
  prepend: hasPrepend ? slotProps => {
@@ -29555,7 +29538,8 @@
29555
29538
  "density": "compact",
29556
29539
  "icon": props.toggleIcon,
29557
29540
  "loading": props.loading,
29558
- "variant": "text"
29541
+ "variant": "text",
29542
+ "onClick": props.onToggleExpand
29559
29543
  }, {
29560
29544
  loader() {
29561
29545
  return vue.createVNode(VProgressCircular, {
@@ -29582,7 +29566,19 @@
29582
29566
  default: '$loading'
29583
29567
  },
29584
29568
  items: Array,
29569
+ openOnClick: {
29570
+ type: Boolean,
29571
+ default: undefined
29572
+ },
29573
+ indeterminateIcon: {
29574
+ type: IconValue,
29575
+ default: '$checkboxIndeterminate'
29576
+ },
29577
+ falseIcon: IconValue,
29578
+ trueIcon: IconValue,
29579
+ returnObject: Boolean,
29585
29580
  selectable: Boolean,
29581
+ selectedColor: String,
29586
29582
  selectStrategy: [String, Function, Object]
29587
29583
  }, 'VTreeviewChildren');
29588
29584
  const VTreeviewChildren = genericComponent()({
@@ -29594,6 +29590,7 @@
29594
29590
  slots
29595
29591
  } = _ref;
29596
29592
  const isLoading = vue.shallowRef(null);
29593
+ const isClickOnOpen = vue.computed(() => props.openOnClick != null ? props.openOnClick : props.selectable);
29597
29594
  function checkChildren(item) {
29598
29595
  return new Promise(resolve => {
29599
29596
  if (!props.items?.length || !props.loadChildren) return resolve();
@@ -29624,7 +29621,11 @@
29624
29621
  "key": item.value,
29625
29622
  "modelValue": slotProps.isSelected,
29626
29623
  "loading": loading,
29624
+ "color": props.selectedColor,
29627
29625
  "indeterminate": slotProps.isIndeterminate,
29626
+ "indeterminateIcon": props.indeterminateIcon,
29627
+ "falseIcon": props.falseIcon,
29628
+ "trueIcon": props.trueIcon,
29628
29629
  "onClick": vue.withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
29629
29630
  "onKeydown": e => {
29630
29631
  if (!['Enter', 'Space'].includes(e.key)) return;
@@ -29646,9 +29647,9 @@
29646
29647
  };
29647
29648
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
29648
29649
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
29649
- return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps({
29650
- "value": itemProps?.value
29651
- }, treeviewGroupProps), {
29650
+ return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps(treeviewGroupProps, {
29651
+ "value": props.returnObject ? item : treeviewGroupProps?.value
29652
+ }), {
29652
29653
  activator: _ref3 => {
29653
29654
  let {
29654
29655
  props: activatorProps
@@ -29656,19 +29657,24 @@
29656
29657
  const listItemProps = {
29657
29658
  ...itemProps,
29658
29659
  ...activatorProps,
29659
- value: itemProps?.value
29660
+ value: itemProps?.value,
29661
+ onToggleExpand: activatorProps.onClick,
29662
+ onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
29660
29663
  };
29661
29664
  return vue.createVNode(VTreeviewItem, vue.mergeProps(listItemProps, {
29662
- "loading": loading,
29663
- "onClick": () => checkChildren(item)
29665
+ "value": props.returnObject ? vue.toRaw(item) : itemProps.value,
29666
+ "loading": loading
29664
29667
  }), slotsWithItem);
29665
29668
  },
29666
29669
  default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
29667
- "items": children
29670
+ "items": children,
29671
+ "returnObject": props.returnObject
29668
29672
  }), slots)
29669
29673
  }) : slots.item?.({
29670
29674
  props: itemProps
29671
- }) ?? vue.createVNode(VTreeviewItem, itemProps, slotsWithItem);
29675
+ }) ?? vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, {
29676
+ "value": props.returnObject ? vue.toRaw(item) : itemProps.value
29677
+ }), slotsWithItem);
29672
29678
  });
29673
29679
  }
29674
29680
  });
@@ -29692,7 +29698,7 @@
29692
29698
  collapseIcon: '$treeviewCollapse',
29693
29699
  expandIcon: '$treeviewExpand',
29694
29700
  slim: true
29695
- }), ['nav'])
29701
+ }), ['nav', 'openStrategy'])
29696
29702
  }, 'VTreeview');
29697
29703
  const VTreeview = genericComponent()({
29698
29704
  name: 'VTreeview',
@@ -29751,11 +29757,11 @@
29751
29757
  }
29752
29758
  return arr;
29753
29759
  }
29754
- function openAll(item) {
29760
+ function openAll(items) {
29755
29761
  let ids = [];
29756
- for (const i of item) {
29762
+ for (const i of items) {
29757
29763
  if (!i.children) continue;
29758
- ids.push(i.value);
29764
+ ids.push(props.returnObject ? vue.toRaw(i.raw) : i.value);
29759
29765
  if (i.children) {
29760
29766
  ids = ids.concat(openAll(i.children));
29761
29767
  }
@@ -29791,6 +29797,7 @@
29791
29797
  "ref": vListRef
29792
29798
  }, listProps, {
29793
29799
  "class": ['v-treeview', props.class],
29800
+ "open-strategy": "multiple",
29794
29801
  "style": props.style,
29795
29802
  "opened": opened.value,
29796
29803
  "activated": activated.value,
@@ -29799,6 +29806,7 @@
29799
29806
  "onUpdate:selected": $event => selected.value = $event
29800
29807
  }), {
29801
29808
  default: () => [vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
29809
+ "returnObject": props.returnObject,
29802
29810
  "items": items.value
29803
29811
  }), slots)]
29804
29812
  });
@@ -30304,7 +30312,7 @@
30304
30312
  goTo
30305
30313
  };
30306
30314
  }
30307
- const version$1 = "3.6.13";
30315
+ const version$1 = "3.7.0-beta.1";
30308
30316
  createVuetify$1.version = version$1;
30309
30317
 
30310
30318
  // Vue's inject() can only be used in setup
@@ -30557,7 +30565,7 @@
30557
30565
 
30558
30566
  /* eslint-disable local-rules/sort-imports */
30559
30567
 
30560
- const version = "3.6.13";
30568
+ const version = "3.7.0-beta.1";
30561
30569
 
30562
30570
  /* eslint-disable local-rules/sort-imports */
30563
30571