@vuetify/nightly 3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce → 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 +12 -12
  3. package/dist/json/importMap.json +102 -102
  4. package/dist/json/tags.json +5 -42
  5. package/dist/json/web-types.json +239 -610
  6. package/dist/vuetify-labs.css +4045 -3340
  7. package/dist/vuetify-labs.d.ts +368 -697
  8. package/dist/vuetify-labs.esm.js +236 -241
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +236 -241
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1754 -1049
  13. package/dist/vuetify.d.ts +338 -601
  14. package/dist/vuetify.esm.js +97 -160
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +97 -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 +0 -2
  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 +6 -27
  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 +36 -36
  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.dc840ce
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
  }));
@@ -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;
@@ -11213,9 +11184,6 @@ const VMenu = genericComponent()({
11213
11184
  } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
11214
11185
  isActive.value = false;
11215
11186
  parent?.closeParents();
11216
- } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11217
- isActive.value = false;
11218
- overlay.value?.activatorEl?.focus();
11219
11187
  }
11220
11188
  }
11221
11189
  function onActivatorKeydown(e) {
@@ -11224,21 +11192,12 @@ const VMenu = genericComponent()({
11224
11192
  if (el && isActive.value) {
11225
11193
  if (e.key === 'ArrowDown') {
11226
11194
  e.preventDefault();
11227
- e.stopImmediatePropagation();
11228
11195
  focusChild(el, 'next');
11229
11196
  } else if (e.key === 'ArrowUp') {
11230
11197
  e.preventDefault();
11231
- e.stopImmediatePropagation();
11232
11198
  focusChild(el, 'prev');
11233
- } else if (props.submenu) {
11234
- if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
11235
- isActive.value = false;
11236
- } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
11237
- e.preventDefault();
11238
- focusChild(el, 'first');
11239
- }
11240
11199
  }
11241
- } else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
11200
+ } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
11242
11201
  isActive.value = true;
11243
11202
  e.preventDefault();
11244
11203
  setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
@@ -11262,7 +11221,6 @@ const VMenu = genericComponent()({
11262
11221
  "onUpdate:modelValue": $event => isActive.value = $event,
11263
11222
  "absolute": true,
11264
11223
  "activatorProps": activatorProps.value,
11265
- "location": props.location ?? (props.submenu ? 'end' : 'bottom'),
11266
11224
  "onClick:outside": onClickOutside,
11267
11225
  "onKeydown": onKeydown
11268
11226
  }, scopeId), {
@@ -12095,7 +12053,6 @@ function useVirtual(props, items) {
12095
12053
  deep: true
12096
12054
  });
12097
12055
  return {
12098
- calculateVisibleItems,
12099
12056
  containerRef,
12100
12057
  markerRef,
12101
12058
  computedItems,
@@ -12159,7 +12116,6 @@ const VVirtualScroll = genericComponent()({
12159
12116
  dimensionStyles
12160
12117
  } = useDimension(props);
12161
12118
  const {
12162
- calculateVisibleItems,
12163
12119
  containerRef,
12164
12120
  markerRef,
12165
12121
  handleScroll,
@@ -12231,7 +12187,6 @@ const VVirtualScroll = genericComponent()({
12231
12187
  }, [children])]);
12232
12188
  });
12233
12189
  return {
12234
- calculateVisibleItems,
12235
12190
  scrollToIndex
12236
12191
  };
12237
12192
  }
@@ -12300,9 +12255,9 @@ function useScrolling(listRef, textFieldRef) {
12300
12255
  }
12301
12256
  }
12302
12257
  return {
12303
- onScrollPassive: onListScroll,
12304
- onKeydown: onListKeydown
12305
- }; // typescript doesn't know about vue's event merging
12258
+ onListScroll,
12259
+ onListKeydown
12260
+ };
12306
12261
  }
12307
12262
 
12308
12263
  // Types
@@ -12377,7 +12332,7 @@ const VSelect = genericComponent()({
12377
12332
  const menu = computed({
12378
12333
  get: () => _menu.value,
12379
12334
  set: v => {
12380
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12335
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12381
12336
  _menu.value = v;
12382
12337
  }
12383
12338
  });
@@ -12416,7 +12371,10 @@ const VSelect = genericComponent()({
12416
12371
  };
12417
12372
  });
12418
12373
  const listRef = ref();
12419
- const listEvents = useScrolling(listRef, vTextFieldRef);
12374
+ const {
12375
+ onListScroll,
12376
+ onListKeydown
12377
+ } = useScrolling(listRef, vTextFieldRef);
12420
12378
  function onClear(e) {
12421
12379
  if (props.openOnClear) {
12422
12380
  menu.value = true;
@@ -12426,11 +12384,6 @@ const VSelect = genericComponent()({
12426
12384
  if (menuDisabled.value) return;
12427
12385
  menu.value = !menu.value;
12428
12386
  }
12429
- function onListKeydown(e) {
12430
- if (checkPrintable(e)) {
12431
- onKeydown(e);
12432
- }
12433
- }
12434
12387
  function onKeydown(e) {
12435
12388
  if (!e.key || props.readonly || form?.isReadonly.value) return;
12436
12389
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
@@ -12451,6 +12404,11 @@ const VSelect = genericComponent()({
12451
12404
  // html select hotkeys
12452
12405
  const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
12453
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
+ }
12454
12412
  if (props.multiple || !checkPrintable(e)) return;
12455
12413
  const now = performance.now();
12456
12414
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
@@ -12495,11 +12453,6 @@ const VSelect = genericComponent()({
12495
12453
  menu.value = false;
12496
12454
  }
12497
12455
  }
12498
- function onAfterEnter() {
12499
- if (props.eager) {
12500
- vVirtualScrollRef.value?.calculateVisibleItems();
12501
- }
12502
- }
12503
12456
  function onAfterLeave() {
12504
12457
  if (isFocused.value) {
12505
12458
  vTextFieldRef.value?.focus();
@@ -12578,7 +12531,6 @@ const VSelect = genericComponent()({
12578
12531
  "openOnClick": false,
12579
12532
  "closeOnContentClick": false,
12580
12533
  "transition": props.transition,
12581
- "onAfterEnter": onAfterEnter,
12582
12534
  "onAfterLeave": onAfterLeave
12583
12535
  }, computedMenuProps.value), {
12584
12536
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -12588,10 +12540,11 @@ const VSelect = genericComponent()({
12588
12540
  "onMousedown": e => e.preventDefault(),
12589
12541
  "onKeydown": onListKeydown,
12590
12542
  "onFocusin": onFocusin,
12543
+ "onScrollPassive": onListScroll,
12591
12544
  "tabindex": "-1",
12592
12545
  "aria-live": "polite",
12593
12546
  "color": props.itemColor ?? props.color
12594
- }, listEvents, props.listProps), {
12547
+ }, props.listProps), {
12595
12548
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
12596
12549
  "title": t(props.noDataText)
12597
12550
  }, null)), createVNode(VVirtualScroll, {
@@ -12886,7 +12839,7 @@ const VAutocomplete = genericComponent()({
12886
12839
  const menu = computed({
12887
12840
  get: () => _menu.value,
12888
12841
  set: v => {
12889
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
12842
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
12890
12843
  _menu.value = v;
12891
12844
  }
12892
12845
  });
@@ -12930,7 +12883,10 @@ const VAutocomplete = genericComponent()({
12930
12883
  });
12931
12884
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12932
12885
  const listRef = ref();
12933
- const listEvents = useScrolling(listRef, vTextFieldRef);
12886
+ const {
12887
+ onListScroll,
12888
+ onListKeydown
12889
+ } = useScrolling(listRef, vTextFieldRef);
12934
12890
  function onClear(e) {
12935
12891
  if (props.openOnClear) {
12936
12892
  menu.value = true;
@@ -12949,11 +12905,6 @@ const VAutocomplete = genericComponent()({
12949
12905
  }
12950
12906
  menu.value = !menu.value;
12951
12907
  }
12952
- function onListKeydown(e) {
12953
- if (checkPrintable(e)) {
12954
- vTextFieldRef.value?.focus();
12955
- }
12956
- }
12957
12908
  function onKeydown(e) {
12958
12909
  if (props.readonly || form?.isReadonly.value) return;
12959
12910
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -13018,11 +12969,6 @@ const VAutocomplete = genericComponent()({
13018
12969
  }
13019
12970
  }
13020
12971
  }
13021
- function onAfterEnter() {
13022
- if (props.eager) {
13023
- vVirtualScrollRef.value?.calculateVisibleItems();
13024
- }
13025
- }
13026
12972
  function onAfterLeave() {
13027
12973
  if (isFocused.value) {
13028
12974
  isPristine.value = true;
@@ -13151,7 +13097,6 @@ const VAutocomplete = genericComponent()({
13151
13097
  "openOnClick": false,
13152
13098
  "closeOnContentClick": false,
13153
13099
  "transition": props.transition,
13154
- "onAfterEnter": onAfterEnter,
13155
13100
  "onAfterLeave": onAfterLeave
13156
13101
  }, props.menuProps), {
13157
13102
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -13162,10 +13107,11 @@ const VAutocomplete = genericComponent()({
13162
13107
  "onKeydown": onListKeydown,
13163
13108
  "onFocusin": onFocusin,
13164
13109
  "onFocusout": onFocusout,
13110
+ "onScrollPassive": onListScroll,
13165
13111
  "tabindex": "-1",
13166
13112
  "aria-live": "polite",
13167
13113
  "color": props.itemColor ?? props.color
13168
- }, listEvents, props.listProps), {
13114
+ }, props.listProps), {
13169
13115
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
13170
13116
  "title": t(props.noDataText)
13171
13117
  }, null)), createVNode(VVirtualScroll, {
@@ -16726,7 +16672,7 @@ const VCombobox = genericComponent()({
16726
16672
  const menu = computed({
16727
16673
  get: () => _menu.value,
16728
16674
  set: v => {
16729
- if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
16675
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
16730
16676
  _menu.value = v;
16731
16677
  }
16732
16678
  });
@@ -16809,7 +16755,10 @@ const VCombobox = genericComponent()({
16809
16755
  });
16810
16756
  const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
16811
16757
  const listRef = ref();
16812
- const listEvents = useScrolling(listRef, vTextFieldRef);
16758
+ const {
16759
+ onListScroll,
16760
+ onListKeydown
16761
+ } = useScrolling(listRef, vTextFieldRef);
16813
16762
  function onClear(e) {
16814
16763
  cleared = true;
16815
16764
  if (props.openOnClear) {
@@ -16828,11 +16777,6 @@ const VCombobox = genericComponent()({
16828
16777
  }
16829
16778
  menu.value = !menu.value;
16830
16779
  }
16831
- function onListKeydown(e) {
16832
- if (checkPrintable(e)) {
16833
- vTextFieldRef.value?.focus();
16834
- }
16835
- }
16836
16780
  // eslint-disable-next-line complexity
16837
16781
  function onKeydown(e) {
16838
16782
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
@@ -16897,11 +16841,6 @@ const VCombobox = genericComponent()({
16897
16841
  }
16898
16842
  }
16899
16843
  }
16900
- function onAfterEnter() {
16901
- if (props.eager) {
16902
- vVirtualScrollRef.value?.calculateVisibleItems();
16903
- }
16904
- }
16905
16844
  function onAfterLeave() {
16906
16845
  if (isFocused.value) {
16907
16846
  isPristine.value = true;
@@ -17026,7 +16965,6 @@ const VCombobox = genericComponent()({
17026
16965
  "openOnClick": false,
17027
16966
  "closeOnContentClick": false,
17028
16967
  "transition": props.transition,
17029
- "onAfterEnter": onAfterEnter,
17030
16968
  "onAfterLeave": onAfterLeave
17031
16969
  }, props.menuProps), {
17032
16970
  default: () => [hasList && createVNode(VList, mergeProps({
@@ -17037,10 +16975,11 @@ const VCombobox = genericComponent()({
17037
16975
  "onKeydown": onListKeydown,
17038
16976
  "onFocusin": onFocusin,
17039
16977
  "onFocusout": onFocusout,
16978
+ "onScrollPassive": onListScroll,
17040
16979
  "tabindex": "-1",
17041
16980
  "aria-live": "polite",
17042
16981
  "color": props.itemColor ?? props.color
17043
- }, listEvents, props.listProps), {
16982
+ }, props.listProps), {
17044
16983
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
17045
16984
  "title": t(props.noDataText)
17046
16985
  }, null)), createVNode(VVirtualScroll, {
@@ -18304,7 +18243,7 @@ function useOptions(_ref) {
18304
18243
  if (deepEqual(oldOptions, options.value)) return;
18305
18244
 
18306
18245
  // Reset page when searching
18307
- if (oldOptions && oldOptions.search !== options.value.search) {
18246
+ if (oldOptions?.search != null && oldOptions.search !== options.value.search) {
18308
18247
  page.value = 1;
18309
18248
  }
18310
18249
  vm.emit('update:options', options.value);
@@ -20984,7 +20923,6 @@ const makeVContainerProps = propsFactory({
20984
20923
  default: false
20985
20924
  },
20986
20925
  ...makeComponentProps(),
20987
- ...makeDimensionProps(),
20988
20926
  ...makeTagProps()
20989
20927
  }, 'VContainer');
20990
20928
  const VContainer = genericComponent()({
@@ -20997,14 +20935,11 @@ const VContainer = genericComponent()({
20997
20935
  const {
20998
20936
  rtlClasses
20999
20937
  } = useRtl();
21000
- const {
21001
- dimensionStyles
21002
- } = useDimension(props);
21003
20938
  useRender(() => createVNode(props.tag, {
21004
20939
  "class": ['v-container', {
21005
20940
  'v-container--fluid': props.fluid
21006
20941
  }, rtlClasses.value, props.class],
21007
- "style": [dimensionStyles.value, props.style]
20942
+ "style": props.style
21008
20943
  }, slots));
21009
20944
  return {};
21010
20945
  }
@@ -22426,8 +22361,7 @@ const makeVExpansionPanelTitleProps = propsFactory({
22426
22361
  default: false
22427
22362
  },
22428
22363
  readonly: Boolean,
22429
- ...makeComponentProps(),
22430
- ...makeDimensionProps()
22364
+ ...makeComponentProps()
22431
22365
  }, 'VExpansionPanelTitle');
22432
22366
  const VExpansionPanelTitle = genericComponent()({
22433
22367
  name: 'VExpansionPanelTitle',
@@ -22445,9 +22379,6 @@ const VExpansionPanelTitle = genericComponent()({
22445
22379
  backgroundColorClasses,
22446
22380
  backgroundColorStyles
22447
22381
  } = useBackgroundColor(props, 'color');
22448
- const {
22449
- dimensionStyles
22450
- } = useDimension(props);
22451
22382
  const slotProps = computed(() => ({
22452
22383
  collapseIcon: props.collapseIcon,
22453
22384
  disabled: expansionPanel.disabled.value,
@@ -22462,7 +22393,7 @@ const VExpansionPanelTitle = genericComponent()({
22462
22393
  'v-expansion-panel-title--focusable': props.focusable,
22463
22394
  'v-expansion-panel-title--static': props.static
22464
22395
  }, backgroundColorClasses.value, props.class],
22465
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
22396
+ "style": [backgroundColorStyles.value, props.style],
22466
22397
  "type": "button",
22467
22398
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
22468
22399
  "disabled": expansionPanel.disabled.value,
@@ -22984,6 +22915,8 @@ const VFooter = genericComponent()({
22984
22915
  let {
22985
22916
  slots
22986
22917
  } = _ref;
22918
+ const layoutItemStyles = ref();
22919
+ const layoutIsReady = shallowRef();
22987
22920
  const {
22988
22921
  themeClasses
22989
22922
  } = provideTheme(props);
@@ -23008,17 +22941,20 @@ const VFooter = genericComponent()({
23008
22941
  autoHeight.value = entries[0].target.clientHeight;
23009
22942
  });
23010
22943
  const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10));
23011
- const {
23012
- layoutItemStyles,
23013
- layoutIsReady
23014
- } = useLayoutItem({
23015
- id: props.name,
23016
- order: computed(() => parseInt(props.order, 10)),
23017
- position: computed(() => 'bottom'),
23018
- layoutSize: height,
23019
- elementSize: computed(() => props.height === 'auto' ? undefined : height.value),
23020
- active: computed(() => props.app),
23021
- 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
+ });
23022
22958
  });
23023
22959
  useRender(() => createVNode(props.tag, {
23024
22960
  "ref": resizeRef,
@@ -23027,7 +22963,7 @@ const VFooter = genericComponent()({
23027
22963
  height: convertToUnit(props.height)
23028
22964
  }, props.style]
23029
22965
  }, slots));
23030
- return props.app ? layoutIsReady : {};
22966
+ return props.app ? layoutIsReady.value : {};
23031
22967
  }
23032
22968
  });
23033
22969
 
@@ -25168,16 +25104,17 @@ const VSkeletonLoader = genericComponent()({
25168
25104
  const items = computed(() => genStructure(wrapInArray(props.type).join(',')));
25169
25105
  useRender(() => {
25170
25106
  const isLoading = !slots.default || props.loading;
25171
- 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({
25172
25113
  "class": ['v-skeleton-loader', {
25173
25114
  'v-skeleton-loader--boilerplate': props.boilerplate
25174
25115
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
25175
- "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}],
25176
- "aria-busy": !props.boilerplate ? isLoading : undefined,
25177
- "aria-live": !props.boilerplate ? 'polite' : undefined,
25178
- "aria-label": !props.boilerplate ? t(props.loadingText) : undefined,
25179
- "role": !props.boilerplate ? 'alert' : undefined
25180
- }, [isLoading ? items.value : slots.default?.()]);
25116
+ "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]
25117
+ }, loadingProps), [isLoading ? items.value : slots.default?.()]);
25181
25118
  });
25182
25119
  return {};
25183
25120
  }
@@ -25210,14 +25147,14 @@ const VSlideGroupItem = genericComponent()({
25210
25147
  // Types
25211
25148
 
25212
25149
  function useCountdown(milliseconds) {
25213
- const time = shallowRef(milliseconds);
25150
+ const time = shallowRef(milliseconds());
25214
25151
  let timer = -1;
25215
25152
  function clear() {
25216
25153
  clearInterval(timer);
25217
25154
  }
25218
25155
  function reset() {
25219
25156
  clear();
25220
- nextTick(() => time.value = milliseconds);
25157
+ nextTick(() => time.value = milliseconds());
25221
25158
  }
25222
25159
  function start(el) {
25223
25160
  const style = el ? getComputedStyle(el) : {
@@ -25229,7 +25166,7 @@ function useCountdown(milliseconds) {
25229
25166
  const startTime = performance.now();
25230
25167
  timer = window.setInterval(() => {
25231
25168
  const elapsed = performance.now() - startTime + interval;
25232
- time.value = Math.max(milliseconds - elapsed, 0);
25169
+ time.value = Math.max(milliseconds() - elapsed, 0);
25233
25170
  if (time.value <= 0) clear();
25234
25171
  }, interval);
25235
25172
  }
@@ -25289,7 +25226,7 @@ const VSnackbar = genericComponent()({
25289
25226
  const {
25290
25227
  roundedClasses
25291
25228
  } = useRounded(props);
25292
- const countdown = useCountdown(Number(props.timeout));
25229
+ const countdown = useCountdown(() => Number(props.timeout));
25293
25230
  const overlay = ref();
25294
25231
  const timerRef = ref();
25295
25232
  const isHovering = shallowRef(false);
@@ -28109,19 +28046,23 @@ const makeVNumberInputProps = propsFactory({
28109
28046
  },
28110
28047
  inset: Boolean,
28111
28048
  hideInput: Boolean,
28049
+ modelValue: {
28050
+ type: Number,
28051
+ default: null
28052
+ },
28112
28053
  min: {
28113
28054
  type: Number,
28114
- default: -Infinity
28055
+ default: Number.MIN_SAFE_INTEGER
28115
28056
  },
28116
28057
  max: {
28117
28058
  type: Number,
28118
- default: Infinity
28059
+ default: Number.MAX_SAFE_INTEGER
28119
28060
  },
28120
28061
  step: {
28121
28062
  type: Number,
28122
28063
  default: 1
28123
28064
  },
28124
- ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
28065
+ ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
28125
28066
  }, 'VNumberInput');
28126
28067
  const VNumberInput = genericComponent()({
28127
28068
  name: 'VNumberInput',
@@ -28133,30 +28074,27 @@ const VNumberInput = genericComponent()({
28133
28074
  },
28134
28075
  setup(props, _ref) {
28135
28076
  let {
28136
- attrs,
28137
- emit,
28138
28077
  slots
28139
28078
  } = _ref;
28140
- 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();
28141
28087
  const stepDecimals = computed(() => getDecimals(props.step));
28142
- const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0);
28088
+ const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28143
28089
  const form = useForm();
28144
28090
  const controlsDisabled = computed(() => props.disabled || props.readonly || form?.isReadonly.value);
28145
28091
  const canIncrease = computed(() => {
28146
28092
  if (controlsDisabled.value) return false;
28147
- if (model.value == null) return true;
28148
- return model.value + props.step <= props.max;
28093
+ return (model.value ?? 0) + props.step <= props.max;
28149
28094
  });
28150
28095
  const canDecrease = computed(() => {
28151
28096
  if (controlsDisabled.value) return false;
28152
- if (model.value == null) return true;
28153
- return model.value - props.step >= props.min;
28154
- });
28155
- watchEffect(() => {
28156
- if (controlsDisabled.value) return;
28157
- if (model.value != null && (model.value < props.min || model.value > props.max)) {
28158
- model.value = clamp(model.value, props.min, props.max);
28159
- }
28097
+ return (model.value ?? 0) - props.step >= props.min;
28160
28098
  });
28161
28099
  const controlVariant = computed(() => {
28162
28100
  return props.hideInput ? 'stacked' : props.controlVariant;
@@ -28171,11 +28109,16 @@ const VNumberInput = genericComponent()({
28171
28109
  const decrementSlotProps = computed(() => ({
28172
28110
  click: onClickDown
28173
28111
  }));
28112
+ onMounted(() => {
28113
+ if (!props.readonly && !props.disabled) {
28114
+ clampModel();
28115
+ }
28116
+ });
28174
28117
  function toggleUpDown() {
28175
28118
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28176
28119
  if (controlsDisabled.value) return;
28177
28120
  if (model.value == null) {
28178
- model.value = 0;
28121
+ model.value = clamp(0, props.min, props.max);
28179
28122
  return;
28180
28123
  }
28181
28124
  const decimals = Math.max(modelDecimals.value, stepDecimals.value);
@@ -28193,30 +28136,45 @@ const VNumberInput = genericComponent()({
28193
28136
  e.stopPropagation();
28194
28137
  toggleUpDown(false);
28195
28138
  }
28196
- function onKeydown(e) {
28197
- if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
28198
- 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)) {
28199
28149
  e.preventDefault();
28200
- toggleUpDown(false);
28201
- return;
28202
28150
  }
28203
- if (['ArrowUp'].includes(e.key)) {
28204
- e.preventDefault();
28205
- toggleUpDown();
28206
- return;
28207
- }
28208
-
28209
- // Only numbers, +, - & . are allowed
28210
- 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)) {
28211
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
+ }
28212
28164
  }
28213
28165
  }
28214
- function onModelUpdate(v) {
28215
- model.value = v ? +v : undefined;
28216
- }
28217
28166
  function onControlMousedown(e) {
28218
28167
  e.stopPropagation();
28219
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
+ }
28220
28178
  useRender(() => {
28221
28179
  const {
28222
28180
  modelValue: _,
@@ -28301,8 +28259,11 @@ const VNumberInput = genericComponent()({
28301
28259
  }, null)]) : props.reverse ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28302
28260
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28303
28261
  return createVNode(VTextField, mergeProps({
28262
+ "ref": vTextFieldRef,
28304
28263
  "modelValue": model.value,
28305
- "onUpdate:modelValue": onModelUpdate,
28264
+ "onUpdate:modelValue": $event => model.value = $event,
28265
+ "onBeforeinput": onBeforeinput,
28266
+ "onChange": clampModel,
28306
28267
  "onKeydown": onKeydown,
28307
28268
  "class": ['v-number-input', {
28308
28269
  'v-number-input--default': controlVariant.value === 'default',
@@ -29499,7 +29460,6 @@ const VTreeviewSymbol = Symbol.for('vuetify:v-treeview');
29499
29460
 
29500
29461
  const makeVTreeviewItemProps = propsFactory({
29501
29462
  loading: Boolean,
29502
- onToggleExpand: EventProp(),
29503
29463
  toggleIcon: IconValue,
29504
29464
  ...makeVListItemProps({
29505
29465
  slim: true
@@ -29520,12 +29480,24 @@ const VTreeviewItem = genericComponent()({
29520
29480
  const {
29521
29481
  activate,
29522
29482
  isActivated,
29483
+ select,
29484
+ isSelected,
29485
+ isIndeterminate,
29523
29486
  isGroupActivator,
29524
29487
  root,
29525
29488
  id
29526
29489
  } = useNestedItem(rawId, false);
29527
29490
  const isActivatableGroupActivator = computed(() => root.activatable.value && isGroupActivator);
29528
- 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));
29529
29501
  function activateItem(e) {
29530
29502
  if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
29531
29503
  if (root.activatable.value) {
@@ -29536,20 +29508,68 @@ const VTreeviewItem = genericComponent()({
29536
29508
  }
29537
29509
  }
29538
29510
  }
29511
+ function onKeyDown(e) {
29512
+ if (e.key === 'Enter' || e.key === ' ') {
29513
+ e.preventDefault();
29514
+ activateItem(e);
29515
+ }
29516
+ }
29539
29517
  const visibleIds = inject$1(VTreeviewSymbol, {
29540
29518
  visibleIds: ref()
29541
29519
  }).visibleIds;
29542
29520
  useRender(() => {
29543
- 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);
29544
29524
  const hasPrepend = slots.prepend || props.toggleIcon;
29545
- return createVNode(VListItem, mergeProps(listItemProps, {
29546
- "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, {
29547
29567
  "class": ['v-treeview-item', {
29548
- 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
29549
29568
  'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29550
29569
  }, props.class],
29551
- "ripple": false,
29552
- "onClick": props.onClick ?? activateItem
29570
+ "value": id.value,
29571
+ "onClick": activateItem,
29572
+ "onKeydown": isClickable.value && onKeyDown
29553
29573
  }), {
29554
29574
  ...slots,
29555
29575
  prepend: hasPrepend ? slotProps => {
@@ -29560,8 +29580,7 @@ const VTreeviewItem = genericComponent()({
29560
29580
  "density": "compact",
29561
29581
  "icon": props.toggleIcon,
29562
29582
  "loading": props.loading,
29563
- "variant": "text",
29564
- "onClick": props.onToggleExpand
29583
+ "variant": "text"
29565
29584
  }, {
29566
29585
  loader() {
29567
29586
  return createVNode(VProgressCircular, {
@@ -29588,19 +29607,7 @@ const makeVTreeviewChildrenProps = propsFactory({
29588
29607
  default: '$loading'
29589
29608
  },
29590
29609
  items: Array,
29591
- openOnClick: {
29592
- type: Boolean,
29593
- default: undefined
29594
- },
29595
- indeterminateIcon: {
29596
- type: IconValue,
29597
- default: '$checkboxIndeterminate'
29598
- },
29599
- falseIcon: IconValue,
29600
- trueIcon: IconValue,
29601
- returnObject: Boolean,
29602
29610
  selectable: Boolean,
29603
- selectedColor: String,
29604
29611
  selectStrategy: [String, Function, Object]
29605
29612
  }, 'VTreeviewChildren');
29606
29613
  const VTreeviewChildren = genericComponent()({
@@ -29612,7 +29619,6 @@ const VTreeviewChildren = genericComponent()({
29612
29619
  slots
29613
29620
  } = _ref;
29614
29621
  const isLoading = shallowRef(null);
29615
- const isClickOnOpen = computed(() => props.openOnClick != null ? props.openOnClick : props.selectable);
29616
29622
  function checkChildren(item) {
29617
29623
  return new Promise(resolve => {
29618
29624
  if (!props.items?.length || !props.loadChildren) return resolve();
@@ -29643,11 +29649,7 @@ const VTreeviewChildren = genericComponent()({
29643
29649
  "key": item.value,
29644
29650
  "modelValue": slotProps.isSelected,
29645
29651
  "loading": loading,
29646
- "color": props.selectedColor,
29647
29652
  "indeterminate": slotProps.isIndeterminate,
29648
- "indeterminateIcon": props.indeterminateIcon,
29649
- "falseIcon": props.falseIcon,
29650
- "trueIcon": props.trueIcon,
29651
29653
  "onClick": withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
29652
29654
  "onKeydown": e => {
29653
29655
  if (!['Enter', 'Space'].includes(e.key)) return;
@@ -29669,9 +29671,9 @@ const VTreeviewChildren = genericComponent()({
29669
29671
  };
29670
29672
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
29671
29673
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
29672
- return children ? createVNode(VTreeviewGroup, mergeProps(treeviewGroupProps, {
29673
- "value": props.returnObject ? item : treeviewGroupProps?.value
29674
- }), {
29674
+ return children ? createVNode(VTreeviewGroup, mergeProps({
29675
+ "value": itemProps?.value
29676
+ }, treeviewGroupProps), {
29675
29677
  activator: _ref3 => {
29676
29678
  let {
29677
29679
  props: activatorProps
@@ -29679,24 +29681,19 @@ const VTreeviewChildren = genericComponent()({
29679
29681
  const listItemProps = {
29680
29682
  ...itemProps,
29681
29683
  ...activatorProps,
29682
- value: itemProps?.value,
29683
- onToggleExpand: activatorProps.onClick,
29684
- onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
29684
+ value: itemProps?.value
29685
29685
  };
29686
29686
  return createVNode(VTreeviewItem, mergeProps(listItemProps, {
29687
- "value": props.returnObject ? toRaw(item) : itemProps.value,
29688
- "loading": loading
29687
+ "loading": loading,
29688
+ "onClick": () => checkChildren(item)
29689
29689
  }), slotsWithItem);
29690
29690
  },
29691
29691
  default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
29692
- "items": children,
29693
- "returnObject": props.returnObject
29692
+ "items": children
29694
29693
  }), slots)
29695
29694
  }) : slots.item?.({
29696
29695
  props: itemProps
29697
- }) ?? createVNode(VTreeviewItem, mergeProps(itemProps, {
29698
- "value": props.returnObject ? toRaw(item) : itemProps.value
29699
- }), slotsWithItem);
29696
+ }) ?? createVNode(VTreeviewItem, itemProps, slotsWithItem);
29700
29697
  });
29701
29698
  }
29702
29699
  });
@@ -29720,7 +29717,7 @@ const makeVTreeviewProps = propsFactory({
29720
29717
  collapseIcon: '$treeviewCollapse',
29721
29718
  expandIcon: '$treeviewExpand',
29722
29719
  slim: true
29723
- }), ['nav', 'openStrategy'])
29720
+ }), ['nav'])
29724
29721
  }, 'VTreeview');
29725
29722
  const VTreeview = genericComponent()({
29726
29723
  name: 'VTreeview',
@@ -29779,11 +29776,11 @@ const VTreeview = genericComponent()({
29779
29776
  }
29780
29777
  return arr;
29781
29778
  }
29782
- function openAll(items) {
29779
+ function openAll(item) {
29783
29780
  let ids = [];
29784
- for (const i of items) {
29781
+ for (const i of item) {
29785
29782
  if (!i.children) continue;
29786
- ids.push(props.returnObject ? toRaw(i.raw) : i.value);
29783
+ ids.push(i.value);
29787
29784
  if (i.children) {
29788
29785
  ids = ids.concat(openAll(i.children));
29789
29786
  }
@@ -29819,7 +29816,6 @@ const VTreeview = genericComponent()({
29819
29816
  "ref": vListRef
29820
29817
  }, listProps, {
29821
29818
  "class": ['v-treeview', props.class],
29822
- "open-strategy": "multiple",
29823
29819
  "style": props.style,
29824
29820
  "opened": opened.value,
29825
29821
  "activated": activated.value,
@@ -29828,7 +29824,6 @@ const VTreeview = genericComponent()({
29828
29824
  "onUpdate:selected": $event => selected.value = $event
29829
29825
  }), {
29830
29826
  default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
29831
- "returnObject": props.returnObject,
29832
29827
  "items": items.value
29833
29828
  }), slots)]
29834
29829
  });
@@ -30334,7 +30329,7 @@ function createVuetify$1() {
30334
30329
  goTo
30335
30330
  };
30336
30331
  }
30337
- const version$1 = "3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce";
30332
+ const version$1 = "3.6.13-pr-20185.5bf1ff4";
30338
30333
  createVuetify$1.version = version$1;
30339
30334
 
30340
30335
  // Vue's inject() can only be used in setup
@@ -30587,7 +30582,7 @@ var index = /*#__PURE__*/Object.freeze({
30587
30582
 
30588
30583
  /* eslint-disable local-rules/sort-imports */
30589
30584
 
30590
- const version = "3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce";
30585
+ const version = "3.6.13-pr-20185.5bf1ff4";
30591
30586
 
30592
30587
  /* eslint-disable local-rules/sort-imports */
30593
30588