vuetify 3.10.2 → 3.10.4

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 (226) hide show
  1. package/dist/json/attributes.json +3585 -3581
  2. package/dist/json/importMap-labs.json +22 -22
  3. package/dist/json/importMap.json +136 -136
  4. package/dist/json/tags.json +1 -0
  5. package/dist/json/web-types.json +6506 -6482
  6. package/dist/vuetify-labs.cjs +124 -92
  7. package/dist/vuetify-labs.css +4941 -4941
  8. package/dist/vuetify-labs.d.ts +1375 -1363
  9. package/dist/vuetify-labs.esm.js +125 -93
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +124 -92
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +116 -87
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +6491 -6491
  16. package/dist/vuetify.d.ts +1120 -1108
  17. package/dist/vuetify.esm.js +116 -87
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +116 -87
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +1435 -1428
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.d.ts +3 -3
  25. package/lib/components/VAlert/VAlertTitle.d.ts +3 -3
  26. package/lib/components/VApp/VApp.d.ts +3 -3
  27. package/lib/components/VAppBar/VAppBar.d.ts +3 -3
  28. package/lib/components/VAppBar/VAppBarNavIcon.d.ts +6 -6
  29. package/lib/components/VAppBar/VAppBarTitle.d.ts +3 -3
  30. package/lib/components/VAutocomplete/VAutocomplete.d.ts +116 -116
  31. package/lib/components/VAutocomplete/VAutocomplete.js +1 -1
  32. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  33. package/lib/components/VAvatar/VAvatar.d.ts +3 -3
  34. package/lib/components/VBadge/VBadge.d.ts +3 -3
  35. package/lib/components/VBanner/VBanner.d.ts +3 -3
  36. package/lib/components/VBanner/VBannerActions.d.ts +3 -3
  37. package/lib/components/VBanner/VBannerText.d.ts +3 -3
  38. package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +3 -3
  39. package/lib/components/VBottomSheet/VBottomSheet.d.ts +3 -3
  40. package/lib/components/VBreadcrumbs/VBreadcrumbs.d.ts +3 -3
  41. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.d.ts +3 -3
  42. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.d.ts +3 -3
  43. package/lib/components/VBtn/VBtn.d.ts +6 -6
  44. package/lib/components/VBtn/VBtn.js +5 -5
  45. package/lib/components/VBtn/VBtn.js.map +1 -1
  46. package/lib/components/VBtnGroup/VBtnGroup.d.ts +3 -3
  47. package/lib/components/VBtnToggle/VBtnToggle.d.ts +3 -3
  48. package/lib/components/VCard/VCard.d.ts +6 -6
  49. package/lib/components/VCard/VCard.js +2 -2
  50. package/lib/components/VCard/VCard.js.map +1 -1
  51. package/lib/components/VCard/VCardActions.d.ts +3 -3
  52. package/lib/components/VCard/VCardItem.d.ts +3 -3
  53. package/lib/components/VCard/VCardSubtitle.d.ts +3 -3
  54. package/lib/components/VCard/VCardText.d.ts +3 -3
  55. package/lib/components/VCard/VCardTitle.d.ts +3 -3
  56. package/lib/components/VCarousel/VCarousel.d.ts +3 -3
  57. package/lib/components/VCarousel/VCarouselItem.d.ts +3 -3
  58. package/lib/components/VCheckbox/VCheckbox.d.ts +15 -15
  59. package/lib/components/VCheckbox/VCheckboxBtn.d.ts +6 -6
  60. package/lib/components/VChip/VChip.d.ts +6 -6
  61. package/lib/components/VChip/VChip.js +15 -4
  62. package/lib/components/VChip/VChip.js.map +1 -1
  63. package/lib/components/VChipGroup/VChipGroup.d.ts +3 -3
  64. package/lib/components/VCode/index.d.ts +3 -3
  65. package/lib/components/VCombobox/VCombobox.d.ts +129 -116
  66. package/lib/components/VCombobox/VCombobox.js +8 -25
  67. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  68. package/lib/components/VCounter/VCounter.d.ts +3 -3
  69. package/lib/components/VDataIterator/VDataIterator.d.ts +9 -9
  70. package/lib/components/VDataTable/VDataTable.d.ts +3 -3
  71. package/lib/components/VDataTable/VDataTableServer.d.ts +3 -3
  72. package/lib/components/VDataTable/VDataTableVirtual.d.ts +6 -6
  73. package/lib/components/VDataTable/composables/expand.js +8 -8
  74. package/lib/components/VDataTable/composables/expand.js.map +1 -1
  75. package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
  76. package/lib/components/VDialog/VDialog.d.ts +12 -12
  77. package/lib/components/VDialog/VDialog.js +29 -11
  78. package/lib/components/VDialog/VDialog.js.map +1 -1
  79. package/lib/components/VDialog/__test__/VDialog.spec.browser.js +41 -0
  80. package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
  81. package/lib/components/VDivider/VDivider.d.ts +3 -3
  82. package/lib/components/VEmptyState/VEmptyState.d.ts +6 -6
  83. package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +6 -6
  84. package/lib/components/VExpansionPanel/VExpansionPanelText.d.ts +3 -3
  85. package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +6 -6
  86. package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +6 -6
  87. package/lib/components/VFab/VFab.d.ts +6 -6
  88. package/lib/components/VField/VField.d.ts +3 -3
  89. package/lib/components/VField/VFieldLabel.d.ts +3 -3
  90. package/lib/components/VFileInput/VFileInput.d.ts +12 -12
  91. package/lib/components/VFileInput/VFileInput.js +2 -1
  92. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  93. package/lib/components/VFooter/VFooter.d.ts +3 -3
  94. package/lib/components/VForm/VForm.d.ts +6 -6
  95. package/lib/components/VGrid/VCol.d.ts +3 -3
  96. package/lib/components/VGrid/VContainer.d.ts +3 -3
  97. package/lib/components/VGrid/VRow.d.ts +3 -3
  98. package/lib/components/VGrid/VSpacer.d.ts +3 -3
  99. package/lib/components/VIcon/VIcon.d.ts +3 -3
  100. package/lib/components/VImg/VImg.d.ts +3 -3
  101. package/lib/components/VInput/VInput.d.ts +3 -3
  102. package/lib/components/VItemGroup/VItemGroup.d.ts +3 -3
  103. package/lib/components/VKbd/VKbd.d.ts +3 -3
  104. package/lib/components/VLabel/VLabel.d.ts +3 -3
  105. package/lib/components/VLayout/VLayout.d.ts +3 -3
  106. package/lib/components/VLayout/VLayoutItem.d.ts +3 -3
  107. package/lib/components/VLazy/VLazy.d.ts +3 -3
  108. package/lib/components/VList/VList.d.ts +11 -11
  109. package/lib/components/VList/VList.js.map +1 -1
  110. package/lib/components/VList/VListGroup.d.ts +3 -3
  111. package/lib/components/VList/VListImg.d.ts +3 -3
  112. package/lib/components/VList/VListItem.d.ts +6 -6
  113. package/lib/components/VList/VListItem.js +2 -2
  114. package/lib/components/VList/VListItem.js.map +1 -1
  115. package/lib/components/VList/VListItemAction.d.ts +3 -3
  116. package/lib/components/VList/VListItemMedia.d.ts +3 -3
  117. package/lib/components/VList/VListItemSubtitle.d.ts +3 -3
  118. package/lib/components/VList/VListItemTitle.d.ts +3 -3
  119. package/lib/components/VList/VListSubheader.d.ts +3 -3
  120. package/lib/components/VLocaleProvider/VLocaleProvider.d.ts +3 -3
  121. package/lib/components/VMain/VMain.d.ts +3 -3
  122. package/lib/components/VMenu/VMenu.d.ts +15 -15
  123. package/lib/components/VMessages/VMessages.d.ts +3 -3
  124. package/lib/components/VNavigationDrawer/VNavigationDrawer.d.ts +3 -3
  125. package/lib/components/VNumberInput/VNumberInput.d.ts +66 -66
  126. package/lib/components/VNumberInput/VNumberInput.js +1 -0
  127. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  128. package/lib/components/VOtpInput/VOtpInput.d.ts +3 -3
  129. package/lib/components/VOverlay/VOverlay.d.ts +3 -3
  130. package/lib/components/VPagination/VPagination.d.ts +3 -3
  131. package/lib/components/VParallax/VParallax.d.ts +3 -3
  132. package/lib/components/VProgressCircular/VProgressCircular.d.ts +3 -3
  133. package/lib/components/VProgressLinear/VProgressLinear.d.ts +3 -3
  134. package/lib/components/VRadio/VRadio.d.ts +6 -6
  135. package/lib/components/VRadioGroup/VRadioGroup.d.ts +15 -15
  136. package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
  137. package/lib/components/VRating/VRating.d.ts +3 -3
  138. package/lib/components/VResponsive/VResponsive.d.ts +3 -3
  139. package/lib/components/VSelect/VSelect.d.ts +140 -140
  140. package/lib/components/VSelectionControl/VSelectionControl.d.ts +6 -6
  141. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +6 -6
  142. package/lib/components/VSheet/VSheet.d.ts +3 -3
  143. package/lib/components/VSlideGroup/VSlideGroup.d.ts +3 -3
  144. package/lib/components/VSlider/VSlider.d.ts +12 -12
  145. package/lib/components/VSlider/VSliderThumb.d.ts +6 -6
  146. package/lib/components/VSlider/VSliderTrack.d.ts +3 -3
  147. package/lib/components/VSnackbar/VSnackbar.d.ts +12 -12
  148. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -3
  149. package/lib/components/VSpeedDial/VSpeedDial.d.ts +9 -9
  150. package/lib/components/VStepper/VStepper.d.ts +3 -3
  151. package/lib/components/VStepper/VStepperHeader.d.ts +3 -3
  152. package/lib/components/VStepper/VStepperItem.d.ts +3 -3
  153. package/lib/components/VStepper/VStepperWindow.d.ts +3 -3
  154. package/lib/components/VStepper/VStepperWindowItem.d.ts +3 -3
  155. package/lib/components/VSwitch/VSwitch.d.ts +15 -15
  156. package/lib/components/VSwitch/VSwitch.js +2 -2
  157. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  158. package/lib/components/VSystemBar/VSystemBar.d.ts +3 -3
  159. package/lib/components/VTable/VTable.d.ts +3 -3
  160. package/lib/components/VTabs/VTab.d.ts +24 -24
  161. package/lib/components/VTabs/VTabs.d.ts +3 -3
  162. package/lib/components/VTabs/VTabsWindow.d.ts +3 -3
  163. package/lib/components/VTabs/VTabsWindowItem.d.ts +3 -3
  164. package/lib/components/VTextField/VTextField.d.ts +21 -21
  165. package/lib/components/VTextarea/VTextarea.d.ts +12 -12
  166. package/lib/components/VThemeProvider/VThemeProvider.d.ts +3 -3
  167. package/lib/components/VTimePicker/VTimePicker.d.ts +3 -3
  168. package/lib/components/VTimeline/VTimeline.d.ts +3 -3
  169. package/lib/components/VTimeline/VTimelineDivider.d.ts +3 -3
  170. package/lib/components/VTimeline/VTimelineItem.d.ts +3 -3
  171. package/lib/components/VToolbar/VToolbar.d.ts +3 -3
  172. package/lib/components/VToolbar/VToolbarItems.d.ts +3 -3
  173. package/lib/components/VToolbar/VToolbarTitle.d.ts +3 -3
  174. package/lib/components/VTooltip/VTooltip.d.ts +15 -15
  175. package/lib/components/VTreeview/VTreeview.d.ts +26 -26
  176. package/lib/components/VTreeview/VTreeviewChildren.js +1 -1
  177. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  178. package/lib/components/VTreeview/VTreeviewGroup.d.ts +3 -3
  179. package/lib/components/VTreeview/VTreeviewItem.d.ts +24 -24
  180. package/lib/components/VVirtualScroll/VVirtualScroll.d.ts +6 -6
  181. package/lib/components/VVirtualScroll/VVirtualScrollItem.d.ts +3 -3
  182. package/lib/components/VWindow/VWindow.d.ts +3 -3
  183. package/lib/components/VWindow/VWindowItem.d.ts +3 -3
  184. package/lib/components/transitions/createTransition.d.ts +6 -6
  185. package/lib/components/transitions/index.d.ts +78 -78
  186. package/lib/composables/goto.js +2 -2
  187. package/lib/composables/goto.js.map +1 -1
  188. package/lib/composables/group.d.ts +2 -0
  189. package/lib/composables/group.js +15 -9
  190. package/lib/composables/group.js.map +1 -1
  191. package/lib/composables/router.d.ts +2 -0
  192. package/lib/composables/router.js +6 -1
  193. package/lib/composables/router.js.map +1 -1
  194. package/lib/entry-bundler.js +1 -1
  195. package/lib/framework.d.ts +63 -63
  196. package/lib/framework.js +1 -1
  197. package/lib/labs/VCalendar/VCalendar.js +7 -4
  198. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  199. package/lib/labs/VCalendar/composables/calendarWithEvents.js +7 -4
  200. package/lib/labs/VCalendar/composables/calendarWithEvents.js.map +1 -1
  201. package/lib/labs/VColorInput/VColorInput.d.ts +6 -6
  202. package/lib/labs/VDateInput/VDateInput.d.ts +66 -66
  203. package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
  204. package/lib/labs/VFileUpload/VFileUpload.js +2 -1
  205. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  206. package/lib/labs/VFileUpload/VFileUploadItem.d.ts +6 -6
  207. package/lib/labs/VHotkey/VHotkey.d.ts +3 -3
  208. package/lib/labs/VIconBtn/VIconBtn.d.ts +3 -3
  209. package/lib/labs/VMaskInput/VMaskInput.d.ts +66 -66
  210. package/lib/labs/VPicker/VPicker.d.ts +3 -3
  211. package/lib/labs/VPicker/VPickerTitle.d.ts +3 -3
  212. package/lib/labs/VPie/VPieTooltip.d.ts +3 -3
  213. package/lib/labs/VStepperVertical/VStepperVertical.d.ts +6 -6
  214. package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +6 -6
  215. package/lib/labs/VVideo/VVideo.d.ts +87 -87
  216. package/lib/labs/VVideo/VVideoControls.d.ts +40 -40
  217. package/lib/labs/VVideo/VVideoVolume.d.ts +33 -33
  218. package/lib/util/animation.js +1 -1
  219. package/lib/util/animation.js.map +1 -1
  220. package/lib/util/box.d.ts +1 -1
  221. package/lib/util/box.js +19 -14
  222. package/lib/util/box.js.map +1 -1
  223. package/lib/util/createSimpleFunctional.d.ts +3 -3
  224. package/lib/util/events.js +2 -2
  225. package/lib/util/events.js.map +1 -1
  226. package/package.json +9 -9
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.10.2
2
+ * Vuetify v3.10.4
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -584,17 +584,19 @@ function getAxis(anchor) {
584
584
  }
585
585
 
586
586
  class Box {
587
- constructor(_ref) {
588
- let {
587
+ constructor(args) {
588
+ const pageScale = document.body.currentCSSZoom ?? 1;
589
+ const factor = args instanceof DOMRect ? 1 + (1 - pageScale) / pageScale : 1;
590
+ const {
589
591
  x,
590
592
  y,
591
593
  width,
592
594
  height
593
- } = _ref;
594
- this.x = x;
595
- this.y = y;
596
- this.width = width;
597
- this.height = height;
595
+ } = args;
596
+ this.x = x * factor;
597
+ this.y = y * factor;
598
+ this.width = width * factor;
599
+ this.height = height * factor;
598
600
  }
599
601
  get top() {
600
602
  return this.y;
@@ -623,14 +625,16 @@ function getOverflow(a, b) {
623
625
  }
624
626
  function getTargetBox(target) {
625
627
  if (Array.isArray(target)) {
628
+ const pageScale = document.body.currentCSSZoom ?? 1;
629
+ const factor = 1 + (1 - pageScale) / pageScale;
626
630
  return new Box({
627
- x: target[0],
628
- y: target[1],
629
- width: 0,
630
- height: 0
631
+ x: target[0] * factor,
632
+ y: target[1] * factor,
633
+ width: 0 * factor,
634
+ height: 0 * factor
631
635
  });
632
636
  } else {
633
- return target.getBoundingClientRect();
637
+ return new Box(target.getBoundingClientRect());
634
638
  }
635
639
  }
636
640
  function getElementBox(el) {
@@ -643,11 +647,12 @@ function getElementBox(el) {
643
647
  height: document.documentElement.clientHeight
644
648
  });
645
649
  } else {
650
+ const pageScale = document.body.currentCSSZoom ?? 1;
646
651
  return new Box({
647
652
  x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
648
653
  y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
649
- width: visualViewport.width * visualViewport.scale,
650
- height: visualViewport.height * visualViewport.scale
654
+ width: visualViewport.width * visualViewport.scale / pageScale,
655
+ height: visualViewport.height * visualViewport.scale / pageScale
651
656
  });
652
657
  }
653
658
  } else {
@@ -665,7 +670,7 @@ function getElementBox(el) {
665
670
 
666
671
  /** @see https://stackoverflow.com/a/57876601/2074736 */
667
672
  function nullifyTransforms(el) {
668
- const rect = el.getBoundingClientRect();
673
+ const rect = new Box(el.getBoundingClientRect());
669
674
  const style = getComputedStyle(el);
670
675
  const tx = style.transform;
671
676
  if (tx) {
@@ -1585,7 +1590,7 @@ const easingPatterns = {
1585
1590
  // Utilities
1586
1591
  function getPrefixedEventHandlers(attrs, suffix, getData) {
1587
1592
  return Object.keys(attrs).filter(key => isOn(key) && key.endsWith(suffix)).reduce((acc, key) => {
1588
- acc[key.slice(0, -suffix.length)] = event => attrs[key](event, getData(event));
1593
+ acc[key.slice(0, -suffix.length)] = event => callEvent(attrs[key], event, getData(event));
1589
1594
  return acc;
1590
1595
  }, {});
1591
1596
  }
@@ -5004,14 +5009,18 @@ function useGroupItem(props, injectKey) {
5004
5009
  }
5005
5010
  const value = toRef(() => props.value);
5006
5011
  const disabled = computed(() => !!(group.disabled.value || props.disabled));
5007
- group.register({
5008
- id,
5009
- value,
5010
- disabled
5011
- }, vm);
5012
- onBeforeUnmount(() => {
5013
- group.unregister(id);
5014
- });
5012
+ function register() {
5013
+ group?.register({
5014
+ id,
5015
+ value,
5016
+ disabled
5017
+ }, vm);
5018
+ }
5019
+ function unregister() {
5020
+ group?.unregister(id);
5021
+ }
5022
+ onMounted(() => register());
5023
+ onBeforeUnmount(() => unregister());
5015
5024
  const isSelected = computed(() => {
5016
5025
  return group.isSelected(id);
5017
5026
  });
@@ -5039,7 +5048,9 @@ function useGroupItem(props, injectKey) {
5039
5048
  selectedClass,
5040
5049
  value,
5041
5050
  disabled,
5042
- group
5051
+ group,
5052
+ register,
5053
+ unregister
5043
5054
  };
5044
5055
  }
5045
5056
  function useGroup(props, injectKey) {
@@ -5886,6 +5897,7 @@ function useLink(props, attrs) {
5886
5897
  const href = toRef(() => props.href);
5887
5898
  return {
5888
5899
  isLink,
5900
+ isRouterLink: toRef(() => false),
5889
5901
  isClickable,
5890
5902
  href,
5891
5903
  linkProps: reactive({
@@ -5909,8 +5921,10 @@ function useLink(props, attrs) {
5909
5921
  return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
5910
5922
  });
5911
5923
  const href = computed(() => props.to ? link.value?.route.value.href : props.href);
5924
+ const isRouterLink = toRef(() => !!props.to);
5912
5925
  return {
5913
5926
  isLink,
5927
+ isRouterLink,
5914
5928
  isClickable,
5915
5929
  isActive,
5916
5930
  route: link.value?.route,
@@ -5918,7 +5932,9 @@ function useLink(props, attrs) {
5918
5932
  href,
5919
5933
  linkProps: reactive({
5920
5934
  href,
5921
- 'aria-current': toRef(() => isActive.value ? 'page' : undefined)
5935
+ 'aria-current': toRef(() => isActive.value ? 'page' : undefined),
5936
+ 'aria-disabled': toRef(() => props.disabled && isLink.value ? 'true' : undefined),
5937
+ tabindex: toRef(() => props.disabled && isLink.value ? '-1' : undefined)
5922
5938
  })
5923
5939
  };
5924
5940
  }
@@ -6368,7 +6384,7 @@ const VBtn = genericComponent()({
6368
6384
  if (props.active !== undefined) {
6369
6385
  return props.active;
6370
6386
  }
6371
- if (link.isLink.value) {
6387
+ if (link.isRouterLink.value) {
6372
6388
  return link.isActive?.value;
6373
6389
  }
6374
6390
  return group?.isSelected.value;
@@ -6396,7 +6412,7 @@ const VBtn = genericComponent()({
6396
6412
  });
6397
6413
  function onClick(e) {
6398
6414
  if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === '_blank')) return;
6399
- if (link.isLink.value) {
6415
+ if (link.isRouterLink.value) {
6400
6416
  link.navigate?.(e);
6401
6417
  } else {
6402
6418
  // Group active state for links is handled by useSelectLink
@@ -6409,7 +6425,7 @@ const VBtn = genericComponent()({
6409
6425
  const hasPrepend = !!(props.prependIcon || slots.prepend);
6410
6426
  const hasAppend = !!(props.appendIcon || slots.append);
6411
6427
  const hasIcon = !!(props.icon && props.icon !== true);
6412
- return withDirectives(createVNode(Tag, mergeProps({
6428
+ return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
6413
6429
  "type": Tag === 'a' ? undefined : 'button',
6414
6430
  "class": ['v-btn', group?.selectedClass.value, {
6415
6431
  'v-btn--active': isActive.value,
@@ -6425,11 +6441,11 @@ const VBtn = genericComponent()({
6425
6441
  }, props.spaced ? ['v-btn--spaced', `v-btn--spaced-${props.spaced}`] : [], themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6426
6442
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
6427
6443
  "aria-busy": props.loading ? true : undefined,
6428
- "disabled": isDisabled.value || undefined,
6444
+ "disabled": isDisabled.value && Tag !== 'a' || undefined,
6429
6445
  "tabindex": props.loading || props.readonly ? -1 : undefined,
6430
6446
  "onClick": onClick,
6431
6447
  "value": valueAttr.value
6432
- }, link.linkProps), {
6448
+ }), {
6433
6449
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createElementVNode("span", {
6434
6450
  "key": "prepend",
6435
6451
  "class": "v-btn__prepend"
@@ -8174,7 +8190,7 @@ async function scrollTo(_target, _options, horizontal, goTo) {
8174
8190
  const rtl = goTo?.rtl.value;
8175
8191
  const target = (typeof _target === 'number' ? _target : getTarget$1(_target)) ?? 0;
8176
8192
  const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
8177
- const ease = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
8193
+ const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
8178
8194
  if (!ease) throw new TypeError(`Easing function "${options.easing}" not found.`);
8179
8195
  let targetLocation;
8180
8196
  if (typeof target === 'number') {
@@ -8842,6 +8858,7 @@ const VChip = genericComponent()({
8842
8858
  } = provideTheme(props);
8843
8859
  const isActive = useProxiedModel(props, 'modelValue');
8844
8860
  const group = useGroupItem(props, VChipGroupSymbol, false);
8861
+ const slideGroup = useGroupItem(props, VSlideGroupSymbol, false);
8845
8862
  const link = useLink(props, attrs);
8846
8863
  const isLink = toRef(() => props.link !== false && link.isLink.value);
8847
8864
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
@@ -8855,6 +8872,15 @@ const VChip = genericComponent()({
8855
8872
  emit('click:close', e);
8856
8873
  }
8857
8874
  }));
8875
+ watch(isActive, val => {
8876
+ if (val) {
8877
+ group?.register();
8878
+ slideGroup?.register();
8879
+ } else {
8880
+ group?.unregister();
8881
+ slideGroup?.unregister();
8882
+ }
8883
+ });
8858
8884
  const {
8859
8885
  colorClasses,
8860
8886
  colorStyles,
@@ -8886,7 +8912,7 @@ const VChip = genericComponent()({
8886
8912
  const hasFilter = !!(slots.filter || props.filter) && group;
8887
8913
  const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
8888
8914
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
8889
- return isActive.value && withDirectives(createVNode(Tag, mergeProps({
8915
+ return isActive.value && withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
8890
8916
  "class": ['v-chip', {
8891
8917
  'v-chip--disabled': props.disabled,
8892
8918
  'v-chip--label': props.label,
@@ -8901,7 +8927,7 @@ const VChip = genericComponent()({
8901
8927
  "tabindex": isClickable.value ? 0 : undefined,
8902
8928
  "onClick": onClick,
8903
8929
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
8904
- }, link.linkProps), {
8930
+ }), {
8905
8931
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VExpandXTransition, {
8906
8932
  "key": "filter"
8907
8933
  }, {
@@ -10104,7 +10130,7 @@ const VListItem = genericComponent()({
10104
10130
  if (props.activeColor) {
10105
10131
  deprecate('active-color', ['color', 'base-color']);
10106
10132
  }
10107
- return withDirectives(createVNode(Tag, mergeProps({
10133
+ return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
10108
10134
  "class": ['v-list-item', {
10109
10135
  'v-list-item--active': isActive.value,
10110
10136
  'v-list-item--disabled': props.disabled,
@@ -10120,7 +10146,7 @@ const VListItem = genericComponent()({
10120
10146
  "role": role.value,
10121
10147
  "onClick": onClick,
10122
10148
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
10123
- }, link.linkProps), {
10149
+ }), {
10124
10150
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createElementVNode("div", {
10125
10151
  "key": "prepend",
10126
10152
  "class": "v-list-item__prepend"
@@ -14402,7 +14428,7 @@ const VAutocomplete = genericComponent()({
14402
14428
  } else {
14403
14429
  if (!props.multiple && search.value == null) model.value = [];
14404
14430
  menu.value = false;
14405
- if (props.multiple || hasSelectionSlot.value) search.value = '';
14431
+ search.value = '';
14406
14432
  selectionIndex.value = -1;
14407
14433
  }
14408
14434
  });
@@ -15036,10 +15062,11 @@ const VDialog = genericComponent()({
15036
15062
  scopeId
15037
15063
  } = useScopeId();
15038
15064
  const overlay = ref();
15039
- function onFocusin(e) {
15065
+ async function onFocusin(e) {
15040
15066
  const before = e.relatedTarget;
15041
15067
  const after = e.target;
15042
- if (before !== after && overlay.value?.contentEl &&
15068
+ await nextTick();
15069
+ if (isActive.value && before !== after && overlay.value?.contentEl &&
15043
15070
  // We're the topmost dialog
15044
15071
  overlay.value?.globalTop &&
15045
15072
  // It isn't the document or the dialog body
@@ -15047,22 +15074,39 @@ const VDialog = genericComponent()({
15047
15074
  // It isn't inside the dialog body
15048
15075
  !overlay.value.contentEl.contains(after)) {
15049
15076
  const focusable = focusableChildren(overlay.value.contentEl);
15050
- if (!focusable.length) return;
15051
- const firstElement = focusable[0];
15052
- const lastElement = focusable[focusable.length - 1];
15053
- if (before === firstElement) {
15054
- lastElement.focus();
15055
- } else {
15056
- firstElement.focus();
15057
- }
15077
+ focusable[0]?.focus();
15078
+ }
15079
+ }
15080
+ function onKeydown(e) {
15081
+ if (e.key !== 'Tab' || !overlay.value?.contentEl) return;
15082
+ const focusable = focusableChildren(overlay.value.contentEl);
15083
+ if (!focusable.length) return;
15084
+ const firstElement = focusable[0];
15085
+ const lastElement = focusable[focusable.length - 1];
15086
+ const active = document.activeElement;
15087
+ if (e.shiftKey && active === firstElement) {
15088
+ e.preventDefault();
15089
+ lastElement.focus();
15090
+ } else if (!e.shiftKey && active === lastElement) {
15091
+ e.preventDefault();
15092
+ firstElement.focus();
15058
15093
  }
15059
15094
  }
15060
15095
  onBeforeUnmount(() => {
15061
15096
  document.removeEventListener('focusin', onFocusin);
15097
+ document.removeEventListener('keydown', onKeydown);
15062
15098
  });
15063
15099
  if (IN_BROWSER) {
15064
15100
  watch(() => isActive.value && props.retainFocus, val => {
15065
- val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
15101
+ if (val) {
15102
+ document.addEventListener('focusin', onFocusin, {
15103
+ once: true
15104
+ });
15105
+ document.addEventListener('keydown', onKeydown);
15106
+ } else {
15107
+ document.removeEventListener('focusin', onFocusin);
15108
+ document.removeEventListener('keydown', onKeydown);
15109
+ }
15066
15110
  }, {
15067
15111
  immediate: true
15068
15112
  });
@@ -15625,7 +15669,7 @@ const VCard = genericComponent()({
15625
15669
  const hasImage = !!(slots.image || props.image);
15626
15670
  const hasCardItem = hasHeader || hasPrepend || hasAppend;
15627
15671
  const hasText = !!(slots.text || props.text != null);
15628
- return withDirectives(createVNode(Tag, mergeProps({
15672
+ return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
15629
15673
  "class": ['v-card', {
15630
15674
  'v-card--disabled': props.disabled,
15631
15675
  'v-card--flat': props.flat,
@@ -15635,7 +15679,7 @@ const VCard = genericComponent()({
15635
15679
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
15636
15680
  "onClick": isClickable && link.navigate,
15637
15681
  "tabindex": props.disabled ? -1 : undefined
15638
- }, link.linkProps), {
15682
+ }), {
15639
15683
  default: () => [hasImage && createElementVNode("div", {
15640
15684
  "key": "image",
15641
15685
  "class": "v-card__image"
@@ -19450,6 +19494,7 @@ const VColorPicker = defineComponent({
19450
19494
  // Types
19451
19495
 
19452
19496
  const makeVComboboxProps = propsFactory({
19497
+ alwaysFilter: Boolean,
19453
19498
  autoSelectFirst: {
19454
19499
  type: [Boolean, String]
19455
19500
  },
@@ -19494,7 +19539,6 @@ const VCombobox = genericComponent()({
19494
19539
  const isFocused = shallowRef(false);
19495
19540
  const isPristine = shallowRef(true);
19496
19541
  const listHasFocus = shallowRef(false);
19497
- const showAllItemsForNoMatch = shallowRef(false);
19498
19542
  const vMenuRef = ref();
19499
19543
  const vVirtualScrollRef = ref();
19500
19544
  const selectionIndex = shallowRef(-1);
@@ -19550,22 +19594,14 @@ const VCombobox = genericComponent()({
19550
19594
  const {
19551
19595
  filteredItems,
19552
19596
  getMatches
19553
- } = useFilter(props, items, search);
19554
- const hasMatchingItems = computed(() => {
19555
- return props.hideSelected ? filteredItems.value.some(filteredItem => !model.value.some(s => s.value === filteredItem.value)) : filteredItems.value.length > 0;
19556
- });
19597
+ } = useFilter(props, items, () => props.alwaysFilter || !isPristine.value ? search.value : '');
19557
19598
  const displayItems = computed(() => {
19558
19599
  if (props.hideSelected) {
19559
19600
  return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
19560
19601
  }
19561
- if (filteredItems.value.length === 0 && showAllItemsForNoMatch.value) {
19562
- return items.value;
19563
- }
19564
19602
  return filteredItems.value;
19565
19603
  });
19566
- const menuDisabled = computed(() => {
19567
- return form.isReadonly.value || form.isDisabled.value;
19568
- });
19604
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
19569
19605
  const _menu = useProxiedModel(props, 'menu');
19570
19606
  const menu = computed({
19571
19607
  get: () => _menu.value,
@@ -19582,17 +19618,13 @@ const VCombobox = genericComponent()({
19582
19618
  ariaLabel
19583
19619
  } = useMenuActivator(props, menu);
19584
19620
  watch(_search, value => {
19585
- showAllItemsForNoMatch.value = false;
19586
19621
  if (cleared) {
19587
19622
  // wait for clear to finish, VTextField sets _search to null
19588
19623
  // then search computed triggers and updates _search to ''
19589
19624
  nextTick(() => cleared = false);
19590
19625
  } else if (isFocused.value && !menu.value) {
19591
- menu.value = hasMatchingItems.value || !props.hideNoData;
19592
- } else if (isFocused.value && menu.value && !hasMatchingItems.value && props.hideNoData) {
19593
- menu.value = false;
19626
+ menu.value = true;
19594
19627
  }
19595
- isPristine.value = !value;
19596
19628
  emit('update:search', value);
19597
19629
  });
19598
19630
  watch(model, value => {
@@ -19609,6 +19641,7 @@ const VCombobox = genericComponent()({
19609
19641
  const listEvents = useScrolling(listRef, vTextFieldRef);
19610
19642
  function onClear(e) {
19611
19643
  cleared = true;
19644
+ nextTick(() => cleared = false);
19612
19645
  if (props.openOnClear) {
19613
19646
  menu.value = true;
19614
19647
  }
@@ -19771,19 +19804,13 @@ const VCombobox = genericComponent()({
19771
19804
  }
19772
19805
  }
19773
19806
  });
19774
- watch(menu, val => {
19775
- if (!props.hideSelected && val && model.value.length) {
19807
+ watch(menu, () => {
19808
+ if (!props.hideSelected && menu.value && model.value.length) {
19776
19809
  const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
19777
19810
  IN_BROWSER && window.requestAnimationFrame(() => {
19778
19811
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
19779
19812
  });
19780
19813
  }
19781
- if (val && search.value && !hasMatchingItems.value) {
19782
- showAllItemsForNoMatch.value = true;
19783
- }
19784
- isPristine.value = !search.value;
19785
- }, {
19786
- immediate: true
19787
19814
  });
19788
19815
  watch(items, (newVal, oldVal) => {
19789
19816
  if (menu.value) return;
@@ -19980,7 +20007,7 @@ const VCombobox = genericComponent()({
19980
20007
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
19981
20008
  args[_key] = arguments[_key];
19982
20009
  }
19983
- return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
20010
+ return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
19984
20011
  "class": "v-combobox__menu-icon",
19985
20012
  "color": vTextFieldRef.value?.fieldIconColor,
19986
20013
  "icon": props.menuIcon,
@@ -20123,20 +20150,20 @@ function provideExpanded(props) {
20123
20150
  }, v => {
20124
20151
  return [...v.values()];
20125
20152
  });
20126
- function getItemKey(item) {
20127
- return isObject(item.value) ? item.key : item.value;
20128
- }
20129
20153
  function expand(item, value) {
20130
20154
  const newExpanded = new Set(expanded.value);
20155
+ const rawValue = toRaw(item.value);
20131
20156
  if (!value) {
20132
- newExpanded.delete(getItemKey(item));
20157
+ const item = [...expanded.value].find(x => toRaw(x) === rawValue);
20158
+ newExpanded.delete(item);
20133
20159
  } else {
20134
- newExpanded.add(getItemKey(item));
20160
+ newExpanded.add(rawValue);
20135
20161
  }
20136
20162
  expanded.value = newExpanded;
20137
20163
  }
20138
20164
  function isExpanded(item) {
20139
- return expanded.value.has(getItemKey(item));
20165
+ const rawValue = toRaw(item.value);
20166
+ return [...expanded.value].some(x => toRaw(x) === rawValue);
20140
20167
  }
20141
20168
  function toggleExpand(item) {
20142
20169
  expand(item, !isExpanded(item));
@@ -25288,7 +25315,8 @@ const VFileInput = genericComponent()({
25288
25315
  'onClick:clear': onClear
25289
25316
  };
25290
25317
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
25291
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
25318
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
25319
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
25292
25320
  return createVNode(VInput, mergeProps({
25293
25321
  "ref": vInputRef,
25294
25322
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -26999,6 +27027,7 @@ const VNumberInput = genericComponent()({
26999
27027
  useRender(() => {
27000
27028
  const {
27001
27029
  modelValue: _,
27030
+ type,
27002
27031
  ...textFieldProps
27003
27032
  } = VTextField.filterProps(props);
27004
27033
  function incrementControlNode() {
@@ -29448,7 +29477,7 @@ const VSwitch = genericComponent()({
29448
29477
  } = useFocus(props);
29449
29478
  const control = ref();
29450
29479
  const inputRef = ref();
29451
- const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
29480
+ const isForcedColorsModeActive = SUPPORTS_MATCH_MEDIA && window.matchMedia('(forced-colors: active)').matches;
29452
29481
  const loaderColor = toRef(() => {
29453
29482
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
29454
29483
  });
@@ -31542,6 +31571,7 @@ const VTreeviewChildren = genericComponent()({
31542
31571
  ...itemProps,
31543
31572
  ...activatorProps,
31544
31573
  value: itemProps?.value,
31574
+ indentLines: indentLines.node,
31545
31575
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
31546
31576
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
31547
31577
  };
@@ -31555,7 +31585,6 @@ const VTreeviewChildren = genericComponent()({
31555
31585
  }, listItemProps, {
31556
31586
  "hasCustomPrepend": !!slots.prepend,
31557
31587
  "hideActions": props.hideActions,
31558
- "indentLines": indentLines.node,
31559
31588
  "value": props.returnObject ? item.raw : itemProps.value,
31560
31589
  "loading": loading
31561
31590
  }), slotsWithItem));
@@ -32250,7 +32279,7 @@ function createVuetify$1() {
32250
32279
  };
32251
32280
  });
32252
32281
  }
32253
- const version$1 = "3.10.2";
32282
+ const version$1 = "3.10.4";
32254
32283
  createVuetify$1.version = version$1;
32255
32284
 
32256
32285
  // Vue's inject() can only be used in setup
@@ -32275,7 +32304,7 @@ const createVuetify = function () {
32275
32304
  ...options
32276
32305
  });
32277
32306
  };
32278
- const version = "3.10.2";
32307
+ const version = "3.10.4";
32279
32308
  createVuetify.version = version;
32280
32309
 
32281
32310
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useMask, useRtl, useTheme, version };