@vuetify/nightly 3.7.0-beta.1-dev.2024-07-30 → 3.7.0-beta.1-dev.2024-08-08

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 (123) hide show
  1. package/dist/json/attributes.json +13 -5
  2. package/dist/json/importMap-labs.json +18 -18
  3. package/dist/json/importMap.json +160 -160
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +45 -13
  6. package/dist/vuetify-labs.css +3716 -2993
  7. package/dist/vuetify-labs.d.ts +50 -11
  8. package/dist/vuetify-labs.esm.js +113 -69
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +113 -69
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1406 -683
  13. package/dist/vuetify.d.ts +60 -60
  14. package/dist/vuetify.esm.js +35 -29
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +35 -29
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +13 -12
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/VAlert.css +5 -1
  22. package/lib/components/VAutocomplete/VAutocomplete.css +4 -0
  23. package/lib/components/VAvatar/VAvatar.css +8 -4
  24. package/lib/components/VAvatar/VAvatar.mjs +1 -1
  25. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  26. package/lib/components/VBadge/VBadge.css +2 -0
  27. package/lib/components/VBanner/VBanner.css +12 -4
  28. package/lib/components/VBottomNavigation/VBottomNavigation.css +11 -3
  29. package/lib/components/VBottomSheet/VBottomSheet.css +2 -0
  30. package/lib/components/VBtn/VBtn.css +16 -9
  31. package/lib/components/VBtn/VBtn.mjs +1 -1
  32. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  33. package/lib/components/VBtn/VBtn.sass +4 -4
  34. package/lib/components/VBtnGroup/VBtnGroup.css +12 -4
  35. package/lib/components/VCard/VCard.css +9 -1
  36. package/lib/components/VCarousel/VCarousel.css +2 -0
  37. package/lib/components/VChip/VChip.css +15 -9
  38. package/lib/components/VChip/VChip.sass +1 -1
  39. package/lib/components/VColorPicker/VColorPicker.css +2 -0
  40. package/lib/components/VColorPicker/VColorPicker.sass +4 -4
  41. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -4
  42. package/lib/components/VCombobox/VCombobox.css +4 -0
  43. package/lib/components/VDialog/VDialog.css +5 -0
  44. package/lib/components/VDivider/VDivider.css +2 -0
  45. package/lib/components/VExpansionPanel/VExpansionPanel.css +11 -5
  46. package/lib/components/VExpansionPanel/VExpansionPanel.sass +3 -3
  47. package/lib/components/VField/VField.css +13 -1
  48. package/lib/components/VField/VField.sass +5 -8
  49. package/lib/components/VFooter/VFooter.css +12 -4
  50. package/lib/components/VFooter/VFooter.mjs +20 -14
  51. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  52. package/lib/components/VFooter/index.d.mts +3 -3
  53. package/lib/components/VGrid/VGrid.sass +1 -1
  54. package/lib/components/VGrid/_mixins.sass +4 -4
  55. package/lib/components/VImg/VImg.css +6 -0
  56. package/lib/components/VKbd/VKbd.css +2 -0
  57. package/lib/components/VList/VList.css +12 -4
  58. package/lib/components/VList/VListItem.css +21 -11
  59. package/lib/components/VList/VListItem.sass +1 -1
  60. package/lib/components/VMain/VMain.css +2 -0
  61. package/lib/components/VMenu/VMenu.css +6 -0
  62. package/lib/components/VMenu/VMenu.mjs +1 -1
  63. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  64. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +9 -3
  65. package/lib/components/VOtpInput/VOtpInput.css +3 -1
  66. package/lib/components/VOtpInput/VOtpInput.sass +1 -2
  67. package/lib/components/VOverflowBtn/VOverflowBtn.sass +1 -1
  68. package/lib/components/VSelect/VSelect.css +4 -0
  69. package/lib/components/VSelectionControl/VSelectionControl.css +6 -4
  70. package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
  71. package/lib/components/VSheet/VSheet.css +12 -4
  72. package/lib/components/VSkeletonLoader/VSkeletonLoader.css +6 -4
  73. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +9 -8
  74. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  75. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -2
  76. package/lib/components/VSlider/VSliderThumb.sass +2 -2
  77. package/lib/components/VSnackbar/VSnackbar.css +2 -0
  78. package/lib/components/VSnackbar/VSnackbar.mjs +4 -4
  79. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  80. package/lib/components/VStepper/VStepper.css +8 -2
  81. package/lib/components/VStepper/VStepper.sass +2 -4
  82. package/lib/components/VStepper/VStepperItem.css +4 -1
  83. package/lib/components/VStepper/VStepperItem.sass +1 -1
  84. package/lib/components/VSwitch/VSwitch.css +2 -0
  85. package/lib/components/VSwitch/VSwitch.sass +10 -10
  86. package/lib/components/VSystemBar/VSystemBar.css +14 -8
  87. package/lib/components/VTable/VTable.css +8 -4
  88. package/lib/components/VTable/VTable.sass +2 -3
  89. package/lib/components/VTimeline/VTimeline.css +2 -0
  90. package/lib/components/VToolbar/VToolbar.css +21 -7
  91. package/lib/components/VToolbar/VToolbar.sass +1 -2
  92. package/lib/components/VTreeview/VTreeview.sass +9 -9
  93. package/lib/components/index.d.mts +3 -3
  94. package/lib/entry-bundler.mjs +1 -1
  95. package/lib/framework.mjs +1 -1
  96. package/lib/index.d.mts +57 -57
  97. package/lib/labs/VNumberInput/VNumberInput.mjs +60 -36
  98. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  99. package/lib/labs/VNumberInput/index.d.mts +17 -8
  100. package/lib/labs/VPicker/VPicker.css +6 -2
  101. package/lib/labs/VPicker/VPicker.sass +2 -3
  102. package/lib/labs/VPullToRefresh/VPullToRefresh.mjs +4 -3
  103. package/lib/labs/VPullToRefresh/VPullToRefresh.mjs.map +1 -1
  104. package/lib/labs/VPullToRefresh/index.d.mts +9 -0
  105. package/lib/labs/VTreeview/VTreeview.mjs +15 -2
  106. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  107. package/lib/labs/VTreeview/index.d.mts +21 -0
  108. package/lib/labs/components.d.mts +47 -8
  109. package/lib/styles/generic/_colors.scss +9 -3
  110. package/lib/styles/main.css +520 -0
  111. package/lib/styles/tools/_absolute.sass +8 -7
  112. package/lib/styles/tools/_border.sass +4 -3
  113. package/lib/styles/tools/_display.sass +8 -7
  114. package/lib/styles/tools/_elevation.sass +4 -2
  115. package/lib/styles/tools/_index.sass +0 -1
  116. package/lib/styles/tools/_radius.sass +6 -5
  117. package/lib/styles/tools/_rounded.sass +2 -1
  118. package/lib/styles/tools/_theme.sass +3 -2
  119. package/lib/styles/tools/_typography.sass +6 -5
  120. package/lib/styles/tools/_utilities.sass +5 -5
  121. package/lib/styles/utilities/_index.sass +7 -7
  122. package/package.json +1 -1
  123. package/lib/styles/tools/_sheet.sass +0 -14
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.0-beta.1-dev.2024-07-30
2
+ * Vuetify v3.7.0-beta.1-dev.2024-08-08
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -5720,7 +5720,7 @@
5720
5720
  "indeterminate": true,
5721
5721
  "width": "2"
5722
5722
  }, null)])]
5723
- }), [[Ripple, !isDisabled.value && !!props.ripple, '', {
5723
+ }), [[Ripple, !isDisabled.value && props.ripple, '', {
5724
5724
  center: !!props.icon
5725
5725
  }]]);
5726
5726
  });
@@ -6018,7 +6018,7 @@
6018
6018
  "defaults": {
6019
6019
  VImg: {
6020
6020
  cover: true,
6021
- image: props.image
6021
+ src: props.image
6022
6022
  },
6023
6023
  VIcon: {
6024
6024
  icon: props.icon
@@ -11160,7 +11160,7 @@
11160
11160
  },
11161
11161
  closeParents(e) {
11162
11162
  setTimeout(() => {
11163
- if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11163
+ if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
11164
11164
  isActive.value = false;
11165
11165
  parent?.closeParents();
11166
11166
  }
@@ -22979,6 +22979,8 @@
22979
22979
  let {
22980
22980
  slots
22981
22981
  } = _ref;
22982
+ const layoutItemStyles = vue.ref();
22983
+ const layoutIsReady = vue.shallowRef();
22982
22984
  const {
22983
22985
  themeClasses
22984
22986
  } = provideTheme(props);
@@ -23003,17 +23005,20 @@
23003
23005
  autoHeight.value = entries[0].target.clientHeight;
23004
23006
  });
23005
23007
  const height = vue.computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10));
23006
- const {
23007
- layoutItemStyles,
23008
- layoutIsReady
23009
- } = useLayoutItem({
23010
- id: props.name,
23011
- order: vue.computed(() => parseInt(props.order, 10)),
23012
- position: vue.computed(() => 'bottom'),
23013
- layoutSize: height,
23014
- elementSize: vue.computed(() => props.height === 'auto' ? undefined : height.value),
23015
- active: vue.computed(() => props.app),
23016
- absolute: vue.toRef(props, 'absolute')
23008
+ useToggleScope(() => props.app, () => {
23009
+ const layout = useLayoutItem({
23010
+ id: props.name,
23011
+ order: vue.computed(() => parseInt(props.order, 10)),
23012
+ position: vue.computed(() => 'bottom'),
23013
+ layoutSize: height,
23014
+ elementSize: vue.computed(() => props.height === 'auto' ? undefined : height.value),
23015
+ active: vue.computed(() => props.app),
23016
+ absolute: vue.toRef(props, 'absolute')
23017
+ });
23018
+ vue.watchEffect(() => {
23019
+ layoutItemStyles.value = layout.layoutItemStyles.value;
23020
+ layoutIsReady.value = layout.layoutIsReady;
23021
+ });
23017
23022
  });
23018
23023
  useRender(() => vue.createVNode(props.tag, {
23019
23024
  "ref": resizeRef,
@@ -23022,7 +23027,7 @@
23022
23027
  height: convertToUnit(props.height)
23023
23028
  }, props.style]
23024
23029
  }, slots));
23025
- return props.app ? layoutIsReady : {};
23030
+ return props.app ? layoutIsReady.value : {};
23026
23031
  }
23027
23032
  });
23028
23033
 
@@ -25163,16 +25168,17 @@
25163
25168
  const items = vue.computed(() => genStructure(wrapInArray(props.type).join(',')));
25164
25169
  useRender(() => {
25165
25170
  const isLoading = !slots.default || props.loading;
25166
- return vue.createVNode("div", {
25171
+ const loadingProps = props.boilerplate || !isLoading ? {} : {
25172
+ ariaLive: 'polite',
25173
+ ariaLabel: t(props.loadingText),
25174
+ role: 'alert'
25175
+ };
25176
+ return vue.createVNode("div", vue.mergeProps({
25167
25177
  "class": ['v-skeleton-loader', {
25168
25178
  'v-skeleton-loader--boilerplate': props.boilerplate
25169
25179
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
25170
- "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}],
25171
- "aria-busy": !props.boilerplate ? isLoading : undefined,
25172
- "aria-live": !props.boilerplate ? 'polite' : undefined,
25173
- "aria-label": !props.boilerplate ? t(props.loadingText) : undefined,
25174
- "role": !props.boilerplate ? 'alert' : undefined
25175
- }, [isLoading ? items.value : slots.default?.()]);
25180
+ "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]
25181
+ }, loadingProps), [isLoading ? items.value : slots.default?.()]);
25176
25182
  });
25177
25183
  return {};
25178
25184
  }
@@ -25205,14 +25211,14 @@
25205
25211
  // Types
25206
25212
 
25207
25213
  function useCountdown(milliseconds) {
25208
- const time = vue.shallowRef(milliseconds);
25214
+ const time = vue.shallowRef(milliseconds());
25209
25215
  let timer = -1;
25210
25216
  function clear() {
25211
25217
  clearInterval(timer);
25212
25218
  }
25213
25219
  function reset() {
25214
25220
  clear();
25215
- vue.nextTick(() => time.value = milliseconds);
25221
+ vue.nextTick(() => time.value = milliseconds());
25216
25222
  }
25217
25223
  function start(el) {
25218
25224
  const style = el ? getComputedStyle(el) : {
@@ -25224,7 +25230,7 @@
25224
25230
  const startTime = performance.now();
25225
25231
  timer = window.setInterval(() => {
25226
25232
  const elapsed = performance.now() - startTime + interval;
25227
- time.value = Math.max(milliseconds - elapsed, 0);
25233
+ time.value = Math.max(milliseconds() - elapsed, 0);
25228
25234
  if (time.value <= 0) clear();
25229
25235
  }, interval);
25230
25236
  }
@@ -25284,7 +25290,7 @@
25284
25290
  const {
25285
25291
  roundedClasses
25286
25292
  } = useRounded(props);
25287
- const countdown = useCountdown(Number(props.timeout));
25293
+ const countdown = useCountdown(() => Number(props.timeout));
25288
25294
  const overlay = vue.ref();
25289
25295
  const timerRef = vue.ref();
25290
25296
  const isHovering = vue.shallowRef(false);
@@ -28104,19 +28110,23 @@
28104
28110
  },
28105
28111
  inset: Boolean,
28106
28112
  hideInput: Boolean,
28113
+ modelValue: {
28114
+ type: Number,
28115
+ default: null
28116
+ },
28107
28117
  min: {
28108
28118
  type: Number,
28109
- default: -Infinity
28119
+ default: Number.MIN_SAFE_INTEGER
28110
28120
  },
28111
28121
  max: {
28112
28122
  type: Number,
28113
- default: Infinity
28123
+ default: Number.MAX_SAFE_INTEGER
28114
28124
  },
28115
28125
  step: {
28116
28126
  type: Number,
28117
28127
  default: 1
28118
28128
  },
28119
- ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
28129
+ ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
28120
28130
  }, 'VNumberInput');
28121
28131
  const VNumberInput = genericComponent()({
28122
28132
  name: 'VNumberInput',
@@ -28128,30 +28138,27 @@
28128
28138
  },
28129
28139
  setup(props, _ref) {
28130
28140
  let {
28131
- attrs,
28132
- emit,
28133
28141
  slots
28134
28142
  } = _ref;
28135
- const model = useProxiedModel(props, 'modelValue');
28143
+ const _model = useProxiedModel(props, 'modelValue');
28144
+ const model = vue.computed({
28145
+ get: () => _model.value,
28146
+ set(val) {
28147
+ if (typeof val !== 'string') _model.value = val;
28148
+ }
28149
+ });
28150
+ const vTextFieldRef = vue.ref();
28136
28151
  const stepDecimals = vue.computed(() => getDecimals(props.step));
28137
- const modelDecimals = vue.computed(() => model.value != null ? getDecimals(model.value) : 0);
28152
+ const modelDecimals = vue.computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28138
28153
  const form = useForm();
28139
28154
  const controlsDisabled = vue.computed(() => props.disabled || props.readonly || form?.isReadonly.value);
28140
28155
  const canIncrease = vue.computed(() => {
28141
28156
  if (controlsDisabled.value) return false;
28142
- if (model.value == null) return true;
28143
- return model.value + props.step <= props.max;
28157
+ return (model.value ?? 0) + props.step <= props.max;
28144
28158
  });
28145
28159
  const canDecrease = vue.computed(() => {
28146
28160
  if (controlsDisabled.value) return false;
28147
- if (model.value == null) return true;
28148
- return model.value - props.step >= props.min;
28149
- });
28150
- vue.watchEffect(() => {
28151
- if (controlsDisabled.value) return;
28152
- if (model.value != null && (model.value < props.min || model.value > props.max)) {
28153
- model.value = clamp(model.value, props.min, props.max);
28154
- }
28161
+ return (model.value ?? 0) - props.step >= props.min;
28155
28162
  });
28156
28163
  const controlVariant = vue.computed(() => {
28157
28164
  return props.hideInput ? 'stacked' : props.controlVariant;
@@ -28166,11 +28173,16 @@
28166
28173
  const decrementSlotProps = vue.computed(() => ({
28167
28174
  click: onClickDown
28168
28175
  }));
28176
+ vue.onMounted(() => {
28177
+ if (!props.readonly && !props.disabled) {
28178
+ clampModel();
28179
+ }
28180
+ });
28169
28181
  function toggleUpDown() {
28170
28182
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28171
28183
  if (controlsDisabled.value) return;
28172
28184
  if (model.value == null) {
28173
- model.value = 0;
28185
+ model.value = clamp(0, props.min, props.max);
28174
28186
  return;
28175
28187
  }
28176
28188
  const decimals = Math.max(modelDecimals.value, stepDecimals.value);
@@ -28188,30 +28200,45 @@
28188
28200
  e.stopPropagation();
28189
28201
  toggleUpDown(false);
28190
28202
  }
28191
- function onKeydown(e) {
28192
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
28193
- if (['ArrowDown'].includes(e.key)) {
28194
- e.preventDefault();
28195
- toggleUpDown(false);
28196
- return;
28197
- }
28198
- if (['ArrowUp'].includes(e.key)) {
28203
+ function onBeforeinput(e) {
28204
+ if (!e.data) return;
28205
+ const existingTxt = e.target?.value;
28206
+ const selectionStart = e.target?.selectionStart;
28207
+ const selectionEnd = e.target?.selectionEnd;
28208
+ const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
28209
+ // Only numbers, "-", "." are allowed
28210
+ // AND "-", "." are allowed only once
28211
+ // AND "-" is only allowed at the start
28212
+ if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
28199
28213
  e.preventDefault();
28200
- toggleUpDown();
28201
- return;
28202
28214
  }
28203
-
28204
- // Only numbers, +, - & . are allowed
28205
- if (!/^[0-9\-+.]+$/.test(e.key)) {
28215
+ }
28216
+ async function onKeydown(e) {
28217
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
28218
+ if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
28206
28219
  e.preventDefault();
28220
+ clampModel();
28221
+ // _model is controlled, so need to wait until props['modelValue'] is updated
28222
+ await vue.nextTick();
28223
+ if (e.key === 'ArrowDown') {
28224
+ toggleUpDown(false);
28225
+ } else {
28226
+ toggleUpDown();
28227
+ }
28207
28228
  }
28208
28229
  }
28209
- function onModelUpdate(v) {
28210
- model.value = v ? +v : undefined;
28211
- }
28212
28230
  function onControlMousedown(e) {
28213
28231
  e.stopPropagation();
28214
28232
  }
28233
+ function clampModel() {
28234
+ if (!vTextFieldRef.value) return;
28235
+ const inputText = vTextFieldRef.value.value;
28236
+ if (inputText && !isNaN(+inputText)) {
28237
+ model.value = clamp(+inputText, props.min, props.max);
28238
+ } else {
28239
+ model.value = null;
28240
+ }
28241
+ }
28215
28242
  useRender(() => {
28216
28243
  const {
28217
28244
  modelValue: _,
@@ -28296,8 +28323,11 @@
28296
28323
  }, null)]) : props.reverse ? vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
28297
28324
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28298
28325
  return vue.createVNode(VTextField, vue.mergeProps({
28326
+ "ref": vTextFieldRef,
28299
28327
  "modelValue": model.value,
28300
- "onUpdate:modelValue": onModelUpdate,
28328
+ "onUpdate:modelValue": $event => model.value = $event,
28329
+ "onBeforeinput": onBeforeinput,
28330
+ "onChange": clampModel,
28301
28331
  "onKeydown": onKeydown,
28302
28332
  "class": ['v-number-input', {
28303
28333
  'v-number-input--default': controlVariant.value === 'default',
@@ -28591,6 +28621,7 @@
28591
28621
  const VPullToRefresh = genericComponent()({
28592
28622
  name: 'VPullToRefresh',
28593
28623
  props: {
28624
+ disabled: Boolean,
28594
28625
  pullDownThreshold: {
28595
28626
  type: Number,
28596
28627
  default: 64
@@ -28614,19 +28645,19 @@
28614
28645
  const canRefresh = vue.computed(() => touchDiff.value >= props.pullDownThreshold && !refreshing.value);
28615
28646
  const topOffset = vue.computed(() => clamp(touchDiff.value, 0, props.pullDownThreshold));
28616
28647
  function onTouchstart(e) {
28617
- if (refreshing.value) return;
28648
+ if (refreshing.value || props.disabled) return;
28618
28649
  touching.value = true;
28619
28650
  touchstartY = 'clientY' in e ? e.clientY : e.touches[0].clientY;
28620
28651
  }
28621
28652
  function onTouchmove(e) {
28622
- if (refreshing.value || !touching.value) return;
28653
+ if (refreshing.value || !touching.value || props.disabled) return;
28623
28654
  const touchY = 'clientY' in e ? e.clientY : e.touches[0].clientY;
28624
28655
  if (scrollParents.length && !scrollParents[0].scrollTop) {
28625
28656
  touchDiff.value = touchY - touchstartY;
28626
28657
  }
28627
28658
  }
28628
28659
  function onTouchend(e) {
28629
- if (refreshing.value) return;
28660
+ if (refreshing.value || props.disabled) return;
28630
28661
  touching.value = false;
28631
28662
  if (canRefresh.value) {
28632
28663
  function done() {
@@ -29715,7 +29746,11 @@
29715
29746
  collapseIcon: '$treeviewCollapse',
29716
29747
  expandIcon: '$treeviewExpand',
29717
29748
  slim: true
29718
- }), ['nav', 'openStrategy'])
29749
+ }), ['nav', 'openStrategy']),
29750
+ modelValue: {
29751
+ type: Array,
29752
+ default: () => []
29753
+ }
29719
29754
  }, 'VTreeview');
29720
29755
  const VTreeview = genericComponent()({
29721
29756
  name: 'VTreeview',
@@ -29724,6 +29759,7 @@
29724
29759
  'update:opened': val => true,
29725
29760
  'update:activated': val => true,
29726
29761
  'update:selected': val => true,
29762
+ 'update:modelValue': val => true,
29727
29763
  'click:open': value => true,
29728
29764
  'click:select': value => true
29729
29765
  },
@@ -29738,7 +29774,15 @@
29738
29774
  const baseColor = vue.toRef(props, 'baseColor');
29739
29775
  const color = vue.toRef(props, 'color');
29740
29776
  const activated = useProxiedModel(props, 'activated');
29741
- const selected = useProxiedModel(props, 'selected');
29777
+ const model = useProxiedModel(props, 'modelValue');
29778
+ const _selected = useProxiedModel(props, 'selected', props.modelValue);
29779
+ const selected = vue.computed({
29780
+ get: () => _selected.value,
29781
+ set(val) {
29782
+ _selected.value = val;
29783
+ model.value = val;
29784
+ }
29785
+ });
29742
29786
  const vListRef = vue.ref();
29743
29787
  const opened = vue.computed(() => props.openAll ? openAll(items.value) : props.opened);
29744
29788
  const flatItems = vue.computed(() => flatten(items.value));
@@ -30329,7 +30373,7 @@
30329
30373
  goTo
30330
30374
  };
30331
30375
  }
30332
- const version$1 = "3.7.0-beta.1-dev.2024-07-30";
30376
+ const version$1 = "3.7.0-beta.1-dev.2024-08-08";
30333
30377
  createVuetify$1.version = version$1;
30334
30378
 
30335
30379
  // Vue's inject() can only be used in setup
@@ -30582,7 +30626,7 @@
30582
30626
 
30583
30627
  /* eslint-disable local-rules/sort-imports */
30584
30628
 
30585
- const version = "3.7.0-beta.1-dev.2024-07-30";
30629
+ const version = "3.7.0-beta.1-dev.2024-08-08";
30586
30630
 
30587
30631
  /* eslint-disable local-rules/sort-imports */
30588
30632