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
  */
@@ -659,17 +659,19 @@
659
659
  }
660
660
 
661
661
  class Box {
662
- constructor(_ref) {
663
- let {
662
+ constructor(args) {
663
+ const pageScale = document.body.currentCSSZoom ?? 1;
664
+ const factor = args instanceof DOMRect ? 1 + (1 - pageScale) / pageScale : 1;
665
+ const {
664
666
  x,
665
667
  y,
666
668
  width,
667
669
  height
668
- } = _ref;
669
- this.x = x;
670
- this.y = y;
671
- this.width = width;
672
- this.height = height;
670
+ } = args;
671
+ this.x = x * factor;
672
+ this.y = y * factor;
673
+ this.width = width * factor;
674
+ this.height = height * factor;
673
675
  }
674
676
  get top() {
675
677
  return this.y;
@@ -698,14 +700,16 @@
698
700
  }
699
701
  function getTargetBox(target) {
700
702
  if (Array.isArray(target)) {
703
+ const pageScale = document.body.currentCSSZoom ?? 1;
704
+ const factor = 1 + (1 - pageScale) / pageScale;
701
705
  return new Box({
702
- x: target[0],
703
- y: target[1],
704
- width: 0,
705
- height: 0
706
+ x: target[0] * factor,
707
+ y: target[1] * factor,
708
+ width: 0 * factor,
709
+ height: 0 * factor
706
710
  });
707
711
  } else {
708
- return target.getBoundingClientRect();
712
+ return new Box(target.getBoundingClientRect());
709
713
  }
710
714
  }
711
715
  function getElementBox(el) {
@@ -718,11 +722,12 @@
718
722
  height: document.documentElement.clientHeight
719
723
  });
720
724
  } else {
725
+ const pageScale = document.body.currentCSSZoom ?? 1;
721
726
  return new Box({
722
727
  x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
723
728
  y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
724
- width: visualViewport.width * visualViewport.scale,
725
- height: visualViewport.height * visualViewport.scale
729
+ width: visualViewport.width * visualViewport.scale / pageScale,
730
+ height: visualViewport.height * visualViewport.scale / pageScale
726
731
  });
727
732
  }
728
733
  } else {
@@ -740,7 +745,7 @@
740
745
 
741
746
  /** @see https://stackoverflow.com/a/57876601/2074736 */
742
747
  function nullifyTransforms(el) {
743
- const rect = el.getBoundingClientRect();
748
+ const rect = new Box(el.getBoundingClientRect());
744
749
  const style = getComputedStyle(el);
745
750
  const tx = style.transform;
746
751
  if (tx) {
@@ -1623,7 +1628,7 @@
1623
1628
  // Utilities
1624
1629
  function getPrefixedEventHandlers(attrs, suffix, getData) {
1625
1630
  return Object.keys(attrs).filter(key => isOn(key) && key.endsWith(suffix)).reduce((acc, key) => {
1626
- acc[key.slice(0, -suffix.length)] = event => attrs[key](event, getData(event));
1631
+ acc[key.slice(0, -suffix.length)] = event => callEvent(attrs[key], event, getData(event));
1627
1632
  return acc;
1628
1633
  }, {});
1629
1634
  }
@@ -4532,14 +4537,18 @@
4532
4537
  }
4533
4538
  const value = vue.toRef(() => props.value);
4534
4539
  const disabled = vue.computed(() => !!(group.disabled.value || props.disabled));
4535
- group.register({
4536
- id,
4537
- value,
4538
- disabled
4539
- }, vm);
4540
- vue.onBeforeUnmount(() => {
4541
- group.unregister(id);
4542
- });
4540
+ function register() {
4541
+ group?.register({
4542
+ id,
4543
+ value,
4544
+ disabled
4545
+ }, vm);
4546
+ }
4547
+ function unregister() {
4548
+ group?.unregister(id);
4549
+ }
4550
+ vue.onMounted(() => register());
4551
+ vue.onBeforeUnmount(() => unregister());
4543
4552
  const isSelected = vue.computed(() => {
4544
4553
  return group.isSelected(id);
4545
4554
  });
@@ -4567,7 +4576,9 @@
4567
4576
  selectedClass,
4568
4577
  value,
4569
4578
  disabled,
4570
- group
4579
+ group,
4580
+ register,
4581
+ unregister
4571
4582
  };
4572
4583
  }
4573
4584
  function useGroup(props, injectKey) {
@@ -5644,6 +5655,7 @@
5644
5655
  const href = vue.toRef(() => props.href);
5645
5656
  return {
5646
5657
  isLink,
5658
+ isRouterLink: vue.toRef(() => false),
5647
5659
  isClickable,
5648
5660
  href,
5649
5661
  linkProps: vue.reactive({
@@ -5667,8 +5679,10 @@
5667
5679
  return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
5668
5680
  });
5669
5681
  const href = vue.computed(() => props.to ? link.value?.route.value.href : props.href);
5682
+ const isRouterLink = vue.toRef(() => !!props.to);
5670
5683
  return {
5671
5684
  isLink,
5685
+ isRouterLink,
5672
5686
  isClickable,
5673
5687
  isActive,
5674
5688
  route: link.value?.route,
@@ -5676,7 +5690,9 @@
5676
5690
  href,
5677
5691
  linkProps: vue.reactive({
5678
5692
  href,
5679
- 'aria-current': vue.toRef(() => isActive.value ? 'page' : undefined)
5693
+ 'aria-current': vue.toRef(() => isActive.value ? 'page' : undefined),
5694
+ 'aria-disabled': vue.toRef(() => props.disabled && isLink.value ? 'true' : undefined),
5695
+ tabindex: vue.toRef(() => props.disabled && isLink.value ? '-1' : undefined)
5680
5696
  })
5681
5697
  };
5682
5698
  }
@@ -6126,7 +6142,7 @@
6126
6142
  if (props.active !== undefined) {
6127
6143
  return props.active;
6128
6144
  }
6129
- if (link.isLink.value) {
6145
+ if (link.isRouterLink.value) {
6130
6146
  return link.isActive?.value;
6131
6147
  }
6132
6148
  return group?.isSelected.value;
@@ -6154,7 +6170,7 @@
6154
6170
  });
6155
6171
  function onClick(e) {
6156
6172
  if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === '_blank')) return;
6157
- if (link.isLink.value) {
6173
+ if (link.isRouterLink.value) {
6158
6174
  link.navigate?.(e);
6159
6175
  } else {
6160
6176
  // Group active state for links is handled by useSelectLink
@@ -6167,7 +6183,7 @@
6167
6183
  const hasPrepend = !!(props.prependIcon || slots.prepend);
6168
6184
  const hasAppend = !!(props.appendIcon || slots.append);
6169
6185
  const hasIcon = !!(props.icon && props.icon !== true);
6170
- return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
6186
+ return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
6171
6187
  "type": Tag === 'a' ? undefined : 'button',
6172
6188
  "class": ['v-btn', group?.selectedClass.value, {
6173
6189
  'v-btn--active': isActive.value,
@@ -6183,11 +6199,11 @@
6183
6199
  }, 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],
6184
6200
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
6185
6201
  "aria-busy": props.loading ? true : undefined,
6186
- "disabled": isDisabled.value || undefined,
6202
+ "disabled": isDisabled.value && Tag !== 'a' || undefined,
6187
6203
  "tabindex": props.loading || props.readonly ? -1 : undefined,
6188
6204
  "onClick": onClick,
6189
6205
  "value": valueAttr.value
6190
- }, link.linkProps), {
6206
+ }), {
6191
6207
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createElementVNode("span", {
6192
6208
  "key": "prepend",
6193
6209
  "class": "v-btn__prepend"
@@ -7932,7 +7948,7 @@
7932
7948
  const rtl = goTo?.rtl.value;
7933
7949
  const target = (typeof _target === 'number' ? _target : getTarget$1(_target)) ?? 0;
7934
7950
  const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
7935
- const ease = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
7951
+ const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
7936
7952
  if (!ease) throw new TypeError(`Easing function "${options.easing}" not found.`);
7937
7953
  let targetLocation;
7938
7954
  if (typeof target === 'number') {
@@ -8600,6 +8616,7 @@
8600
8616
  } = provideTheme(props);
8601
8617
  const isActive = useProxiedModel(props, 'modelValue');
8602
8618
  const group = useGroupItem(props, VChipGroupSymbol, false);
8619
+ const slideGroup = useGroupItem(props, VSlideGroupSymbol, false);
8603
8620
  const link = useLink(props, attrs);
8604
8621
  const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
8605
8622
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
@@ -8613,6 +8630,15 @@
8613
8630
  emit('click:close', e);
8614
8631
  }
8615
8632
  }));
8633
+ vue.watch(isActive, val => {
8634
+ if (val) {
8635
+ group?.register();
8636
+ slideGroup?.register();
8637
+ } else {
8638
+ group?.unregister();
8639
+ slideGroup?.unregister();
8640
+ }
8641
+ });
8616
8642
  const {
8617
8643
  colorClasses,
8618
8644
  colorStyles,
@@ -8644,7 +8670,7 @@
8644
8670
  const hasFilter = !!(slots.filter || props.filter) && group;
8645
8671
  const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
8646
8672
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
8647
- return isActive.value && vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
8673
+ return isActive.value && vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
8648
8674
  "class": ['v-chip', {
8649
8675
  'v-chip--disabled': props.disabled,
8650
8676
  'v-chip--label': props.label,
@@ -8659,7 +8685,7 @@
8659
8685
  "tabindex": isClickable.value ? 0 : undefined,
8660
8686
  "onClick": onClick,
8661
8687
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
8662
- }, link.linkProps), {
8688
+ }), {
8663
8689
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
8664
8690
  "key": "filter"
8665
8691
  }, {
@@ -9862,7 +9888,7 @@
9862
9888
  if (props.activeColor) {
9863
9889
  deprecate('active-color', ['color', 'base-color']);
9864
9890
  }
9865
- return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
9891
+ return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
9866
9892
  "class": ['v-list-item', {
9867
9893
  'v-list-item--active': isActive.value,
9868
9894
  'v-list-item--disabled': props.disabled,
@@ -9878,7 +9904,7 @@
9878
9904
  "role": role.value,
9879
9905
  "onClick": onClick,
9880
9906
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9881
- }, link.linkProps), {
9907
+ }), {
9882
9908
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createElementVNode("div", {
9883
9909
  "key": "prepend",
9884
9910
  "class": "v-list-item__prepend"
@@ -14160,7 +14186,7 @@
14160
14186
  } else {
14161
14187
  if (!props.multiple && search.value == null) model.value = [];
14162
14188
  menu.value = false;
14163
- if (props.multiple || hasSelectionSlot.value) search.value = '';
14189
+ search.value = '';
14164
14190
  selectionIndex.value = -1;
14165
14191
  }
14166
14192
  });
@@ -14794,10 +14820,11 @@
14794
14820
  scopeId
14795
14821
  } = useScopeId();
14796
14822
  const overlay = vue.ref();
14797
- function onFocusin(e) {
14823
+ async function onFocusin(e) {
14798
14824
  const before = e.relatedTarget;
14799
14825
  const after = e.target;
14800
- if (before !== after && overlay.value?.contentEl &&
14826
+ await vue.nextTick();
14827
+ if (isActive.value && before !== after && overlay.value?.contentEl &&
14801
14828
  // We're the topmost dialog
14802
14829
  overlay.value?.globalTop &&
14803
14830
  // It isn't the document or the dialog body
@@ -14805,22 +14832,39 @@
14805
14832
  // It isn't inside the dialog body
14806
14833
  !overlay.value.contentEl.contains(after)) {
14807
14834
  const focusable = focusableChildren(overlay.value.contentEl);
14808
- if (!focusable.length) return;
14809
- const firstElement = focusable[0];
14810
- const lastElement = focusable[focusable.length - 1];
14811
- if (before === firstElement) {
14812
- lastElement.focus();
14813
- } else {
14814
- firstElement.focus();
14815
- }
14835
+ focusable[0]?.focus();
14836
+ }
14837
+ }
14838
+ function onKeydown(e) {
14839
+ if (e.key !== 'Tab' || !overlay.value?.contentEl) return;
14840
+ const focusable = focusableChildren(overlay.value.contentEl);
14841
+ if (!focusable.length) return;
14842
+ const firstElement = focusable[0];
14843
+ const lastElement = focusable[focusable.length - 1];
14844
+ const active = document.activeElement;
14845
+ if (e.shiftKey && active === firstElement) {
14846
+ e.preventDefault();
14847
+ lastElement.focus();
14848
+ } else if (!e.shiftKey && active === lastElement) {
14849
+ e.preventDefault();
14850
+ firstElement.focus();
14816
14851
  }
14817
14852
  }
14818
14853
  vue.onBeforeUnmount(() => {
14819
14854
  document.removeEventListener('focusin', onFocusin);
14855
+ document.removeEventListener('keydown', onKeydown);
14820
14856
  });
14821
14857
  if (IN_BROWSER) {
14822
14858
  vue.watch(() => isActive.value && props.retainFocus, val => {
14823
- val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
14859
+ if (val) {
14860
+ document.addEventListener('focusin', onFocusin, {
14861
+ once: true
14862
+ });
14863
+ document.addEventListener('keydown', onKeydown);
14864
+ } else {
14865
+ document.removeEventListener('focusin', onFocusin);
14866
+ document.removeEventListener('keydown', onKeydown);
14867
+ }
14824
14868
  }, {
14825
14869
  immediate: true
14826
14870
  });
@@ -15383,7 +15427,7 @@
15383
15427
  const hasImage = !!(slots.image || props.image);
15384
15428
  const hasCardItem = hasHeader || hasPrepend || hasAppend;
15385
15429
  const hasText = !!(slots.text || props.text != null);
15386
- return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
15430
+ return vue.withDirectives(vue.createVNode(Tag, vue.mergeProps(link.linkProps, {
15387
15431
  "class": ['v-card', {
15388
15432
  'v-card--disabled': props.disabled,
15389
15433
  'v-card--flat': props.flat,
@@ -15393,7 +15437,7 @@
15393
15437
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
15394
15438
  "onClick": isClickable && link.navigate,
15395
15439
  "tabindex": props.disabled ? -1 : undefined
15396
- }, link.linkProps), {
15440
+ }), {
15397
15441
  default: () => [hasImage && vue.createElementVNode("div", {
15398
15442
  "key": "image",
15399
15443
  "class": "v-card__image"
@@ -19217,6 +19261,7 @@
19217
19261
  // Types
19218
19262
 
19219
19263
  const makeVComboboxProps = propsFactory({
19264
+ alwaysFilter: Boolean,
19220
19265
  autoSelectFirst: {
19221
19266
  type: [Boolean, String]
19222
19267
  },
@@ -19261,7 +19306,6 @@
19261
19306
  const isFocused = vue.shallowRef(false);
19262
19307
  const isPristine = vue.shallowRef(true);
19263
19308
  const listHasFocus = vue.shallowRef(false);
19264
- const showAllItemsForNoMatch = vue.shallowRef(false);
19265
19309
  const vMenuRef = vue.ref();
19266
19310
  const vVirtualScrollRef = vue.ref();
19267
19311
  const selectionIndex = vue.shallowRef(-1);
@@ -19317,22 +19361,14 @@
19317
19361
  const {
19318
19362
  filteredItems,
19319
19363
  getMatches
19320
- } = useFilter(props, items, search);
19321
- const hasMatchingItems = vue.computed(() => {
19322
- return props.hideSelected ? filteredItems.value.some(filteredItem => !model.value.some(s => s.value === filteredItem.value)) : filteredItems.value.length > 0;
19323
- });
19364
+ } = useFilter(props, items, () => props.alwaysFilter || !isPristine.value ? search.value : '');
19324
19365
  const displayItems = vue.computed(() => {
19325
19366
  if (props.hideSelected) {
19326
19367
  return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
19327
19368
  }
19328
- if (filteredItems.value.length === 0 && showAllItemsForNoMatch.value) {
19329
- return items.value;
19330
- }
19331
19369
  return filteredItems.value;
19332
19370
  });
19333
- const menuDisabled = vue.computed(() => {
19334
- return form.isReadonly.value || form.isDisabled.value;
19335
- });
19371
+ const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
19336
19372
  const _menu = useProxiedModel(props, 'menu');
19337
19373
  const menu = vue.computed({
19338
19374
  get: () => _menu.value,
@@ -19349,17 +19385,13 @@
19349
19385
  ariaLabel
19350
19386
  } = useMenuActivator(props, menu);
19351
19387
  vue.watch(_search, value => {
19352
- showAllItemsForNoMatch.value = false;
19353
19388
  if (cleared) {
19354
19389
  // wait for clear to finish, VTextField sets _search to null
19355
19390
  // then search computed triggers and updates _search to ''
19356
19391
  vue.nextTick(() => cleared = false);
19357
19392
  } else if (isFocused.value && !menu.value) {
19358
- menu.value = hasMatchingItems.value || !props.hideNoData;
19359
- } else if (isFocused.value && menu.value && !hasMatchingItems.value && props.hideNoData) {
19360
- menu.value = false;
19393
+ menu.value = true;
19361
19394
  }
19362
- isPristine.value = !value;
19363
19395
  emit('update:search', value);
19364
19396
  });
19365
19397
  vue.watch(model, value => {
@@ -19376,6 +19408,7 @@
19376
19408
  const listEvents = useScrolling(listRef, vTextFieldRef);
19377
19409
  function onClear(e) {
19378
19410
  cleared = true;
19411
+ vue.nextTick(() => cleared = false);
19379
19412
  if (props.openOnClear) {
19380
19413
  menu.value = true;
19381
19414
  }
@@ -19538,19 +19571,13 @@
19538
19571
  }
19539
19572
  }
19540
19573
  });
19541
- vue.watch(menu, val => {
19542
- if (!props.hideSelected && val && model.value.length) {
19574
+ vue.watch(menu, () => {
19575
+ if (!props.hideSelected && menu.value && model.value.length) {
19543
19576
  const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
19544
19577
  IN_BROWSER && window.requestAnimationFrame(() => {
19545
19578
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
19546
19579
  });
19547
19580
  }
19548
- if (val && search.value && !hasMatchingItems.value) {
19549
- showAllItemsForNoMatch.value = true;
19550
- }
19551
- isPristine.value = !search.value;
19552
- }, {
19553
- immediate: true
19554
19581
  });
19555
19582
  vue.watch(items, (newVal, oldVal) => {
19556
19583
  if (menu.value) return;
@@ -19747,7 +19774,7 @@
19747
19774
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
19748
19775
  args[_key] = arguments[_key];
19749
19776
  }
19750
- return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
19777
+ return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
19751
19778
  "class": "v-combobox__menu-icon",
19752
19779
  "color": vTextFieldRef.value?.fieldIconColor,
19753
19780
  "icon": props.menuIcon,
@@ -19890,20 +19917,20 @@
19890
19917
  }, v => {
19891
19918
  return [...v.values()];
19892
19919
  });
19893
- function getItemKey(item) {
19894
- return isObject(item.value) ? item.key : item.value;
19895
- }
19896
19920
  function expand(item, value) {
19897
19921
  const newExpanded = new Set(expanded.value);
19922
+ const rawValue = vue.toRaw(item.value);
19898
19923
  if (!value) {
19899
- newExpanded.delete(getItemKey(item));
19924
+ const item = [...expanded.value].find(x => vue.toRaw(x) === rawValue);
19925
+ newExpanded.delete(item);
19900
19926
  } else {
19901
- newExpanded.add(getItemKey(item));
19927
+ newExpanded.add(rawValue);
19902
19928
  }
19903
19929
  expanded.value = newExpanded;
19904
19930
  }
19905
19931
  function isExpanded(item) {
19906
- return expanded.value.has(getItemKey(item));
19932
+ const rawValue = vue.toRaw(item.value);
19933
+ return [...expanded.value].some(x => vue.toRaw(x) === rawValue);
19907
19934
  }
19908
19935
  function toggleExpand(item) {
19909
19936
  expand(item, !isExpanded(item));
@@ -25055,7 +25082,8 @@
25055
25082
  'onClick:clear': onClear
25056
25083
  };
25057
25084
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
25058
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
25085
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
25086
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
25059
25087
  return vue.createVNode(VInput, vue.mergeProps({
25060
25088
  "ref": vInputRef,
25061
25089
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -26766,6 +26794,7 @@
26766
26794
  useRender(() => {
26767
26795
  const {
26768
26796
  modelValue: _,
26797
+ type,
26769
26798
  ...textFieldProps
26770
26799
  } = VTextField.filterProps(props);
26771
26800
  function incrementControlNode() {
@@ -29215,7 +29244,7 @@
29215
29244
  } = useFocus(props);
29216
29245
  const control = vue.ref();
29217
29246
  const inputRef = vue.ref();
29218
- const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
29247
+ const isForcedColorsModeActive = SUPPORTS_MATCH_MEDIA && window.matchMedia('(forced-colors: active)').matches;
29219
29248
  const loaderColor = vue.toRef(() => {
29220
29249
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
29221
29250
  });
@@ -31309,6 +31338,7 @@
31309
31338
  ...itemProps,
31310
31339
  ...activatorProps,
31311
31340
  value: itemProps?.value,
31341
+ indentLines: indentLines.node,
31312
31342
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
31313
31343
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
31314
31344
  };
@@ -31322,7 +31352,6 @@
31322
31352
  }, listItemProps, {
31323
31353
  "hasCustomPrepend": !!slots.prepend,
31324
31354
  "hideActions": props.hideActions,
31325
- "indentLines": indentLines.node,
31326
31355
  "value": props.returnObject ? item.raw : itemProps.value,
31327
31356
  "loading": loading
31328
31357
  }), slotsWithItem));
@@ -33789,7 +33818,7 @@
33789
33818
  }), events, data, {
33790
33819
  "ref_for": true,
33791
33820
  "ref": eventsRef
33792
- }), [slot?.(scope) ?? genName(eventSummary)]), [[vue.resolveDirective("ripple"), props.eventRipple ?? true]]);
33821
+ }), [slot?.(scope) ?? genName(eventSummary)]), [[Ripple, props.eventRipple ?? true]]);
33793
33822
  }
33794
33823
  function genName(eventSummary) {
33795
33824
  return vue.createElementVNode("div", {
@@ -33827,7 +33856,7 @@
33827
33856
  },
33828
33857
  "ref_for": true,
33829
33858
  "ref": eventsRef
33830
- }, events), null), [[vue.resolveDirective("ripple"), props.eventRipple ?? true]]);
33859
+ }, events), null), [[Ripple, props.eventRipple ?? true]]);
33831
33860
  }
33832
33861
  function getVisibleEvents() {
33833
33862
  const days = base.days.value;
@@ -33955,6 +33984,9 @@
33955
33984
 
33956
33985
  const VCalendar = genericComponent()({
33957
33986
  name: 'VCalendar',
33987
+ directives: {
33988
+ vResize: Resize
33989
+ },
33958
33990
  props: {
33959
33991
  modelValue: {
33960
33992
  type: [String, Number, Date],
@@ -34239,9 +34271,8 @@
34239
34271
  "categories": categories,
34240
34272
  "onClick:date": (e, day) => {
34241
34273
  if (attrs['onUpdate:modelValue']) emit('update:modelValue', day.date);
34242
- if (attrs['onClick:date']) emit('click:date', e, day);
34243
34274
  }
34244
- }), base.getScopedSlots()), [[vue.resolveDirective("resize"), base.updateEventVisibility, void 0, {
34275
+ }), base.getScopedSlots()), [[Resize, base.updateEventVisibility, void 0, {
34245
34276
  quiet: true
34246
34277
  }]]);
34247
34278
  });
@@ -34997,7 +35028,8 @@
34997
35028
  const dividerProps = VDivider.filterProps(props);
34998
35029
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
34999
35030
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
35000
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
35031
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
35032
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
35001
35033
  const inputNode = vue.createElementVNode("input", vue.mergeProps({
35002
35034
  "ref": inputRef,
35003
35035
  "type": "file",
@@ -37877,7 +37909,7 @@
37877
37909
  };
37878
37910
  });
37879
37911
  }
37880
- const version$1 = "3.10.2";
37912
+ const version$1 = "3.10.4";
37881
37913
  createVuetify$1.version = version$1;
37882
37914
 
37883
37915
  // Vue's inject() can only be used in setup
@@ -38175,7 +38207,7 @@
38175
38207
 
38176
38208
  /* eslint-disable local-rules/sort-imports */
38177
38209
 
38178
- const version = "3.10.2";
38210
+ const version = "3.10.4";
38179
38211
 
38180
38212
  /* eslint-disable local-rules/sort-imports */
38181
38213