vuetify 3.1.7 → 3.1.9

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 (169) hide show
  1. package/dist/json/attributes.json +6 -530
  2. package/dist/json/importMap.json +36 -36
  3. package/dist/json/tags.json +3 -136
  4. package/dist/json/web-types.json +62 -1218
  5. package/dist/vuetify-labs.css +526 -363
  6. package/dist/vuetify-labs.d.ts +14 -7
  7. package/dist/vuetify-labs.esm.js +502 -281
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +502 -281
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +472 -312
  12. package/dist/vuetify.d.ts +17 -12
  13. package/dist/vuetify.esm.js +336 -222
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +336 -222
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +503 -501
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAlert/VAlert.css +1 -1
  21. package/lib/components/VAlert/VAlert.mjs +29 -15
  22. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  23. package/lib/components/VAlert/_variables.scss +1 -1
  24. package/lib/components/VAlert/index.d.ts +2 -0
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -5
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  27. package/lib/components/VBanner/VBanner.mjs +19 -12
  28. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  29. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  30. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
  31. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  32. package/lib/components/VBtn/VBtn.mjs +25 -19
  33. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  34. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  35. package/lib/components/VCard/VCard.mjs +10 -6
  36. package/lib/components/VCard/VCard.mjs.map +1 -1
  37. package/lib/components/VCard/VCardItem.mjs +27 -23
  38. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  39. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  40. package/lib/components/VChip/VChip.css +110 -90
  41. package/lib/components/VChip/VChip.mjs +70 -48
  42. package/lib/components/VChip/VChip.mjs.map +1 -1
  43. package/lib/components/VChip/_mixins.scss +27 -23
  44. package/lib/components/VChip/index.d.ts +2 -2
  45. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  46. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  47. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  48. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  49. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  50. package/lib/components/VCombobox/VCombobox.mjs +11 -5
  51. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  52. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
  53. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  54. package/lib/components/VDefaultsProvider/index.d.ts +3 -0
  55. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  56. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  57. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  58. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  59. package/lib/components/VField/VField.mjs.map +1 -1
  60. package/lib/components/VFileInput/VFileInput.mjs +1 -0
  61. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  62. package/lib/components/VFooter/VFooter.css +2 -0
  63. package/lib/components/VFooter/VFooter.sass +2 -0
  64. package/lib/components/VFooter/_variables.scss +2 -0
  65. package/lib/components/VImg/VImg.mjs +2 -2
  66. package/lib/components/VImg/VImg.mjs.map +1 -1
  67. package/lib/components/VInput/VInput.mjs.map +1 -1
  68. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  69. package/lib/components/VList/VListGroup.mjs.map +1 -1
  70. package/lib/components/VList/VListItem.mjs +23 -19
  71. package/lib/components/VList/VListItem.mjs.map +1 -1
  72. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  73. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  74. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  75. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  76. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  77. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  78. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  79. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  80. package/lib/components/VRating/VRating.mjs.map +1 -1
  81. package/lib/components/VSelect/VSelect.mjs +11 -5
  82. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  83. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  84. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  85. package/lib/components/VSlider/VSliderTrack.mjs +1 -0
  86. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  87. package/lib/components/VSlider/slider.mjs +3 -1
  88. package/lib/components/VSlider/slider.mjs.map +1 -1
  89. package/lib/components/VSnackbar/VSnackbar.css +2 -9
  90. package/lib/components/VSnackbar/VSnackbar.mjs +8 -9
  91. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  92. package/lib/components/VSnackbar/VSnackbar.sass +3 -10
  93. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  94. package/lib/components/VTable/VTable.mjs.map +1 -1
  95. package/lib/components/VTabs/VTab.mjs.map +1 -1
  96. package/lib/components/VTabs/VTabs.mjs +23 -15
  97. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  98. package/lib/components/VTextField/VTextField.mjs +1 -0
  99. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  100. package/lib/components/VTextarea/VTextarea.mjs +1 -0
  101. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  102. package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
  103. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  104. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  105. package/lib/components/VToolbar/VToolbar.mjs +9 -5
  106. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  107. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  108. package/lib/components/index.d.ts +7 -2
  109. package/lib/components/transitions/createTransition.mjs +1 -1
  110. package/lib/components/transitions/createTransition.mjs.map +1 -1
  111. package/lib/composables/defaults.mjs +2 -0
  112. package/lib/composables/defaults.mjs.map +1 -1
  113. package/lib/composables/display.mjs +13 -10
  114. package/lib/composables/display.mjs.map +1 -1
  115. package/lib/composables/loader.mjs.map +1 -1
  116. package/lib/composables/theme.mjs +7 -10
  117. package/lib/composables/theme.mjs.map +1 -1
  118. package/lib/composables/variant.mjs.map +1 -1
  119. package/lib/entry-bundler.mjs +1 -1
  120. package/lib/framework.mjs +1 -1
  121. package/lib/index.d.ts +10 -10
  122. package/lib/labs/VDataTable/VDataTable.css +3 -0
  123. package/lib/labs/VDataTable/VDataTable.mjs +45 -19
  124. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  125. package/lib/labs/VDataTable/VDataTable.sass +3 -0
  126. package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
  127. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  128. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  129. package/lib/labs/VDataTable/VDataTableRow.mjs +6 -2
  130. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  131. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  132. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  133. package/lib/labs/VDataTable/VDataTableServer.mjs +39 -17
  134. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  135. package/lib/labs/VDataTable/VDataTableVirtual.mjs +27 -14
  136. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  137. package/lib/labs/VDataTable/composables/expand.mjs +1 -1
  138. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  139. package/lib/labs/VDataTable/composables/group.mjs +12 -1
  140. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  141. package/lib/labs/VDataTable/composables/options.mjs +4 -10
  142. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  143. package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
  144. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  145. package/lib/labs/VDataTable/composables/select.mjs +1 -1
  146. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  147. package/lib/labs/VDataTable/composables/sort.mjs +19 -3
  148. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  149. package/lib/labs/VDataTable/index.d.ts +7 -5
  150. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  151. package/lib/labs/components.d.ts +7 -5
  152. package/lib/locale/adapters/vue-i18n.d.ts +1 -1
  153. package/lib/locale/adapters/vue-i18n.mjs +1 -1
  154. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  155. package/lib/locale/index.mjs +1 -1
  156. package/lib/locale/index.mjs.map +1 -1
  157. package/lib/styles/elements/_global.sass +0 -4
  158. package/lib/styles/generic/_index.scss +0 -1
  159. package/lib/styles/generic/_transitions.scss +111 -9
  160. package/lib/styles/main.css +312 -167
  161. package/lib/styles/tools/_sheet.sass +3 -6
  162. package/lib/styles/utilities/_display.sass +6 -5
  163. package/lib/styles/utilities/_elevation.scss +13 -0
  164. package/lib/styles/utilities/_index.sass +3 -2
  165. package/lib/styles/utilities/_screenreaders.sass +13 -11
  166. package/lib/util/defineComponent.mjs +3 -2
  167. package/lib/util/defineComponent.mjs.map +1 -1
  168. package/package.json +14 -7
  169. package/lib/styles/generic/_elevation.scss +0 -10
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.7
2
+ * Vuetify v3.1.9
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -953,6 +953,8 @@
953
953
  const injectedDefaults = useDefaults();
954
954
  const providedDefaults = vue.ref(defaults);
955
955
  const newDefaults = vue.computed(() => {
956
+ const disabled = vue.unref(options?.disabled);
957
+ if (disabled) return {};
956
958
  const scoped = vue.unref(options?.scoped);
957
959
  const reset = vue.unref(options?.reset);
958
960
  const root = vue.unref(options?.root);
@@ -1026,10 +1028,11 @@
1026
1028
  const componentDefaults = vue.computed(() => defaults.value[props._as ?? options.name]);
1027
1029
  const _props = new Proxy(props, {
1028
1030
  get(target, prop) {
1031
+ const propValue = Reflect.get(target, prop);
1029
1032
  if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1030
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? target[prop];
1033
+ return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1031
1034
  }
1032
- return Reflect.get(target, prop);
1035
+ return propValue;
1033
1036
  }
1034
1037
  });
1035
1038
  const _subcomponentDefaults = vue.shallowRef();
@@ -1671,17 +1674,9 @@
1671
1674
  if (current.value.dark) {
1672
1675
  createCssClass(lines, ':root', ['color-scheme: dark']);
1673
1676
  }
1677
+ createCssClass(lines, ':root', genCssVariables(current.value));
1674
1678
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
1675
- const {
1676
- variables,
1677
- dark
1678
- } = theme;
1679
- createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${dark ? 'dark' : 'normal'}`, ...genCssVariables(theme), ...Object.keys(variables).map(key => {
1680
- const value = variables[key];
1681
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1682
- const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1683
- return `--v-${key}: ${rgb ?? value}`;
1684
- })]);
1679
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)]);
1685
1680
  }
1686
1681
  const bgLines = [];
1687
1682
  const fgLines = [];
@@ -1794,6 +1789,11 @@
1794
1789
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
1795
1790
  }
1796
1791
  }
1792
+ for (const [key, value] of Object.entries(theme.variables)) {
1793
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1794
+ const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1795
+ variables.push(`--v-${key}: ${rgb ?? value}`);
1796
+ }
1797
1797
  return variables;
1798
1798
  }
1799
1799
 
@@ -2023,7 +2023,7 @@
2023
2023
  en: false,
2024
2024
  es: false,
2025
2025
  et: false,
2026
- fa: false,
2026
+ fa: true,
2027
2027
  fi: false,
2028
2028
  fr: false,
2029
2029
  hr: false,
@@ -2156,6 +2156,7 @@
2156
2156
  name: 'VDefaultsProvider',
2157
2157
  props: {
2158
2158
  defaults: Object,
2159
+ disabled: Boolean,
2159
2160
  reset: [Number, String],
2160
2161
  root: Boolean,
2161
2162
  scoped: Boolean
@@ -2166,6 +2167,7 @@
2166
2167
  } = _ref;
2167
2168
  const {
2168
2169
  defaults,
2170
+ disabled,
2169
2171
  reset,
2170
2172
  root,
2171
2173
  scoped
@@ -2173,7 +2175,8 @@
2173
2175
  provideDefaults(defaults, {
2174
2176
  reset,
2175
2177
  root,
2176
- scoped
2178
+ scoped,
2179
+ disabled
2177
2180
  });
2178
2181
  return () => slots.default?.();
2179
2182
  }
@@ -2184,7 +2187,7 @@
2184
2187
  // Types
2185
2188
 
2186
2189
  function createCssTransition(name) {
2187
- let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top center 0';
2190
+ let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'center center';
2188
2191
  let mode = arguments.length > 2 ? arguments[2] : undefined;
2189
2192
  return genericComponent()({
2190
2193
  name,
@@ -2795,7 +2798,7 @@
2795
2798
  "class": ['v-img__img', containClasses.value],
2796
2799
  "src": normalisedSrc.value.src,
2797
2800
  "srcset": normalisedSrc.value.srcset,
2798
- "alt": "",
2801
+ "alt": props.alt,
2799
2802
  "sizes": props.sizes,
2800
2803
  "ref": image,
2801
2804
  "onLoad": onLoad,
@@ -2817,7 +2820,7 @@
2817
2820
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createVNode("img", {
2818
2821
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
2819
2822
  "src": normalisedSrc.value.lazySrc,
2820
- "alt": ""
2823
+ "alt": props.alt
2821
2824
  }, null)]
2822
2825
  });
2823
2826
  const __placeholder = () => {
@@ -3159,16 +3162,20 @@
3159
3162
  default: () => [hasImage && vue.createVNode("div", {
3160
3163
  "key": "image",
3161
3164
  "class": "v-toolbar__image"
3162
- }, [vue.createVNode(VDefaultsProvider, {
3165
+ }, [!slots.image ? vue.createVNode(VImg, {
3166
+ "key": "image-img",
3167
+ "cover": true,
3168
+ "src": props.image
3169
+ }, null) : vue.createVNode(VDefaultsProvider, {
3170
+ "key": "image-defaults",
3171
+ "disabled": !props.image,
3163
3172
  "defaults": {
3164
3173
  VImg: {
3165
3174
  cover: true,
3166
3175
  src: props.image
3167
3176
  }
3168
3177
  }
3169
- }, {
3170
- default: () => [slots.image ? slots.image?.() : vue.createVNode(VImg, null, null)]
3171
- })]), vue.createVNode(VDefaultsProvider, {
3178
+ }, slots.image)]), vue.createVNode(VDefaultsProvider, {
3172
3179
  "defaults": {
3173
3180
  VTabs: {
3174
3181
  height: convertToUnit(contentHeight.value)
@@ -4889,43 +4896,49 @@
4889
4896
  },
4890
4897
  "value": valueAttr.value
4891
4898
  }, {
4892
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode(VDefaultsProvider, {
4899
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
4893
4900
  "key": "prepend",
4901
+ "class": "v-btn__prepend"
4902
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
4903
+ "key": "prepend-icon",
4904
+ "icon": props.prependIcon
4905
+ }, null) : vue.createVNode(VDefaultsProvider, {
4906
+ "key": "prepend-defaults",
4907
+ "disabled": !props.prependIcon,
4894
4908
  "defaults": {
4895
4909
  VIcon: {
4896
4910
  icon: props.prependIcon
4897
4911
  }
4898
4912
  }
4899
- }, {
4900
- default: () => [vue.createVNode("span", {
4901
- "class": "v-btn__prepend"
4902
- }, [slots.prepend?.() ?? vue.createVNode(VIcon, null, null)])]
4903
- }), vue.createVNode("span", {
4913
+ }, slots.prepend)]), vue.createVNode("span", {
4904
4914
  "class": "v-btn__content",
4905
4915
  "data-no-activator": ""
4906
- }, [vue.createVNode(VDefaultsProvider, {
4907
- "key": "content",
4916
+ }, [!slots.default && hasIcon ? vue.createVNode(VIcon, {
4917
+ "key": "content-icon",
4918
+ "icon": props.icon
4919
+ }, null) : vue.createVNode(VDefaultsProvider, {
4920
+ "key": "content-defaults",
4921
+ "disabled": !hasIcon,
4908
4922
  "defaults": {
4909
4923
  VIcon: {
4910
- icon: hasIcon ? props.icon : undefined
4924
+ icon: props.icon
4911
4925
  }
4912
4926
  }
4913
- }, {
4914
- default: () => [slots.default?.() ?? (hasIcon && vue.createVNode(VIcon, {
4915
- "key": "icon"
4916
- }, null))]
4917
- })]), !props.icon && hasAppend && vue.createVNode(VDefaultsProvider, {
4927
+ }, slots.default)]), !props.icon && hasAppend && vue.createVNode("span", {
4918
4928
  "key": "append",
4929
+ "class": "v-btn__append"
4930
+ }, [!slots.append ? vue.createVNode(VIcon, {
4931
+ "key": "append-icon",
4932
+ "icon": props.appendIcon
4933
+ }, null) : vue.createVNode(VDefaultsProvider, {
4934
+ "key": "append-defaults",
4935
+ "disabled": !props.appendIcon,
4919
4936
  "defaults": {
4920
4937
  VIcon: {
4921
4938
  icon: props.appendIcon
4922
4939
  }
4923
4940
  }
4924
- }, {
4925
- default: () => [vue.createVNode("span", {
4926
- "class": "v-btn__append"
4927
- }, [slots.append?.() ?? vue.createVNode(VIcon, null, null)])]
4928
- }), !!props.loading && vue.createVNode("span", {
4941
+ }, slots.append)]), !!props.loading && vue.createVNode("span", {
4929
4942
  "key": "loader",
4930
4943
  "class": "v-btn__loader"
4931
4944
  }, [slots.loader?.() ?? vue.createVNode(VProgressCircular, {
@@ -5054,10 +5067,12 @@
5054
5067
  })
5055
5068
  },
5056
5069
  emits: {
5070
+ 'click:close': e => true,
5057
5071
  'update:modelValue': value => true
5058
5072
  },
5059
5073
  setup(props, _ref) {
5060
5074
  let {
5075
+ emit,
5061
5076
  slots
5062
5077
  } = _ref;
5063
5078
  const isActive = useProxiedModel(props, 'modelValue');
@@ -5107,6 +5122,7 @@
5107
5122
  'aria-label': t(props.closeLabel),
5108
5123
  onClick(e) {
5109
5124
  isActive.value = false;
5125
+ emit('click:close', e);
5110
5126
  }
5111
5127
  }));
5112
5128
  return () => {
@@ -5128,8 +5144,17 @@
5128
5144
  "key": "border",
5129
5145
  "class": ['v-alert__border', textColorClasses.value],
5130
5146
  "style": textColorStyles.value
5131
- }, null), hasPrepend && vue.createVNode(VDefaultsProvider, {
5147
+ }, null), hasPrepend && vue.createVNode("div", {
5132
5148
  "key": "prepend",
5149
+ "class": "v-alert__prepend"
5150
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
5151
+ "key": "prepend-icon",
5152
+ "density": props.density,
5153
+ "icon": icon.value,
5154
+ "size": props.prominent ? 44 : 28
5155
+ }, null) : vue.createVNode(VDefaultsProvider, {
5156
+ "key": "prepend-defaults",
5157
+ "disabled": !icon.value,
5133
5158
  "defaults": {
5134
5159
  VIcon: {
5135
5160
  density: props.density,
@@ -5137,21 +5162,25 @@
5137
5162
  size: props.prominent ? 44 : 28
5138
5163
  }
5139
5164
  }
5140
- }, {
5141
- default: () => [vue.createVNode("div", {
5142
- "class": "v-alert__prepend"
5143
- }, [slots.prepend ? slots.prepend() : icon.value && vue.createVNode(VIcon, null, null)])]
5144
- }), vue.createVNode("div", {
5165
+ }, slots.prepend)]), vue.createVNode("div", {
5145
5166
  "class": "v-alert__content"
5146
5167
  }, [hasTitle && vue.createVNode(VAlertTitle, {
5147
5168
  "key": "title"
5148
5169
  }, {
5149
- default: () => [slots.title ? slots.title() : props.title]
5150
- }), hasText && (slots.text ? slots.text() : props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5170
+ default: () => [slots.title?.() ?? props.title]
5171
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5151
5172
  "key": "append",
5152
5173
  "class": "v-alert__append"
5153
- }, [slots.append()]), hasClose && vue.createVNode(VDefaultsProvider, {
5174
+ }, [slots.append()]), hasClose && vue.createVNode("div", {
5154
5175
  "key": "close",
5176
+ "class": "v-alert__close"
5177
+ }, [!slots.close ? vue.createVNode(VBtn, vue.mergeProps({
5178
+ "key": "close-btn",
5179
+ "icon": props.closeIcon,
5180
+ "size": "x-small",
5181
+ "variant": "text"
5182
+ }, closeProps.value), null) : vue.createVNode(VDefaultsProvider, {
5183
+ "key": "close-defaults",
5155
5184
  "defaults": {
5156
5185
  VBtn: {
5157
5186
  icon: props.closeIcon,
@@ -5160,12 +5189,10 @@
5160
5189
  }
5161
5190
  }
5162
5191
  }, {
5163
- default: () => [vue.createVNode("div", {
5164
- "class": "v-alert__close"
5165
- }, [slots.close?.({
5192
+ default: () => [slots.close?.({
5166
5193
  props: closeProps.value
5167
- }) ?? vue.createVNode(VBtn, closeProps.value, null)])]
5168
- })]
5194
+ })]
5195
+ })])]
5169
5196
  });
5170
5197
  };
5171
5198
  }
@@ -6175,6 +6202,7 @@
6175
6202
  "id": id.value,
6176
6203
  "active": isActive.value || isDirty.value,
6177
6204
  "dirty": isDirty.value || props.dirty,
6205
+ "disabled": isDisabled.value,
6178
6206
  "focused": isFocused.value,
6179
6207
  "error": isValid.value === false
6180
6208
  }), {
@@ -6829,10 +6857,13 @@
6829
6857
  const link = useLink(props, attrs);
6830
6858
  const isLink = vue.computed(() => props.link !== false && link.isLink.value);
6831
6859
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
6832
- function onCloseClick(e) {
6833
- isActive.value = false;
6834
- emit('click:close', e);
6835
- }
6860
+ const closeProps = vue.computed(() => ({
6861
+ 'aria-label': t(props.closeLabel),
6862
+ onClick(e) {
6863
+ isActive.value = false;
6864
+ emit('click:close', e);
6865
+ }
6866
+ }));
6836
6867
  function onClick(e) {
6837
6868
  emit('click', e);
6838
6869
  if (!isClickable.value) return;
@@ -6847,10 +6878,12 @@
6847
6878
  }
6848
6879
  return () => {
6849
6880
  const Tag = link.isLink.value ? 'a' : props.tag;
6850
- const hasAppend = !!(slots.append || props.appendIcon || props.appendAvatar);
6881
+ const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);
6882
+ const hasAppend = !!(hasAppendMedia || slots.append);
6851
6883
  const hasClose = !!(slots.close || props.closable);
6852
6884
  const hasFilter = !!(slots.filter || props.filter) && group;
6853
- const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6885
+ const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
6886
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
6854
6887
  const hasColor = !group || group.isSelected.value;
6855
6888
  return isActive.value && vue.withDirectives(vue.createVNode(Tag, {
6856
6889
  "class": ['v-chip', {
@@ -6868,77 +6901,94 @@
6868
6901
  "onClick": onClick,
6869
6902
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
6870
6903
  }, {
6871
- default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
6872
- "key": "filter",
6873
- "defaults": {
6874
- VIcon: {
6875
- icon: props.filterIcon
6876
- }
6877
- }
6904
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
6905
+ "key": "filter"
6878
6906
  }, {
6879
- default: () => [vue.createVNode(VExpandXTransition, null, {
6880
- default: () => [vue.withDirectives(vue.createVNode("div", {
6881
- "class": "v-chip__filter"
6882
- }, [slots.filter ? slots.filter() : vue.createVNode(VIcon, null, null)]), [[vue.vShow, group.isSelected.value]])]
6883
- })]
6884
- }), hasPrepend && vue.createVNode(VDefaultsProvider, {
6907
+ default: () => [vue.withDirectives(vue.createVNode("div", {
6908
+ "class": "v-chip__filter"
6909
+ }, [!slots.filter ? vue.createVNode(VIcon, {
6910
+ "key": "filter-icon",
6911
+ "icon": props.filterIcon
6912
+ }, null) : vue.withDirectives(vue.createVNode(VDefaultsProvider, {
6913
+ "key": "filter-defaults",
6914
+ "disabled": !props.filterIcon,
6915
+ "defaults": {
6916
+ VIcon: {
6917
+ icon: props.filterIcon
6918
+ }
6919
+ }
6920
+ }, null), [[vue.resolveDirective("slot"), slots.filter, "default"]])]), [[vue.vShow, group.isSelected.value]])]
6921
+ }), hasPrepend && vue.createVNode("div", {
6885
6922
  "key": "prepend",
6923
+ "class": "v-chip__prepend"
6924
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependIcon && vue.createVNode(VIcon, {
6925
+ "key": "prepend-icon",
6926
+ "icon": props.prependIcon,
6927
+ "start": true
6928
+ }, null), props.prependAvatar && vue.createVNode(VAvatar, {
6929
+ "key": "prepend-avatar",
6930
+ "image": props.prependAvatar,
6931
+ "start": true
6932
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
6933
+ "key": "prepend-defaults",
6934
+ "disabled": !hasPrependMedia,
6886
6935
  "defaults": {
6887
6936
  VAvatar: {
6888
- image: props.prependAvatar
6937
+ image: props.prependAvatar,
6938
+ start: true
6889
6939
  },
6890
6940
  VIcon: {
6891
- icon: props.prependIcon
6941
+ icon: props.prependIcon,
6942
+ start: true
6892
6943
  }
6893
6944
  }
6894
- }, {
6895
- default: () => [slots.prepend ? vue.createVNode("div", {
6896
- "class": "v-chip__prepend"
6897
- }, [slots.prepend()]) : props.prependAvatar ? vue.createVNode(VAvatar, {
6898
- "start": true
6899
- }, null) : props.prependIcon ? vue.createVNode(VIcon, {
6900
- "start": true
6901
- }, null) : undefined]
6902
- }), slots.default?.({
6945
+ }, slots.prepend)]), slots.default?.({
6903
6946
  isSelected: group?.isSelected.value,
6904
6947
  selectedClass: group?.selectedClass.value,
6905
6948
  select: group?.select,
6906
6949
  toggle: group?.toggle,
6907
6950
  value: group?.value.value,
6908
6951
  disabled: props.disabled
6909
- }) ?? props.text, hasAppend && vue.createVNode(VDefaultsProvider, {
6952
+ }) ?? props.text, hasAppend && vue.createVNode("div", {
6910
6953
  "key": "append",
6954
+ "class": "v-chip__append"
6955
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
6956
+ "key": "append-icon",
6957
+ "end": true,
6958
+ "icon": props.appendIcon
6959
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
6960
+ "key": "append-avatar",
6961
+ "end": true,
6962
+ "image": props.appendAvatar
6963
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
6964
+ "key": "append-defaults",
6965
+ "disabled": !hasAppendMedia,
6911
6966
  "defaults": {
6912
6967
  VAvatar: {
6968
+ end: true,
6913
6969
  image: props.appendAvatar
6914
6970
  },
6915
6971
  VIcon: {
6972
+ end: true,
6916
6973
  icon: props.appendIcon
6917
6974
  }
6918
6975
  }
6919
- }, {
6920
- default: () => [slots.append ? vue.createVNode("div", {
6921
- "class": "v-chip__append"
6922
- }, [slots.append()]) : props.appendAvatar ? vue.createVNode(VAvatar, {
6923
- "end": true
6924
- }, null) : props.appendIcon ? vue.createVNode(VIcon, {
6925
- "end": true
6926
- }, null) : undefined]
6927
- }), hasClose && vue.createVNode(VDefaultsProvider, {
6976
+ }, slots.append)]), hasClose && vue.createVNode("div", vue.mergeProps({
6928
6977
  "key": "close",
6978
+ "class": "v-chip__close"
6979
+ }, closeProps.value), [!slots.close ? vue.createVNode(VIcon, {
6980
+ "key": "close-icon",
6981
+ "icon": props.closeIcon,
6982
+ "size": "x-small"
6983
+ }, null) : vue.createVNode(VDefaultsProvider, {
6984
+ "key": "close-defaults",
6929
6985
  "defaults": {
6930
6986
  VIcon: {
6931
6987
  icon: props.closeIcon,
6932
6988
  size: 'x-small'
6933
6989
  }
6934
6990
  }
6935
- }, {
6936
- default: () => [vue.createVNode("div", {
6937
- "class": "v-chip__close",
6938
- "aria-label": t(props.closeLabel),
6939
- "onClick": onCloseClick
6940
- }, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
6941
- })]
6991
+ }, slots.close)])]
6942
6992
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6943
6993
  };
6944
6994
  }
@@ -7688,8 +7738,10 @@
7688
7738
  const hasColor = !list || isSelected.value || isActive.value;
7689
7739
  const hasTitle = slots.title || props.title;
7690
7740
  const hasSubtitle = slots.subtitle || props.subtitle;
7691
- const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
7692
- const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);
7741
+ const hasAppendMedia = !!(props.prependAvatar || props.prependIcon);
7742
+ const hasAppend = !!(hasAppendMedia || slots.append);
7743
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
7744
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
7693
7745
  list?.updateHasPrepend(hasPrepend);
7694
7746
  return vue.withDirectives(vue.createVNode(Tag, {
7695
7747
  "class": ['v-list-item', {
@@ -7709,7 +7761,7 @@
7709
7761
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
7710
7762
  "key": "prepend",
7711
7763
  "class": "v-list-item__prepend"
7712
- }, [props.prependAvatar && vue.createVNode(VAvatar, {
7764
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
7713
7765
  "key": "prepend-avatar",
7714
7766
  "density": props.density,
7715
7767
  "image": props.prependAvatar
@@ -7717,8 +7769,9 @@
7717
7769
  "key": "prepend-icon",
7718
7770
  "density": props.density,
7719
7771
  "icon": props.prependIcon
7720
- }, null), slots.prepend && vue.createVNode(VDefaultsProvider, {
7721
- "key": "prepend",
7772
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7773
+ "key": "prepend-defaults",
7774
+ "disabled": !hasPrependMedia,
7722
7775
  "defaults": {
7723
7776
  VAvatar: {
7724
7777
  density: props.density,
@@ -7733,7 +7786,7 @@
7733
7786
  }
7734
7787
  }
7735
7788
  }, {
7736
- default: () => [slots.prepend(slotProps.value)]
7789
+ default: () => [slots.prepend?.(slotProps.value)]
7737
7790
  })]), vue.createVNode("div", {
7738
7791
  "class": "v-list-item__content",
7739
7792
  "data-no-activator": ""
@@ -7752,8 +7805,17 @@
7752
7805
  }), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
7753
7806
  "key": "append",
7754
7807
  "class": "v-list-item__append"
7755
- }, [slots.append && vue.createVNode(VDefaultsProvider, {
7756
- "key": "append",
7808
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
7809
+ "key": "append-icon",
7810
+ "density": props.density,
7811
+ "icon": props.appendIcon
7812
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7813
+ "key": "append-avatar",
7814
+ "density": props.density,
7815
+ "image": props.appendAvatar
7816
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7817
+ "key": "append-defaults",
7818
+ "disabled": !hasAppendMedia,
7757
7819
  "defaults": {
7758
7820
  VAvatar: {
7759
7821
  density: props.density,
@@ -7768,16 +7830,8 @@
7768
7830
  }
7769
7831
  }
7770
7832
  }, {
7771
- default: () => [slots.append(slotProps.value)]
7772
- }), props.appendIcon && vue.createVNode(VIcon, {
7773
- "key": "append-icon",
7774
- "density": props.density,
7775
- "icon": props.appendIcon
7776
- }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7777
- "key": "append-avatar",
7778
- "density": props.density,
7779
- "image": props.appendAvatar
7780
- }, null)])]
7833
+ default: () => [slots.append?.(slotProps.value)]
7834
+ })])]
7781
7835
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
7782
7836
  });
7783
7837
  return {};
@@ -9123,8 +9177,8 @@
9123
9177
  function getClientHeight(isHydrate) {
9124
9178
  return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9125
9179
  }
9126
- function getPlatform() {
9127
- const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
9180
+ function getPlatform(isHydrate) {
9181
+ const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
9128
9182
  function match(regexp) {
9129
9183
  return Boolean(userAgent.match(regexp));
9130
9184
  }
@@ -9139,7 +9193,6 @@
9139
9193
  const win = match(/win/i);
9140
9194
  const mac = match(/mac/i);
9141
9195
  const linux = match(/linux/i);
9142
- const ssr = match(/ssr/i);
9143
9196
  return {
9144
9197
  android,
9145
9198
  ios,
@@ -9153,7 +9206,7 @@
9153
9206
  mac,
9154
9207
  linux,
9155
9208
  touch: SUPPORTS_TOUCH,
9156
- ssr
9209
+ ssr: userAgent === 'ssr'
9157
9210
  };
9158
9211
  }
9159
9212
  function createDisplay(options, ssr) {
@@ -9162,13 +9215,17 @@
9162
9215
  mobileBreakpoint
9163
9216
  } = parseDisplayOptions(options);
9164
9217
  const height = vue.ref(getClientHeight(ssr));
9165
- const platform = getPlatform();
9218
+ const platform = vue.shallowRef(getPlatform(ssr));
9166
9219
  const state = vue.reactive({});
9167
9220
  const width = vue.ref(getClientWidth(ssr));
9168
- function update() {
9221
+ function updateSize() {
9169
9222
  height.value = getClientHeight();
9170
9223
  width.value = getClientWidth();
9171
9224
  }
9225
+ function update() {
9226
+ updateSize();
9227
+ platform.value = getPlatform();
9228
+ }
9172
9229
 
9173
9230
  // eslint-disable-next-line max-statements
9174
9231
  vue.watchEffect(() => {
@@ -9180,7 +9237,7 @@
9180
9237
  const xxl = width.value >= thresholds.xxl;
9181
9238
  const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
9182
9239
  const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
9183
- const mobile = !platform.ssr ? width.value < breakpointValue : platform.android || platform.ios || platform.opera;
9240
+ const mobile = width.value < breakpointValue;
9184
9241
  state.xs = xs;
9185
9242
  state.sm = sm;
9186
9243
  state.md = md;
@@ -9200,11 +9257,11 @@
9200
9257
  state.width = width.value;
9201
9258
  state.mobile = mobile;
9202
9259
  state.mobileBreakpoint = mobileBreakpoint;
9203
- state.platform = platform;
9260
+ state.platform = platform.value;
9204
9261
  state.thresholds = thresholds;
9205
9262
  });
9206
9263
  if (IN_BROWSER) {
9207
- window.addEventListener('resize', update, {
9264
+ window.addEventListener('resize', updateSize, {
9208
9265
  passive: true
9209
9266
  });
9210
9267
  }
@@ -9983,7 +10040,13 @@
9983
10040
  return vue.createVNode("div", {
9984
10041
  "key": item.value,
9985
10042
  "class": "v-select__selection"
9986
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10043
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10044
+ "key": "chip",
10045
+ "closable": props.closableChips,
10046
+ "size": "small",
10047
+ "text": item.title
10048
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10049
+ "key": "chip-defaults",
9987
10050
  "defaults": {
9988
10051
  VChip: {
9989
10052
  closable: props.closableChips,
@@ -9992,15 +10055,15 @@
9992
10055
  }
9993
10056
  }
9994
10057
  }, {
9995
- default: () => [slots.chip ? slots.chip({
10058
+ default: () => [slots.chip?.({
9996
10059
  item,
9997
10060
  index,
9998
10061
  props: slotProps
9999
- }) : vue.createVNode(VChip, slotProps, null)]
10000
- }) : slots.selection ? slots.selection({
10062
+ })]
10063
+ }) : slots.selection?.({
10001
10064
  item,
10002
10065
  index
10003
- }) : vue.createVNode("span", {
10066
+ }) ?? vue.createVNode("span", {
10004
10067
  "class": "v-select__selection-text"
10005
10068
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
10006
10069
  "class": "v-select__selection-comma"
@@ -10372,7 +10435,13 @@
10372
10435
  return vue.createVNode("div", {
10373
10436
  "key": item.value,
10374
10437
  "class": "v-autocomplete__selection"
10375
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10438
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10439
+ "key": "chip",
10440
+ "closable": props.closableChips,
10441
+ "size": "small",
10442
+ "text": item.title
10443
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10444
+ "key": "chip-defaults",
10376
10445
  "defaults": {
10377
10446
  VChip: {
10378
10447
  closable: props.closableChips,
@@ -10381,15 +10450,15 @@
10381
10450
  }
10382
10451
  }
10383
10452
  }, {
10384
- default: () => [slots.chip ? slots.chip({
10453
+ default: () => [slots.chip?.({
10385
10454
  item,
10386
10455
  index,
10387
10456
  props: slotProps
10388
- }) : vue.createVNode(VChip, slotProps, null)]
10389
- }) : slots.selection ? slots.selection({
10457
+ })]
10458
+ }) : slots.selection?.({
10390
10459
  item,
10391
10460
  index
10392
- }) : vue.createVNode("span", {
10461
+ }) ?? vue.createVNode("span", {
10393
10462
  "class": "v-autocomplete__selection-text"
10394
10463
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
10395
10464
  "class": "v-autocomplete__selection-comma"
@@ -10590,7 +10659,8 @@
10590
10659
  });
10591
10660
  useRender(() => {
10592
10661
  const hasText = !!(props.text || slots.text);
10593
- const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
10662
+ const hasPrependMedia = !!(props.avatar || props.icon);
10663
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
10594
10664
  return vue.createVNode(props.tag, {
10595
10665
  "class": ['v-banner', {
10596
10666
  'v-banner--stacked': props.stacked || mobile.value,
@@ -10600,8 +10670,18 @@
10600
10670
  "style": [dimensionStyles.value, locationStyles.value],
10601
10671
  "role": "banner"
10602
10672
  }, {
10603
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10673
+ default: () => [hasPrepend && vue.createVNode("div", {
10604
10674
  "key": "prepend",
10675
+ "class": "v-banner__prepend"
10676
+ }, [!slots.prepend ? vue.createVNode(VAvatar, {
10677
+ "key": "prepend-avatar",
10678
+ "color": color.value,
10679
+ "density": density.value,
10680
+ "icon": props.icon,
10681
+ "image": props.avatar
10682
+ }, null) : vue.createVNode(VDefaultsProvider, {
10683
+ "key": "prepend-defaults",
10684
+ "disabled": !hasPrependMedia,
10605
10685
  "defaults": {
10606
10686
  VAvatar: {
10607
10687
  color: color.value,
@@ -10610,19 +10690,15 @@
10610
10690
  image: props.avatar
10611
10691
  }
10612
10692
  }
10613
- }, {
10614
- default: () => [vue.createVNode("div", {
10615
- "class": "v-banner__prepend"
10616
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && vue.createVNode(VAvatar, null, null)])]
10617
- }), vue.createVNode("div", {
10693
+ }, slots.prepend)]), vue.createVNode("div", {
10618
10694
  "class": "v-banner__content"
10619
10695
  }, [hasText && vue.createVNode(VBannerText, {
10620
10696
  "key": "text"
10621
10697
  }, {
10622
- default: () => [slots.text ? slots.text() : props.text]
10623
- }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, null, {
10624
- default: () => [slots.actions()]
10625
- })]
10698
+ default: () => [slots.text?.() ?? props.text]
10699
+ }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, {
10700
+ "key": "actions"
10701
+ }, slots.actions)]
10626
10702
  });
10627
10703
  });
10628
10704
  }
@@ -10855,19 +10931,23 @@
10855
10931
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
10856
10932
  "style": backgroundColorStyles.value
10857
10933
  }, {
10858
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10934
+ default: () => [hasPrepend && vue.createVNode("div", {
10859
10935
  "key": "prepend",
10936
+ "class": "v-breadcrumbs__prepend"
10937
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
10938
+ "key": "prepend-icon",
10939
+ "start": true,
10940
+ "icon": props.icon
10941
+ }, null) : vue.createVNode(VDefaultsProvider, {
10942
+ "key": "prepend-defaults",
10943
+ "disabled": !props.icon,
10860
10944
  "defaults": {
10861
10945
  VIcon: {
10862
10946
  icon: props.icon,
10863
10947
  start: true
10864
10948
  }
10865
10949
  }
10866
- }, {
10867
- default: () => [vue.createVNode("div", {
10868
- "class": "v-breadcrumbs__prepend"
10869
- }, [slots.prepend ? slots.prepend() : props.icon && vue.createVNode(VIcon, null, null)])]
10870
- }), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10950
+ }, slots.prepend)]), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10871
10951
  "key": index,
10872
10952
  "disabled": index >= array.length - 1
10873
10953
  }, typeof item === 'string' ? {
@@ -10931,30 +11011,33 @@
10931
11011
  slots
10932
11012
  } = _ref;
10933
11013
  useRender(() => {
10934
- const hasPrepend = !!(props.prependAvatar || props.prependIcon || slots.prepend);
10935
- const hasAppend = !!(props.appendAvatar || props.appendIcon || slots.append);
11014
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
11015
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
11016
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
11017
+ const hasAppend = !!(hasAppendMedia || slots.append);
10936
11018
  const hasTitle = !!(props.title || slots.title);
10937
11019
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
10938
11020
  return vue.createVNode("div", {
10939
11021
  "class": "v-card-item"
10940
- }, [hasPrepend && vue.createVNode(VDefaultsProvider, {
11022
+ }, [hasPrepend && vue.createVNode("div", {
10941
11023
  "key": "prepend",
11024
+ "class": "v-card-item__prepend"
11025
+ }, [!slots.prepend ? hasPrependMedia && vue.createVNode(VAvatar, {
11026
+ "key": "prepend-avatar",
11027
+ "density": props.density,
11028
+ "icon": props.prependIcon,
11029
+ "image": props.prependAvatar
11030
+ }, null) : vue.createVNode(VDefaultsProvider, {
11031
+ "key": "prepend-defaults",
11032
+ "disabled": !hasPrependMedia,
10942
11033
  "defaults": {
10943
11034
  VAvatar: {
10944
11035
  density: props.density,
10945
11036
  icon: props.prependIcon,
10946
11037
  image: props.prependAvatar
10947
- },
10948
- VIcon: {
10949
- density: props.density,
10950
- icon: props.prependIcon
10951
11038
  }
10952
11039
  }
10953
- }, {
10954
- default: () => [vue.createVNode("div", {
10955
- "class": "v-card-item__prepend"
10956
- }, [slots.prepend?.() ?? vue.createVNode(VAvatar, null, null)])]
10957
- }), vue.createVNode("div", {
11040
+ }, slots.prepend)]), vue.createVNode("div", {
10958
11041
  "class": "v-card-item__content"
10959
11042
  }, [hasTitle && vue.createVNode(VCardTitle, {
10960
11043
  "key": "title"
@@ -10964,24 +11047,25 @@
10964
11047
  "key": "subtitle"
10965
11048
  }, {
10966
11049
  default: () => [slots.subtitle?.() ?? props.subtitle]
10967
- }), slots.default?.()]), hasAppend && vue.createVNode(VDefaultsProvider, {
11050
+ }), slots.default?.()]), hasAppend && vue.createVNode("div", {
10968
11051
  "key": "append",
11052
+ "class": "v-card-item__append"
11053
+ }, [!slots.append ? hasAppendMedia && vue.createVNode(VAvatar, {
11054
+ "key": "append-avatar",
11055
+ "density": props.density,
11056
+ "icon": props.appendIcon,
11057
+ "image": props.appendAvatar
11058
+ }, null) : vue.createVNode(VDefaultsProvider, {
11059
+ "key": "append-defaults",
11060
+ "disabled": !hasAppendMedia,
10969
11061
  "defaults": {
10970
11062
  VAvatar: {
10971
11063
  density: props.density,
10972
11064
  icon: props.appendIcon,
10973
11065
  image: props.appendAvatar
10974
- },
10975
- VIcon: {
10976
- density: props.density,
10977
- icon: props.appendIcon
10978
11066
  }
10979
11067
  }
10980
- }, {
10981
- default: () => [vue.createVNode("div", {
10982
- "class": "v-card-item__append"
10983
- }, [slots.append?.() ?? vue.createVNode(VAvatar, null, null)])]
10984
- })]);
11068
+ }, slots.append)])]);
10985
11069
  });
10986
11070
  return {};
10987
11071
  }
@@ -11093,19 +11177,23 @@
11093
11177
  "onClick": isClickable.value && link.navigate,
11094
11178
  "tabindex": props.disabled ? -1 : undefined
11095
11179
  }, {
11096
- default: () => [hasImage && vue.createVNode(VDefaultsProvider, {
11180
+ default: () => [hasImage && vue.createVNode("div", {
11097
11181
  "key": "image",
11182
+ "class": "v-card__image"
11183
+ }, [!slots.image ? vue.createVNode(VImg, {
11184
+ "key": "image-img",
11185
+ "cover": true,
11186
+ "src": props.image
11187
+ }, null) : vue.createVNode(VDefaultsProvider, {
11188
+ "key": "image-defaults",
11189
+ "disabled": !props.image,
11098
11190
  "defaults": {
11099
11191
  VImg: {
11100
11192
  cover: true,
11101
11193
  src: props.image
11102
11194
  }
11103
11195
  }
11104
- }, {
11105
- default: () => [vue.createVNode("div", {
11106
- "class": "v-card__image"
11107
- }, [slots.image?.() ?? vue.createVNode(VImg, null, null)])]
11108
- }), vue.createVNode(LoaderSlot, {
11196
+ }, slots.image)]), vue.createVNode(LoaderSlot, {
11109
11197
  "name": "v-card",
11110
11198
  "active": !!props.loading,
11111
11199
  "color": typeof props.loading === 'boolean' ? undefined : props.loading
@@ -12309,7 +12397,9 @@
12309
12397
  const percentage = (val - min.value) / (max.value - min.value) * 100;
12310
12398
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
12311
12399
  };
12400
+ const showTicks = vue.toRef(props, 'showTicks');
12312
12401
  const parsedTicks = vue.computed(() => {
12402
+ if (!showTicks.value) return [];
12313
12403
  if (!props.ticks) {
12314
12404
  return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {
12315
12405
  const value = min.value + t * step.value;
@@ -12358,7 +12448,7 @@
12358
12448
  readonly: vue.toRef(props, 'readonly'),
12359
12449
  rounded: vue.toRef(props, 'rounded'),
12360
12450
  roundValue,
12361
- showTicks: vue.toRef(props, 'showTicks'),
12451
+ showTicks,
12362
12452
  startOffset,
12363
12453
  step,
12364
12454
  thumbSize,
@@ -12580,6 +12670,7 @@
12580
12670
  };
12581
12671
  });
12582
12672
  const computedTicks = vue.computed(() => {
12673
+ if (!showTicks.value) return [];
12583
12674
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
12584
12675
  return ticks.map((tick, index) => {
12585
12676
  const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
@@ -13699,7 +13790,13 @@
13699
13790
  "key": item.value,
13700
13791
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
13701
13792
  "style": index === selectionIndex.value ? textColorStyles.value : {}
13702
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
13793
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
13794
+ "key": "chip",
13795
+ "closable": props.closableChips,
13796
+ "size": "small",
13797
+ "text": item.title
13798
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
13799
+ "key": "chip-defaults",
13703
13800
  "defaults": {
13704
13801
  VChip: {
13705
13802
  closable: props.closableChips,
@@ -13708,15 +13805,15 @@
13708
13805
  }
13709
13806
  }
13710
13807
  }, {
13711
- default: () => [slots.chip ? slots.chip({
13808
+ default: () => [slots.chip?.({
13712
13809
  item,
13713
13810
  index,
13714
13811
  props: slotProps
13715
- }) : vue.createVNode(VChip, slotProps, null)]
13716
- }) : slots.selection ? slots.selection({
13812
+ })]
13813
+ }) : slots.selection?.({
13717
13814
  item,
13718
13815
  index
13719
- }) : vue.createVNode("span", {
13816
+ }) ?? vue.createVNode("span", {
13720
13817
  "class": "v-combobox__selection-text"
13721
13818
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
13722
13819
  "class": "v-combobox__selection-comma"
@@ -14217,6 +14314,7 @@
14217
14314
  "id": id.value,
14218
14315
  "active": isDirty.value || isFocused.value,
14219
14316
  "dirty": isDirty.value,
14317
+ "disabled": isDisabled.value,
14220
14318
  "focused": isFocused.value,
14221
14319
  "error": isValid.value === false
14222
14320
  }), {
@@ -16853,19 +16951,18 @@
16853
16951
  "modelValue": isActive.value,
16854
16952
  "onUpdate:modelValue": $event => isActive.value = $event,
16855
16953
  "contentProps": vue.mergeProps({
16856
- style: locationStyles.value
16954
+ class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
16955
+ style: [locationStyles.value, colorStyles.value],
16956
+ onPointerenter,
16957
+ onPointerleave: startTimeout
16857
16958
  }, overlayProps.contentProps),
16858
16959
  "persistent": true,
16859
16960
  "noClickAnimation": true,
16860
16961
  "scrim": false,
16861
- "scrollStrategy": "none"
16962
+ "scrollStrategy": "none",
16963
+ "_disableGlobalStack": true
16862
16964
  }, scopeId), {
16863
- default: () => [vue.createVNode("div", {
16864
- "class": ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
16865
- "style": [colorStyles.value],
16866
- "onPointerenter": onPointerenter,
16867
- "onPointerleave": startTimeout
16868
- }, [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
16965
+ default: () => [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
16869
16966
  "class": "v-snackbar__content",
16870
16967
  "role": "status",
16871
16968
  "aria-live": "polite"
@@ -16880,7 +16977,7 @@
16880
16977
  default: () => [vue.createVNode("div", {
16881
16978
  "class": "v-snackbar__actions"
16882
16979
  }, [slots.actions()])]
16883
- })])],
16980
+ })],
16884
16981
  activator: slots.activator
16885
16982
  });
16886
16983
  });
@@ -17229,16 +17326,6 @@
17229
17326
  backgroundColorClasses,
17230
17327
  backgroundColorStyles
17231
17328
  } = useBackgroundColor(vue.toRef(props, 'bgColor'));
17232
- provideDefaults({
17233
- VTab: {
17234
- color: vue.toRef(props, 'color'),
17235
- direction: vue.toRef(props, 'direction'),
17236
- stacked: vue.toRef(props, 'stacked'),
17237
- fixed: vue.toRef(props, 'fixedTabs'),
17238
- sliderColor: vue.toRef(props, 'sliderColor'),
17239
- hideSlider: vue.toRef(props, 'hideSlider')
17240
- }
17241
- });
17242
17329
  useRender(() => vue.createVNode(VSlideGroup, {
17243
17330
  "modelValue": model.value,
17244
17331
  "onUpdate:modelValue": $event => model.value = $event,
@@ -17255,9 +17342,27 @@
17255
17342
  "mandatory": props.mandatory,
17256
17343
  "direction": props.direction
17257
17344
  }, {
17258
- default: () => [slots.default ? slots.default() : parsedItems.value.map(item => vue.createVNode(VTab, vue.mergeProps(item, {
17259
- "key": item.title
17260
- }), null))]
17345
+ default: () => [!slots.default ? parsedItems.value.map(item => vue.createVNode(VTab, vue.mergeProps({
17346
+ "key": item.title,
17347
+ "color": props.color,
17348
+ "direction": props.direction,
17349
+ "fixed": props.fixedTabs,
17350
+ "hideSlider": props.hideSlider,
17351
+ "sliderColor": props.sliderColor,
17352
+ "stacked": props.stacked
17353
+ }, item), null)) : vue.createVNode(VDefaultsProvider, {
17354
+ "key": "tabs-defaults",
17355
+ "defaults": {
17356
+ VTab: {
17357
+ color: props.color,
17358
+ direction: props.direction,
17359
+ fixed: props.fixedTabs,
17360
+ hideSlider: props.hideSlider,
17361
+ sliderColor: props.sliderColor,
17362
+ stacked: props.stacked
17363
+ }
17364
+ }
17365
+ }, slots.default)]
17261
17366
  }));
17262
17367
  return {};
17263
17368
  }
@@ -17482,6 +17587,7 @@
17482
17587
  }, fieldProps, {
17483
17588
  "active": isActive.value || isDirty.value,
17484
17589
  "dirty": isDirty.value || props.dirty,
17590
+ "disabled": isDisabled.value,
17485
17591
  "focused": isFocused.value,
17486
17592
  "error": isValid.value === false
17487
17593
  }), {
@@ -17684,13 +17790,6 @@
17684
17790
  backgroundColorClasses: lineColorClasses,
17685
17791
  backgroundColorStyles: lineColorStyles
17686
17792
  } = useBackgroundColor(vue.toRef(props, 'lineColor'));
17687
- provideDefaults({
17688
- VIcon: {
17689
- color: vue.toRef(props, 'iconColor'),
17690
- icon: vue.toRef(props, 'icon'),
17691
- size: vue.toRef(props, 'size')
17692
- }
17693
- });
17694
17793
  useRender(() => vue.createVNode("div", {
17695
17794
  "class": ['v-timeline-divider', {
17696
17795
  'v-timeline-divider--fill-dot': props.fillDot
@@ -17705,7 +17804,22 @@
17705
17804
  }, [vue.createVNode("div", {
17706
17805
  "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
17707
17806
  "style": backgroundColorStyles.value
17708
- }, [slots.default?.() ?? (props.icon ? vue.createVNode(VIcon, null, null) : undefined)])]), vue.createVNode("div", {
17807
+ }, [!slots.default ? vue.createVNode(VIcon, {
17808
+ "key": "icon",
17809
+ "color": props.iconColor,
17810
+ "icon": props.icon,
17811
+ "size": props.size
17812
+ }, null) : vue.createVNode(VDefaultsProvider, {
17813
+ "key": "icon-defaults",
17814
+ "disabled": !props.icon,
17815
+ "defaults": {
17816
+ VIcon: {
17817
+ color: props.iconColor,
17818
+ icon: props.icon,
17819
+ size: props.size
17820
+ }
17821
+ }
17822
+ }, slots.default)])]), vue.createVNode("div", {
17709
17823
  "class": ['v-timeline-divider__after', lineColorClasses.value],
17710
17824
  "style": lineColorStyles.value
17711
17825
  }, null)]));
@@ -18222,7 +18336,7 @@
18222
18336
  locale
18223
18337
  };
18224
18338
  }
18225
- const version$1 = "3.1.7";
18339
+ const version$1 = "3.1.9";
18226
18340
  createVuetify$1.version = version$1;
18227
18341
 
18228
18342
  // Vue's inject() can only be used in setup
@@ -18242,7 +18356,7 @@
18242
18356
  ...options
18243
18357
  });
18244
18358
  };
18245
- const version = "3.1.7";
18359
+ const version = "3.1.9";
18246
18360
  createVuetify.version = version;
18247
18361
 
18248
18362
  exports.components = components;