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,10 +1,10 @@
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
  */
6
6
 
7
- import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, toValue, watch, onBeforeUnmount, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveDirective, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, toValue, watch, onBeforeUnmount, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -655,17 +655,19 @@ function getAxis(anchor) {
655
655
  }
656
656
 
657
657
  class Box {
658
- constructor(_ref) {
659
- let {
658
+ constructor(args) {
659
+ const pageScale = document.body.currentCSSZoom ?? 1;
660
+ const factor = args instanceof DOMRect ? 1 + (1 - pageScale) / pageScale : 1;
661
+ const {
660
662
  x,
661
663
  y,
662
664
  width,
663
665
  height
664
- } = _ref;
665
- this.x = x;
666
- this.y = y;
667
- this.width = width;
668
- this.height = height;
666
+ } = args;
667
+ this.x = x * factor;
668
+ this.y = y * factor;
669
+ this.width = width * factor;
670
+ this.height = height * factor;
669
671
  }
670
672
  get top() {
671
673
  return this.y;
@@ -694,14 +696,16 @@ function getOverflow(a, b) {
694
696
  }
695
697
  function getTargetBox(target) {
696
698
  if (Array.isArray(target)) {
699
+ const pageScale = document.body.currentCSSZoom ?? 1;
700
+ const factor = 1 + (1 - pageScale) / pageScale;
697
701
  return new Box({
698
- x: target[0],
699
- y: target[1],
700
- width: 0,
701
- height: 0
702
+ x: target[0] * factor,
703
+ y: target[1] * factor,
704
+ width: 0 * factor,
705
+ height: 0 * factor
702
706
  });
703
707
  } else {
704
- return target.getBoundingClientRect();
708
+ return new Box(target.getBoundingClientRect());
705
709
  }
706
710
  }
707
711
  function getElementBox(el) {
@@ -714,11 +718,12 @@ function getElementBox(el) {
714
718
  height: document.documentElement.clientHeight
715
719
  });
716
720
  } else {
721
+ const pageScale = document.body.currentCSSZoom ?? 1;
717
722
  return new Box({
718
723
  x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
719
724
  y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
720
- width: visualViewport.width * visualViewport.scale,
721
- height: visualViewport.height * visualViewport.scale
725
+ width: visualViewport.width * visualViewport.scale / pageScale,
726
+ height: visualViewport.height * visualViewport.scale / pageScale
722
727
  });
723
728
  }
724
729
  } else {
@@ -736,7 +741,7 @@ function getElementBox(el) {
736
741
 
737
742
  /** @see https://stackoverflow.com/a/57876601/2074736 */
738
743
  function nullifyTransforms(el) {
739
- const rect = el.getBoundingClientRect();
744
+ const rect = new Box(el.getBoundingClientRect());
740
745
  const style = getComputedStyle(el);
741
746
  const tx = style.transform;
742
747
  if (tx) {
@@ -1619,7 +1624,7 @@ function useTransition(source, options) {
1619
1624
  // Utilities
1620
1625
  function getPrefixedEventHandlers(attrs, suffix, getData) {
1621
1626
  return Object.keys(attrs).filter(key => isOn(key) && key.endsWith(suffix)).reduce((acc, key) => {
1622
- acc[key.slice(0, -suffix.length)] = event => attrs[key](event, getData(event));
1627
+ acc[key.slice(0, -suffix.length)] = event => callEvent(attrs[key], event, getData(event));
1623
1628
  return acc;
1624
1629
  }, {});
1625
1630
  }
@@ -4528,14 +4533,18 @@ function useGroupItem(props, injectKey) {
4528
4533
  }
4529
4534
  const value = toRef(() => props.value);
4530
4535
  const disabled = computed(() => !!(group.disabled.value || props.disabled));
4531
- group.register({
4532
- id,
4533
- value,
4534
- disabled
4535
- }, vm);
4536
- onBeforeUnmount(() => {
4537
- group.unregister(id);
4538
- });
4536
+ function register() {
4537
+ group?.register({
4538
+ id,
4539
+ value,
4540
+ disabled
4541
+ }, vm);
4542
+ }
4543
+ function unregister() {
4544
+ group?.unregister(id);
4545
+ }
4546
+ onMounted(() => register());
4547
+ onBeforeUnmount(() => unregister());
4539
4548
  const isSelected = computed(() => {
4540
4549
  return group.isSelected(id);
4541
4550
  });
@@ -4563,7 +4572,9 @@ function useGroupItem(props, injectKey) {
4563
4572
  selectedClass,
4564
4573
  value,
4565
4574
  disabled,
4566
- group
4575
+ group,
4576
+ register,
4577
+ unregister
4567
4578
  };
4568
4579
  }
4569
4580
  function useGroup(props, injectKey) {
@@ -5640,6 +5651,7 @@ function useLink(props, attrs) {
5640
5651
  const href = toRef(() => props.href);
5641
5652
  return {
5642
5653
  isLink,
5654
+ isRouterLink: toRef(() => false),
5643
5655
  isClickable,
5644
5656
  href,
5645
5657
  linkProps: reactive({
@@ -5663,8 +5675,10 @@ function useLink(props, attrs) {
5663
5675
  return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
5664
5676
  });
5665
5677
  const href = computed(() => props.to ? link.value?.route.value.href : props.href);
5678
+ const isRouterLink = toRef(() => !!props.to);
5666
5679
  return {
5667
5680
  isLink,
5681
+ isRouterLink,
5668
5682
  isClickable,
5669
5683
  isActive,
5670
5684
  route: link.value?.route,
@@ -5672,7 +5686,9 @@ function useLink(props, attrs) {
5672
5686
  href,
5673
5687
  linkProps: reactive({
5674
5688
  href,
5675
- 'aria-current': toRef(() => isActive.value ? 'page' : undefined)
5689
+ 'aria-current': toRef(() => isActive.value ? 'page' : undefined),
5690
+ 'aria-disabled': toRef(() => props.disabled && isLink.value ? 'true' : undefined),
5691
+ tabindex: toRef(() => props.disabled && isLink.value ? '-1' : undefined)
5676
5692
  })
5677
5693
  };
5678
5694
  }
@@ -6122,7 +6138,7 @@ const VBtn = genericComponent()({
6122
6138
  if (props.active !== undefined) {
6123
6139
  return props.active;
6124
6140
  }
6125
- if (link.isLink.value) {
6141
+ if (link.isRouterLink.value) {
6126
6142
  return link.isActive?.value;
6127
6143
  }
6128
6144
  return group?.isSelected.value;
@@ -6150,7 +6166,7 @@ const VBtn = genericComponent()({
6150
6166
  });
6151
6167
  function onClick(e) {
6152
6168
  if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === '_blank')) return;
6153
- if (link.isLink.value) {
6169
+ if (link.isRouterLink.value) {
6154
6170
  link.navigate?.(e);
6155
6171
  } else {
6156
6172
  // Group active state for links is handled by useSelectLink
@@ -6163,7 +6179,7 @@ const VBtn = genericComponent()({
6163
6179
  const hasPrepend = !!(props.prependIcon || slots.prepend);
6164
6180
  const hasAppend = !!(props.appendIcon || slots.append);
6165
6181
  const hasIcon = !!(props.icon && props.icon !== true);
6166
- return withDirectives(createVNode(Tag, mergeProps({
6182
+ return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
6167
6183
  "type": Tag === 'a' ? undefined : 'button',
6168
6184
  "class": ['v-btn', group?.selectedClass.value, {
6169
6185
  'v-btn--active': isActive.value,
@@ -6179,11 +6195,11 @@ const VBtn = genericComponent()({
6179
6195
  }, 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],
6180
6196
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
6181
6197
  "aria-busy": props.loading ? true : undefined,
6182
- "disabled": isDisabled.value || undefined,
6198
+ "disabled": isDisabled.value && Tag !== 'a' || undefined,
6183
6199
  "tabindex": props.loading || props.readonly ? -1 : undefined,
6184
6200
  "onClick": onClick,
6185
6201
  "value": valueAttr.value
6186
- }, link.linkProps), {
6202
+ }), {
6187
6203
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createElementVNode("span", {
6188
6204
  "key": "prepend",
6189
6205
  "class": "v-btn__prepend"
@@ -7928,7 +7944,7 @@ async function scrollTo(_target, _options, horizontal, goTo) {
7928
7944
  const rtl = goTo?.rtl.value;
7929
7945
  const target = (typeof _target === 'number' ? _target : getTarget$1(_target)) ?? 0;
7930
7946
  const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
7931
- const ease = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
7947
+ const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
7932
7948
  if (!ease) throw new TypeError(`Easing function "${options.easing}" not found.`);
7933
7949
  let targetLocation;
7934
7950
  if (typeof target === 'number') {
@@ -8596,6 +8612,7 @@ const VChip = genericComponent()({
8596
8612
  } = provideTheme(props);
8597
8613
  const isActive = useProxiedModel(props, 'modelValue');
8598
8614
  const group = useGroupItem(props, VChipGroupSymbol, false);
8615
+ const slideGroup = useGroupItem(props, VSlideGroupSymbol, false);
8599
8616
  const link = useLink(props, attrs);
8600
8617
  const isLink = toRef(() => props.link !== false && link.isLink.value);
8601
8618
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
@@ -8609,6 +8626,15 @@ const VChip = genericComponent()({
8609
8626
  emit('click:close', e);
8610
8627
  }
8611
8628
  }));
8629
+ watch(isActive, val => {
8630
+ if (val) {
8631
+ group?.register();
8632
+ slideGroup?.register();
8633
+ } else {
8634
+ group?.unregister();
8635
+ slideGroup?.unregister();
8636
+ }
8637
+ });
8612
8638
  const {
8613
8639
  colorClasses,
8614
8640
  colorStyles,
@@ -8640,7 +8666,7 @@ const VChip = genericComponent()({
8640
8666
  const hasFilter = !!(slots.filter || props.filter) && group;
8641
8667
  const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
8642
8668
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
8643
- return isActive.value && withDirectives(createVNode(Tag, mergeProps({
8669
+ return isActive.value && withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
8644
8670
  "class": ['v-chip', {
8645
8671
  'v-chip--disabled': props.disabled,
8646
8672
  'v-chip--label': props.label,
@@ -8655,7 +8681,7 @@ const VChip = genericComponent()({
8655
8681
  "tabindex": isClickable.value ? 0 : undefined,
8656
8682
  "onClick": onClick,
8657
8683
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
8658
- }, link.linkProps), {
8684
+ }), {
8659
8685
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VExpandXTransition, {
8660
8686
  "key": "filter"
8661
8687
  }, {
@@ -9858,7 +9884,7 @@ const VListItem = genericComponent()({
9858
9884
  if (props.activeColor) {
9859
9885
  deprecate('active-color', ['color', 'base-color']);
9860
9886
  }
9861
- return withDirectives(createVNode(Tag, mergeProps({
9887
+ return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
9862
9888
  "class": ['v-list-item', {
9863
9889
  'v-list-item--active': isActive.value,
9864
9890
  'v-list-item--disabled': props.disabled,
@@ -9874,7 +9900,7 @@ const VListItem = genericComponent()({
9874
9900
  "role": role.value,
9875
9901
  "onClick": onClick,
9876
9902
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9877
- }, link.linkProps), {
9903
+ }), {
9878
9904
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createElementVNode("div", {
9879
9905
  "key": "prepend",
9880
9906
  "class": "v-list-item__prepend"
@@ -14156,7 +14182,7 @@ const VAutocomplete = genericComponent()({
14156
14182
  } else {
14157
14183
  if (!props.multiple && search.value == null) model.value = [];
14158
14184
  menu.value = false;
14159
- if (props.multiple || hasSelectionSlot.value) search.value = '';
14185
+ search.value = '';
14160
14186
  selectionIndex.value = -1;
14161
14187
  }
14162
14188
  });
@@ -14790,10 +14816,11 @@ const VDialog = genericComponent()({
14790
14816
  scopeId
14791
14817
  } = useScopeId();
14792
14818
  const overlay = ref();
14793
- function onFocusin(e) {
14819
+ async function onFocusin(e) {
14794
14820
  const before = e.relatedTarget;
14795
14821
  const after = e.target;
14796
- if (before !== after && overlay.value?.contentEl &&
14822
+ await nextTick();
14823
+ if (isActive.value && before !== after && overlay.value?.contentEl &&
14797
14824
  // We're the topmost dialog
14798
14825
  overlay.value?.globalTop &&
14799
14826
  // It isn't the document or the dialog body
@@ -14801,22 +14828,39 @@ const VDialog = genericComponent()({
14801
14828
  // It isn't inside the dialog body
14802
14829
  !overlay.value.contentEl.contains(after)) {
14803
14830
  const focusable = focusableChildren(overlay.value.contentEl);
14804
- if (!focusable.length) return;
14805
- const firstElement = focusable[0];
14806
- const lastElement = focusable[focusable.length - 1];
14807
- if (before === firstElement) {
14808
- lastElement.focus();
14809
- } else {
14810
- firstElement.focus();
14811
- }
14831
+ focusable[0]?.focus();
14832
+ }
14833
+ }
14834
+ function onKeydown(e) {
14835
+ if (e.key !== 'Tab' || !overlay.value?.contentEl) return;
14836
+ const focusable = focusableChildren(overlay.value.contentEl);
14837
+ if (!focusable.length) return;
14838
+ const firstElement = focusable[0];
14839
+ const lastElement = focusable[focusable.length - 1];
14840
+ const active = document.activeElement;
14841
+ if (e.shiftKey && active === firstElement) {
14842
+ e.preventDefault();
14843
+ lastElement.focus();
14844
+ } else if (!e.shiftKey && active === lastElement) {
14845
+ e.preventDefault();
14846
+ firstElement.focus();
14812
14847
  }
14813
14848
  }
14814
14849
  onBeforeUnmount(() => {
14815
14850
  document.removeEventListener('focusin', onFocusin);
14851
+ document.removeEventListener('keydown', onKeydown);
14816
14852
  });
14817
14853
  if (IN_BROWSER) {
14818
14854
  watch(() => isActive.value && props.retainFocus, val => {
14819
- val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
14855
+ if (val) {
14856
+ document.addEventListener('focusin', onFocusin, {
14857
+ once: true
14858
+ });
14859
+ document.addEventListener('keydown', onKeydown);
14860
+ } else {
14861
+ document.removeEventListener('focusin', onFocusin);
14862
+ document.removeEventListener('keydown', onKeydown);
14863
+ }
14820
14864
  }, {
14821
14865
  immediate: true
14822
14866
  });
@@ -15379,7 +15423,7 @@ const VCard = genericComponent()({
15379
15423
  const hasImage = !!(slots.image || props.image);
15380
15424
  const hasCardItem = hasHeader || hasPrepend || hasAppend;
15381
15425
  const hasText = !!(slots.text || props.text != null);
15382
- return withDirectives(createVNode(Tag, mergeProps({
15426
+ return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
15383
15427
  "class": ['v-card', {
15384
15428
  'v-card--disabled': props.disabled,
15385
15429
  'v-card--flat': props.flat,
@@ -15389,7 +15433,7 @@ const VCard = genericComponent()({
15389
15433
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
15390
15434
  "onClick": isClickable && link.navigate,
15391
15435
  "tabindex": props.disabled ? -1 : undefined
15392
- }, link.linkProps), {
15436
+ }), {
15393
15437
  default: () => [hasImage && createElementVNode("div", {
15394
15438
  "key": "image",
15395
15439
  "class": "v-card__image"
@@ -19213,6 +19257,7 @@ const VColorPicker = defineComponent({
19213
19257
  // Types
19214
19258
 
19215
19259
  const makeVComboboxProps = propsFactory({
19260
+ alwaysFilter: Boolean,
19216
19261
  autoSelectFirst: {
19217
19262
  type: [Boolean, String]
19218
19263
  },
@@ -19257,7 +19302,6 @@ const VCombobox = genericComponent()({
19257
19302
  const isFocused = shallowRef(false);
19258
19303
  const isPristine = shallowRef(true);
19259
19304
  const listHasFocus = shallowRef(false);
19260
- const showAllItemsForNoMatch = shallowRef(false);
19261
19305
  const vMenuRef = ref();
19262
19306
  const vVirtualScrollRef = ref();
19263
19307
  const selectionIndex = shallowRef(-1);
@@ -19313,22 +19357,14 @@ const VCombobox = genericComponent()({
19313
19357
  const {
19314
19358
  filteredItems,
19315
19359
  getMatches
19316
- } = useFilter(props, items, search);
19317
- const hasMatchingItems = computed(() => {
19318
- return props.hideSelected ? filteredItems.value.some(filteredItem => !model.value.some(s => s.value === filteredItem.value)) : filteredItems.value.length > 0;
19319
- });
19360
+ } = useFilter(props, items, () => props.alwaysFilter || !isPristine.value ? search.value : '');
19320
19361
  const displayItems = computed(() => {
19321
19362
  if (props.hideSelected) {
19322
19363
  return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
19323
19364
  }
19324
- if (filteredItems.value.length === 0 && showAllItemsForNoMatch.value) {
19325
- return items.value;
19326
- }
19327
19365
  return filteredItems.value;
19328
19366
  });
19329
- const menuDisabled = computed(() => {
19330
- return form.isReadonly.value || form.isDisabled.value;
19331
- });
19367
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
19332
19368
  const _menu = useProxiedModel(props, 'menu');
19333
19369
  const menu = computed({
19334
19370
  get: () => _menu.value,
@@ -19345,17 +19381,13 @@ const VCombobox = genericComponent()({
19345
19381
  ariaLabel
19346
19382
  } = useMenuActivator(props, menu);
19347
19383
  watch(_search, value => {
19348
- showAllItemsForNoMatch.value = false;
19349
19384
  if (cleared) {
19350
19385
  // wait for clear to finish, VTextField sets _search to null
19351
19386
  // then search computed triggers and updates _search to ''
19352
19387
  nextTick(() => cleared = false);
19353
19388
  } else if (isFocused.value && !menu.value) {
19354
- menu.value = hasMatchingItems.value || !props.hideNoData;
19355
- } else if (isFocused.value && menu.value && !hasMatchingItems.value && props.hideNoData) {
19356
- menu.value = false;
19389
+ menu.value = true;
19357
19390
  }
19358
- isPristine.value = !value;
19359
19391
  emit('update:search', value);
19360
19392
  });
19361
19393
  watch(model, value => {
@@ -19372,6 +19404,7 @@ const VCombobox = genericComponent()({
19372
19404
  const listEvents = useScrolling(listRef, vTextFieldRef);
19373
19405
  function onClear(e) {
19374
19406
  cleared = true;
19407
+ nextTick(() => cleared = false);
19375
19408
  if (props.openOnClear) {
19376
19409
  menu.value = true;
19377
19410
  }
@@ -19534,19 +19567,13 @@ const VCombobox = genericComponent()({
19534
19567
  }
19535
19568
  }
19536
19569
  });
19537
- watch(menu, val => {
19538
- if (!props.hideSelected && val && model.value.length) {
19570
+ watch(menu, () => {
19571
+ if (!props.hideSelected && menu.value && model.value.length) {
19539
19572
  const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
19540
19573
  IN_BROWSER && window.requestAnimationFrame(() => {
19541
19574
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
19542
19575
  });
19543
19576
  }
19544
- if (val && search.value && !hasMatchingItems.value) {
19545
- showAllItemsForNoMatch.value = true;
19546
- }
19547
- isPristine.value = !search.value;
19548
- }, {
19549
- immediate: true
19550
19577
  });
19551
19578
  watch(items, (newVal, oldVal) => {
19552
19579
  if (menu.value) return;
@@ -19743,7 +19770,7 @@ const VCombobox = genericComponent()({
19743
19770
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
19744
19771
  args[_key] = arguments[_key];
19745
19772
  }
19746
- return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
19773
+ return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
19747
19774
  "class": "v-combobox__menu-icon",
19748
19775
  "color": vTextFieldRef.value?.fieldIconColor,
19749
19776
  "icon": props.menuIcon,
@@ -19886,20 +19913,20 @@ function provideExpanded(props) {
19886
19913
  }, v => {
19887
19914
  return [...v.values()];
19888
19915
  });
19889
- function getItemKey(item) {
19890
- return isObject(item.value) ? item.key : item.value;
19891
- }
19892
19916
  function expand(item, value) {
19893
19917
  const newExpanded = new Set(expanded.value);
19918
+ const rawValue = toRaw(item.value);
19894
19919
  if (!value) {
19895
- newExpanded.delete(getItemKey(item));
19920
+ const item = [...expanded.value].find(x => toRaw(x) === rawValue);
19921
+ newExpanded.delete(item);
19896
19922
  } else {
19897
- newExpanded.add(getItemKey(item));
19923
+ newExpanded.add(rawValue);
19898
19924
  }
19899
19925
  expanded.value = newExpanded;
19900
19926
  }
19901
19927
  function isExpanded(item) {
19902
- return expanded.value.has(getItemKey(item));
19928
+ const rawValue = toRaw(item.value);
19929
+ return [...expanded.value].some(x => toRaw(x) === rawValue);
19903
19930
  }
19904
19931
  function toggleExpand(item) {
19905
19932
  expand(item, !isExpanded(item));
@@ -25051,7 +25078,8 @@ const VFileInput = genericComponent()({
25051
25078
  'onClick:clear': onClear
25052
25079
  };
25053
25080
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
25054
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
25081
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
25082
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
25055
25083
  return createVNode(VInput, mergeProps({
25056
25084
  "ref": vInputRef,
25057
25085
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -26762,6 +26790,7 @@ const VNumberInput = genericComponent()({
26762
26790
  useRender(() => {
26763
26791
  const {
26764
26792
  modelValue: _,
26793
+ type,
26765
26794
  ...textFieldProps
26766
26795
  } = VTextField.filterProps(props);
26767
26796
  function incrementControlNode() {
@@ -29211,7 +29240,7 @@ const VSwitch = genericComponent()({
29211
29240
  } = useFocus(props);
29212
29241
  const control = ref();
29213
29242
  const inputRef = ref();
29214
- const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
29243
+ const isForcedColorsModeActive = SUPPORTS_MATCH_MEDIA && window.matchMedia('(forced-colors: active)').matches;
29215
29244
  const loaderColor = toRef(() => {
29216
29245
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
29217
29246
  });
@@ -31305,6 +31334,7 @@ const VTreeviewChildren = genericComponent()({
31305
31334
  ...itemProps,
31306
31335
  ...activatorProps,
31307
31336
  value: itemProps?.value,
31337
+ indentLines: indentLines.node,
31308
31338
  onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
31309
31339
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
31310
31340
  };
@@ -31318,7 +31348,6 @@ const VTreeviewChildren = genericComponent()({
31318
31348
  }, listItemProps, {
31319
31349
  "hasCustomPrepend": !!slots.prepend,
31320
31350
  "hideActions": props.hideActions,
31321
- "indentLines": indentLines.node,
31322
31351
  "value": props.returnObject ? item.raw : itemProps.value,
31323
31352
  "loading": loading
31324
31353
  }), slotsWithItem));
@@ -33785,7 +33814,7 @@ function useCalendarWithEvents(props, slots, attrs) {
33785
33814
  }), events, data, {
33786
33815
  "ref_for": true,
33787
33816
  "ref": eventsRef
33788
- }), [slot?.(scope) ?? genName(eventSummary)]), [[resolveDirective("ripple"), props.eventRipple ?? true]]);
33817
+ }), [slot?.(scope) ?? genName(eventSummary)]), [[Ripple, props.eventRipple ?? true]]);
33789
33818
  }
33790
33819
  function genName(eventSummary) {
33791
33820
  return createElementVNode("div", {
@@ -33823,7 +33852,7 @@ function useCalendarWithEvents(props, slots, attrs) {
33823
33852
  },
33824
33853
  "ref_for": true,
33825
33854
  "ref": eventsRef
33826
- }, events), null), [[resolveDirective("ripple"), props.eventRipple ?? true]]);
33855
+ }, events), null), [[Ripple, props.eventRipple ?? true]]);
33827
33856
  }
33828
33857
  function getVisibleEvents() {
33829
33858
  const days = base.days.value;
@@ -33951,6 +33980,9 @@ function useCalendarWithEvents(props, slots, attrs) {
33951
33980
 
33952
33981
  const VCalendar = genericComponent()({
33953
33982
  name: 'VCalendar',
33983
+ directives: {
33984
+ vResize: Resize
33985
+ },
33954
33986
  props: {
33955
33987
  modelValue: {
33956
33988
  type: [String, Number, Date],
@@ -34235,9 +34267,8 @@ const VCalendar = genericComponent()({
34235
34267
  "categories": categories,
34236
34268
  "onClick:date": (e, day) => {
34237
34269
  if (attrs['onUpdate:modelValue']) emit('update:modelValue', day.date);
34238
- if (attrs['onClick:date']) emit('click:date', e, day);
34239
34270
  }
34240
- }), base.getScopedSlots()), [[resolveDirective("resize"), base.updateEventVisibility, void 0, {
34271
+ }), base.getScopedSlots()), [[Resize, base.updateEventVisibility, void 0, {
34241
34272
  quiet: true
34242
34273
  }]]);
34243
34274
  });
@@ -34993,7 +35024,8 @@ const VFileUpload = genericComponent()({
34993
35024
  const dividerProps = VDivider.filterProps(props);
34994
35025
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
34995
35026
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
34996
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
35027
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
35028
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
34997
35029
  const inputNode = createElementVNode("input", mergeProps({
34998
35030
  "ref": inputRef,
34999
35031
  "type": "file",
@@ -37873,7 +37905,7 @@ function createVuetify$1() {
37873
37905
  };
37874
37906
  });
37875
37907
  }
37876
- const version$1 = "3.10.2";
37908
+ const version$1 = "3.10.4";
37877
37909
  createVuetify$1.version = version$1;
37878
37910
 
37879
37911
  // Vue's inject() can only be used in setup
@@ -38171,7 +38203,7 @@ var index = /*#__PURE__*/Object.freeze({
38171
38203
 
38172
38204
  /* eslint-disable local-rules/sort-imports */
38173
38205
 
38174
- const version = "3.10.2";
38206
+ const version = "3.10.4";
38175
38207
 
38176
38208
  /* eslint-disable local-rules/sort-imports */
38177
38209