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
@@ -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
  */
@@ -949,6 +949,8 @@ function provideDefaults(defaults, options) {
949
949
  const injectedDefaults = useDefaults();
950
950
  const providedDefaults = ref(defaults);
951
951
  const newDefaults = computed(() => {
952
+ const disabled = unref(options?.disabled);
953
+ if (disabled) return {};
952
954
  const scoped = unref(options?.scoped);
953
955
  const reset = unref(options?.reset);
954
956
  const root = unref(options?.root);
@@ -1022,10 +1024,11 @@ const defineComponent = function defineComponent(options) {
1022
1024
  const componentDefaults = computed(() => defaults.value[props._as ?? options.name]);
1023
1025
  const _props = new Proxy(props, {
1024
1026
  get(target, prop) {
1027
+ const propValue = Reflect.get(target, prop);
1025
1028
  if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1026
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? target[prop];
1029
+ return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1027
1030
  }
1028
- return Reflect.get(target, prop);
1031
+ return propValue;
1029
1032
  }
1030
1033
  });
1031
1034
  const _subcomponentDefaults = shallowRef();
@@ -1667,17 +1670,9 @@ function createTheme(options) {
1667
1670
  if (current.value.dark) {
1668
1671
  createCssClass(lines, ':root', ['color-scheme: dark']);
1669
1672
  }
1673
+ createCssClass(lines, ':root', genCssVariables(current.value));
1670
1674
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
1671
- const {
1672
- variables,
1673
- dark
1674
- } = theme;
1675
- createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${dark ? 'dark' : 'normal'}`, ...genCssVariables(theme), ...Object.keys(variables).map(key => {
1676
- const value = variables[key];
1677
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1678
- const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1679
- return `--v-${key}: ${rgb ?? value}`;
1680
- })]);
1675
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)]);
1681
1676
  }
1682
1677
  const bgLines = [];
1683
1678
  const fgLines = [];
@@ -1790,6 +1785,11 @@ function genCssVariables(theme) {
1790
1785
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
1791
1786
  }
1792
1787
  }
1788
+ for (const [key, value] of Object.entries(theme.variables)) {
1789
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1790
+ const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1791
+ variables.push(`--v-${key}: ${rgb ?? value}`);
1792
+ }
1793
1793
  return variables;
1794
1794
  }
1795
1795
 
@@ -2019,7 +2019,7 @@ const defaultRtl = {
2019
2019
  en: false,
2020
2020
  es: false,
2021
2021
  et: false,
2022
- fa: false,
2022
+ fa: true,
2023
2023
  fi: false,
2024
2024
  fr: false,
2025
2025
  hr: false,
@@ -2152,6 +2152,7 @@ const VDefaultsProvider = genericComponent(false)({
2152
2152
  name: 'VDefaultsProvider',
2153
2153
  props: {
2154
2154
  defaults: Object,
2155
+ disabled: Boolean,
2155
2156
  reset: [Number, String],
2156
2157
  root: Boolean,
2157
2158
  scoped: Boolean
@@ -2162,6 +2163,7 @@ const VDefaultsProvider = genericComponent(false)({
2162
2163
  } = _ref;
2163
2164
  const {
2164
2165
  defaults,
2166
+ disabled,
2165
2167
  reset,
2166
2168
  root,
2167
2169
  scoped
@@ -2169,7 +2171,8 @@ const VDefaultsProvider = genericComponent(false)({
2169
2171
  provideDefaults(defaults, {
2170
2172
  reset,
2171
2173
  root,
2172
- scoped
2174
+ scoped,
2175
+ disabled
2173
2176
  });
2174
2177
  return () => slots.default?.();
2175
2178
  }
@@ -2180,7 +2183,7 @@ const VDefaultsProvider = genericComponent(false)({
2180
2183
  // Types
2181
2184
 
2182
2185
  function createCssTransition(name) {
2183
- let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top center 0';
2186
+ let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'center center';
2184
2187
  let mode = arguments.length > 2 ? arguments[2] : undefined;
2185
2188
  return genericComponent()({
2186
2189
  name,
@@ -2791,7 +2794,7 @@ const VImg = genericComponent()({
2791
2794
  "class": ['v-img__img', containClasses.value],
2792
2795
  "src": normalisedSrc.value.src,
2793
2796
  "srcset": normalisedSrc.value.srcset,
2794
- "alt": "",
2797
+ "alt": props.alt,
2795
2798
  "sizes": props.sizes,
2796
2799
  "ref": image,
2797
2800
  "onLoad": onLoad,
@@ -2813,7 +2816,7 @@ const VImg = genericComponent()({
2813
2816
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && createVNode("img", {
2814
2817
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
2815
2818
  "src": normalisedSrc.value.lazySrc,
2816
- "alt": ""
2819
+ "alt": props.alt
2817
2820
  }, null)]
2818
2821
  });
2819
2822
  const __placeholder = () => {
@@ -3155,16 +3158,20 @@ const VToolbar = genericComponent()({
3155
3158
  default: () => [hasImage && createVNode("div", {
3156
3159
  "key": "image",
3157
3160
  "class": "v-toolbar__image"
3158
- }, [createVNode(VDefaultsProvider, {
3161
+ }, [!slots.image ? createVNode(VImg, {
3162
+ "key": "image-img",
3163
+ "cover": true,
3164
+ "src": props.image
3165
+ }, null) : createVNode(VDefaultsProvider, {
3166
+ "key": "image-defaults",
3167
+ "disabled": !props.image,
3159
3168
  "defaults": {
3160
3169
  VImg: {
3161
3170
  cover: true,
3162
3171
  src: props.image
3163
3172
  }
3164
3173
  }
3165
- }, {
3166
- default: () => [slots.image ? slots.image?.() : createVNode(VImg, null, null)]
3167
- })]), createVNode(VDefaultsProvider, {
3174
+ }, slots.image)]), createVNode(VDefaultsProvider, {
3168
3175
  "defaults": {
3169
3176
  VTabs: {
3170
3177
  height: convertToUnit(contentHeight.value)
@@ -4885,43 +4892,49 @@ const VBtn = genericComponent()({
4885
4892
  },
4886
4893
  "value": valueAttr.value
4887
4894
  }, {
4888
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode(VDefaultsProvider, {
4895
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
4889
4896
  "key": "prepend",
4897
+ "class": "v-btn__prepend"
4898
+ }, [!slots.prepend ? createVNode(VIcon, {
4899
+ "key": "prepend-icon",
4900
+ "icon": props.prependIcon
4901
+ }, null) : createVNode(VDefaultsProvider, {
4902
+ "key": "prepend-defaults",
4903
+ "disabled": !props.prependIcon,
4890
4904
  "defaults": {
4891
4905
  VIcon: {
4892
4906
  icon: props.prependIcon
4893
4907
  }
4894
4908
  }
4895
- }, {
4896
- default: () => [createVNode("span", {
4897
- "class": "v-btn__prepend"
4898
- }, [slots.prepend?.() ?? createVNode(VIcon, null, null)])]
4899
- }), createVNode("span", {
4909
+ }, slots.prepend)]), createVNode("span", {
4900
4910
  "class": "v-btn__content",
4901
4911
  "data-no-activator": ""
4902
- }, [createVNode(VDefaultsProvider, {
4903
- "key": "content",
4912
+ }, [!slots.default && hasIcon ? createVNode(VIcon, {
4913
+ "key": "content-icon",
4914
+ "icon": props.icon
4915
+ }, null) : createVNode(VDefaultsProvider, {
4916
+ "key": "content-defaults",
4917
+ "disabled": !hasIcon,
4904
4918
  "defaults": {
4905
4919
  VIcon: {
4906
- icon: hasIcon ? props.icon : undefined
4920
+ icon: props.icon
4907
4921
  }
4908
4922
  }
4909
- }, {
4910
- default: () => [slots.default?.() ?? (hasIcon && createVNode(VIcon, {
4911
- "key": "icon"
4912
- }, null))]
4913
- })]), !props.icon && hasAppend && createVNode(VDefaultsProvider, {
4923
+ }, slots.default)]), !props.icon && hasAppend && createVNode("span", {
4914
4924
  "key": "append",
4925
+ "class": "v-btn__append"
4926
+ }, [!slots.append ? createVNode(VIcon, {
4927
+ "key": "append-icon",
4928
+ "icon": props.appendIcon
4929
+ }, null) : createVNode(VDefaultsProvider, {
4930
+ "key": "append-defaults",
4931
+ "disabled": !props.appendIcon,
4915
4932
  "defaults": {
4916
4933
  VIcon: {
4917
4934
  icon: props.appendIcon
4918
4935
  }
4919
4936
  }
4920
- }, {
4921
- default: () => [createVNode("span", {
4922
- "class": "v-btn__append"
4923
- }, [slots.append?.() ?? createVNode(VIcon, null, null)])]
4924
- }), !!props.loading && createVNode("span", {
4937
+ }, slots.append)]), !!props.loading && createVNode("span", {
4925
4938
  "key": "loader",
4926
4939
  "class": "v-btn__loader"
4927
4940
  }, [slots.loader?.() ?? createVNode(VProgressCircular, {
@@ -5050,10 +5063,12 @@ const VAlert = genericComponent()({
5050
5063
  })
5051
5064
  },
5052
5065
  emits: {
5066
+ 'click:close': e => true,
5053
5067
  'update:modelValue': value => true
5054
5068
  },
5055
5069
  setup(props, _ref) {
5056
5070
  let {
5071
+ emit,
5057
5072
  slots
5058
5073
  } = _ref;
5059
5074
  const isActive = useProxiedModel(props, 'modelValue');
@@ -5103,6 +5118,7 @@ const VAlert = genericComponent()({
5103
5118
  'aria-label': t(props.closeLabel),
5104
5119
  onClick(e) {
5105
5120
  isActive.value = false;
5121
+ emit('click:close', e);
5106
5122
  }
5107
5123
  }));
5108
5124
  return () => {
@@ -5124,8 +5140,17 @@ const VAlert = genericComponent()({
5124
5140
  "key": "border",
5125
5141
  "class": ['v-alert__border', textColorClasses.value],
5126
5142
  "style": textColorStyles.value
5127
- }, null), hasPrepend && createVNode(VDefaultsProvider, {
5143
+ }, null), hasPrepend && createVNode("div", {
5128
5144
  "key": "prepend",
5145
+ "class": "v-alert__prepend"
5146
+ }, [!slots.prepend ? createVNode(VIcon, {
5147
+ "key": "prepend-icon",
5148
+ "density": props.density,
5149
+ "icon": icon.value,
5150
+ "size": props.prominent ? 44 : 28
5151
+ }, null) : createVNode(VDefaultsProvider, {
5152
+ "key": "prepend-defaults",
5153
+ "disabled": !icon.value,
5129
5154
  "defaults": {
5130
5155
  VIcon: {
5131
5156
  density: props.density,
@@ -5133,21 +5158,25 @@ const VAlert = genericComponent()({
5133
5158
  size: props.prominent ? 44 : 28
5134
5159
  }
5135
5160
  }
5136
- }, {
5137
- default: () => [createVNode("div", {
5138
- "class": "v-alert__prepend"
5139
- }, [slots.prepend ? slots.prepend() : icon.value && createVNode(VIcon, null, null)])]
5140
- }), createVNode("div", {
5161
+ }, slots.prepend)]), createVNode("div", {
5141
5162
  "class": "v-alert__content"
5142
5163
  }, [hasTitle && createVNode(VAlertTitle, {
5143
5164
  "key": "title"
5144
5165
  }, {
5145
- default: () => [slots.title ? slots.title() : props.title]
5146
- }), hasText && (slots.text ? slots.text() : props.text), slots.default?.()]), slots.append && createVNode("div", {
5166
+ default: () => [slots.title?.() ?? props.title]
5167
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && createVNode("div", {
5147
5168
  "key": "append",
5148
5169
  "class": "v-alert__append"
5149
- }, [slots.append()]), hasClose && createVNode(VDefaultsProvider, {
5170
+ }, [slots.append()]), hasClose && createVNode("div", {
5150
5171
  "key": "close",
5172
+ "class": "v-alert__close"
5173
+ }, [!slots.close ? createVNode(VBtn, mergeProps({
5174
+ "key": "close-btn",
5175
+ "icon": props.closeIcon,
5176
+ "size": "x-small",
5177
+ "variant": "text"
5178
+ }, closeProps.value), null) : createVNode(VDefaultsProvider, {
5179
+ "key": "close-defaults",
5151
5180
  "defaults": {
5152
5181
  VBtn: {
5153
5182
  icon: props.closeIcon,
@@ -5156,12 +5185,10 @@ const VAlert = genericComponent()({
5156
5185
  }
5157
5186
  }
5158
5187
  }, {
5159
- default: () => [createVNode("div", {
5160
- "class": "v-alert__close"
5161
- }, [slots.close?.({
5188
+ default: () => [slots.close?.({
5162
5189
  props: closeProps.value
5163
- }) ?? createVNode(VBtn, closeProps.value, null)])]
5164
- })]
5190
+ })]
5191
+ })])]
5165
5192
  });
5166
5193
  };
5167
5194
  }
@@ -6171,6 +6198,7 @@ const VTextField = genericComponent()({
6171
6198
  "id": id.value,
6172
6199
  "active": isActive.value || isDirty.value,
6173
6200
  "dirty": isDirty.value || props.dirty,
6201
+ "disabled": isDisabled.value,
6174
6202
  "focused": isFocused.value,
6175
6203
  "error": isValid.value === false
6176
6204
  }), {
@@ -6825,10 +6853,13 @@ const VChip = genericComponent()({
6825
6853
  const link = useLink(props, attrs);
6826
6854
  const isLink = computed(() => props.link !== false && link.isLink.value);
6827
6855
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
6828
- function onCloseClick(e) {
6829
- isActive.value = false;
6830
- emit('click:close', e);
6831
- }
6856
+ const closeProps = computed(() => ({
6857
+ 'aria-label': t(props.closeLabel),
6858
+ onClick(e) {
6859
+ isActive.value = false;
6860
+ emit('click:close', e);
6861
+ }
6862
+ }));
6832
6863
  function onClick(e) {
6833
6864
  emit('click', e);
6834
6865
  if (!isClickable.value) return;
@@ -6843,10 +6874,12 @@ const VChip = genericComponent()({
6843
6874
  }
6844
6875
  return () => {
6845
6876
  const Tag = link.isLink.value ? 'a' : props.tag;
6846
- const hasAppend = !!(slots.append || props.appendIcon || props.appendAvatar);
6877
+ const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);
6878
+ const hasAppend = !!(hasAppendMedia || slots.append);
6847
6879
  const hasClose = !!(slots.close || props.closable);
6848
6880
  const hasFilter = !!(slots.filter || props.filter) && group;
6849
- const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6881
+ const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
6882
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
6850
6883
  const hasColor = !group || group.isSelected.value;
6851
6884
  return isActive.value && withDirectives(createVNode(Tag, {
6852
6885
  "class": ['v-chip', {
@@ -6864,77 +6897,94 @@ const VChip = genericComponent()({
6864
6897
  "onClick": onClick,
6865
6898
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
6866
6899
  }, {
6867
- default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VDefaultsProvider, {
6868
- "key": "filter",
6869
- "defaults": {
6870
- VIcon: {
6871
- icon: props.filterIcon
6872
- }
6873
- }
6900
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VExpandXTransition, {
6901
+ "key": "filter"
6874
6902
  }, {
6875
- default: () => [createVNode(VExpandXTransition, null, {
6876
- default: () => [withDirectives(createVNode("div", {
6877
- "class": "v-chip__filter"
6878
- }, [slots.filter ? slots.filter() : createVNode(VIcon, null, null)]), [[vShow, group.isSelected.value]])]
6879
- })]
6880
- }), hasPrepend && createVNode(VDefaultsProvider, {
6903
+ default: () => [withDirectives(createVNode("div", {
6904
+ "class": "v-chip__filter"
6905
+ }, [!slots.filter ? createVNode(VIcon, {
6906
+ "key": "filter-icon",
6907
+ "icon": props.filterIcon
6908
+ }, null) : withDirectives(createVNode(VDefaultsProvider, {
6909
+ "key": "filter-defaults",
6910
+ "disabled": !props.filterIcon,
6911
+ "defaults": {
6912
+ VIcon: {
6913
+ icon: props.filterIcon
6914
+ }
6915
+ }
6916
+ }, null), [[resolveDirective("slot"), slots.filter, "default"]])]), [[vShow, group.isSelected.value]])]
6917
+ }), hasPrepend && createVNode("div", {
6881
6918
  "key": "prepend",
6919
+ "class": "v-chip__prepend"
6920
+ }, [!slots.prepend ? createVNode(Fragment, null, [props.prependIcon && createVNode(VIcon, {
6921
+ "key": "prepend-icon",
6922
+ "icon": props.prependIcon,
6923
+ "start": true
6924
+ }, null), props.prependAvatar && createVNode(VAvatar, {
6925
+ "key": "prepend-avatar",
6926
+ "image": props.prependAvatar,
6927
+ "start": true
6928
+ }, null)]) : createVNode(VDefaultsProvider, {
6929
+ "key": "prepend-defaults",
6930
+ "disabled": !hasPrependMedia,
6882
6931
  "defaults": {
6883
6932
  VAvatar: {
6884
- image: props.prependAvatar
6933
+ image: props.prependAvatar,
6934
+ start: true
6885
6935
  },
6886
6936
  VIcon: {
6887
- icon: props.prependIcon
6937
+ icon: props.prependIcon,
6938
+ start: true
6888
6939
  }
6889
6940
  }
6890
- }, {
6891
- default: () => [slots.prepend ? createVNode("div", {
6892
- "class": "v-chip__prepend"
6893
- }, [slots.prepend()]) : props.prependAvatar ? createVNode(VAvatar, {
6894
- "start": true
6895
- }, null) : props.prependIcon ? createVNode(VIcon, {
6896
- "start": true
6897
- }, null) : undefined]
6898
- }), slots.default?.({
6941
+ }, slots.prepend)]), slots.default?.({
6899
6942
  isSelected: group?.isSelected.value,
6900
6943
  selectedClass: group?.selectedClass.value,
6901
6944
  select: group?.select,
6902
6945
  toggle: group?.toggle,
6903
6946
  value: group?.value.value,
6904
6947
  disabled: props.disabled
6905
- }) ?? props.text, hasAppend && createVNode(VDefaultsProvider, {
6948
+ }) ?? props.text, hasAppend && createVNode("div", {
6906
6949
  "key": "append",
6950
+ "class": "v-chip__append"
6951
+ }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
6952
+ "key": "append-icon",
6953
+ "end": true,
6954
+ "icon": props.appendIcon
6955
+ }, null), props.appendAvatar && createVNode(VAvatar, {
6956
+ "key": "append-avatar",
6957
+ "end": true,
6958
+ "image": props.appendAvatar
6959
+ }, null)]) : createVNode(VDefaultsProvider, {
6960
+ "key": "append-defaults",
6961
+ "disabled": !hasAppendMedia,
6907
6962
  "defaults": {
6908
6963
  VAvatar: {
6964
+ end: true,
6909
6965
  image: props.appendAvatar
6910
6966
  },
6911
6967
  VIcon: {
6968
+ end: true,
6912
6969
  icon: props.appendIcon
6913
6970
  }
6914
6971
  }
6915
- }, {
6916
- default: () => [slots.append ? createVNode("div", {
6917
- "class": "v-chip__append"
6918
- }, [slots.append()]) : props.appendAvatar ? createVNode(VAvatar, {
6919
- "end": true
6920
- }, null) : props.appendIcon ? createVNode(VIcon, {
6921
- "end": true
6922
- }, null) : undefined]
6923
- }), hasClose && createVNode(VDefaultsProvider, {
6972
+ }, slots.append)]), hasClose && createVNode("div", mergeProps({
6924
6973
  "key": "close",
6974
+ "class": "v-chip__close"
6975
+ }, closeProps.value), [!slots.close ? createVNode(VIcon, {
6976
+ "key": "close-icon",
6977
+ "icon": props.closeIcon,
6978
+ "size": "x-small"
6979
+ }, null) : createVNode(VDefaultsProvider, {
6980
+ "key": "close-defaults",
6925
6981
  "defaults": {
6926
6982
  VIcon: {
6927
6983
  icon: props.closeIcon,
6928
6984
  size: 'x-small'
6929
6985
  }
6930
6986
  }
6931
- }, {
6932
- default: () => [createVNode("div", {
6933
- "class": "v-chip__close",
6934
- "aria-label": t(props.closeLabel),
6935
- "onClick": onCloseClick
6936
- }, [slots.close ? slots.close() : createVNode(VIcon, null, null)])]
6937
- })]
6987
+ }, slots.close)])]
6938
6988
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6939
6989
  };
6940
6990
  }
@@ -7684,8 +7734,10 @@ const VListItem = genericComponent()({
7684
7734
  const hasColor = !list || isSelected.value || isActive.value;
7685
7735
  const hasTitle = slots.title || props.title;
7686
7736
  const hasSubtitle = slots.subtitle || props.subtitle;
7687
- const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
7688
- const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);
7737
+ const hasAppendMedia = !!(props.prependAvatar || props.prependIcon);
7738
+ const hasAppend = !!(hasAppendMedia || slots.append);
7739
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
7740
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
7689
7741
  list?.updateHasPrepend(hasPrepend);
7690
7742
  return withDirectives(createVNode(Tag, {
7691
7743
  "class": ['v-list-item', {
@@ -7705,7 +7757,7 @@ const VListItem = genericComponent()({
7705
7757
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode("div", {
7706
7758
  "key": "prepend",
7707
7759
  "class": "v-list-item__prepend"
7708
- }, [props.prependAvatar && createVNode(VAvatar, {
7760
+ }, [!slots.prepend ? createVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
7709
7761
  "key": "prepend-avatar",
7710
7762
  "density": props.density,
7711
7763
  "image": props.prependAvatar
@@ -7713,8 +7765,9 @@ const VListItem = genericComponent()({
7713
7765
  "key": "prepend-icon",
7714
7766
  "density": props.density,
7715
7767
  "icon": props.prependIcon
7716
- }, null), slots.prepend && createVNode(VDefaultsProvider, {
7717
- "key": "prepend",
7768
+ }, null)]) : createVNode(VDefaultsProvider, {
7769
+ "key": "prepend-defaults",
7770
+ "disabled": !hasPrependMedia,
7718
7771
  "defaults": {
7719
7772
  VAvatar: {
7720
7773
  density: props.density,
@@ -7729,7 +7782,7 @@ const VListItem = genericComponent()({
7729
7782
  }
7730
7783
  }
7731
7784
  }, {
7732
- default: () => [slots.prepend(slotProps.value)]
7785
+ default: () => [slots.prepend?.(slotProps.value)]
7733
7786
  })]), createVNode("div", {
7734
7787
  "class": "v-list-item__content",
7735
7788
  "data-no-activator": ""
@@ -7748,8 +7801,17 @@ const VListItem = genericComponent()({
7748
7801
  }), slots.default?.(slotProps.value)]), hasAppend && createVNode("div", {
7749
7802
  "key": "append",
7750
7803
  "class": "v-list-item__append"
7751
- }, [slots.append && createVNode(VDefaultsProvider, {
7752
- "key": "append",
7804
+ }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
7805
+ "key": "append-icon",
7806
+ "density": props.density,
7807
+ "icon": props.appendIcon
7808
+ }, null), props.appendAvatar && createVNode(VAvatar, {
7809
+ "key": "append-avatar",
7810
+ "density": props.density,
7811
+ "image": props.appendAvatar
7812
+ }, null)]) : createVNode(VDefaultsProvider, {
7813
+ "key": "append-defaults",
7814
+ "disabled": !hasAppendMedia,
7753
7815
  "defaults": {
7754
7816
  VAvatar: {
7755
7817
  density: props.density,
@@ -7764,16 +7826,8 @@ const VListItem = genericComponent()({
7764
7826
  }
7765
7827
  }
7766
7828
  }, {
7767
- default: () => [slots.append(slotProps.value)]
7768
- }), props.appendIcon && createVNode(VIcon, {
7769
- "key": "append-icon",
7770
- "density": props.density,
7771
- "icon": props.appendIcon
7772
- }, null), props.appendAvatar && createVNode(VAvatar, {
7773
- "key": "append-avatar",
7774
- "density": props.density,
7775
- "image": props.appendAvatar
7776
- }, null)])]
7829
+ default: () => [slots.append?.(slotProps.value)]
7830
+ })])]
7777
7831
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
7778
7832
  });
7779
7833
  return {};
@@ -9119,8 +9173,8 @@ function getClientWidth(isHydrate) {
9119
9173
  function getClientHeight(isHydrate) {
9120
9174
  return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9121
9175
  }
9122
- function getPlatform() {
9123
- const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
9176
+ function getPlatform(isHydrate) {
9177
+ const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
9124
9178
  function match(regexp) {
9125
9179
  return Boolean(userAgent.match(regexp));
9126
9180
  }
@@ -9135,7 +9189,6 @@ function getPlatform() {
9135
9189
  const win = match(/win/i);
9136
9190
  const mac = match(/mac/i);
9137
9191
  const linux = match(/linux/i);
9138
- const ssr = match(/ssr/i);
9139
9192
  return {
9140
9193
  android,
9141
9194
  ios,
@@ -9149,7 +9202,7 @@ function getPlatform() {
9149
9202
  mac,
9150
9203
  linux,
9151
9204
  touch: SUPPORTS_TOUCH,
9152
- ssr
9205
+ ssr: userAgent === 'ssr'
9153
9206
  };
9154
9207
  }
9155
9208
  function createDisplay(options, ssr) {
@@ -9158,13 +9211,17 @@ function createDisplay(options, ssr) {
9158
9211
  mobileBreakpoint
9159
9212
  } = parseDisplayOptions(options);
9160
9213
  const height = ref(getClientHeight(ssr));
9161
- const platform = getPlatform();
9214
+ const platform = shallowRef(getPlatform(ssr));
9162
9215
  const state = reactive({});
9163
9216
  const width = ref(getClientWidth(ssr));
9164
- function update() {
9217
+ function updateSize() {
9165
9218
  height.value = getClientHeight();
9166
9219
  width.value = getClientWidth();
9167
9220
  }
9221
+ function update() {
9222
+ updateSize();
9223
+ platform.value = getPlatform();
9224
+ }
9168
9225
 
9169
9226
  // eslint-disable-next-line max-statements
9170
9227
  watchEffect(() => {
@@ -9176,7 +9233,7 @@ function createDisplay(options, ssr) {
9176
9233
  const xxl = width.value >= thresholds.xxl;
9177
9234
  const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
9178
9235
  const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
9179
- const mobile = !platform.ssr ? width.value < breakpointValue : platform.android || platform.ios || platform.opera;
9236
+ const mobile = width.value < breakpointValue;
9180
9237
  state.xs = xs;
9181
9238
  state.sm = sm;
9182
9239
  state.md = md;
@@ -9196,11 +9253,11 @@ function createDisplay(options, ssr) {
9196
9253
  state.width = width.value;
9197
9254
  state.mobile = mobile;
9198
9255
  state.mobileBreakpoint = mobileBreakpoint;
9199
- state.platform = platform;
9256
+ state.platform = platform.value;
9200
9257
  state.thresholds = thresholds;
9201
9258
  });
9202
9259
  if (IN_BROWSER) {
9203
- window.addEventListener('resize', update, {
9260
+ window.addEventListener('resize', updateSize, {
9204
9261
  passive: true
9205
9262
  });
9206
9263
  }
@@ -9979,7 +10036,13 @@ const VSelect = genericComponent()({
9979
10036
  return createVNode("div", {
9980
10037
  "key": item.value,
9981
10038
  "class": "v-select__selection"
9982
- }, [hasChips ? createVNode(VDefaultsProvider, {
10039
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
10040
+ "key": "chip",
10041
+ "closable": props.closableChips,
10042
+ "size": "small",
10043
+ "text": item.title
10044
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
10045
+ "key": "chip-defaults",
9983
10046
  "defaults": {
9984
10047
  VChip: {
9985
10048
  closable: props.closableChips,
@@ -9988,15 +10051,15 @@ const VSelect = genericComponent()({
9988
10051
  }
9989
10052
  }
9990
10053
  }, {
9991
- default: () => [slots.chip ? slots.chip({
10054
+ default: () => [slots.chip?.({
9992
10055
  item,
9993
10056
  index,
9994
10057
  props: slotProps
9995
- }) : createVNode(VChip, slotProps, null)]
9996
- }) : slots.selection ? slots.selection({
10058
+ })]
10059
+ }) : slots.selection?.({
9997
10060
  item,
9998
10061
  index
9999
- }) : createVNode("span", {
10062
+ }) ?? createVNode("span", {
10000
10063
  "class": "v-select__selection-text"
10001
10064
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10002
10065
  "class": "v-select__selection-comma"
@@ -10368,7 +10431,13 @@ const VAutocomplete = genericComponent()({
10368
10431
  return createVNode("div", {
10369
10432
  "key": item.value,
10370
10433
  "class": "v-autocomplete__selection"
10371
- }, [hasChips ? createVNode(VDefaultsProvider, {
10434
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
10435
+ "key": "chip",
10436
+ "closable": props.closableChips,
10437
+ "size": "small",
10438
+ "text": item.title
10439
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
10440
+ "key": "chip-defaults",
10372
10441
  "defaults": {
10373
10442
  VChip: {
10374
10443
  closable: props.closableChips,
@@ -10377,15 +10446,15 @@ const VAutocomplete = genericComponent()({
10377
10446
  }
10378
10447
  }
10379
10448
  }, {
10380
- default: () => [slots.chip ? slots.chip({
10449
+ default: () => [slots.chip?.({
10381
10450
  item,
10382
10451
  index,
10383
10452
  props: slotProps
10384
- }) : createVNode(VChip, slotProps, null)]
10385
- }) : slots.selection ? slots.selection({
10453
+ })]
10454
+ }) : slots.selection?.({
10386
10455
  item,
10387
10456
  index
10388
- }) : createVNode("span", {
10457
+ }) ?? createVNode("span", {
10389
10458
  "class": "v-autocomplete__selection-text"
10390
10459
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10391
10460
  "class": "v-autocomplete__selection-comma"
@@ -10586,7 +10655,8 @@ const VBanner = genericComponent()({
10586
10655
  });
10587
10656
  useRender(() => {
10588
10657
  const hasText = !!(props.text || slots.text);
10589
- const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
10658
+ const hasPrependMedia = !!(props.avatar || props.icon);
10659
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
10590
10660
  return createVNode(props.tag, {
10591
10661
  "class": ['v-banner', {
10592
10662
  'v-banner--stacked': props.stacked || mobile.value,
@@ -10596,8 +10666,18 @@ const VBanner = genericComponent()({
10596
10666
  "style": [dimensionStyles.value, locationStyles.value],
10597
10667
  "role": "banner"
10598
10668
  }, {
10599
- default: () => [hasPrepend && createVNode(VDefaultsProvider, {
10669
+ default: () => [hasPrepend && createVNode("div", {
10600
10670
  "key": "prepend",
10671
+ "class": "v-banner__prepend"
10672
+ }, [!slots.prepend ? createVNode(VAvatar, {
10673
+ "key": "prepend-avatar",
10674
+ "color": color.value,
10675
+ "density": density.value,
10676
+ "icon": props.icon,
10677
+ "image": props.avatar
10678
+ }, null) : createVNode(VDefaultsProvider, {
10679
+ "key": "prepend-defaults",
10680
+ "disabled": !hasPrependMedia,
10601
10681
  "defaults": {
10602
10682
  VAvatar: {
10603
10683
  color: color.value,
@@ -10606,19 +10686,15 @@ const VBanner = genericComponent()({
10606
10686
  image: props.avatar
10607
10687
  }
10608
10688
  }
10609
- }, {
10610
- default: () => [createVNode("div", {
10611
- "class": "v-banner__prepend"
10612
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && createVNode(VAvatar, null, null)])]
10613
- }), createVNode("div", {
10689
+ }, slots.prepend)]), createVNode("div", {
10614
10690
  "class": "v-banner__content"
10615
10691
  }, [hasText && createVNode(VBannerText, {
10616
10692
  "key": "text"
10617
10693
  }, {
10618
- default: () => [slots.text ? slots.text() : props.text]
10619
- }), slots.default?.()]), slots.actions && createVNode(VBannerActions, null, {
10620
- default: () => [slots.actions()]
10621
- })]
10694
+ default: () => [slots.text?.() ?? props.text]
10695
+ }), slots.default?.()]), slots.actions && createVNode(VBannerActions, {
10696
+ "key": "actions"
10697
+ }, slots.actions)]
10622
10698
  });
10623
10699
  });
10624
10700
  }
@@ -10851,19 +10927,23 @@ const VBreadcrumbs = genericComponent()({
10851
10927
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
10852
10928
  "style": backgroundColorStyles.value
10853
10929
  }, {
10854
- default: () => [hasPrepend && createVNode(VDefaultsProvider, {
10930
+ default: () => [hasPrepend && createVNode("div", {
10855
10931
  "key": "prepend",
10932
+ "class": "v-breadcrumbs__prepend"
10933
+ }, [!slots.prepend ? createVNode(VIcon, {
10934
+ "key": "prepend-icon",
10935
+ "start": true,
10936
+ "icon": props.icon
10937
+ }, null) : createVNode(VDefaultsProvider, {
10938
+ "key": "prepend-defaults",
10939
+ "disabled": !props.icon,
10856
10940
  "defaults": {
10857
10941
  VIcon: {
10858
10942
  icon: props.icon,
10859
10943
  start: true
10860
10944
  }
10861
10945
  }
10862
- }, {
10863
- default: () => [createVNode("div", {
10864
- "class": "v-breadcrumbs__prepend"
10865
- }, [slots.prepend ? slots.prepend() : props.icon && createVNode(VIcon, null, null)])]
10866
- }), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
10946
+ }, slots.prepend)]), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
10867
10947
  "key": index,
10868
10948
  "disabled": index >= array.length - 1
10869
10949
  }, typeof item === 'string' ? {
@@ -10927,30 +11007,33 @@ const VCardItem = genericComponent()({
10927
11007
  slots
10928
11008
  } = _ref;
10929
11009
  useRender(() => {
10930
- const hasPrepend = !!(props.prependAvatar || props.prependIcon || slots.prepend);
10931
- const hasAppend = !!(props.appendAvatar || props.appendIcon || slots.append);
11010
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
11011
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
11012
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
11013
+ const hasAppend = !!(hasAppendMedia || slots.append);
10932
11014
  const hasTitle = !!(props.title || slots.title);
10933
11015
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
10934
11016
  return createVNode("div", {
10935
11017
  "class": "v-card-item"
10936
- }, [hasPrepend && createVNode(VDefaultsProvider, {
11018
+ }, [hasPrepend && createVNode("div", {
10937
11019
  "key": "prepend",
11020
+ "class": "v-card-item__prepend"
11021
+ }, [!slots.prepend ? hasPrependMedia && createVNode(VAvatar, {
11022
+ "key": "prepend-avatar",
11023
+ "density": props.density,
11024
+ "icon": props.prependIcon,
11025
+ "image": props.prependAvatar
11026
+ }, null) : createVNode(VDefaultsProvider, {
11027
+ "key": "prepend-defaults",
11028
+ "disabled": !hasPrependMedia,
10938
11029
  "defaults": {
10939
11030
  VAvatar: {
10940
11031
  density: props.density,
10941
11032
  icon: props.prependIcon,
10942
11033
  image: props.prependAvatar
10943
- },
10944
- VIcon: {
10945
- density: props.density,
10946
- icon: props.prependIcon
10947
11034
  }
10948
11035
  }
10949
- }, {
10950
- default: () => [createVNode("div", {
10951
- "class": "v-card-item__prepend"
10952
- }, [slots.prepend?.() ?? createVNode(VAvatar, null, null)])]
10953
- }), createVNode("div", {
11036
+ }, slots.prepend)]), createVNode("div", {
10954
11037
  "class": "v-card-item__content"
10955
11038
  }, [hasTitle && createVNode(VCardTitle, {
10956
11039
  "key": "title"
@@ -10960,24 +11043,25 @@ const VCardItem = genericComponent()({
10960
11043
  "key": "subtitle"
10961
11044
  }, {
10962
11045
  default: () => [slots.subtitle?.() ?? props.subtitle]
10963
- }), slots.default?.()]), hasAppend && createVNode(VDefaultsProvider, {
11046
+ }), slots.default?.()]), hasAppend && createVNode("div", {
10964
11047
  "key": "append",
11048
+ "class": "v-card-item__append"
11049
+ }, [!slots.append ? hasAppendMedia && createVNode(VAvatar, {
11050
+ "key": "append-avatar",
11051
+ "density": props.density,
11052
+ "icon": props.appendIcon,
11053
+ "image": props.appendAvatar
11054
+ }, null) : createVNode(VDefaultsProvider, {
11055
+ "key": "append-defaults",
11056
+ "disabled": !hasAppendMedia,
10965
11057
  "defaults": {
10966
11058
  VAvatar: {
10967
11059
  density: props.density,
10968
11060
  icon: props.appendIcon,
10969
11061
  image: props.appendAvatar
10970
- },
10971
- VIcon: {
10972
- density: props.density,
10973
- icon: props.appendIcon
10974
11062
  }
10975
11063
  }
10976
- }, {
10977
- default: () => [createVNode("div", {
10978
- "class": "v-card-item__append"
10979
- }, [slots.append?.() ?? createVNode(VAvatar, null, null)])]
10980
- })]);
11064
+ }, slots.append)])]);
10981
11065
  });
10982
11066
  return {};
10983
11067
  }
@@ -11089,19 +11173,23 @@ const VCard = genericComponent()({
11089
11173
  "onClick": isClickable.value && link.navigate,
11090
11174
  "tabindex": props.disabled ? -1 : undefined
11091
11175
  }, {
11092
- default: () => [hasImage && createVNode(VDefaultsProvider, {
11176
+ default: () => [hasImage && createVNode("div", {
11093
11177
  "key": "image",
11178
+ "class": "v-card__image"
11179
+ }, [!slots.image ? createVNode(VImg, {
11180
+ "key": "image-img",
11181
+ "cover": true,
11182
+ "src": props.image
11183
+ }, null) : createVNode(VDefaultsProvider, {
11184
+ "key": "image-defaults",
11185
+ "disabled": !props.image,
11094
11186
  "defaults": {
11095
11187
  VImg: {
11096
11188
  cover: true,
11097
11189
  src: props.image
11098
11190
  }
11099
11191
  }
11100
- }, {
11101
- default: () => [createVNode("div", {
11102
- "class": "v-card__image"
11103
- }, [slots.image?.() ?? createVNode(VImg, null, null)])]
11104
- }), createVNode(LoaderSlot, {
11192
+ }, slots.image)]), createVNode(LoaderSlot, {
11105
11193
  "name": "v-card",
11106
11194
  "active": !!props.loading,
11107
11195
  "color": typeof props.loading === 'boolean' ? undefined : props.loading
@@ -12305,7 +12393,9 @@ const useSlider = _ref => {
12305
12393
  const percentage = (val - min.value) / (max.value - min.value) * 100;
12306
12394
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
12307
12395
  };
12396
+ const showTicks = toRef(props, 'showTicks');
12308
12397
  const parsedTicks = computed(() => {
12398
+ if (!showTicks.value) return [];
12309
12399
  if (!props.ticks) {
12310
12400
  return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {
12311
12401
  const value = min.value + t * step.value;
@@ -12354,7 +12444,7 @@ const useSlider = _ref => {
12354
12444
  readonly: toRef(props, 'readonly'),
12355
12445
  rounded: toRef(props, 'rounded'),
12356
12446
  roundValue,
12357
- showTicks: toRef(props, 'showTicks'),
12447
+ showTicks,
12358
12448
  startOffset,
12359
12449
  step,
12360
12450
  thumbSize,
@@ -12576,6 +12666,7 @@ const VSliderTrack = genericComponent()({
12576
12666
  };
12577
12667
  });
12578
12668
  const computedTicks = computed(() => {
12669
+ if (!showTicks.value) return [];
12579
12670
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
12580
12671
  return ticks.map((tick, index) => {
12581
12672
  const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
@@ -13695,7 +13786,13 @@ const VCombobox = genericComponent()({
13695
13786
  "key": item.value,
13696
13787
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
13697
13788
  "style": index === selectionIndex.value ? textColorStyles.value : {}
13698
- }, [hasChips ? createVNode(VDefaultsProvider, {
13789
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
13790
+ "key": "chip",
13791
+ "closable": props.closableChips,
13792
+ "size": "small",
13793
+ "text": item.title
13794
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
13795
+ "key": "chip-defaults",
13699
13796
  "defaults": {
13700
13797
  VChip: {
13701
13798
  closable: props.closableChips,
@@ -13704,15 +13801,15 @@ const VCombobox = genericComponent()({
13704
13801
  }
13705
13802
  }
13706
13803
  }, {
13707
- default: () => [slots.chip ? slots.chip({
13804
+ default: () => [slots.chip?.({
13708
13805
  item,
13709
13806
  index,
13710
13807
  props: slotProps
13711
- }) : createVNode(VChip, slotProps, null)]
13712
- }) : slots.selection ? slots.selection({
13808
+ })]
13809
+ }) : slots.selection?.({
13713
13810
  item,
13714
13811
  index
13715
- }) : createVNode("span", {
13812
+ }) ?? createVNode("span", {
13716
13813
  "class": "v-combobox__selection-text"
13717
13814
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
13718
13815
  "class": "v-combobox__selection-comma"
@@ -14213,6 +14310,7 @@ const VFileInput = genericComponent()({
14213
14310
  "id": id.value,
14214
14311
  "active": isDirty.value || isFocused.value,
14215
14312
  "dirty": isDirty.value,
14313
+ "disabled": isDisabled.value,
14216
14314
  "focused": isFocused.value,
14217
14315
  "error": isValid.value === false
14218
14316
  }), {
@@ -16849,19 +16947,18 @@ const VSnackbar = genericComponent()({
16849
16947
  "modelValue": isActive.value,
16850
16948
  "onUpdate:modelValue": $event => isActive.value = $event,
16851
16949
  "contentProps": mergeProps({
16852
- style: locationStyles.value
16950
+ class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
16951
+ style: [locationStyles.value, colorStyles.value],
16952
+ onPointerenter,
16953
+ onPointerleave: startTimeout
16853
16954
  }, overlayProps.contentProps),
16854
16955
  "persistent": true,
16855
16956
  "noClickAnimation": true,
16856
16957
  "scrim": false,
16857
- "scrollStrategy": "none"
16958
+ "scrollStrategy": "none",
16959
+ "_disableGlobalStack": true
16858
16960
  }, scopeId), {
16859
- default: () => [createVNode("div", {
16860
- "class": ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
16861
- "style": [colorStyles.value],
16862
- "onPointerenter": onPointerenter,
16863
- "onPointerleave": startTimeout
16864
- }, [genOverlays(false, 'v-snackbar'), slots.default && createVNode("div", {
16961
+ default: () => [genOverlays(false, 'v-snackbar'), slots.default && createVNode("div", {
16865
16962
  "class": "v-snackbar__content",
16866
16963
  "role": "status",
16867
16964
  "aria-live": "polite"
@@ -16876,7 +16973,7 @@ const VSnackbar = genericComponent()({
16876
16973
  default: () => [createVNode("div", {
16877
16974
  "class": "v-snackbar__actions"
16878
16975
  }, [slots.actions()])]
16879
- })])],
16976
+ })],
16880
16977
  activator: slots.activator
16881
16978
  });
16882
16979
  });
@@ -17225,16 +17322,6 @@ const VTabs = genericComponent()({
17225
17322
  backgroundColorClasses,
17226
17323
  backgroundColorStyles
17227
17324
  } = useBackgroundColor(toRef(props, 'bgColor'));
17228
- provideDefaults({
17229
- VTab: {
17230
- color: toRef(props, 'color'),
17231
- direction: toRef(props, 'direction'),
17232
- stacked: toRef(props, 'stacked'),
17233
- fixed: toRef(props, 'fixedTabs'),
17234
- sliderColor: toRef(props, 'sliderColor'),
17235
- hideSlider: toRef(props, 'hideSlider')
17236
- }
17237
- });
17238
17325
  useRender(() => createVNode(VSlideGroup, {
17239
17326
  "modelValue": model.value,
17240
17327
  "onUpdate:modelValue": $event => model.value = $event,
@@ -17251,9 +17338,27 @@ const VTabs = genericComponent()({
17251
17338
  "mandatory": props.mandatory,
17252
17339
  "direction": props.direction
17253
17340
  }, {
17254
- default: () => [slots.default ? slots.default() : parsedItems.value.map(item => createVNode(VTab, mergeProps(item, {
17255
- "key": item.title
17256
- }), null))]
17341
+ default: () => [!slots.default ? parsedItems.value.map(item => createVNode(VTab, mergeProps({
17342
+ "key": item.title,
17343
+ "color": props.color,
17344
+ "direction": props.direction,
17345
+ "fixed": props.fixedTabs,
17346
+ "hideSlider": props.hideSlider,
17347
+ "sliderColor": props.sliderColor,
17348
+ "stacked": props.stacked
17349
+ }, item), null)) : createVNode(VDefaultsProvider, {
17350
+ "key": "tabs-defaults",
17351
+ "defaults": {
17352
+ VTab: {
17353
+ color: props.color,
17354
+ direction: props.direction,
17355
+ fixed: props.fixedTabs,
17356
+ hideSlider: props.hideSlider,
17357
+ sliderColor: props.sliderColor,
17358
+ stacked: props.stacked
17359
+ }
17360
+ }
17361
+ }, slots.default)]
17257
17362
  }));
17258
17363
  return {};
17259
17364
  }
@@ -17478,6 +17583,7 @@ const VTextarea = genericComponent()({
17478
17583
  }, fieldProps, {
17479
17584
  "active": isActive.value || isDirty.value,
17480
17585
  "dirty": isDirty.value || props.dirty,
17586
+ "disabled": isDisabled.value,
17481
17587
  "focused": isFocused.value,
17482
17588
  "error": isValid.value === false
17483
17589
  }), {
@@ -17680,13 +17786,6 @@ const VTimelineDivider = genericComponent()({
17680
17786
  backgroundColorClasses: lineColorClasses,
17681
17787
  backgroundColorStyles: lineColorStyles
17682
17788
  } = useBackgroundColor(toRef(props, 'lineColor'));
17683
- provideDefaults({
17684
- VIcon: {
17685
- color: toRef(props, 'iconColor'),
17686
- icon: toRef(props, 'icon'),
17687
- size: toRef(props, 'size')
17688
- }
17689
- });
17690
17789
  useRender(() => createVNode("div", {
17691
17790
  "class": ['v-timeline-divider', {
17692
17791
  'v-timeline-divider--fill-dot': props.fillDot
@@ -17701,7 +17800,22 @@ const VTimelineDivider = genericComponent()({
17701
17800
  }, [createVNode("div", {
17702
17801
  "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
17703
17802
  "style": backgroundColorStyles.value
17704
- }, [slots.default?.() ?? (props.icon ? createVNode(VIcon, null, null) : undefined)])]), createVNode("div", {
17803
+ }, [!slots.default ? createVNode(VIcon, {
17804
+ "key": "icon",
17805
+ "color": props.iconColor,
17806
+ "icon": props.icon,
17807
+ "size": props.size
17808
+ }, null) : createVNode(VDefaultsProvider, {
17809
+ "key": "icon-defaults",
17810
+ "disabled": !props.icon,
17811
+ "defaults": {
17812
+ VIcon: {
17813
+ color: props.iconColor,
17814
+ icon: props.icon,
17815
+ size: props.size
17816
+ }
17817
+ }
17818
+ }, slots.default)])]), createVNode("div", {
17705
17819
  "class": ['v-timeline-divider__after', lineColorClasses.value],
17706
17820
  "style": lineColorStyles.value
17707
17821
  }, null)]));
@@ -18218,7 +18332,7 @@ function createVuetify$1() {
18218
18332
  locale
18219
18333
  };
18220
18334
  }
18221
- const version$1 = "3.1.7";
18335
+ const version$1 = "3.1.9";
18222
18336
  createVuetify$1.version = version$1;
18223
18337
 
18224
18338
  // Vue's inject() can only be used in setup
@@ -18238,7 +18352,7 @@ const createVuetify = function () {
18238
18352
  ...options
18239
18353
  });
18240
18354
  };
18241
- const version = "3.1.7";
18355
+ const version = "3.1.9";
18242
18356
  createVuetify.version = version;
18243
18357
 
18244
18358
  export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };