vuetify 3.7.1 → 3.7.3

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 (163) hide show
  1. package/dist/json/attributes.json +4 -4
  2. package/dist/json/importMap-labs.json +20 -20
  3. package/dist/json/importMap.json +168 -168
  4. package/dist/json/web-types.json +5 -5
  5. package/dist/vuetify-labs.css +3464 -3461
  6. package/dist/vuetify-labs.d.ts +953 -896
  7. package/dist/vuetify-labs.esm.js +123 -132
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +123 -132
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +3083 -3080
  12. package/dist/vuetify.d.ts +859 -802
  13. package/dist/vuetify.esm.js +72 -48
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +72 -48
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +289 -289
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAlert/index.d.mts +10 -10
  21. package/lib/components/VAppBar/index.d.mts +18 -18
  22. package/lib/components/VAutocomplete/index.d.mts +93 -90
  23. package/lib/components/VAvatar/index.d.mts +4 -4
  24. package/lib/components/VBadge/index.d.mts +4 -4
  25. package/lib/components/VBanner/index.d.mts +14 -14
  26. package/lib/components/VBottomNavigation/index.d.mts +4 -4
  27. package/lib/components/VBottomSheet/VBottomSheet.sass +2 -1
  28. package/lib/components/VBottomSheet/index.d.mts +7 -7
  29. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +3 -5
  30. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  31. package/lib/components/VBreadcrumbs/index.d.mts +4 -4
  32. package/lib/components/VBtn/VBtn.mjs +3 -4
  33. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  34. package/lib/components/VBtn/index.d.mts +14 -14
  35. package/lib/components/VBtnGroup/index.d.mts +4 -4
  36. package/lib/components/VBtnToggle/index.d.mts +4 -4
  37. package/lib/components/VCard/VCard.mjs +3 -4
  38. package/lib/components/VCard/VCard.mjs.map +1 -1
  39. package/lib/components/VCard/index.d.mts +14 -14
  40. package/lib/components/VCarousel/index.d.mts +11 -11
  41. package/lib/components/VCheckbox/index.d.mts +2 -2
  42. package/lib/components/VChip/VChip.mjs +4 -4
  43. package/lib/components/VChip/VChip.mjs.map +1 -1
  44. package/lib/components/VChip/index.d.mts +8 -8
  45. package/lib/components/VChipGroup/index.d.mts +4 -4
  46. package/lib/components/VColorPicker/VColorPicker.mjs +2 -2
  47. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  48. package/lib/components/VColorPicker/index.d.mts +22 -22
  49. package/lib/components/VCombobox/index.d.mts +93 -90
  50. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +87 -0
  51. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs.map +1 -0
  52. package/lib/components/VDataTable/composables/paginate.mjs +4 -2
  53. package/lib/components/VDataTable/composables/paginate.mjs.map +1 -1
  54. package/lib/components/VDataTable/index.d.mts +10 -10
  55. package/lib/components/VDatePicker/index.d.mts +10 -10
  56. package/lib/components/VDialog/VDialog.css +4 -1
  57. package/lib/components/VDialog/VDialog.mjs +1 -2
  58. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  59. package/lib/components/VDialog/VDialog.sass +2 -1
  60. package/lib/components/VDialog/index.d.mts +31 -31
  61. package/lib/components/VEmptyState/index.d.mts +8 -8
  62. package/lib/components/VExpansionPanel/index.d.mts +4 -4
  63. package/lib/components/VFab/index.d.mts +18 -18
  64. package/lib/components/VField/_variables.scss +2 -1
  65. package/lib/components/VFileInput/__tests__/text.txt +1 -0
  66. package/lib/components/VFileInput/index.d.mts +3 -3
  67. package/lib/components/VFooter/index.d.mts +4 -4
  68. package/lib/components/VIcon/index.d.mts +4 -4
  69. package/lib/components/VItemGroup/index.d.mts +4 -4
  70. package/lib/components/VLabel/index.d.mts +4 -4
  71. package/lib/components/VList/VList.mjs +4 -2
  72. package/lib/components/VList/VList.mjs.map +1 -1
  73. package/lib/components/VList/VListItem.mjs +9 -6
  74. package/lib/components/VList/VListItem.mjs.map +1 -1
  75. package/lib/components/VList/index.d.mts +80 -23
  76. package/lib/components/VMenu/index.d.mts +33 -33
  77. package/lib/components/VNavigationDrawer/index.d.mts +11 -11
  78. package/lib/components/VOtpInput/index.d.mts +4 -4
  79. package/lib/components/VOverflowBtn/VOverflowBtn.sass +6 -5
  80. package/lib/components/VOverlay/index.d.mts +7 -7
  81. package/lib/components/VPagination/index.d.mts +4 -4
  82. package/lib/components/VProgressCircular/index.d.mts +4 -4
  83. package/lib/components/VProgressLinear/_variables.scss +2 -1
  84. package/lib/components/VRangeSlider/index.d.mts +8 -8
  85. package/lib/components/VSelect/index.d.mts +93 -90
  86. package/lib/components/VSheet/index.d.mts +10 -10
  87. package/lib/components/VSkeletonLoader/index.d.mts +4 -4
  88. package/lib/components/VSlider/index.d.mts +8 -8
  89. package/lib/components/VSnackbar/index.d.mts +34 -34
  90. package/lib/components/VSpeedDial/index.d.mts +9 -9
  91. package/lib/components/VStepper/index.d.mts +12 -12
  92. package/lib/components/VSystemBar/index.d.mts +4 -4
  93. package/lib/components/VTable/_mixins.scss +2 -2
  94. package/lib/components/VTabs/VTabs.sass +1 -1
  95. package/lib/components/VTabs/index.d.mts +53 -53
  96. package/lib/components/VTextField/index.d.mts +10 -10
  97. package/lib/components/VTextarea/index.d.mts +7 -7
  98. package/lib/components/VTimeline/index.d.mts +4 -4
  99. package/lib/components/VToolbar/index.d.mts +4 -4
  100. package/lib/components/VTooltip/index.d.mts +24 -24
  101. package/lib/components/VWindow/index.d.mts +4 -4
  102. package/lib/components/index.d.mts +801 -744
  103. package/lib/composables/directiveComponent.mjs +5 -4
  104. package/lib/composables/directiveComponent.mjs.map +1 -1
  105. package/lib/composables/nested/nested.mjs +18 -6
  106. package/lib/composables/nested/nested.mjs.map +1 -1
  107. package/lib/composables/nested/openStrategies.mjs +2 -4
  108. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  109. package/lib/composables/router.mjs +19 -9
  110. package/lib/composables/router.mjs.map +1 -1
  111. package/lib/directives/ripple/index.mjs.map +1 -1
  112. package/lib/directives/tooltip/index.mjs +1 -1
  113. package/lib/directives/tooltip/index.mjs.map +1 -1
  114. package/lib/entry-bundler.mjs +1 -1
  115. package/lib/framework.mjs +1 -1
  116. package/lib/index.d.mts +58 -58
  117. package/lib/labs/VDateInput/index.d.mts +12 -12
  118. package/lib/labs/VNumberInput/index.d.mts +58 -58
  119. package/lib/labs/VPicker/index.d.mts +10 -10
  120. package/lib/labs/VSnackbarQueue/index.d.mts +46 -46
  121. package/lib/labs/VStepperVertical/index.d.mts +6 -6
  122. package/lib/labs/VTimePicker/VTimePicker.mjs +1 -1
  123. package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -1
  124. package/lib/labs/VTimePicker/VTimePickerControls.mjs +2 -2
  125. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  126. package/lib/labs/VTimePicker/index.d.mts +26 -26
  127. package/lib/labs/VTimePicker/util.mjs +5 -0
  128. package/lib/labs/VTimePicker/util.mjs.map +1 -0
  129. package/lib/labs/VTreeview/VTreeview.mjs +5 -13
  130. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  131. package/lib/labs/VTreeview/VTreeviewChildren.mjs +30 -29
  132. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  133. package/lib/labs/VTreeview/VTreeviewItem.mjs +9 -20
  134. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  135. package/lib/labs/VTreeview/index.d.mts +33 -33
  136. package/lib/labs/components.d.mts +191 -191
  137. package/lib/styles/settings/_colors.scss +257 -256
  138. package/lib/styles/utilities/_display.sass +2 -1
  139. package/lib/styles/utilities/_elevation.scss +2 -1
  140. package/lib/styles/utilities/_screenreaders.sass +2 -1
  141. package/package.json +26 -21
  142. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs +0 -74
  143. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +0 -1
  144. package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs +0 -21
  145. package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +0 -1
  146. package/lib/components/VDatePicker/util/eventHelpers.mjs +0 -22
  147. package/lib/components/VDatePicker/util/eventHelpers.mjs.map +0 -1
  148. package/lib/components/VDatePicker/util/index.mjs +0 -9
  149. package/lib/components/VDatePicker/util/index.mjs.map +0 -1
  150. package/lib/components/VDatePicker/util/isDateAllowed.mjs +0 -7
  151. package/lib/components/VDatePicker/util/isDateAllowed.mjs.map +0 -1
  152. package/lib/components/VDatePicker/util/monthChange.mjs +0 -18
  153. package/lib/components/VDatePicker/util/monthChange.mjs.map +0 -1
  154. package/lib/components/VDatePicker/util/pad.mjs +0 -21
  155. package/lib/components/VDatePicker/util/pad.mjs.map +0 -1
  156. package/lib/components/VDatePicker/util/sanitizeDateString.mjs +0 -12
  157. package/lib/components/VDatePicker/util/sanitizeDateString.mjs.map +0 -1
  158. package/lib/services/goto/easing-patterns.mjs +0 -27
  159. package/lib/services/goto/easing-patterns.mjs.map +0 -1
  160. package/lib/services/goto/index.mjs +0 -73
  161. package/lib/services/goto/index.mjs.map +0 -1
  162. package/lib/services/goto/util.mjs +0 -39
  163. package/lib/services/goto/util.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.1
2
+ * Vuetify v3.7.3
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -315,7 +315,7 @@ function padEnd(str, length) {
315
315
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
316
316
  return str + char.repeat(Math.max(0, length - str.length));
317
317
  }
318
- function padStart$1(str, length) {
318
+ function padStart(str, length) {
319
319
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
320
320
  return char.repeat(Math.max(0, length - str.length)) + str;
321
321
  }
@@ -5156,10 +5156,14 @@ function useLink(props, attrs) {
5156
5156
  return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');
5157
5157
  });
5158
5158
  if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {
5159
+ const href = toRef(props, 'href');
5159
5160
  return {
5160
5161
  isLink,
5161
5162
  isClickable,
5162
- href: toRef(props, 'href')
5163
+ href,
5164
+ linkProps: reactive({
5165
+ href
5166
+ })
5163
5167
  };
5164
5168
  }
5165
5169
  // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined
@@ -5171,18 +5175,24 @@ function useLink(props, attrs) {
5171
5175
  // Actual link needs to be undefined when to prop is not used
5172
5176
  const link = computed(() => props.to ? routerLink : undefined);
5173
5177
  const route = useRoute();
5178
+ const isActive = computed(() => {
5179
+ if (!link.value) return false;
5180
+ if (!props.exact) return link.value.isActive?.value ?? false;
5181
+ if (!route.value) return link.value.isExactActive?.value ?? false;
5182
+ return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
5183
+ });
5184
+ const href = computed(() => props.to ? link.value?.route.value.href : props.href);
5174
5185
  return {
5175
5186
  isLink,
5176
5187
  isClickable,
5188
+ isActive,
5177
5189
  route: link.value?.route,
5178
5190
  navigate: link.value?.navigate,
5179
- isActive: computed(() => {
5180
- if (!link.value) return false;
5181
- if (!props.exact) return link.value.isActive?.value ?? false;
5182
- if (!route.value) return link.value.isExactActive?.value ?? false;
5183
- return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
5184
- }),
5185
- href: computed(() => props.to ? link.value?.route.value.href : props.href)
5191
+ href,
5192
+ linkProps: reactive({
5193
+ href,
5194
+ 'aria-current': computed(() => isActive.value ? 'page' : undefined)
5195
+ })
5186
5196
  };
5187
5197
  }
5188
5198
  const makeRouterProps = propsFactory({
@@ -5657,7 +5667,7 @@ const VBtn = genericComponent()({
5657
5667
  const hasPrepend = !!(props.prependIcon || slots.prepend);
5658
5668
  const hasAppend = !!(props.appendIcon || slots.append);
5659
5669
  const hasIcon = !!(props.icon && props.icon !== true);
5660
- return withDirectives(createVNode(Tag, {
5670
+ return withDirectives(createVNode(Tag, mergeProps({
5661
5671
  "type": Tag === 'a' ? undefined : 'button',
5662
5672
  "class": ['v-btn', group?.selectedClass.value, {
5663
5673
  'v-btn--active': isActive.value,
@@ -5674,11 +5684,10 @@ const VBtn = genericComponent()({
5674
5684
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5675
5685
  "aria-busy": props.loading ? true : undefined,
5676
5686
  "disabled": isDisabled.value || undefined,
5677
- "href": link.href.value,
5678
5687
  "tabindex": props.loading || props.readonly ? -1 : undefined,
5679
5688
  "onClick": onClick,
5680
5689
  "value": valueAttr.value
5681
- }, {
5690
+ }, link.linkProps), {
5682
5691
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
5683
5692
  "key": "prepend",
5684
5693
  "class": "v-btn__prepend"
@@ -7941,7 +7950,7 @@ const VChip = genericComponent()({
7941
7950
  const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
7942
7951
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
7943
7952
  const hasColor = !group || group.isSelected.value;
7944
- return isActive.value && withDirectives(createVNode(Tag, {
7953
+ return isActive.value && withDirectives(createVNode(Tag, mergeProps({
7945
7954
  "class": ['v-chip', {
7946
7955
  'v-chip--disabled': props.disabled,
7947
7956
  'v-chip--label': props.label,
@@ -7952,11 +7961,10 @@ const VChip = genericComponent()({
7952
7961
  "style": [hasColor ? colorStyles.value : undefined, props.style],
7953
7962
  "disabled": props.disabled || undefined,
7954
7963
  "draggable": props.draggable,
7955
- "href": link.href.value,
7956
7964
  "tabindex": isClickable.value ? 0 : undefined,
7957
7965
  "onClick": onClick,
7958
7966
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
7959
- }, {
7967
+ }, link.linkProps), {
7960
7968
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VExpandXTransition, {
7961
7969
  "key": "filter"
7962
7970
  }, {
@@ -8035,7 +8043,8 @@ const VChip = genericComponent()({
8035
8043
  }, slots.append)]), hasClose && createVNode("button", mergeProps({
8036
8044
  "key": "close",
8037
8045
  "class": "v-chip__close",
8038
- "type": "button"
8046
+ "type": "button",
8047
+ "data-testid": "close-chip"
8039
8048
  }, closeProps.value), [!slots.close ? createVNode(VIcon, {
8040
8049
  "key": "close-icon",
8041
8050
  "icon": props.closeIcon,
@@ -8201,7 +8210,6 @@ const leafSingleActiveStrategy = mandatory => {
8201
8210
  return strategy;
8202
8211
  };
8203
8212
 
8204
- // Utilities
8205
8213
  const singleOpenStrategy = {
8206
8214
  open: _ref => {
8207
8215
  let {
@@ -8235,11 +8243,11 @@ const multipleOpenStrategy = {
8235
8243
  parents
8236
8244
  } = _ref2;
8237
8245
  if (value) {
8238
- let parent = toRaw(parents.get(id));
8246
+ let parent = parents.get(id);
8239
8247
  opened.add(id);
8240
8248
  while (parent != null && parent !== id) {
8241
8249
  opened.add(parent);
8242
- parent = toRaw(parents.get(parent));
8250
+ parent = parents.get(parent);
8243
8251
  }
8244
8252
  return opened;
8245
8253
  } else {
@@ -8481,7 +8489,8 @@ const emptyNested = {
8481
8489
  opened: ref(new Set()),
8482
8490
  activated: ref(new Set()),
8483
8491
  selected: ref(new Map()),
8484
- selectedValues: ref([])
8492
+ selectedValues: ref([]),
8493
+ getPath: () => []
8485
8494
  }
8486
8495
  };
8487
8496
  const makeNestedProps = propsFactory({
@@ -8499,7 +8508,7 @@ const useNested = props => {
8499
8508
  let isUnmounted = false;
8500
8509
  const children = ref(new Map());
8501
8510
  const parents = ref(new Map());
8502
- const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(toRaw(v)), v => [...v.values()]);
8511
+ const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8503
8512
  const activeStrategy = computed(() => {
8504
8513
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8505
8514
  if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
@@ -8559,6 +8568,7 @@ const useNested = props => {
8559
8568
  return path;
8560
8569
  }
8561
8570
  const vm = getCurrentInstance('nested');
8571
+ const nodeIds = new Set();
8562
8572
  const nested = {
8563
8573
  id: shallowRef(),
8564
8574
  root: {
@@ -8575,6 +8585,14 @@ const useNested = props => {
8575
8585
  return arr;
8576
8586
  }),
8577
8587
  register: (id, parentId, isGroup) => {
8588
+ if (nodeIds.has(id)) {
8589
+ const path = getPath(id).map(String).join(' -> ');
8590
+ const newPath = getPath(parentId).concat(id).map(String).join(' -> ');
8591
+ consoleError(`Multiple nodes with the same ID\n\t${path}\n\t${newPath}`);
8592
+ return;
8593
+ } else {
8594
+ nodeIds.add(id);
8595
+ }
8578
8596
  parentId && id !== parentId && parents.value.set(id, parentId);
8579
8597
  isGroup && children.value.set(id, []);
8580
8598
  if (parentId != null) {
@@ -8583,6 +8601,7 @@ const useNested = props => {
8583
8601
  },
8584
8602
  unregister: id => {
8585
8603
  if (isUnmounted) return;
8604
+ nodeIds.delete(id);
8586
8605
  children.value.delete(id);
8587
8606
  const parent = parents.value.get(id);
8588
8607
  if (parent) {
@@ -8659,7 +8678,8 @@ const useNested = props => {
8659
8678
  newActivated && (activated.value = newActivated);
8660
8679
  },
8661
8680
  children,
8662
- parents
8681
+ parents,
8682
+ getPath
8663
8683
  }
8664
8684
  };
8665
8685
  provide(VNestedSymbol, nested);
@@ -8672,9 +8692,9 @@ const useNestedItem = (id, isGroup) => {
8672
8692
  const item = {
8673
8693
  ...parent,
8674
8694
  id: computedId,
8675
- open: (open, e) => parent.root.open(toRaw(computedId.value), open, e),
8695
+ open: (open, e) => parent.root.open(computedId.value, open, e),
8676
8696
  openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
8677
- isOpen: computed(() => parent.root.opened.value.has(toRaw(computedId.value))),
8697
+ isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
8678
8698
  parent: computed(() => parent.root.parents.value.get(computedId.value)),
8679
8699
  activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
8680
8700
  isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
@@ -8904,7 +8924,8 @@ const VListItem = genericComponent()({
8904
8924
  isGroupActivator,
8905
8925
  root,
8906
8926
  parent,
8907
- openOnSelect
8927
+ openOnSelect,
8928
+ id: uid
8908
8929
  } = useNestedItem(id, false);
8909
8930
  const list = useList();
8910
8931
  const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
@@ -8988,7 +9009,7 @@ const VListItem = genericComponent()({
8988
9009
  if (props.activeColor) {
8989
9010
  deprecate('active-color', ['color', 'base-color']);
8990
9011
  }
8991
- return withDirectives(createVNode(Tag, {
9012
+ return withDirectives(createVNode(Tag, mergeProps({
8992
9013
  "class": ['v-list-item', {
8993
9014
  'v-list-item--active': isActive.value,
8994
9015
  'v-list-item--disabled': props.disabled,
@@ -8999,11 +9020,11 @@ const VListItem = genericComponent()({
8999
9020
  [`${props.activeClass}`]: props.activeClass && isActive.value
9000
9021
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
9001
9022
  "style": [colorStyles.value, dimensionStyles.value, props.style],
9002
- "href": link.href.value,
9003
9023
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
9024
+ "aria-selected": root.activatable.value ? isActivated.value : isSelected.value,
9004
9025
  "onClick": onClick,
9005
9026
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9006
- }, {
9027
+ }, link.linkProps), {
9007
9028
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode("div", {
9008
9029
  "key": "prepend",
9009
9030
  "class": "v-list-item__prepend"
@@ -9090,7 +9111,9 @@ const VListItem = genericComponent()({
9090
9111
  isGroupActivator,
9091
9112
  isSelected,
9092
9113
  list,
9093
- select
9114
+ select,
9115
+ root,
9116
+ id: uid
9094
9117
  };
9095
9118
  }
9096
9119
  });
@@ -9491,7 +9514,8 @@ const VList = genericComponent()({
9491
9514
  children,
9492
9515
  open,
9493
9516
  parents,
9494
- select
9517
+ select,
9518
+ getPath
9495
9519
  } = useNested(props);
9496
9520
  const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9497
9521
  const activeColor = toRef(props, 'activeColor');
@@ -9583,7 +9607,8 @@ const VList = genericComponent()({
9583
9607
  select,
9584
9608
  focus,
9585
9609
  children,
9586
- parents
9610
+ parents,
9611
+ getPath
9587
9612
  };
9588
9613
  }
9589
9614
  });
@@ -13755,8 +13780,7 @@ const VDialog = genericComponent()({
13755
13780
  useRender(() => {
13756
13781
  const overlayProps = VOverlay.filterProps(props);
13757
13782
  const activatorProps = mergeProps({
13758
- 'aria-haspopup': 'dialog',
13759
- 'aria-expanded': String(isActive.value)
13783
+ 'aria-haspopup': 'dialog'
13760
13784
  }, props.activatorProps);
13761
13785
  const contentProps = mergeProps({
13762
13786
  tabindex: -1
@@ -13887,12 +13911,10 @@ const VBreadcrumbsItem = genericComponent()({
13887
13911
  "style": [textColorStyles.value, props.style],
13888
13912
  "aria-current": isActive.value ? 'page' : undefined
13889
13913
  }, {
13890
- default: () => [!link.isLink.value ? slots.default?.() ?? props.title : createVNode("a", {
13914
+ default: () => [!link.isLink.value ? slots.default?.() ?? props.title : createVNode("a", mergeProps({
13891
13915
  "class": "v-breadcrumbs-item--link",
13892
- "href": link.href.value,
13893
- "aria-current": isActive.value ? 'page' : undefined,
13894
13916
  "onClick": link.navigate
13895
- }, [slots.default?.() ?? props.title])]
13917
+ }, link.linkProps), [slots.default?.() ?? props.title])]
13896
13918
  });
13897
13919
  });
13898
13920
  return {};
@@ -14268,7 +14290,7 @@ const VCard = genericComponent()({
14268
14290
  const hasImage = !!(slots.image || props.image);
14269
14291
  const hasCardItem = hasHeader || hasPrepend || hasAppend;
14270
14292
  const hasText = !!(slots.text || props.text != null);
14271
- return withDirectives(createVNode(Tag, {
14293
+ return withDirectives(createVNode(Tag, mergeProps({
14272
14294
  "class": ['v-card', {
14273
14295
  'v-card--disabled': props.disabled,
14274
14296
  'v-card--flat': props.flat,
@@ -14276,10 +14298,9 @@ const VCard = genericComponent()({
14276
14298
  'v-card--link': isClickable.value
14277
14299
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
14278
14300
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14279
- "href": link.href.value,
14280
14301
  "onClick": isClickable.value && link.navigate,
14281
14302
  "tabindex": props.disabled ? -1 : undefined
14282
- }, {
14303
+ }, link.linkProps), {
14283
14304
  default: () => [hasImage && createVNode("div", {
14284
14305
  "key": "image",
14285
14306
  "class": "v-card__image"
@@ -16610,7 +16631,7 @@ const VColorPicker = defineComponent({
16610
16631
  hue.value = hsva.h;
16611
16632
  model.value = hsva;
16612
16633
  };
16613
- onMounted(() => {
16634
+ onBeforeMount(() => {
16614
16635
  if (!props.modes.includes(mode.value)) mode.value = props.modes[0];
16615
16636
  });
16616
16637
  provideDefaults({
@@ -17645,8 +17666,8 @@ function format(value, formatString, locale, formats) {
17645
17666
  function toISO(adapter, value) {
17646
17667
  const date = adapter.toJsDate(value);
17647
17668
  const year = date.getFullYear();
17648
- const month = padStart$1(String(date.getMonth() + 1), 2, '0');
17649
- const day = padStart$1(String(date.getDate()), 2, '0');
17669
+ const month = padStart(String(date.getMonth() + 1), 2, '0');
17670
+ const day = padStart(String(date.getDate()), 2, '0');
17650
17671
  return `${year}-${month}-${day}`;
17651
17672
  }
17652
17673
  function parseISO(value) {
@@ -18369,7 +18390,9 @@ function providePagination(options) {
18369
18390
  if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
18370
18391
  return Math.ceil(itemsLength.value / itemsPerPage.value);
18371
18392
  });
18372
- watchEffect(() => {
18393
+
18394
+ // Don't run immediately, items may not have been loaded yet: #17966
18395
+ watch([page, pageCount], () => {
18373
18396
  if (page.value > pageCount.value) {
18374
18397
  page.value = pageCount.value;
18375
18398
  }
@@ -28852,6 +28875,11 @@ const VSnackbarQueue = genericComponent()({
28852
28875
  }
28853
28876
  });
28854
28877
 
28878
+ function pad(n) {
28879
+ let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
28880
+ return String(n).padStart(length, '0');
28881
+ }
28882
+
28855
28883
  // Types
28856
28884
 
28857
28885
  const makeVTimePickerClockProps = propsFactory({
@@ -29092,27 +29120,6 @@ const VTimePickerClock = genericComponent()({
29092
29120
  }
29093
29121
  });
29094
29122
 
29095
- // @ts-nocheck
29096
- /* eslint-disable */
29097
-
29098
- const padStart = (string, targetLength, padString) => {
29099
- targetLength = targetLength >> 0;
29100
- string = String(string);
29101
- padString = String(padString);
29102
- if (string.length > targetLength) {
29103
- return String(string);
29104
- }
29105
- targetLength = targetLength - string.length;
29106
- if (targetLength > padString.length) {
29107
- padString += padString.repeat(targetLength / padString.length);
29108
- }
29109
- return padString.slice(0, targetLength) + String(string);
29110
- };
29111
- var pad = (function (n) {
29112
- let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
29113
- return padStart(n, length, '0');
29114
- });
29115
-
29116
29123
  // @ts-nocheck
29117
29124
  /* eslint-disable */
29118
29125
  var SelectingTimes = /*#__PURE__*/function (SelectingTimes) {
@@ -29560,25 +29567,13 @@ const VTreeviewItem = genericComponent()({
29560
29567
  emit
29561
29568
  } = _ref;
29562
29569
  const link = useLink(props, attrs);
29563
- const rawId = computed(() => props.value === undefined ? link.href.value : props.value);
29564
29570
  const vListItemRef = ref();
29565
- const {
29566
- activate,
29567
- isActivated,
29568
- isGroupActivator,
29569
- root,
29570
- id
29571
- } = useNestedItem(rawId, false);
29572
- const isActivatableGroupActivator = computed(() => root.activatable.value && isGroupActivator);
29571
+ const isActivatableGroupActivator = computed(() => vListItemRef.value?.root.activatable.value && vListItemRef.value?.isGroupActivator);
29573
29572
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
29574
29573
  function activateItem(e) {
29575
- if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
29576
- if (root.activatable.value) {
29577
- if (isActivatableGroupActivator.value) {
29578
- activate(!isActivated.value, e);
29579
- } else {
29580
- vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
29581
- }
29574
+ if (!isClickable.value || !isActivatableGroupActivator.value && vListItemRef.value?.isGroupActivator) return;
29575
+ if (vListItemRef.value?.root.activatable.value) {
29576
+ vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
29582
29577
  }
29583
29578
  }
29584
29579
  const visibleIds = inject$1(VTreeviewSymbol, {
@@ -29587,11 +29582,13 @@ const VTreeviewItem = genericComponent()({
29587
29582
  useRender(() => {
29588
29583
  const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
29589
29584
  const hasPrepend = slots.prepend || props.toggleIcon;
29590
- return createVNode(VListItem, mergeProps(listItemProps, {
29591
- "active": isActivated.value,
29585
+ return createVNode(VListItem, mergeProps({
29586
+ "ref": vListItemRef
29587
+ }, listItemProps, {
29588
+ "active": vListItemRef.value?.isActivated,
29592
29589
  "class": ['v-treeview-item', {
29593
29590
  'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
29594
- 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
29591
+ 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(vListItemRef.value?.id)
29595
29592
  }, props.class],
29596
29593
  "ripple": false,
29597
29594
  "onClick": props.onClick ?? activateItem
@@ -29653,36 +29650,32 @@ const VTreeviewChildren = genericComponent()({
29653
29650
  props: makeVTreeviewChildrenProps(),
29654
29651
  setup(props, _ref) {
29655
29652
  let {
29656
- emit,
29657
29653
  slots
29658
29654
  } = _ref;
29659
- const isLoading = shallowRef(null);
29655
+ const isLoading = reactive(new Set());
29660
29656
  const isClickOnOpen = computed(() => props.openOnClick != null ? props.openOnClick : props.selectable);
29661
- function checkChildren(item) {
29662
- return new Promise(resolve => {
29663
- if (!props.items?.length || !props.loadChildren) return resolve();
29657
+ async function checkChildren(item) {
29658
+ try {
29659
+ if (!props.items?.length || !props.loadChildren) return;
29664
29660
  if (item?.children?.length === 0) {
29665
- isLoading.value = item.value;
29666
- props.loadChildren(item).then(resolve);
29667
- return;
29661
+ isLoading.add(item.value);
29662
+ await props.loadChildren(item.raw);
29668
29663
  }
29669
- resolve();
29670
- }).finally(() => {
29671
- isLoading.value = null;
29672
- });
29664
+ } finally {
29665
+ isLoading.delete(item.value);
29666
+ }
29673
29667
  }
29674
29668
  function selectItem(select, isSelected) {
29675
29669
  if (props.selectable) {
29676
29670
  select(!isSelected);
29677
29671
  }
29678
29672
  }
29679
- return () => slots.default?.() ?? props.items?.map(_ref2 => {
29680
- let {
29673
+ return () => slots.default?.() ?? props.items?.map(item => {
29674
+ const {
29681
29675
  children,
29682
- props: itemProps,
29683
- raw: item
29684
- } = _ref2;
29685
- const loading = isLoading.value === item.value;
29676
+ props: itemProps
29677
+ } = item;
29678
+ const loading = isLoading.has(item.value);
29686
29679
  const slotsWithItem = {
29687
29680
  prepend: slotProps => createVNode(Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && createVNode("div", null, [createVNode(VCheckboxBtn, {
29688
29681
  "key": item.value,
@@ -29701,35 +29694,38 @@ const VTreeviewChildren = genericComponent()({
29701
29694
  }
29702
29695
  }, null)]), slots.prepend?.({
29703
29696
  ...slotProps,
29704
- item
29697
+ item: item.raw,
29698
+ internalItem: item
29705
29699
  })]),
29706
29700
  append: slots.append ? slotProps => slots.append?.({
29707
29701
  ...slotProps,
29708
- item
29702
+ item: item.raw,
29703
+ internalItem: item
29709
29704
  }) : undefined,
29710
29705
  title: slots.title ? slotProps => slots.title?.({
29711
29706
  ...slotProps,
29712
- item
29707
+ item: item.raw,
29708
+ internalItem: item
29713
29709
  }) : undefined
29714
29710
  };
29715
29711
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
29716
29712
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
29717
29713
  return children ? createVNode(VTreeviewGroup, mergeProps(treeviewGroupProps, {
29718
- "value": props.returnObject ? item : treeviewGroupProps?.value
29714
+ "value": props.returnObject ? item.raw : treeviewGroupProps?.value
29719
29715
  }), {
29720
- activator: _ref3 => {
29716
+ activator: _ref2 => {
29721
29717
  let {
29722
29718
  props: activatorProps
29723
- } = _ref3;
29719
+ } = _ref2;
29724
29720
  const listItemProps = {
29725
29721
  ...itemProps,
29726
29722
  ...activatorProps,
29727
29723
  value: itemProps?.value,
29728
- onToggleExpand: activatorProps.onClick,
29724
+ onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
29729
29725
  onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
29730
29726
  };
29731
29727
  return createVNode(VTreeviewItem, mergeProps(listItemProps, {
29732
- "value": props.returnObject ? toRaw(item) : itemProps.value,
29728
+ "value": props.returnObject ? toRaw(item.raw) : itemProps.value,
29733
29729
  "loading": loading
29734
29730
  }), slotsWithItem);
29735
29731
  },
@@ -29738,9 +29734,11 @@ const VTreeviewChildren = genericComponent()({
29738
29734
  "returnObject": props.returnObject
29739
29735
  }), slots)
29740
29736
  }) : slots.item?.({
29741
- props: itemProps
29737
+ props: itemProps,
29738
+ item: item.raw,
29739
+ internalItem: item
29742
29740
  }) ?? createVNode(VTreeviewItem, mergeProps(itemProps, {
29743
- "value": props.returnObject ? toRaw(item) : itemProps.value
29741
+ "value": props.returnObject ? toRaw(item.raw) : itemProps.value
29744
29742
  }), slotsWithItem);
29745
29743
  });
29746
29744
  }
@@ -29810,22 +29808,14 @@ const VTreeview = genericComponent()({
29810
29808
  filteredItems
29811
29809
  } = useFilter(props, flatItems, search);
29812
29810
  const visibleIds = computed(() => {
29813
- if (!search.value) {
29814
- return null;
29815
- }
29811
+ if (!search.value) return null;
29812
+ const getPath = vListRef.value?.getPath;
29813
+ if (!getPath) return null;
29816
29814
  return new Set(filteredItems.value.flatMap(item => {
29817
- return [...getPath(item.props.value), ...getChildren(item.props.value)];
29815
+ const itemVal = props.returnObject ? item.raw : item.props.value;
29816
+ return [...getPath(itemVal), ...getChildren(itemVal)].map(toRaw);
29818
29817
  }));
29819
29818
  });
29820
- function getPath(id) {
29821
- const path = [];
29822
- let parent = id;
29823
- while (parent != null) {
29824
- path.unshift(parent);
29825
- parent = vListRef.value?.parents.get(parent);
29826
- }
29827
- return path;
29828
- }
29829
29819
  function getChildren(id) {
29830
29820
  const arr = [];
29831
29821
  const queue = (vListRef.value?.children.get(id) ?? []).slice();
@@ -30226,7 +30216,7 @@ function mountComponent(component, props) {
30226
30216
  const value = isObject(binding.value) ? binding.value : {};
30227
30217
 
30228
30218
  // Get the children from the props or directive value, or the element's children
30229
- const children = () => text ?? el.innerHTML;
30219
+ const children = () => text ?? el.textContent;
30230
30220
 
30231
30221
  // If vnode.ctx is the same as the instance, then we're bound to a plain element
30232
30222
  // and need to find the nearest parent component instance to inherit provides from
@@ -30244,7 +30234,7 @@ function findComponentParent(vnode, root) {
30244
30234
  const walk = children => {
30245
30235
  for (const child of children) {
30246
30236
  if (!child) continue;
30247
- if (child === vnode) {
30237
+ if (child === vnode || child.el && vnode.el && child.el === vnode.el) {
30248
30238
  return true;
30249
30239
  }
30250
30240
  stack.add(child);
@@ -30264,7 +30254,8 @@ function findComponentParent(vnode, root) {
30264
30254
  return false;
30265
30255
  };
30266
30256
  if (!walk([root.subTree])) {
30267
- throw new Error('Could not find original vnode');
30257
+ consoleError('Could not find original vnode, component will not inherit provides');
30258
+ return root;
30268
30259
  }
30269
30260
 
30270
30261
  // Return the first component parent
@@ -30284,7 +30275,7 @@ function findComponentParent(vnode, root) {
30284
30275
  const Tooltip = useDirectiveComponent(VTooltip, binding => {
30285
30276
  return {
30286
30277
  activator: 'parent',
30287
- location: binding.arg?.replace('-', ' ') ?? 'top',
30278
+ location: binding.arg?.replace('-', ' '),
30288
30279
  text: typeof binding.value === 'boolean' ? undefined : binding.value
30289
30280
  };
30290
30281
  });
@@ -30390,7 +30381,7 @@ function createVuetify$1() {
30390
30381
  goTo
30391
30382
  };
30392
30383
  }
30393
- const version$1 = "3.7.1";
30384
+ const version$1 = "3.7.3";
30394
30385
  createVuetify$1.version = version$1;
30395
30386
 
30396
30387
  // Vue's inject() can only be used in setup
@@ -30643,7 +30634,7 @@ var index = /*#__PURE__*/Object.freeze({
30643
30634
 
30644
30635
  /* eslint-disable local-rules/sort-imports */
30645
30636
 
30646
- const version = "3.7.1";
30637
+ const version = "3.7.3";
30647
30638
 
30648
30639
  /* eslint-disable local-rules/sort-imports */
30649
30640