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
package/dist/vuetify.js CHANGED
@@ -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
  */
@@ -588,17 +588,19 @@
588
588
  }
589
589
 
590
590
  class Box {
591
- constructor(_ref) {
592
- let {
591
+ constructor(args) {
592
+ const pageScale = document.body.currentCSSZoom ?? 1;
593
+ const factor = args instanceof DOMRect ? 1 + (1 - pageScale) / pageScale : 1;
594
+ const {
593
595
  x,
594
596
  y,
595
597
  width,
596
598
  height
597
- } = _ref;
598
- this.x = x;
599
- this.y = y;
600
- this.width = width;
601
- this.height = height;
599
+ } = args;
600
+ this.x = x * factor;
601
+ this.y = y * factor;
602
+ this.width = width * factor;
603
+ this.height = height * factor;
602
604
  }
603
605
  get top() {
604
606
  return this.y;
@@ -627,14 +629,16 @@
627
629
  }
628
630
  function getTargetBox(target) {
629
631
  if (Array.isArray(target)) {
632
+ const pageScale = document.body.currentCSSZoom ?? 1;
633
+ const factor = 1 + (1 - pageScale) / pageScale;
630
634
  return new Box({
631
- x: target[0],
632
- y: target[1],
633
- width: 0,
634
- height: 0
635
+ x: target[0] * factor,
636
+ y: target[1] * factor,
637
+ width: 0 * factor,
638
+ height: 0 * factor
635
639
  });
636
640
  } else {
637
- return target.getBoundingClientRect();
641
+ return new Box(target.getBoundingClientRect());
638
642
  }
639
643
  }
640
644
  function getElementBox(el) {
@@ -647,11 +651,12 @@
647
651
  height: document.documentElement.clientHeight
648
652
  });
649
653
  } else {
654
+ const pageScale = document.body.currentCSSZoom ?? 1;
650
655
  return new Box({
651
656
  x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
652
657
  y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
653
- width: visualViewport.width * visualViewport.scale,
654
- height: visualViewport.height * visualViewport.scale
658
+ width: visualViewport.width * visualViewport.scale / pageScale,
659
+ height: visualViewport.height * visualViewport.scale / pageScale
655
660
  });
656
661
  }
657
662
  } else {
@@ -669,7 +674,7 @@
669
674
 
670
675
  /** @see https://stackoverflow.com/a/57876601/2074736 */
671
676
  function nullifyTransforms(el) {
672
- const rect = el.getBoundingClientRect();
677
+ const rect = new Box(el.getBoundingClientRect());
673
678
  const style = getComputedStyle(el);
674
679
  const tx = style.transform;
675
680
  if (tx) {
@@ -1589,7 +1594,7 @@
1589
1594
  // Utilities
1590
1595
  function getPrefixedEventHandlers(attrs, suffix, getData) {
1591
1596
  return Object.keys(attrs).filter(key => isOn(key) && key.endsWith(suffix)).reduce((acc, key) => {
1592
- acc[key.slice(0, -suffix.length)] = event => attrs[key](event, getData(event));
1597
+ acc[key.slice(0, -suffix.length)] = event => callEvent(attrs[key], event, getData(event));
1593
1598
  return acc;
1594
1599
  }, {});
1595
1600
  }
@@ -5008,14 +5013,18 @@
5008
5013
  }
5009
5014
  const value = vue.toRef(() => props.value);
5010
5015
  const disabled = vue.computed(() => !!(group.disabled.value || props.disabled));
5011
- group.register({
5012
- id,
5013
- value,
5014
- disabled
5015
- }, vm);
5016
- vue.onBeforeUnmount(() => {
5017
- group.unregister(id);
5018
- });
5016
+ function register() {
5017
+ group?.register({
5018
+ id,
5019
+ value,
5020
+ disabled
5021
+ }, vm);
5022
+ }
5023
+ function unregister() {
5024
+ group?.unregister(id);
5025
+ }
5026
+ vue.onMounted(() => register());
5027
+ vue.onBeforeUnmount(() => unregister());
5019
5028
  const isSelected = vue.computed(() => {
5020
5029
  return group.isSelected(id);
5021
5030
  });
@@ -5043,7 +5052,9 @@
5043
5052
  selectedClass,
5044
5053
  value,
5045
5054
  disabled,
5046
- group
5055
+ group,
5056
+ register,
5057
+ unregister
5047
5058
  };
5048
5059
  }
5049
5060
  function useGroup(props, injectKey) {
@@ -5890,6 +5901,7 @@
5890
5901
  const href = vue.toRef(() => props.href);
5891
5902
  return {
5892
5903
  isLink,
5904
+ isRouterLink: vue.toRef(() => false),
5893
5905
  isClickable,
5894
5906
  href,
5895
5907
  linkProps: vue.reactive({
@@ -5913,8 +5925,10 @@
5913
5925
  return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
5914
5926
  });
5915
5927
  const href = vue.computed(() => props.to ? link.value?.route.value.href : props.href);
5928
+ const isRouterLink = vue.toRef(() => !!props.to);
5916
5929
  return {
5917
5930
  isLink,
5931
+ isRouterLink,
5918
5932
  isClickable,
5919
5933
  isActive,
5920
5934
  route: link.value?.route,
@@ -5922,7 +5936,9 @@
5922
5936
  href,
5923
5937
  linkProps: vue.reactive({
5924
5938
  href,
5925
- 'aria-current': vue.toRef(() => isActive.value ? 'page' : undefined)
5939
+ 'aria-current': vue.toRef(() => isActive.value ? 'page' : undefined),
5940
+ 'aria-disabled': vue.toRef(() => props.disabled && isLink.value ? 'true' : undefined),
5941
+ tabindex: vue.toRef(() => props.disabled && isLink.value ? '-1' : undefined)
5926
5942
  })
5927
5943
  };
5928
5944
  }
@@ -6372,7 +6388,7 @@
6372
6388
  if (props.active !== undefined) {
6373
6389
  return props.active;
6374
6390
  }
6375
- if (link.isLink.value) {
6391
+ if (link.isRouterLink.value) {
6376
6392
  return link.isActive?.value;
6377
6393
  }
6378
6394
  return group?.isSelected.value;
@@ -6400,7 +6416,7 @@
6400
6416
  });
6401
6417
  function onClick(e) {
6402
6418
  if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === '_blank')) return;
6403
- if (link.isLink.value) {
6419
+ if (link.isRouterLink.value) {
6404
6420
  link.navigate?.(e);
6405
6421
  } else {
6406
6422
  // Group active state for links is handled by useSelectLink
@@ -6413,7 +6429,7 @@
6413
6429
  const hasPrepend = !!(props.prependIcon || slots.prepend);
6414
6430
  const hasAppend = !!(props.appendIcon || slots.append);
6415
6431
  const hasIcon = !!(props.icon && props.icon !== true);
6416
- return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
6432
+ return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
6417
6433
  "type": Tag === 'a' ? undefined : 'button',
6418
6434
  "class": ['v-btn', group?.selectedClass.value, {
6419
6435
  'v-btn--active': isActive.value,
@@ -6429,11 +6445,11 @@
6429
6445
  }, 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],
6430
6446
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
6431
6447
  "aria-busy": props.loading ? true : undefined,
6432
- "disabled": isDisabled.value || undefined,
6448
+ "disabled": isDisabled.value && Tag !== 'a' || undefined,
6433
6449
  "tabindex": props.loading || props.readonly ? -1 : undefined,
6434
6450
  "onClick": onClick,
6435
6451
  "value": valueAttr.value
6436
- }, link.linkProps), {
6452
+ }), {
6437
6453
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createElementVNode("span", {
6438
6454
  "key": "prepend",
6439
6455
  "class": "v-btn__prepend"
@@ -8178,7 +8194,7 @@
8178
8194
  const rtl = goTo?.rtl.value;
8179
8195
  const target = (typeof _target === 'number' ? _target : getTarget$1(_target)) ?? 0;
8180
8196
  const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
8181
- const ease = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
8197
+ const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
8182
8198
  if (!ease) throw new TypeError(`Easing function "${options.easing}" not found.`);
8183
8199
  let targetLocation;
8184
8200
  if (typeof target === 'number') {
@@ -8846,6 +8862,7 @@
8846
8862
  } = provideTheme(props);
8847
8863
  const isActive = useProxiedModel(props, 'modelValue');
8848
8864
  const group = useGroupItem(props, VChipGroupSymbol, false);
8865
+ const slideGroup = useGroupItem(props, VSlideGroupSymbol, false);
8849
8866
  const link = useLink(props, attrs);
8850
8867
  const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
8851
8868
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
@@ -8859,6 +8876,15 @@
8859
8876
  emit('click:close', e);
8860
8877
  }
8861
8878
  }));
8879
+ vue.watch(isActive, val => {
8880
+ if (val) {
8881
+ group?.register();
8882
+ slideGroup?.register();
8883
+ } else {
8884
+ group?.unregister();
8885
+ slideGroup?.unregister();
8886
+ }
8887
+ });
8862
8888
  const {
8863
8889
  colorClasses,
8864
8890
  colorStyles,
@@ -8890,7 +8916,7 @@
8890
8916
  const hasFilter = !!(slots.filter || props.filter) && group;
8891
8917
  const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
8892
8918
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
8893
- return isActive.value && vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
8919
+ return isActive.value && vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
8894
8920
  "class": ['v-chip', {
8895
8921
  'v-chip--disabled': props.disabled,
8896
8922
  'v-chip--label': props.label,
@@ -8905,7 +8931,7 @@
8905
8931
  "tabindex": isClickable.value ? 0 : undefined,
8906
8932
  "onClick": onClick,
8907
8933
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
8908
- }, link.linkProps), {
8934
+ }), {
8909
8935
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
8910
8936
  "key": "filter"
8911
8937
  }, {
@@ -10108,7 +10134,7 @@
10108
10134
  if (props.activeColor) {
10109
10135
  deprecate('active-color', ['color', 'base-color']);
10110
10136
  }
10111
- return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
10137
+ return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
10112
10138
  "class": ['v-list-item', {
10113
10139
  'v-list-item--active': isActive.value,
10114
10140
  'v-list-item--disabled': props.disabled,
@@ -10124,7 +10150,7 @@
10124
10150
  "role": role.value,
10125
10151
  "onClick": onClick,
10126
10152
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
10127
- }, link.linkProps), {
10153
+ }), {
10128
10154
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createElementVNode("div", {
10129
10155
  "key": "prepend",
10130
10156
  "class": "v-list-item__prepend"
@@ -14406,7 +14432,7 @@
14406
14432
  } else {
14407
14433
  if (!props.multiple && search.value == null) model.value = [];
14408
14434
  menu.value = false;
14409
- if (props.multiple || hasSelectionSlot.value) search.value = '';
14435
+ search.value = '';
14410
14436
  selectionIndex.value = -1;
14411
14437
  }
14412
14438
  });
@@ -15040,10 +15066,11 @@
15040
15066
  scopeId
15041
15067
  } = useScopeId();
15042
15068
  const overlay = vue.ref();
15043
- function onFocusin(e) {
15069
+ async function onFocusin(e) {
15044
15070
  const before = e.relatedTarget;
15045
15071
  const after = e.target;
15046
- if (before !== after && overlay.value?.contentEl &&
15072
+ await vue.nextTick();
15073
+ if (isActive.value && before !== after && overlay.value?.contentEl &&
15047
15074
  // We're the topmost dialog
15048
15075
  overlay.value?.globalTop &&
15049
15076
  // It isn't the document or the dialog body
@@ -15051,22 +15078,39 @@
15051
15078
  // It isn't inside the dialog body
15052
15079
  !overlay.value.contentEl.contains(after)) {
15053
15080
  const focusable = focusableChildren(overlay.value.contentEl);
15054
- if (!focusable.length) return;
15055
- const firstElement = focusable[0];
15056
- const lastElement = focusable[focusable.length - 1];
15057
- if (before === firstElement) {
15058
- lastElement.focus();
15059
- } else {
15060
- firstElement.focus();
15061
- }
15081
+ focusable[0]?.focus();
15082
+ }
15083
+ }
15084
+ function onKeydown(e) {
15085
+ if (e.key !== 'Tab' || !overlay.value?.contentEl) return;
15086
+ const focusable = focusableChildren(overlay.value.contentEl);
15087
+ if (!focusable.length) return;
15088
+ const firstElement = focusable[0];
15089
+ const lastElement = focusable[focusable.length - 1];
15090
+ const active = document.activeElement;
15091
+ if (e.shiftKey && active === firstElement) {
15092
+ e.preventDefault();
15093
+ lastElement.focus();
15094
+ } else if (!e.shiftKey && active === lastElement) {
15095
+ e.preventDefault();
15096
+ firstElement.focus();
15062
15097
  }
15063
15098
  }
15064
15099
  vue.onBeforeUnmount(() => {
15065
15100
  document.removeEventListener('focusin', onFocusin);
15101
+ document.removeEventListener('keydown', onKeydown);
15066
15102
  });
15067
15103
  if (IN_BROWSER) {
15068
15104
  vue.watch(() => isActive.value && props.retainFocus, val => {
15069
- val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
15105
+ if (val) {
15106
+ document.addEventListener('focusin', onFocusin, {
15107
+ once: true
15108
+ });
15109
+ document.addEventListener('keydown', onKeydown);
15110
+ } else {
15111
+ document.removeEventListener('focusin', onFocusin);
15112
+ document.removeEventListener('keydown', onKeydown);
15113
+ }
15070
15114
  }, {
15071
15115
  immediate: true
15072
15116
  });
@@ -15629,7 +15673,7 @@
15629
15673
  const hasImage = !!(slots.image || props.image);
15630
15674
  const hasCardItem = hasHeader || hasPrepend || hasAppend;
15631
15675
  const hasText = !!(slots.text || props.text != null);
15632
- return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
15676
+ return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
15633
15677
  "class": ['v-card', {
15634
15678
  'v-card--disabled': props.disabled,
15635
15679
  'v-card--flat': props.flat,
@@ -15639,7 +15683,7 @@
15639
15683
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
15640
15684
  "onClick": isClickable && link.navigate,
15641
15685
  "tabindex": props.disabled ? -1 : undefined
15642
- }, link.linkProps), {
15686
+ }), {
15643
15687
  default: () => [hasImage && vue.createElementVNode("div", {
15644
15688
  "key": "image",
15645
15689
  "class": "v-card__image"
@@ -19454,6 +19498,7 @@
19454
19498
  // Types
19455
19499
 
19456
19500
  const makeVComboboxProps = propsFactory({
19501
+ alwaysFilter: Boolean,
19457
19502
  autoSelectFirst: {
19458
19503
  type: [Boolean, String]
19459
19504
  },
@@ -19498,7 +19543,6 @@
19498
19543
  const isFocused = vue.shallowRef(false);
19499
19544
  const isPristine = vue.shallowRef(true);
19500
19545
  const listHasFocus = vue.shallowRef(false);
19501
- const showAllItemsForNoMatch = vue.shallowRef(false);
19502
19546
  const vMenuRef = vue.ref();
19503
19547
  const vVirtualScrollRef = vue.ref();
19504
19548
  const selectionIndex = vue.shallowRef(-1);
@@ -19554,22 +19598,14 @@
19554
19598
  const {
19555
19599
  filteredItems,
19556
19600
  getMatches
19557
- } = useFilter(props, items, search);
19558
- const hasMatchingItems = vue.computed(() => {
19559
- return props.hideSelected ? filteredItems.value.some(filteredItem => !model.value.some(s => s.value === filteredItem.value)) : filteredItems.value.length > 0;
19560
- });
19601
+ } = useFilter(props, items, () => props.alwaysFilter || !isPristine.value ? search.value : '');
19561
19602
  const displayItems = vue.computed(() => {
19562
19603
  if (props.hideSelected) {
19563
19604
  return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
19564
19605
  }
19565
- if (filteredItems.value.length === 0 && showAllItemsForNoMatch.value) {
19566
- return items.value;
19567
- }
19568
19606
  return filteredItems.value;
19569
19607
  });
19570
- const menuDisabled = vue.computed(() => {
19571
- return form.isReadonly.value || form.isDisabled.value;
19572
- });
19608
+ const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
19573
19609
  const _menu = useProxiedModel(props, 'menu');
19574
19610
  const menu = vue.computed({
19575
19611
  get: () => _menu.value,
@@ -19586,17 +19622,13 @@
19586
19622
  ariaLabel
19587
19623
  } = useMenuActivator(props, menu);
19588
19624
  vue.watch(_search, value => {
19589
- showAllItemsForNoMatch.value = false;
19590
19625
  if (cleared) {
19591
19626
  // wait for clear to finish, VTextField sets _search to null
19592
19627
  // then search computed triggers and updates _search to ''
19593
19628
  vue.nextTick(() => cleared = false);
19594
19629
  } else if (isFocused.value && !menu.value) {
19595
- menu.value = hasMatchingItems.value || !props.hideNoData;
19596
- } else if (isFocused.value && menu.value && !hasMatchingItems.value && props.hideNoData) {
19597
- menu.value = false;
19630
+ menu.value = true;
19598
19631
  }
19599
- isPristine.value = !value;
19600
19632
  emit('update:search', value);
19601
19633
  });
19602
19634
  vue.watch(model, value => {
@@ -19613,6 +19645,7 @@
19613
19645
  const listEvents = useScrolling(listRef, vTextFieldRef);
19614
19646
  function onClear(e) {
19615
19647
  cleared = true;
19648
+ vue.nextTick(() => cleared = false);
19616
19649
  if (props.openOnClear) {
19617
19650
  menu.value = true;
19618
19651
  }
@@ -19775,19 +19808,13 @@
19775
19808
  }
19776
19809
  }
19777
19810
  });
19778
- vue.watch(menu, val => {
19779
- if (!props.hideSelected && val && model.value.length) {
19811
+ vue.watch(menu, () => {
19812
+ if (!props.hideSelected && menu.value && model.value.length) {
19780
19813
  const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
19781
19814
  IN_BROWSER && window.requestAnimationFrame(() => {
19782
19815
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
19783
19816
  });
19784
19817
  }
19785
- if (val && search.value && !hasMatchingItems.value) {
19786
- showAllItemsForNoMatch.value = true;
19787
- }
19788
- isPristine.value = !search.value;
19789
- }, {
19790
- immediate: true
19791
19818
  });
19792
19819
  vue.watch(items, (newVal, oldVal) => {
19793
19820
  if (menu.value) return;
@@ -19984,7 +20011,7 @@
19984
20011
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
19985
20012
  args[_key] = arguments[_key];
19986
20013
  }
19987
- return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
20014
+ return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
19988
20015
  "class": "v-combobox__menu-icon",
19989
20016
  "color": vTextFieldRef.value?.fieldIconColor,
19990
20017
  "icon": props.menuIcon,
@@ -20127,20 +20154,20 @@
20127
20154
  }, v => {
20128
20155
  return [...v.values()];
20129
20156
  });
20130
- function getItemKey(item) {
20131
- return isObject(item.value) ? item.key : item.value;
20132
- }
20133
20157
  function expand(item, value) {
20134
20158
  const newExpanded = new Set(expanded.value);
20159
+ const rawValue = vue.toRaw(item.value);
20135
20160
  if (!value) {
20136
- newExpanded.delete(getItemKey(item));
20161
+ const item = [...expanded.value].find(x => vue.toRaw(x) === rawValue);
20162
+ newExpanded.delete(item);
20137
20163
  } else {
20138
- newExpanded.add(getItemKey(item));
20164
+ newExpanded.add(rawValue);
20139
20165
  }
20140
20166
  expanded.value = newExpanded;
20141
20167
  }
20142
20168
  function isExpanded(item) {
20143
- return expanded.value.has(getItemKey(item));
20169
+ const rawValue = vue.toRaw(item.value);
20170
+ return [...expanded.value].some(x => vue.toRaw(x) === rawValue);
20144
20171
  }
20145
20172
  function toggleExpand(item) {
20146
20173
  expand(item, !isExpanded(item));
@@ -25292,7 +25319,8 @@
25292
25319
  'onClick:clear': onClear
25293
25320
  };
25294
25321
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
25295
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
25322
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
25323
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
25296
25324
  return vue.createVNode(VInput, vue.mergeProps({
25297
25325
  "ref": vInputRef,
25298
25326
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -27003,6 +27031,7 @@
27003
27031
  useRender(() => {
27004
27032
  const {
27005
27033
  modelValue: _,
27034
+ type,
27006
27035
  ...textFieldProps
27007
27036
  } = VTextField.filterProps(props);
27008
27037
  function incrementControlNode() {
@@ -29452,7 +29481,7 @@
29452
29481
  } = useFocus(props);
29453
29482
  const control = vue.ref();
29454
29483
  const inputRef = vue.ref();
29455
- const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
29484
+ const isForcedColorsModeActive = SUPPORTS_MATCH_MEDIA && window.matchMedia('(forced-colors: active)').matches;
29456
29485
  const loaderColor = vue.toRef(() => {
29457
29486
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
29458
29487
  });
@@ -31546,6 +31575,7 @@
31546
31575
  ...itemProps,
31547
31576
  ...activatorProps,
31548
31577
  value: itemProps?.value,
31578
+ indentLines: indentLines.node,
31549
31579
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
31550
31580
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
31551
31581
  };
@@ -31559,7 +31589,6 @@
31559
31589
  }, listItemProps, {
31560
31590
  "hasCustomPrepend": !!slots.prepend,
31561
31591
  "hideActions": props.hideActions,
31562
- "indentLines": indentLines.node,
31563
31592
  "value": props.returnObject ? item.raw : itemProps.value,
31564
31593
  "loading": loading
31565
31594
  }), slotsWithItem));
@@ -32254,7 +32283,7 @@
32254
32283
  };
32255
32284
  });
32256
32285
  }
32257
- const version$1 = "3.10.2";
32286
+ const version$1 = "3.10.4";
32258
32287
  createVuetify$1.version = version$1;
32259
32288
 
32260
32289
  // Vue's inject() can only be used in setup
@@ -32279,7 +32308,7 @@
32279
32308
  ...options
32280
32309
  });
32281
32310
  };
32282
- const version = "3.10.2";
32311
+ const version = "3.10.4";
32283
32312
  createVuetify.version = version;
32284
32313
 
32285
32314
  exports.blueprints = index;