@vuetify/nightly 3.6.13-3.7.0-beta.0.0-pr-20092.a834b18 → 3.6.13-pr-20185.5bf1ff4

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 (204) hide show
  1. package/dist/json/attributes.json +125 -273
  2. package/dist/json/importMap-labs.json +16 -16
  3. package/dist/json/importMap.json +118 -118
  4. package/dist/json/tags.json +5 -42
  5. package/dist/json/web-types.json +239 -610
  6. package/dist/vuetify-labs.css +3046 -2341
  7. package/dist/vuetify-labs.d.ts +368 -697
  8. package/dist/vuetify-labs.esm.js +239 -241
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +239 -241
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1273 -568
  13. package/dist/vuetify.d.ts +342 -605
  14. package/dist/vuetify.esm.js +100 -160
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +100 -160
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +1038 -1037
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/VAlert.css +5 -1
  22. package/lib/components/VAppBar/index.d.mts +0 -6
  23. package/lib/components/VAutocomplete/VAutocomplete.css +4 -0
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +8 -15
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.mts +42 -61
  27. package/lib/components/VAvatar/VAvatar.css +2 -7
  28. package/lib/components/VAvatar/VAvatar.mjs +2 -7
  29. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  30. package/lib/components/VAvatar/VAvatar.sass +0 -1
  31. package/lib/components/VAvatar/_variables.scss +0 -13
  32. package/lib/components/VAvatar/index.d.mts +0 -6
  33. package/lib/components/VBadge/VBadge.css +2 -0
  34. package/lib/components/VBanner/VBanner.css +12 -4
  35. package/lib/components/VBottomNavigation/VBottomNavigation.css +11 -3
  36. package/lib/components/VBottomSheet/VBottomSheet.css +2 -0
  37. package/lib/components/VBreadcrumbs/index.d.mts +8 -8
  38. package/lib/components/VBtn/VBtn.css +16 -9
  39. package/lib/components/VBtn/VBtn.mjs +2 -4
  40. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  41. package/lib/components/VBtn/VBtn.sass +4 -4
  42. package/lib/components/VBtn/index.d.mts +0 -6
  43. package/lib/components/VBtnGroup/VBtnGroup.css +12 -4
  44. package/lib/components/VCard/VCard.css +9 -1
  45. package/lib/components/VCarousel/VCarousel.css +2 -0
  46. package/lib/components/VCarousel/index.d.mts +0 -9
  47. package/lib/components/VCheckbox/index.d.mts +6 -6
  48. package/lib/components/VChip/VChip.css +15 -9
  49. package/lib/components/VChip/VChip.sass +1 -1
  50. package/lib/components/VColorPicker/VColorPicker.css +2 -0
  51. package/lib/components/VColorPicker/VColorPicker.sass +4 -4
  52. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -4
  53. package/lib/components/VCombobox/VCombobox.css +4 -0
  54. package/lib/components/VCombobox/VCombobox.mjs +8 -15
  55. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  56. package/lib/components/VCombobox/index.d.mts +42 -61
  57. package/lib/components/VDataTable/composables/options.mjs +1 -1
  58. package/lib/components/VDataTable/composables/options.mjs.map +1 -1
  59. package/lib/components/VDialog/VDialog.css +5 -0
  60. package/lib/components/VDialog/index.d.mts +3 -3
  61. package/lib/components/VDivider/VDivider.css +2 -0
  62. package/lib/components/VExpansionPanel/VExpansionPanel.css +11 -5
  63. package/lib/components/VExpansionPanel/VExpansionPanel.sass +3 -3
  64. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -7
  65. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  66. package/lib/components/VExpansionPanel/index.d.mts +0 -72
  67. package/lib/components/VFab/index.d.mts +0 -6
  68. package/lib/components/VField/VField.css +13 -1
  69. package/lib/components/VField/VField.sass +5 -8
  70. package/lib/components/VFileInput/index.d.mts +18 -18
  71. package/lib/components/VFooter/VFooter.css +12 -4
  72. package/lib/components/VFooter/VFooter.mjs +20 -14
  73. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  74. package/lib/components/VFooter/index.d.mts +3 -3
  75. package/lib/components/VForm/index.d.mts +9 -9
  76. package/lib/components/VGrid/VContainer.mjs +1 -6
  77. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  78. package/lib/components/VGrid/VGrid.sass +1 -1
  79. package/lib/components/VGrid/_mixins.sass +4 -4
  80. package/lib/components/VGrid/index.d.mts +0 -36
  81. package/lib/components/VImg/VImg.css +6 -9
  82. package/lib/components/VImg/VImg.mjs +0 -2
  83. package/lib/components/VImg/VImg.mjs.map +1 -1
  84. package/lib/components/VImg/VImg.sass +0 -9
  85. package/lib/components/VImg/index.d.mts +0 -9
  86. package/lib/components/VInput/index.d.mts +6 -6
  87. package/lib/components/VKbd/VKbd.css +2 -0
  88. package/lib/components/VList/VList.css +12 -4
  89. package/lib/components/VList/VListItem.css +23 -13
  90. package/lib/components/VList/VListItem.mjs +1 -3
  91. package/lib/components/VList/VListItem.mjs.map +1 -1
  92. package/lib/components/VList/VListItem.sass +2 -2
  93. package/lib/components/VList/index.d.mts +18 -19
  94. package/lib/components/VMain/VMain.css +2 -0
  95. package/lib/components/VMenu/VMenu.css +6 -0
  96. package/lib/components/VMenu/VMenu.mjs +8 -26
  97. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  98. package/lib/components/VMenu/index.d.mts +15 -30
  99. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +9 -3
  100. package/lib/components/VOtpInput/VOtpInput.css +3 -1
  101. package/lib/components/VOtpInput/VOtpInput.sass +1 -2
  102. package/lib/components/VOverflowBtn/VOverflowBtn.sass +1 -1
  103. package/lib/components/VOverlay/VOverlay.mjs +4 -5
  104. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  105. package/lib/components/VOverlay/useActivator.mjs +2 -3
  106. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  107. package/lib/components/VRadioGroup/index.d.mts +6 -6
  108. package/lib/components/VRangeSlider/index.d.mts +6 -6
  109. package/lib/components/VSelect/VSelect.css +4 -0
  110. package/lib/components/VSelect/VSelect.mjs +13 -15
  111. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  112. package/lib/components/VSelect/index.d.mts +42 -61
  113. package/lib/components/VSelect/useScrolling.mjs +3 -3
  114. package/lib/components/VSelect/useScrolling.mjs.map +1 -1
  115. package/lib/components/VSelectionControl/VSelectionControl.css +6 -4
  116. package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
  117. package/lib/components/VSheet/VSheet.css +12 -4
  118. package/lib/components/VSkeletonLoader/VSkeletonLoader.css +6 -4
  119. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +9 -8
  120. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  121. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -2
  122. package/lib/components/VSlideGroup/VSlideGroup.mjs +1 -3
  123. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  124. package/lib/components/VSlideGroup/index.d.mts +0 -6
  125. package/lib/components/VSlider/VSliderThumb.sass +2 -2
  126. package/lib/components/VSlider/index.d.mts +6 -6
  127. package/lib/components/VSnackbar/VSnackbar.css +2 -0
  128. package/lib/components/VSnackbar/VSnackbar.mjs +4 -4
  129. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  130. package/lib/components/VSnackbar/index.d.mts +3 -3
  131. package/lib/components/VSpeedDial/index.d.mts +13 -28
  132. package/lib/components/VStepper/VStepper.css +8 -2
  133. package/lib/components/VStepper/VStepper.sass +2 -4
  134. package/lib/components/VStepper/VStepperItem.css +4 -1
  135. package/lib/components/VStepper/VStepperItem.sass +1 -1
  136. package/lib/components/VSwitch/VSwitch.css +2 -0
  137. package/lib/components/VSwitch/VSwitch.sass +10 -10
  138. package/lib/components/VSwitch/index.d.mts +6 -6
  139. package/lib/components/VSystemBar/VSystemBar.css +14 -8
  140. package/lib/components/VTable/VTable.css +8 -4
  141. package/lib/components/VTable/VTable.sass +2 -3
  142. package/lib/components/VTabs/index.d.mts +3 -21
  143. package/lib/components/VTextField/index.d.mts +18 -18
  144. package/lib/components/VTextarea/index.d.mts +18 -18
  145. package/lib/components/VTimeline/VTimeline.css +2 -0
  146. package/lib/components/VToolbar/VToolbar.css +21 -7
  147. package/lib/components/VToolbar/VToolbar.sass +1 -2
  148. package/lib/components/VTooltip/index.d.mts +3 -3
  149. package/lib/components/VTreeview/VTreeview.sass +9 -9
  150. package/lib/components/VValidation/index.d.mts +8 -9
  151. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +0 -2
  152. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  153. package/lib/components/VVirtualScroll/index.d.mts +0 -3
  154. package/lib/components/index.d.mts +302 -565
  155. package/lib/composables/nested/nested.mjs +3 -3
  156. package/lib/composables/nested/nested.mjs.map +1 -1
  157. package/lib/composables/nested/openStrategies.mjs +2 -4
  158. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  159. package/lib/composables/nested/selectStrategies.mjs +5 -5
  160. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  161. package/lib/composables/validation.mjs +6 -8
  162. package/lib/composables/validation.mjs.map +1 -1
  163. package/lib/composables/virtual.mjs +0 -1
  164. package/lib/composables/virtual.mjs.map +1 -1
  165. package/lib/entry-bundler.mjs +1 -1
  166. package/lib/entry-bundler.mjs.map +1 -1
  167. package/lib/framework.mjs +1 -1
  168. package/lib/framework.mjs.map +1 -1
  169. package/lib/index.d.mts +40 -40
  170. package/lib/labs/VDateInput/index.d.mts +6 -6
  171. package/lib/labs/VNumberInput/VNumberInput.mjs +60 -36
  172. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  173. package/lib/labs/VNumberInput/index.d.mts +23 -14
  174. package/lib/labs/VPicker/VPicker.css +6 -2
  175. package/lib/labs/VPicker/VPicker.sass +2 -3
  176. package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
  177. package/lib/labs/VStepperVertical/index.d.mts +0 -36
  178. package/lib/labs/VTreeview/VTreeview.mjs +5 -7
  179. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  180. package/lib/labs/VTreeview/VTreeviewChildren.mjs +10 -33
  181. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  182. package/lib/labs/VTreeview/VTreeviewItem.css +1 -1
  183. package/lib/labs/VTreeview/VTreeviewItem.mjs +74 -14
  184. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  185. package/lib/labs/VTreeview/VTreeviewItem.sass +5 -2
  186. package/lib/labs/VTreeview/index.d.mts +60 -77
  187. package/lib/labs/components.d.mts +92 -136
  188. package/lib/styles/generic/_colors.scss +9 -3
  189. package/lib/styles/main.css +520 -0
  190. package/lib/styles/tools/_absolute.sass +8 -7
  191. package/lib/styles/tools/_border.sass +4 -3
  192. package/lib/styles/tools/_display.sass +8 -7
  193. package/lib/styles/tools/_elevation.sass +4 -2
  194. package/lib/styles/tools/_index.sass +0 -1
  195. package/lib/styles/tools/_radius.sass +6 -5
  196. package/lib/styles/tools/_rounded.sass +2 -1
  197. package/lib/styles/tools/_theme.sass +3 -2
  198. package/lib/styles/tools/_typography.sass +6 -5
  199. package/lib/styles/tools/_utilities.sass +5 -5
  200. package/lib/styles/utilities/_index.sass +7 -7
  201. package/lib/util/helpers.mjs +0 -5
  202. package/lib/util/helpers.mjs.map +1 -1
  203. package/package.json +1 -1
  204. package/lib/styles/tools/_sheet.sass +0 -14
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.13-3.7.0-beta.0.0-pr-20092.a834b18
2
+ * Vuetify v3.6.13-pr-20185.5bf1ff4
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -575,11 +575,6 @@ 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
- }
583
578
 
584
579
  // Utilities
585
580
  const block = ['top', 'bottom'];
@@ -3253,7 +3248,6 @@ const Intersect = {
3253
3248
  // not intended for public use, this is passed in by vuetify-loader
3254
3249
 
3255
3250
  const makeVImgProps = propsFactory({
3256
- absolute: Boolean,
3257
3251
  alt: String,
3258
3252
  cover: Boolean,
3259
3253
  color: String,
@@ -3510,7 +3504,6 @@ const VImg = genericComponent()({
3510
3504
  const responsiveProps = VResponsive.filterProps(props);
3511
3505
  return withDirectives(createVNode(VResponsive, mergeProps({
3512
3506
  "class": ['v-img', {
3513
- 'v-img--absolute': props.absolute,
3514
3507
  'v-img--booting': !isBooted.value
3515
3508
  }, backgroundColorClasses.value, roundedClasses.value, props.class],
3516
3509
  "style": [{
@@ -5518,7 +5511,6 @@ const makeVBtnProps = propsFactory({
5518
5511
  type: Boolean,
5519
5512
  default: undefined
5520
5513
  },
5521
- activeColor: String,
5522
5514
  baseColor: String,
5523
5515
  symbol: {
5524
5516
  type: null,
@@ -5610,11 +5602,10 @@ const VBtn = genericComponent()({
5610
5602
  }
5611
5603
  return group?.isSelected.value;
5612
5604
  });
5613
- const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5614
5605
  const variantProps = computed(() => {
5615
5606
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5616
5607
  return {
5617
- color: showColor ? color.value ?? props.baseColor : props.baseColor,
5608
+ color: showColor ? props.color ?? props.baseColor : props.baseColor,
5618
5609
  variant: props.variant
5619
5610
  };
5620
5611
  });
@@ -5716,7 +5707,7 @@ const VBtn = genericComponent()({
5716
5707
  "indeterminate": true,
5717
5708
  "width": "2"
5718
5709
  }, null)])]
5719
- }), [[Ripple, !isDisabled.value && !!props.ripple, '', {
5710
+ }), [[Ripple, !isDisabled.value && props.ripple, '', {
5720
5711
  center: !!props.icon
5721
5712
  }]]);
5722
5713
  });
@@ -5955,7 +5946,6 @@ const makeVAvatarProps = propsFactory({
5955
5946
  icon: IconValue,
5956
5947
  image: String,
5957
5948
  text: String,
5958
- ...makeBorderProps(),
5959
5949
  ...makeComponentProps(),
5960
5950
  ...makeDensityProps(),
5961
5951
  ...makeRoundedProps(),
@@ -5976,9 +5966,6 @@ const VAvatar = genericComponent()({
5976
5966
  const {
5977
5967
  themeClasses
5978
5968
  } = provideTheme(props);
5979
- const {
5980
- borderClasses
5981
- } = useBorder(props);
5982
5969
  const {
5983
5970
  colorClasses,
5984
5971
  colorStyles,
@@ -5998,7 +5985,7 @@ const VAvatar = genericComponent()({
5998
5985
  "class": ['v-avatar', {
5999
5986
  'v-avatar--start': props.start,
6000
5987
  'v-avatar--end': props.end
6001
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5988
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6002
5989
  "style": [colorStyles.value, sizeStyles.value, props.style]
6003
5990
  }, {
6004
5991
  default: () => [!slots.default ? props.image ? createVNode(VImg, {
@@ -6014,7 +6001,7 @@ const VAvatar = genericComponent()({
6014
6001
  "defaults": {
6015
6002
  VImg: {
6016
6003
  cover: true,
6017
- image: props.image
6004
+ src: props.image
6018
6005
  },
6019
6006
  VIcon: {
6020
6007
  icon: props.icon
@@ -6698,14 +6685,12 @@ function useValidation(props) {
6698
6685
  const validateOn = computed(() => {
6699
6686
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
6700
6687
  if (value === 'lazy') value = 'input lazy';
6701
- if (value === 'eager') value = 'input eager';
6702
6688
  const set = new Set(value?.split(' ') ?? []);
6703
6689
  return {
6690
+ blur: set.has('blur') || set.has('input'),
6704
6691
  input: set.has('input'),
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')
6692
+ submit: set.has('submit'),
6693
+ lazy: set.has('lazy')
6709
6694
  };
6710
6695
  });
6711
6696
  const isValid = computed(() => {
@@ -6742,11 +6727,11 @@ function useValidation(props) {
6742
6727
  });
6743
6728
  onMounted(async () => {
6744
6729
  if (!validateOn.value.lazy) {
6745
- await validate(!validateOn.value.eager);
6730
+ await validate(true);
6746
6731
  }
6747
6732
  form?.update(uid.value, isValid.value, errorMessages.value);
6748
6733
  });
6749
- useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
6734
+ useToggleScope(() => validateOn.value.input, () => {
6750
6735
  watch(validationModel, () => {
6751
6736
  if (validationModel.value != null) {
6752
6737
  validate();
@@ -6774,7 +6759,7 @@ function useValidation(props) {
6774
6759
  async function resetValidation() {
6775
6760
  isPristine.value = true;
6776
6761
  if (!validateOn.value.lazy) {
6777
- await validate(!validateOn.value.eager);
6762
+ await validate(true);
6778
6763
  } else {
6779
6764
  internalErrorMessages.value = [];
6780
6765
  }
@@ -7714,9 +7699,7 @@ const VSlideGroup = genericComponent()({
7714
7699
  selected: group.selected,
7715
7700
  scrollTo,
7716
7701
  scrollOffset,
7717
- focus,
7718
- hasPrev,
7719
- hasNext
7702
+ focus
7720
7703
  };
7721
7704
  }
7722
7705
  });
@@ -8186,7 +8169,6 @@ const leafSingleActiveStrategy = mandatory => {
8186
8169
  return strategy;
8187
8170
  };
8188
8171
 
8189
- // Utilities
8190
8172
  const singleOpenStrategy = {
8191
8173
  open: _ref => {
8192
8174
  let {
@@ -8220,11 +8202,11 @@ const multipleOpenStrategy = {
8220
8202
  parents
8221
8203
  } = _ref2;
8222
8204
  if (value) {
8223
- let parent = toRaw(parents.get(id));
8205
+ let parent = parents.get(id);
8224
8206
  opened.add(id);
8225
8207
  while (parent != null && parent !== id) {
8226
8208
  opened.add(parent);
8227
- parent = toRaw(parents.get(parent));
8209
+ parent = parents.get(parent);
8228
8210
  }
8229
8211
  return opened;
8230
8212
  } else {
@@ -8395,18 +8377,18 @@ const classicSelectStrategy = mandatory => {
8395
8377
  const items = [id];
8396
8378
  while (items.length) {
8397
8379
  const item = items.shift();
8398
- selected.set(toRaw(item), value ? 'on' : 'off');
8380
+ selected.set(item, value ? 'on' : 'off');
8399
8381
  if (children.has(item)) {
8400
8382
  items.push(...children.get(item));
8401
8383
  }
8402
8384
  }
8403
- let parent = toRaw(parents.get(id));
8385
+ let parent = parents.get(id);
8404
8386
  while (parent) {
8405
8387
  const childrenIds = children.get(parent);
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');
8388
+ const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
8389
+ const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
8408
8390
  selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
8409
- parent = toRaw(parents.get(parent));
8391
+ parent = parents.get(parent);
8410
8392
  }
8411
8393
 
8412
8394
  // If mandatory and planned deselect results in no selected
@@ -8484,7 +8466,7 @@ const useNested = props => {
8484
8466
  let isUnmounted = false;
8485
8467
  const children = ref(new Map());
8486
8468
  const parents = ref(new Map());
8487
- const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(toRaw(v)), v => [...v.values()]);
8469
+ const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8488
8470
  const activeStrategy = computed(() => {
8489
8471
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8490
8472
  if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
@@ -8657,9 +8639,9 @@ const useNestedItem = (id, isGroup) => {
8657
8639
  const item = {
8658
8640
  ...parent,
8659
8641
  id: computedId,
8660
- open: (open, e) => parent.root.open(toRaw(computedId.value), open, e),
8642
+ open: (open, e) => parent.root.open(computedId.value, open, e),
8661
8643
  openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
8662
- isOpen: computed(() => parent.root.opened.value.has(toRaw(computedId.value))),
8644
+ isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
8663
8645
  parent: computed(() => parent.root.parents.value.get(computedId.value)),
8664
8646
  activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
8665
8647
  isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
@@ -8883,7 +8865,6 @@ const VListItem = genericComponent()({
8883
8865
  activate,
8884
8866
  isActivated,
8885
8867
  select,
8886
- isOpen,
8887
8868
  isSelected,
8888
8869
  isIndeterminate,
8889
8870
  isGroupActivator,
@@ -8938,7 +8919,6 @@ const VListItem = genericComponent()({
8938
8919
  const slotProps = computed(() => ({
8939
8920
  isActive: isActive.value,
8940
8921
  select,
8941
- isOpen: isOpen.value,
8942
8922
  isSelected: isSelected.value,
8943
8923
  isIndeterminate: isIndeterminate.value
8944
8924
  }));
@@ -8958,7 +8938,7 @@ const VListItem = genericComponent()({
8958
8938
  function onKeyDown(e) {
8959
8939
  if (e.key === 'Enter' || e.key === ' ') {
8960
8940
  e.preventDefault();
8961
- e.target.dispatchEvent(new MouseEvent('click', e));
8941
+ onClick(e);
8962
8942
  }
8963
8943
  }
8964
8944
  useRender(() => {
@@ -10281,8 +10261,7 @@ const makeActivatorProps = propsFactory({
10281
10261
  function useActivator(props, _ref) {
10282
10262
  let {
10283
10263
  isActive,
10284
- isTop,
10285
- contentEl
10264
+ isTop
10286
10265
  } = _ref;
10287
10266
  const vm = getCurrentInstance('useActivator');
10288
10267
  const activatorEl = ref();
@@ -10399,7 +10378,7 @@ function useActivator(props, _ref) {
10399
10378
  return events;
10400
10379
  });
10401
10380
  watch(isTop, val => {
10402
- if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {
10381
+ if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
10403
10382
  isActive.value = false;
10404
10383
  }
10405
10384
  });
@@ -10805,9 +10784,6 @@ const VOverlay = genericComponent()({
10805
10784
  attrs,
10806
10785
  emit
10807
10786
  } = _ref;
10808
- const root = ref();
10809
- const scrimEl = ref();
10810
- const contentEl = ref();
10811
10787
  const model = useProxiedModel(props, 'modelValue');
10812
10788
  const isActive = computed({
10813
10789
  get: () => model.value,
@@ -10845,8 +10821,7 @@ const VOverlay = genericComponent()({
10845
10821
  scrimEvents
10846
10822
  } = useActivator(props, {
10847
10823
  isActive,
10848
- isTop: localTop,
10849
- contentEl
10824
+ isTop: localTop
10850
10825
  });
10851
10826
  const {
10852
10827
  teleportTarget
@@ -10867,6 +10842,9 @@ const VOverlay = genericComponent()({
10867
10842
  watch(() => props.disabled, v => {
10868
10843
  if (v) isActive.value = false;
10869
10844
  });
10845
+ const root = ref();
10846
+ const scrimEl = ref();
10847
+ const contentEl = ref();
10870
10848
  const {
10871
10849
  contentStyles,
10872
10850
  updateLocation
@@ -11117,12 +11095,10 @@ const makeVMenuProps = propsFactory({
11117
11095
  // TODO
11118
11096
  // disableKeys: Boolean,
11119
11097
  id: String,
11120
- submenu: Boolean,
11121
11098
  ...omit(makeVOverlayProps({
11122
11099
  closeDelay: 250,
11123
11100
  closeOnContentClick: true,
11124
11101
  locationStrategy: 'connected',
11125
- location: undefined,
11126
11102
  openDelay: 300,
11127
11103
  scrim: false,
11128
11104
  scrollStrategy: 'reposition',
@@ -11145,32 +11121,27 @@ const VMenu = genericComponent()({
11145
11121
  const {
11146
11122
  scopeId
11147
11123
  } = useScopeId();
11148
- const {
11149
- isRtl
11150
- } = useRtl();
11151
11124
  const uid = getUid();
11152
11125
  const id = computed(() => props.id || `v-menu-${uid}`);
11153
11126
  const overlay = ref();
11154
11127
  const parent = inject$1(VMenuSymbol, null);
11155
- const openChildren = shallowRef(new Set());
11128
+ const openChildren = shallowRef(0);
11156
11129
  provide(VMenuSymbol, {
11157
11130
  register() {
11158
- openChildren.value.add(uid);
11131
+ ++openChildren.value;
11159
11132
  },
11160
11133
  unregister() {
11161
- openChildren.value.delete(uid);
11134
+ --openChildren.value;
11162
11135
  },
11163
11136
  closeParents(e) {
11164
11137
  setTimeout(() => {
11165
- if (!openChildren.value.size && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11138
+ if (!openChildren.value && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
11166
11139
  isActive.value = false;
11167
11140
  parent?.closeParents();
11168
11141
  }
11169
11142
  }, 40);
11170
11143
  }
11171
11144
  });
11172
- onBeforeUnmount(() => parent?.unregister());
11173
- onDeactivated(() => isActive.value = false);
11174
11145
  async function onFocusIn(e) {
11175
11146
  const before = e.relatedTarget;
11176
11147
  const after = e.target;
@@ -11210,9 +11181,9 @@ const VMenu = genericComponent()({
11210
11181
  isActive.value = false;
11211
11182
  overlay.value?.activatorEl?.focus();
11212
11183
  }
11213
- } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11184
+ } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
11214
11185
  isActive.value = false;
11215
- overlay.value?.activatorEl?.focus();
11186
+ parent?.closeParents();
11216
11187
  }
11217
11188
  }
11218
11189
  function onActivatorKeydown(e) {
@@ -11221,21 +11192,12 @@ const VMenu = genericComponent()({
11221
11192
  if (el && isActive.value) {
11222
11193
  if (e.key === 'ArrowDown') {
11223
11194
  e.preventDefault();
11224
- e.stopImmediatePropagation();
11225
11195
  focusChild(el, 'next');
11226
11196
  } else if (e.key === 'ArrowUp') {
11227
11197
  e.preventDefault();
11228
- e.stopImmediatePropagation();
11229
11198
  focusChild(el, 'prev');
11230
- } else if (props.submenu) {
11231
- if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11232
- isActive.value = false;
11233
- } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
11234
- e.preventDefault();
11235
- focusChild(el, 'first');
11236
- }
11237
11199
  }
11238
- } else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
11200
+ } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
11239
11201
  isActive.value = true;
11240
11202
  e.preventDefault();
11241
11203
  setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
@@ -11259,7 +11221,6 @@ const VMenu = genericComponent()({
11259
11221
  "onUpdate:modelValue": $event => isActive.value = $event,
11260
11222
  "absolute": true,
11261
11223
  "activatorProps": activatorProps.value,
11262
- "location": props.location ?? (props.submenu ? 'end' : 'bottom'),
11263
11224
  "onClick:outside": onClickOutside,
11264
11225
  "onKeydown": onKeydown
11265
11226
  }, scopeId), {
@@ -12092,7 +12053,6 @@ function useVirtual(props, items) {
12092
12053
  deep: true
12093
12054
  });
12094
12055
  return {
12095
- calculateVisibleItems,
12096
12056
  containerRef,
12097
12057
  markerRef,
12098
12058
  computedItems,
@@ -12156,7 +12116,6 @@ const VVirtualScroll = genericComponent()({
12156
12116
  dimensionStyles
12157
12117
  } = useDimension(props);
12158
12118
  const {
12159
- calculateVisibleItems,
12160
12119
  containerRef,
12161
12120
  markerRef,
12162
12121
  handleScroll,
@@ -12228,7 +12187,6 @@ const VVirtualScroll = genericComponent()({
12228
12187
  }, [children])]);
12229
12188
  });
12230
12189
  return {
12231
- calculateVisibleItems,
12232
12190
  scrollToIndex
12233
12191
  };
12234
12192
  }
@@ -12297,9 +12255,9 @@ function useScrolling(listRef, textFieldRef) {
12297
12255
  }
12298
12256
  }
12299
12257
  return {
12300
- onScrollPassive: onListScroll,
12301
- onKeydown: onListKeydown
12302
- }; // typescript doesn't know about vue's event merging
12258
+ onListScroll,
12259
+ onListKeydown
12260
+ };
12303
12261
  }
12304
12262
 
12305
12263
  // Types
@@ -12374,7 +12332,7 @@ const VSelect = genericComponent()({
12374
12332
  const menu = computed({
12375
12333
  get: () => _menu.value,
12376
12334
  set: v => {
12377
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12335
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12378
12336
  _menu.value = v;
12379
12337
  }
12380
12338
  });
@@ -12413,7 +12371,10 @@ const VSelect = genericComponent()({
12413
12371
  };
12414
12372
  });
12415
12373
  const listRef = ref();
12416
- const listEvents = useScrolling(listRef, vTextFieldRef);
12374
+ const {
12375
+ onListScroll,
12376
+ onListKeydown
12377
+ } = useScrolling(listRef, vTextFieldRef);
12417
12378
  function onClear(e) {
12418
12379
  if (props.openOnClear) {
12419
12380
  menu.value = true;
@@ -12423,11 +12384,6 @@ const VSelect = genericComponent()({
12423
12384
  if (menuDisabled.value) return;
12424
12385
  menu.value = !menu.value;
12425
12386
  }
12426
- function onListKeydown(e) {
12427
- if (checkPrintable(e)) {
12428
- onKeydown(e);
12429
- }
12430
- }
12431
12387
  function onKeydown(e) {
12432
12388
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12433
12389
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12448,6 +12404,11 @@ const VSelect = genericComponent()({
12448
12404
  // html select hotkeys
12449
12405
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12450
12406
 
12407
+ function checkPrintable(e) {
12408
+ const isPrintableChar = e.key.length === 1;
12409
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
12410
+ return isPrintableChar && noModifier;
12411
+ }
12451
12412
  if (props.multiple || !checkPrintable(e)) return;
12452
12413
  const now = performance.now();
12453
12414
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12492,11 +12453,6 @@ const VSelect = genericComponent()({
12492
12453
  menu.value = false;
12493
12454
  }
12494
12455
  }
12495
- function onAfterEnter() {
12496
- if (props.eager) {
12497
- vVirtualScrollRef.value?.calculateVisibleItems();
12498
- }
12499
- }
12500
12456
  function onAfterLeave() {
12501
12457
  if (isFocused.value) {
12502
12458
  vTextFieldRef.value?.focus();
@@ -12575,7 +12531,6 @@ const VSelect = genericComponent()({
12575
12531
  "openOnClick": false,
12576
12532
  "closeOnContentClick": false,
12577
12533
  "transition": props.transition,
12578
- "onAfterEnter": onAfterEnter,
12579
12534
  "onAfterLeave": onAfterLeave
12580
12535
  }, computedMenuProps.value), {
12581
12536
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -12585,10 +12540,11 @@ const VSelect = genericComponent()({
12585
12540
  "onMousedown": e => e.preventDefault(),
12586
12541
  "onKeydown": onListKeydown,
12587
12542
  "onFocusin": onFocusin,
12543
+ "onScrollPassive": onListScroll,
12588
12544
  "tabindex": "-1",
12589
12545
  "aria-live": "polite",
12590
12546
  "color": props.itemColor ?? props.color
12591
- }, listEvents, props.listProps), {
12547
+ }, props.listProps), {
12592
12548
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
12593
12549
  "title": t(props.noDataText)
12594
12550
  }, null)), createVNode(VVirtualScroll, {
@@ -12883,7 +12839,7 @@ const VAutocomplete = genericComponent()({
12883
12839
  const menu = computed({
12884
12840
  get: () => _menu.value,
12885
12841
  set: v => {
12886
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12842
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12887
12843
  _menu.value = v;
12888
12844
  }
12889
12845
  });
@@ -12927,7 +12883,10 @@ const VAutocomplete = genericComponent()({
12927
12883
  });
12928
12884
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12929
12885
  const listRef = ref();
12930
- const listEvents = useScrolling(listRef, vTextFieldRef);
12886
+ const {
12887
+ onListScroll,
12888
+ onListKeydown
12889
+ } = useScrolling(listRef, vTextFieldRef);
12931
12890
  function onClear(e) {
12932
12891
  if (props.openOnClear) {
12933
12892
  menu.value = true;
@@ -12946,11 +12905,6 @@ const VAutocomplete = genericComponent()({
12946
12905
  }
12947
12906
  menu.value = !menu.value;
12948
12907
  }
12949
- function onListKeydown(e) {
12950
- if (checkPrintable(e)) {
12951
- vTextFieldRef.value?.focus();
12952
- }
12953
- }
12954
12908
  function onKeydown(e) {
12955
12909
  if (props.readonly || form?.isReadonly.value) return;
12956
12910
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -13015,11 +12969,6 @@ const VAutocomplete = genericComponent()({
13015
12969
  }
13016
12970
  }
13017
12971
  }
13018
- function onAfterEnter() {
13019
- if (props.eager) {
13020
- vVirtualScrollRef.value?.calculateVisibleItems();
13021
- }
13022
- }
13023
12972
  function onAfterLeave() {
13024
12973
  if (isFocused.value) {
13025
12974
  isPristine.value = true;
@@ -13148,7 +13097,6 @@ const VAutocomplete = genericComponent()({
13148
13097
  "openOnClick": false,
13149
13098
  "closeOnContentClick": false,
13150
13099
  "transition": props.transition,
13151
- "onAfterEnter": onAfterEnter,
13152
13100
  "onAfterLeave": onAfterLeave
13153
13101
  }, props.menuProps), {
13154
13102
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -13159,10 +13107,11 @@ const VAutocomplete = genericComponent()({
13159
13107
  "onKeydown": onListKeydown,
13160
13108
  "onFocusin": onFocusin,
13161
13109
  "onFocusout": onFocusout,
13110
+ "onScrollPassive": onListScroll,
13162
13111
  "tabindex": "-1",
13163
13112
  "aria-live": "polite",
13164
13113
  "color": props.itemColor ?? props.color
13165
- }, listEvents, props.listProps), {
13114
+ }, props.listProps), {
13166
13115
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
13167
13116
  "title": t(props.noDataText)
13168
13117
  }, null)), createVNode(VVirtualScroll, {
@@ -16723,7 +16672,7 @@ const VCombobox = genericComponent()({
16723
16672
  const menu = computed({
16724
16673
  get: () => _menu.value,
16725
16674
  set: v => {
16726
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16675
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16727
16676
  _menu.value = v;
16728
16677
  }
16729
16678
  });
@@ -16806,7 +16755,10 @@ const VCombobox = genericComponent()({
16806
16755
  });
16807
16756
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
16808
16757
  const listRef = ref();
16809
- const listEvents = useScrolling(listRef, vTextFieldRef);
16758
+ const {
16759
+ onListScroll,
16760
+ onListKeydown
16761
+ } = useScrolling(listRef, vTextFieldRef);
16810
16762
  function onClear(e) {
16811
16763
  cleared = true;
16812
16764
  if (props.openOnClear) {
@@ -16825,11 +16777,6 @@ const VCombobox = genericComponent()({
16825
16777
  }
16826
16778
  menu.value = !menu.value;
16827
16779
  }
16828
- function onListKeydown(e) {
16829
- if (checkPrintable(e)) {
16830
- vTextFieldRef.value?.focus();
16831
- }
16832
- }
16833
16780
  // eslint-disable-next-line complexity
16834
16781
  function onKeydown(e) {
16835
16782
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -16894,11 +16841,6 @@ const VCombobox = genericComponent()({
16894
16841
  }
16895
16842
  }
16896
16843
  }
16897
- function onAfterEnter() {
16898
- if (props.eager) {
16899
- vVirtualScrollRef.value?.calculateVisibleItems();
16900
- }
16901
- }
16902
16844
  function onAfterLeave() {
16903
16845
  if (isFocused.value) {
16904
16846
  isPristine.value = true;
@@ -17023,7 +16965,6 @@ const VCombobox = genericComponent()({
17023
16965
  "openOnClick": false,
17024
16966
  "closeOnContentClick": false,
17025
16967
  "transition": props.transition,
17026
- "onAfterEnter": onAfterEnter,
17027
16968
  "onAfterLeave": onAfterLeave
17028
16969
  }, props.menuProps), {
17029
16970
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -17034,10 +16975,11 @@ const VCombobox = genericComponent()({
17034
16975
  "onKeydown": onListKeydown,
17035
16976
  "onFocusin": onFocusin,
17036
16977
  "onFocusout": onFocusout,
16978
+ "onScrollPassive": onListScroll,
17037
16979
  "tabindex": "-1",
17038
16980
  "aria-live": "polite",
17039
16981
  "color": props.itemColor ?? props.color
17040
- }, listEvents, props.listProps), {
16982
+ }, props.listProps), {
17041
16983
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
17042
16984
  "title": t(props.noDataText)
17043
16985
  }, null)), createVNode(VVirtualScroll, {
@@ -18301,7 +18243,7 @@ function useOptions(_ref) {
18301
18243
  if (deepEqual(oldOptions, options.value)) return;
18302
18244
 
18303
18245
  // Reset page when searching
18304
- if (oldOptions && oldOptions.search !== options.value.search) {
18246
+ if (oldOptions?.search != null && oldOptions.search !== options.value.search) {
18305
18247
  page.value = 1;
18306
18248
  }
18307
18249
  vm.emit('update:options', options.value);
@@ -20981,7 +20923,6 @@ const makeVContainerProps = propsFactory({
20981
20923
  default: false
20982
20924
  },
20983
20925
  ...makeComponentProps(),
20984
- ...makeDimensionProps(),
20985
20926
  ...makeTagProps()
20986
20927
  }, 'VContainer');
20987
20928
  const VContainer = genericComponent()({
@@ -20994,14 +20935,11 @@ const VContainer = genericComponent()({
20994
20935
  const {
20995
20936
  rtlClasses
20996
20937
  } = useRtl();
20997
- const {
20998
- dimensionStyles
20999
- } = useDimension(props);
21000
20938
  useRender(() => createVNode(props.tag, {
21001
20939
  "class": ['v-container', {
21002
20940
  'v-container--fluid': props.fluid
21003
20941
  }, rtlClasses.value, props.class],
21004
- "style": [dimensionStyles.value, props.style]
20942
+ "style": props.style
21005
20943
  }, slots));
21006
20944
  return {};
21007
20945
  }
@@ -22423,8 +22361,7 @@ const makeVExpansionPanelTitleProps = propsFactory({
22423
22361
  default: false
22424
22362
  },
22425
22363
  readonly: Boolean,
22426
- ...makeComponentProps(),
22427
- ...makeDimensionProps()
22364
+ ...makeComponentProps()
22428
22365
  }, 'VExpansionPanelTitle');
22429
22366
  const VExpansionPanelTitle = genericComponent()({
22430
22367
  name: 'VExpansionPanelTitle',
@@ -22442,9 +22379,6 @@ const VExpansionPanelTitle = genericComponent()({
22442
22379
  backgroundColorClasses,
22443
22380
  backgroundColorStyles
22444
22381
  } = useBackgroundColor(props, 'color');
22445
- const {
22446
- dimensionStyles
22447
- } = useDimension(props);
22448
22382
  const slotProps = computed(() => ({
22449
22383
  collapseIcon: props.collapseIcon,
22450
22384
  disabled: expansionPanel.disabled.value,
@@ -22459,7 +22393,7 @@ const VExpansionPanelTitle = genericComponent()({
22459
22393
  'v-expansion-panel-title--focusable': props.focusable,
22460
22394
  'v-expansion-panel-title--static': props.static
22461
22395
  }, backgroundColorClasses.value, props.class],
22462
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
22396
+ "style": [backgroundColorStyles.value, props.style],
22463
22397
  "type": "button",
22464
22398
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
22465
22399
  "disabled": expansionPanel.disabled.value,
@@ -22981,6 +22915,8 @@ const VFooter = genericComponent()({
22981
22915
  let {
22982
22916
  slots
22983
22917
  } = _ref;
22918
+ const layoutItemStyles = ref();
22919
+ const layoutIsReady = shallowRef();
22984
22920
  const {
22985
22921
  themeClasses
22986
22922
  } = provideTheme(props);
@@ -23005,17 +22941,20 @@ const VFooter = genericComponent()({
23005
22941
  autoHeight.value = entries[0].target.clientHeight;
23006
22942
  });
23007
22943
  const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10));
23008
- const {
23009
- layoutItemStyles,
23010
- layoutIsReady
23011
- } = useLayoutItem({
23012
- id: props.name,
23013
- order: computed(() => parseInt(props.order, 10)),
23014
- position: computed(() => 'bottom'),
23015
- layoutSize: height,
23016
- elementSize: computed(() => props.height === 'auto' ? undefined : height.value),
23017
- active: computed(() => props.app),
23018
- absolute: toRef(props, 'absolute')
22944
+ useToggleScope(() => props.app, () => {
22945
+ const layout = useLayoutItem({
22946
+ id: props.name,
22947
+ order: computed(() => parseInt(props.order, 10)),
22948
+ position: computed(() => 'bottom'),
22949
+ layoutSize: height,
22950
+ elementSize: computed(() => props.height === 'auto' ? undefined : height.value),
22951
+ active: computed(() => props.app),
22952
+ absolute: toRef(props, 'absolute')
22953
+ });
22954
+ watchEffect(() => {
22955
+ layoutItemStyles.value = layout.layoutItemStyles.value;
22956
+ layoutIsReady.value = layout.layoutIsReady;
22957
+ });
23019
22958
  });
23020
22959
  useRender(() => createVNode(props.tag, {
23021
22960
  "ref": resizeRef,
@@ -23024,7 +22963,7 @@ const VFooter = genericComponent()({
23024
22963
  height: convertToUnit(props.height)
23025
22964
  }, props.style]
23026
22965
  }, slots));
23027
- return props.app ? layoutIsReady : {};
22966
+ return props.app ? layoutIsReady.value : {};
23028
22967
  }
23029
22968
  });
23030
22969
 
@@ -25165,16 +25104,17 @@ const VSkeletonLoader = genericComponent()({
25165
25104
  const items = computed(() => genStructure(wrapInArray(props.type).join(',')));
25166
25105
  useRender(() => {
25167
25106
  const isLoading = !slots.default || props.loading;
25168
- return createVNode("div", {
25107
+ const loadingProps = props.boilerplate || !isLoading ? {} : {
25108
+ ariaLive: 'polite',
25109
+ ariaLabel: t(props.loadingText),
25110
+ role: 'alert'
25111
+ };
25112
+ return createVNode("div", mergeProps({
25169
25113
  "class": ['v-skeleton-loader', {
25170
25114
  'v-skeleton-loader--boilerplate': props.boilerplate
25171
25115
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
25172
- "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}],
25173
- "aria-busy": !props.boilerplate ? isLoading : undefined,
25174
- "aria-live": !props.boilerplate ? 'polite' : undefined,
25175
- "aria-label": !props.boilerplate ? t(props.loadingText) : undefined,
25176
- "role": !props.boilerplate ? 'alert' : undefined
25177
- }, [isLoading ? items.value : slots.default?.()]);
25116
+ "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]
25117
+ }, loadingProps), [isLoading ? items.value : slots.default?.()]);
25178
25118
  });
25179
25119
  return {};
25180
25120
  }
@@ -25207,14 +25147,14 @@ const VSlideGroupItem = genericComponent()({
25207
25147
  // Types
25208
25148
 
25209
25149
  function useCountdown(milliseconds) {
25210
- const time = shallowRef(milliseconds);
25150
+ const time = shallowRef(milliseconds());
25211
25151
  let timer = -1;
25212
25152
  function clear() {
25213
25153
  clearInterval(timer);
25214
25154
  }
25215
25155
  function reset() {
25216
25156
  clear();
25217
- nextTick(() => time.value = milliseconds);
25157
+ nextTick(() => time.value = milliseconds());
25218
25158
  }
25219
25159
  function start(el) {
25220
25160
  const style = el ? getComputedStyle(el) : {
@@ -25226,7 +25166,7 @@ function useCountdown(milliseconds) {
25226
25166
  const startTime = performance.now();
25227
25167
  timer = window.setInterval(() => {
25228
25168
  const elapsed = performance.now() - startTime + interval;
25229
- time.value = Math.max(milliseconds - elapsed, 0);
25169
+ time.value = Math.max(milliseconds() - elapsed, 0);
25230
25170
  if (time.value <= 0) clear();
25231
25171
  }, interval);
25232
25172
  }
@@ -25286,7 +25226,7 @@ const VSnackbar = genericComponent()({
25286
25226
  const {
25287
25227
  roundedClasses
25288
25228
  } = useRounded(props);
25289
- const countdown = useCountdown(Number(props.timeout));
25229
+ const countdown = useCountdown(() => Number(props.timeout));
25290
25230
  const overlay = ref();
25291
25231
  const timerRef = ref();
25292
25232
  const isHovering = shallowRef(false);
@@ -28106,19 +28046,23 @@ const makeVNumberInputProps = propsFactory({
28106
28046
  },
28107
28047
  inset: Boolean,
28108
28048
  hideInput: Boolean,
28049
+ modelValue: {
28050
+ type: Number,
28051
+ default: null
28052
+ },
28109
28053
  min: {
28110
28054
  type: Number,
28111
- default: -Infinity
28055
+ default: Number.MIN_SAFE_INTEGER
28112
28056
  },
28113
28057
  max: {
28114
28058
  type: Number,
28115
- default: Infinity
28059
+ default: Number.MAX_SAFE_INTEGER
28116
28060
  },
28117
28061
  step: {
28118
28062
  type: Number,
28119
28063
  default: 1
28120
28064
  },
28121
- ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
28065
+ ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
28122
28066
  }, 'VNumberInput');
28123
28067
  const VNumberInput = genericComponent()({
28124
28068
  name: 'VNumberInput',
@@ -28130,30 +28074,27 @@ const VNumberInput = genericComponent()({
28130
28074
  },
28131
28075
  setup(props, _ref) {
28132
28076
  let {
28133
- attrs,
28134
- emit,
28135
28077
  slots
28136
28078
  } = _ref;
28137
- const model = useProxiedModel(props, 'modelValue');
28079
+ const _model = useProxiedModel(props, 'modelValue');
28080
+ const model = computed({
28081
+ get: () => _model.value,
28082
+ set(val) {
28083
+ if (typeof val !== 'string') _model.value = val;
28084
+ }
28085
+ });
28086
+ const vTextFieldRef = ref();
28138
28087
  const stepDecimals = computed(() => getDecimals(props.step));
28139
- const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0);
28088
+ const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28140
28089
  const form = useForm();
28141
28090
  const controlsDisabled = computed(() => props.disabled || props.readonly || form?.isReadonly.value);
28142
28091
  const canIncrease = computed(() => {
28143
28092
  if (controlsDisabled.value) return false;
28144
- if (model.value == null) return true;
28145
- return model.value + props.step <= props.max;
28093
+ return (model.value ?? 0) + props.step <= props.max;
28146
28094
  });
28147
28095
  const canDecrease = computed(() => {
28148
28096
  if (controlsDisabled.value) return false;
28149
- if (model.value == null) return true;
28150
- return model.value - props.step >= props.min;
28151
- });
28152
- watchEffect(() => {
28153
- if (controlsDisabled.value) return;
28154
- if (model.value != null && (model.value < props.min || model.value > props.max)) {
28155
- model.value = clamp(model.value, props.min, props.max);
28156
- }
28097
+ return (model.value ?? 0) - props.step >= props.min;
28157
28098
  });
28158
28099
  const controlVariant = computed(() => {
28159
28100
  return props.hideInput ? 'stacked' : props.controlVariant;
@@ -28168,11 +28109,16 @@ const VNumberInput = genericComponent()({
28168
28109
  const decrementSlotProps = computed(() => ({
28169
28110
  click: onClickDown
28170
28111
  }));
28112
+ onMounted(() => {
28113
+ if (!props.readonly && !props.disabled) {
28114
+ clampModel();
28115
+ }
28116
+ });
28171
28117
  function toggleUpDown() {
28172
28118
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28173
28119
  if (controlsDisabled.value) return;
28174
28120
  if (model.value == null) {
28175
- model.value = 0;
28121
+ model.value = clamp(0, props.min, props.max);
28176
28122
  return;
28177
28123
  }
28178
28124
  const decimals = Math.max(modelDecimals.value, stepDecimals.value);
@@ -28190,30 +28136,45 @@ const VNumberInput = genericComponent()({
28190
28136
  e.stopPropagation();
28191
28137
  toggleUpDown(false);
28192
28138
  }
28193
- function onKeydown(e) {
28194
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
28195
- if (['ArrowDown'].includes(e.key)) {
28139
+ function onBeforeinput(e) {
28140
+ if (!e.data) return;
28141
+ const existingTxt = e.target?.value;
28142
+ const selectionStart = e.target?.selectionStart;
28143
+ const selectionEnd = e.target?.selectionEnd;
28144
+ const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
28145
+ // Only numbers, "-", "." are allowed
28146
+ // AND "-", "." are allowed only once
28147
+ // AND "-" is only allowed at the start
28148
+ if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
28196
28149
  e.preventDefault();
28197
- toggleUpDown(false);
28198
- return;
28199
28150
  }
28200
- if (['ArrowUp'].includes(e.key)) {
28201
- e.preventDefault();
28202
- toggleUpDown();
28203
- return;
28204
- }
28205
-
28206
- // Only numbers, +, - & . are allowed
28207
- if (!/^[0-9\-+.]+$/.test(e.key)) {
28151
+ }
28152
+ async function onKeydown(e) {
28153
+ if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
28154
+ if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
28208
28155
  e.preventDefault();
28156
+ clampModel();
28157
+ // _model is controlled, so need to wait until props['modelValue'] is updated
28158
+ await nextTick();
28159
+ if (e.key === 'ArrowDown') {
28160
+ toggleUpDown(false);
28161
+ } else {
28162
+ toggleUpDown();
28163
+ }
28209
28164
  }
28210
28165
  }
28211
- function onModelUpdate(v) {
28212
- model.value = v ? +v : undefined;
28213
- }
28214
28166
  function onControlMousedown(e) {
28215
28167
  e.stopPropagation();
28216
28168
  }
28169
+ function clampModel() {
28170
+ if (!vTextFieldRef.value) return;
28171
+ const inputText = vTextFieldRef.value.value;
28172
+ if (inputText && !isNaN(+inputText)) {
28173
+ model.value = clamp(+inputText, props.min, props.max);
28174
+ } else {
28175
+ model.value = null;
28176
+ }
28177
+ }
28217
28178
  useRender(() => {
28218
28179
  const {
28219
28180
  modelValue: _,
@@ -28298,8 +28259,11 @@ const VNumberInput = genericComponent()({
28298
28259
  }, null)]) : props.reverse ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28299
28260
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28300
28261
  return createVNode(VTextField, mergeProps({
28262
+ "ref": vTextFieldRef,
28301
28263
  "modelValue": model.value,
28302
- "onUpdate:modelValue": onModelUpdate,
28264
+ "onUpdate:modelValue": $event => model.value = $event,
28265
+ "onBeforeinput": onBeforeinput,
28266
+ "onChange": clampModel,
28303
28267
  "onKeydown": onKeydown,
28304
28268
  "class": ['v-number-input', {
28305
28269
  'v-number-input--default': controlVariant.value === 'default',
@@ -29496,7 +29460,6 @@ const VTreeviewSymbol = Symbol.for('vuetify:v-treeview');
29496
29460
 
29497
29461
  const makeVTreeviewItemProps = propsFactory({
29498
29462
  loading: Boolean,
29499
- onToggleExpand: EventProp(),
29500
29463
  toggleIcon: IconValue,
29501
29464
  ...makeVListItemProps({
29502
29465
  slim: true
@@ -29517,12 +29480,24 @@ const VTreeviewItem = genericComponent()({
29517
29480
  const {
29518
29481
  activate,
29519
29482
  isActivated,
29483
+ select,
29484
+ isSelected,
29485
+ isIndeterminate,
29520
29486
  isGroupActivator,
29521
29487
  root,
29522
29488
  id
29523
29489
  } = useNestedItem(rawId, false);
29524
29490
  const isActivatableGroupActivator = computed(() => root.activatable.value && isGroupActivator);
29525
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
29491
+ const {
29492
+ densityClasses
29493
+ } = useDensity(props, 'v-list-item');
29494
+ const slotProps = computed(() => ({
29495
+ isActive: isActivated.value,
29496
+ select,
29497
+ isSelected: isSelected.value,
29498
+ isIndeterminate: isIndeterminate.value
29499
+ }));
29500
+ const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list));
29526
29501
  function activateItem(e) {
29527
29502
  if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
29528
29503
  if (root.activatable.value) {
@@ -29533,20 +29508,68 @@ const VTreeviewItem = genericComponent()({
29533
29508
  }
29534
29509
  }
29535
29510
  }
29511
+ function onKeyDown(e) {
29512
+ if (e.key === 'Enter' || e.key === ' ') {
29513
+ e.preventDefault();
29514
+ activateItem(e);
29515
+ }
29516
+ }
29536
29517
  const visibleIds = inject$1(VTreeviewSymbol, {
29537
29518
  visibleIds: ref()
29538
29519
  }).visibleIds;
29539
29520
  useRender(() => {
29540
- const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
29521
+ const hasTitle = slots.title || props.title != null;
29522
+ const hasSubtitle = slots.subtitle || props.subtitle != null;
29523
+ const listItemProps = VListItem.filterProps(props);
29541
29524
  const hasPrepend = slots.prepend || props.toggleIcon;
29542
- return createVNode(VListItem, mergeProps(listItemProps, {
29543
- "active": isActivated.value,
29525
+ return isActivatableGroupActivator.value ? withDirectives(createVNode("div", {
29526
+ "class": ['v-list-item', 'v-list-item--one-line', 'v-treeview-item', 'v-treeview-item--activetable-group-activator', {
29527
+ 'v-list-item--active': isActivated.value || isSelected.value,
29528
+ 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29529
+ }, densityClasses.value, props.class],
29530
+ "onClick": activateItem
29531
+ }, [createVNode(Fragment, null, [genOverlays(isActivated.value || isSelected.value, 'v-list-item'), props.toggleIcon && createVNode(VListItemAction, {
29532
+ "start": false
29533
+ }, {
29534
+ default: () => [createVNode(VBtn, {
29535
+ "density": "compact",
29536
+ "icon": props.toggleIcon,
29537
+ "loading": props.loading,
29538
+ "variant": "text",
29539
+ "onClick": props.onClick
29540
+ }, {
29541
+ loader() {
29542
+ return createVNode(VProgressCircular, {
29543
+ "indeterminate": "disable-shrink",
29544
+ "size": "20",
29545
+ "width": "2"
29546
+ }, null);
29547
+ }
29548
+ })]
29549
+ })]), createVNode("div", {
29550
+ "class": "v-list-item__content",
29551
+ "data-no-activator": ""
29552
+ }, [hasTitle && createVNode(VListItemTitle, {
29553
+ "key": "title"
29554
+ }, {
29555
+ default: () => [slots.title?.({
29556
+ title: props.title
29557
+ }) ?? props.title]
29558
+ }), hasSubtitle && createVNode(VListItemSubtitle, {
29559
+ "key": "subtitle"
29560
+ }, {
29561
+ default: () => [slots.subtitle?.({
29562
+ subtitle: props.subtitle
29563
+ }) ?? props.subtitle]
29564
+ }), slots.default?.(slotProps.value)])]), [[resolveDirective("ripple"), isClickable.value && props.ripple]]) : createVNode(VListItem, mergeProps({
29565
+ "ref": vListItemRef
29566
+ }, listItemProps, {
29544
29567
  "class": ['v-treeview-item', {
29545
- 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
29546
29568
  'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29547
29569
  }, props.class],
29548
- "ripple": false,
29549
- "onClick": props.onClick ?? activateItem
29570
+ "value": id.value,
29571
+ "onClick": activateItem,
29572
+ "onKeydown": isClickable.value && onKeyDown
29550
29573
  }), {
29551
29574
  ...slots,
29552
29575
  prepend: hasPrepend ? slotProps => {
@@ -29557,8 +29580,7 @@ const VTreeviewItem = genericComponent()({
29557
29580
  "density": "compact",
29558
29581
  "icon": props.toggleIcon,
29559
29582
  "loading": props.loading,
29560
- "variant": "text",
29561
- "onClick": props.onToggleExpand
29583
+ "variant": "text"
29562
29584
  }, {
29563
29585
  loader() {
29564
29586
  return createVNode(VProgressCircular, {
@@ -29585,19 +29607,7 @@ const makeVTreeviewChildrenProps = propsFactory({
29585
29607
  default: '$loading'
29586
29608
  },
29587
29609
  items: Array,
29588
- openOnClick: {
29589
- type: Boolean,
29590
- default: undefined
29591
- },
29592
- indeterminateIcon: {
29593
- type: IconValue,
29594
- default: '$checkboxIndeterminate'
29595
- },
29596
- falseIcon: IconValue,
29597
- trueIcon: IconValue,
29598
- returnObject: Boolean,
29599
29610
  selectable: Boolean,
29600
- selectedColor: String,
29601
29611
  selectStrategy: [String, Function, Object]
29602
29612
  }, 'VTreeviewChildren');
29603
29613
  const VTreeviewChildren = genericComponent()({
@@ -29609,7 +29619,6 @@ const VTreeviewChildren = genericComponent()({
29609
29619
  slots
29610
29620
  } = _ref;
29611
29621
  const isLoading = shallowRef(null);
29612
- const isClickOnOpen = computed(() => props.openOnClick != null ? props.openOnClick : props.selectable);
29613
29622
  function checkChildren(item) {
29614
29623
  return new Promise(resolve => {
29615
29624
  if (!props.items?.length || !props.loadChildren) return resolve();
@@ -29640,11 +29649,7 @@ const VTreeviewChildren = genericComponent()({
29640
29649
  "key": item.value,
29641
29650
  "modelValue": slotProps.isSelected,
29642
29651
  "loading": loading,
29643
- "color": props.selectedColor,
29644
29652
  "indeterminate": slotProps.isIndeterminate,
29645
- "indeterminateIcon": props.indeterminateIcon,
29646
- "falseIcon": props.falseIcon,
29647
- "trueIcon": props.trueIcon,
29648
29653
  "onClick": withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
29649
29654
  "onKeydown": e => {
29650
29655
  if (!['Enter', 'Space'].includes(e.key)) return;
@@ -29666,9 +29671,9 @@ const VTreeviewChildren = genericComponent()({
29666
29671
  };
29667
29672
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
29668
29673
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
29669
- return children ? createVNode(VTreeviewGroup, mergeProps(treeviewGroupProps, {
29670
- "value": props.returnObject ? item : treeviewGroupProps?.value
29671
- }), {
29674
+ return children ? createVNode(VTreeviewGroup, mergeProps({
29675
+ "value": itemProps?.value
29676
+ }, treeviewGroupProps), {
29672
29677
  activator: _ref3 => {
29673
29678
  let {
29674
29679
  props: activatorProps
@@ -29676,24 +29681,19 @@ const VTreeviewChildren = genericComponent()({
29676
29681
  const listItemProps = {
29677
29682
  ...itemProps,
29678
29683
  ...activatorProps,
29679
- value: itemProps?.value,
29680
- onToggleExpand: activatorProps.onClick,
29681
- onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
29684
+ value: itemProps?.value
29682
29685
  };
29683
29686
  return createVNode(VTreeviewItem, mergeProps(listItemProps, {
29684
- "value": props.returnObject ? toRaw(item) : itemProps.value,
29685
- "loading": loading
29687
+ "loading": loading,
29688
+ "onClick": () => checkChildren(item)
29686
29689
  }), slotsWithItem);
29687
29690
  },
29688
29691
  default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
29689
- "items": children,
29690
- "returnObject": props.returnObject
29692
+ "items": children
29691
29693
  }), slots)
29692
29694
  }) : slots.item?.({
29693
29695
  props: itemProps
29694
- }) ?? createVNode(VTreeviewItem, mergeProps(itemProps, {
29695
- "value": props.returnObject ? toRaw(item) : itemProps.value
29696
- }), slotsWithItem);
29696
+ }) ?? createVNode(VTreeviewItem, itemProps, slotsWithItem);
29697
29697
  });
29698
29698
  }
29699
29699
  });
@@ -29717,7 +29717,7 @@ const makeVTreeviewProps = propsFactory({
29717
29717
  collapseIcon: '$treeviewCollapse',
29718
29718
  expandIcon: '$treeviewExpand',
29719
29719
  slim: true
29720
- }), ['nav', 'openStrategy'])
29720
+ }), ['nav'])
29721
29721
  }, 'VTreeview');
29722
29722
  const VTreeview = genericComponent()({
29723
29723
  name: 'VTreeview',
@@ -29776,11 +29776,11 @@ const VTreeview = genericComponent()({
29776
29776
  }
29777
29777
  return arr;
29778
29778
  }
29779
- function openAll(items) {
29779
+ function openAll(item) {
29780
29780
  let ids = [];
29781
- for (const i of items) {
29781
+ for (const i of item) {
29782
29782
  if (!i.children) continue;
29783
- ids.push(props.returnObject ? toRaw(i.raw) : i.value);
29783
+ ids.push(i.value);
29784
29784
  if (i.children) {
29785
29785
  ids = ids.concat(openAll(i.children));
29786
29786
  }
@@ -29816,7 +29816,6 @@ const VTreeview = genericComponent()({
29816
29816
  "ref": vListRef
29817
29817
  }, listProps, {
29818
29818
  "class": ['v-treeview', props.class],
29819
- "open-strategy": "multiple",
29820
29819
  "style": props.style,
29821
29820
  "opened": opened.value,
29822
29821
  "activated": activated.value,
@@ -29825,7 +29824,6 @@ const VTreeview = genericComponent()({
29825
29824
  "onUpdate:selected": $event => selected.value = $event
29826
29825
  }), {
29827
29826
  default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
29828
- "returnObject": props.returnObject,
29829
29827
  "items": items.value
29830
29828
  }), slots)]
29831
29829
  });
@@ -30331,7 +30329,7 @@ function createVuetify$1() {
30331
30329
  goTo
30332
30330
  };
30333
30331
  }
30334
- const version$1 = "3.6.13-3.7.0-beta.0.0-pr-20092.a834b18";
30332
+ const version$1 = "3.6.13-pr-20185.5bf1ff4";
30335
30333
  createVuetify$1.version = version$1;
30336
30334
 
30337
30335
  // Vue's inject() can only be used in setup
@@ -30584,7 +30582,7 @@ var index = /*#__PURE__*/Object.freeze({
30584
30582
 
30585
30583
  /* eslint-disable local-rules/sort-imports */
30586
30584
 
30587
- const version = "3.6.13-3.7.0-beta.0.0-pr-20092.a834b18";
30585
+ const version = "3.6.13-pr-20185.5bf1ff4";
30588
30586
 
30589
30587
  /* eslint-disable local-rules/sort-imports */
30590
30588