vuetify 3.1.8 → 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 (107) hide show
  1. package/dist/json/attributes.json +7 -3
  2. package/dist/json/importMap.json +40 -40
  3. package/dist/json/tags.json +1 -0
  4. package/dist/json/web-types.json +51 -17
  5. package/dist/vuetify-labs.css +288 -268
  6. package/dist/vuetify-labs.d.ts +14 -7
  7. package/dist/vuetify-labs.esm.js +460 -250
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +460 -250
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1253 -1236
  12. package/dist/vuetify.d.ts +18 -13
  13. package/dist/vuetify.esm.js +306 -193
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +306 -193
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +411 -408
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAlert/VAlert.mjs +29 -15
  21. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  22. package/lib/components/VAlert/index.d.ts +2 -0
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -5
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VBanner/VBanner.mjs +19 -12
  26. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  27. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
  28. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  29. package/lib/components/VBtn/VBtn.mjs +25 -19
  30. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  31. package/lib/components/VCard/VCard.mjs +10 -6
  32. package/lib/components/VCard/VCard.mjs.map +1 -1
  33. package/lib/components/VCard/VCardItem.mjs +27 -23
  34. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  35. package/lib/components/VChip/VChip.css +110 -90
  36. package/lib/components/VChip/VChip.mjs +70 -48
  37. package/lib/components/VChip/VChip.mjs.map +1 -1
  38. package/lib/components/VChip/_mixins.scss +27 -23
  39. package/lib/components/VChip/index.d.ts +2 -2
  40. package/lib/components/VCombobox/VCombobox.mjs +11 -5
  41. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  42. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
  43. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  44. package/lib/components/VDefaultsProvider/index.d.ts +3 -0
  45. package/lib/components/VFooter/VFooter.css +2 -0
  46. package/lib/components/VFooter/VFooter.sass +2 -0
  47. package/lib/components/VFooter/_variables.scss +2 -0
  48. package/lib/components/VImg/VImg.mjs +2 -2
  49. package/lib/components/VImg/VImg.mjs.map +1 -1
  50. package/lib/components/VList/VListItem.mjs +23 -19
  51. package/lib/components/VList/VListItem.mjs.map +1 -1
  52. package/lib/components/VSelect/VSelect.mjs +11 -5
  53. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  54. package/lib/components/VSlider/VSliderTrack.mjs +1 -0
  55. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  56. package/lib/components/VSlider/slider.mjs +3 -1
  57. package/lib/components/VSlider/slider.mjs.map +1 -1
  58. package/lib/components/VSnackbar/VSnackbar.css +2 -7
  59. package/lib/components/VSnackbar/VSnackbar.mjs +2 -1
  60. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  61. package/lib/components/VSnackbar/VSnackbar.sass +3 -8
  62. package/lib/components/VTabs/VTabs.mjs +23 -15
  63. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  64. package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
  65. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  66. package/lib/components/VToolbar/VToolbar.mjs +9 -5
  67. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  68. package/lib/components/index.d.ts +7 -2
  69. package/lib/composables/defaults.mjs +2 -0
  70. package/lib/composables/defaults.mjs.map +1 -1
  71. package/lib/entry-bundler.mjs +1 -1
  72. package/lib/framework.mjs +1 -1
  73. package/lib/index.d.ts +11 -11
  74. package/lib/labs/VDataTable/VDataTable.css +3 -0
  75. package/lib/labs/VDataTable/VDataTable.mjs +41 -17
  76. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  77. package/lib/labs/VDataTable/VDataTable.sass +3 -0
  78. package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
  79. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  80. package/lib/labs/VDataTable/VDataTableRow.mjs +6 -2
  81. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  82. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  83. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  84. package/lib/labs/VDataTable/VDataTableServer.mjs +39 -17
  85. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  86. package/lib/labs/VDataTable/VDataTableVirtual.mjs +23 -12
  87. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  88. package/lib/labs/VDataTable/composables/expand.mjs +1 -1
  89. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  90. package/lib/labs/VDataTable/composables/group.mjs +12 -1
  91. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  92. package/lib/labs/VDataTable/composables/options.mjs +0 -12
  93. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  94. package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
  95. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  96. package/lib/labs/VDataTable/composables/select.mjs +1 -1
  97. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  98. package/lib/labs/VDataTable/composables/sort.mjs +19 -3
  99. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  100. package/lib/labs/VDataTable/index.d.ts +7 -5
  101. package/lib/labs/components.d.ts +7 -5
  102. package/lib/locale/adapters/vue-i18n.d.ts +1 -1
  103. package/lib/locale/adapters/vue-i18n.mjs +1 -1
  104. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  105. package/lib/util/defineComponent.mjs +3 -2
  106. package/lib/util/defineComponent.mjs.map +1 -1
  107. package/package.json +5 -11
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.8
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();
@@ -2153,6 +2156,7 @@ const VDefaultsProvider = genericComponent(false)({
2153
2156
  name: 'VDefaultsProvider',
2154
2157
  props: {
2155
2158
  defaults: Object,
2159
+ disabled: Boolean,
2156
2160
  reset: [Number, String],
2157
2161
  root: Boolean,
2158
2162
  scoped: Boolean
@@ -2163,6 +2167,7 @@ const VDefaultsProvider = genericComponent(false)({
2163
2167
  } = _ref;
2164
2168
  const {
2165
2169
  defaults,
2170
+ disabled,
2166
2171
  reset,
2167
2172
  root,
2168
2173
  scoped
@@ -2170,7 +2175,8 @@ const VDefaultsProvider = genericComponent(false)({
2170
2175
  provideDefaults(defaults, {
2171
2176
  reset,
2172
2177
  root,
2173
- scoped
2178
+ scoped,
2179
+ disabled
2174
2180
  });
2175
2181
  return () => slots.default?.();
2176
2182
  }
@@ -2792,7 +2798,7 @@ const VImg = genericComponent()({
2792
2798
  "class": ['v-img__img', containClasses.value],
2793
2799
  "src": normalisedSrc.value.src,
2794
2800
  "srcset": normalisedSrc.value.srcset,
2795
- "alt": "",
2801
+ "alt": props.alt,
2796
2802
  "sizes": props.sizes,
2797
2803
  "ref": image,
2798
2804
  "onLoad": onLoad,
@@ -2814,7 +2820,7 @@ const VImg = genericComponent()({
2814
2820
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && createVNode("img", {
2815
2821
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
2816
2822
  "src": normalisedSrc.value.lazySrc,
2817
- "alt": ""
2823
+ "alt": props.alt
2818
2824
  }, null)]
2819
2825
  });
2820
2826
  const __placeholder = () => {
@@ -3156,16 +3162,20 @@ const VToolbar = genericComponent()({
3156
3162
  default: () => [hasImage && createVNode("div", {
3157
3163
  "key": "image",
3158
3164
  "class": "v-toolbar__image"
3159
- }, [createVNode(VDefaultsProvider, {
3165
+ }, [!slots.image ? createVNode(VImg, {
3166
+ "key": "image-img",
3167
+ "cover": true,
3168
+ "src": props.image
3169
+ }, null) : createVNode(VDefaultsProvider, {
3170
+ "key": "image-defaults",
3171
+ "disabled": !props.image,
3160
3172
  "defaults": {
3161
3173
  VImg: {
3162
3174
  cover: true,
3163
3175
  src: props.image
3164
3176
  }
3165
3177
  }
3166
- }, {
3167
- default: () => [slots.image ? slots.image?.() : createVNode(VImg, null, null)]
3168
- })]), createVNode(VDefaultsProvider, {
3178
+ }, slots.image)]), createVNode(VDefaultsProvider, {
3169
3179
  "defaults": {
3170
3180
  VTabs: {
3171
3181
  height: convertToUnit(contentHeight.value)
@@ -4886,43 +4896,49 @@ const VBtn = genericComponent()({
4886
4896
  },
4887
4897
  "value": valueAttr.value
4888
4898
  }, {
4889
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode(VDefaultsProvider, {
4899
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
4890
4900
  "key": "prepend",
4901
+ "class": "v-btn__prepend"
4902
+ }, [!slots.prepend ? createVNode(VIcon, {
4903
+ "key": "prepend-icon",
4904
+ "icon": props.prependIcon
4905
+ }, null) : createVNode(VDefaultsProvider, {
4906
+ "key": "prepend-defaults",
4907
+ "disabled": !props.prependIcon,
4891
4908
  "defaults": {
4892
4909
  VIcon: {
4893
4910
  icon: props.prependIcon
4894
4911
  }
4895
4912
  }
4896
- }, {
4897
- default: () => [createVNode("span", {
4898
- "class": "v-btn__prepend"
4899
- }, [slots.prepend?.() ?? createVNode(VIcon, null, null)])]
4900
- }), createVNode("span", {
4913
+ }, slots.prepend)]), createVNode("span", {
4901
4914
  "class": "v-btn__content",
4902
4915
  "data-no-activator": ""
4903
- }, [createVNode(VDefaultsProvider, {
4904
- "key": "content",
4916
+ }, [!slots.default && hasIcon ? createVNode(VIcon, {
4917
+ "key": "content-icon",
4918
+ "icon": props.icon
4919
+ }, null) : createVNode(VDefaultsProvider, {
4920
+ "key": "content-defaults",
4921
+ "disabled": !hasIcon,
4905
4922
  "defaults": {
4906
4923
  VIcon: {
4907
- icon: hasIcon ? props.icon : undefined
4924
+ icon: props.icon
4908
4925
  }
4909
4926
  }
4910
- }, {
4911
- default: () => [slots.default?.() ?? (hasIcon && createVNode(VIcon, {
4912
- "key": "icon"
4913
- }, null))]
4914
- })]), !props.icon && hasAppend && createVNode(VDefaultsProvider, {
4927
+ }, slots.default)]), !props.icon && hasAppend && createVNode("span", {
4915
4928
  "key": "append",
4929
+ "class": "v-btn__append"
4930
+ }, [!slots.append ? createVNode(VIcon, {
4931
+ "key": "append-icon",
4932
+ "icon": props.appendIcon
4933
+ }, null) : createVNode(VDefaultsProvider, {
4934
+ "key": "append-defaults",
4935
+ "disabled": !props.appendIcon,
4916
4936
  "defaults": {
4917
4937
  VIcon: {
4918
4938
  icon: props.appendIcon
4919
4939
  }
4920
4940
  }
4921
- }, {
4922
- default: () => [createVNode("span", {
4923
- "class": "v-btn__append"
4924
- }, [slots.append?.() ?? createVNode(VIcon, null, null)])]
4925
- }), !!props.loading && createVNode("span", {
4941
+ }, slots.append)]), !!props.loading && createVNode("span", {
4926
4942
  "key": "loader",
4927
4943
  "class": "v-btn__loader"
4928
4944
  }, [slots.loader?.() ?? createVNode(VProgressCircular, {
@@ -5051,10 +5067,12 @@ const VAlert = genericComponent()({
5051
5067
  })
5052
5068
  },
5053
5069
  emits: {
5070
+ 'click:close': e => true,
5054
5071
  'update:modelValue': value => true
5055
5072
  },
5056
5073
  setup(props, _ref) {
5057
5074
  let {
5075
+ emit,
5058
5076
  slots
5059
5077
  } = _ref;
5060
5078
  const isActive = useProxiedModel(props, 'modelValue');
@@ -5104,6 +5122,7 @@ const VAlert = genericComponent()({
5104
5122
  'aria-label': t(props.closeLabel),
5105
5123
  onClick(e) {
5106
5124
  isActive.value = false;
5125
+ emit('click:close', e);
5107
5126
  }
5108
5127
  }));
5109
5128
  return () => {
@@ -5125,8 +5144,17 @@ const VAlert = genericComponent()({
5125
5144
  "key": "border",
5126
5145
  "class": ['v-alert__border', textColorClasses.value],
5127
5146
  "style": textColorStyles.value
5128
- }, null), hasPrepend && createVNode(VDefaultsProvider, {
5147
+ }, null), hasPrepend && createVNode("div", {
5129
5148
  "key": "prepend",
5149
+ "class": "v-alert__prepend"
5150
+ }, [!slots.prepend ? createVNode(VIcon, {
5151
+ "key": "prepend-icon",
5152
+ "density": props.density,
5153
+ "icon": icon.value,
5154
+ "size": props.prominent ? 44 : 28
5155
+ }, null) : createVNode(VDefaultsProvider, {
5156
+ "key": "prepend-defaults",
5157
+ "disabled": !icon.value,
5130
5158
  "defaults": {
5131
5159
  VIcon: {
5132
5160
  density: props.density,
@@ -5134,21 +5162,25 @@ const VAlert = genericComponent()({
5134
5162
  size: props.prominent ? 44 : 28
5135
5163
  }
5136
5164
  }
5137
- }, {
5138
- default: () => [createVNode("div", {
5139
- "class": "v-alert__prepend"
5140
- }, [slots.prepend ? slots.prepend() : icon.value && createVNode(VIcon, null, null)])]
5141
- }), createVNode("div", {
5165
+ }, slots.prepend)]), createVNode("div", {
5142
5166
  "class": "v-alert__content"
5143
5167
  }, [hasTitle && createVNode(VAlertTitle, {
5144
5168
  "key": "title"
5145
5169
  }, {
5146
- default: () => [slots.title ? slots.title() : props.title]
5147
- }), hasText && (slots.text ? slots.text() : props.text), slots.default?.()]), slots.append && createVNode("div", {
5170
+ default: () => [slots.title?.() ?? props.title]
5171
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && createVNode("div", {
5148
5172
  "key": "append",
5149
5173
  "class": "v-alert__append"
5150
- }, [slots.append()]), hasClose && createVNode(VDefaultsProvider, {
5174
+ }, [slots.append()]), hasClose && createVNode("div", {
5151
5175
  "key": "close",
5176
+ "class": "v-alert__close"
5177
+ }, [!slots.close ? createVNode(VBtn, mergeProps({
5178
+ "key": "close-btn",
5179
+ "icon": props.closeIcon,
5180
+ "size": "x-small",
5181
+ "variant": "text"
5182
+ }, closeProps.value), null) : createVNode(VDefaultsProvider, {
5183
+ "key": "close-defaults",
5152
5184
  "defaults": {
5153
5185
  VBtn: {
5154
5186
  icon: props.closeIcon,
@@ -5157,12 +5189,10 @@ const VAlert = genericComponent()({
5157
5189
  }
5158
5190
  }
5159
5191
  }, {
5160
- default: () => [createVNode("div", {
5161
- "class": "v-alert__close"
5162
- }, [slots.close?.({
5192
+ default: () => [slots.close?.({
5163
5193
  props: closeProps.value
5164
- }) ?? createVNode(VBtn, closeProps.value, null)])]
5165
- })]
5194
+ })]
5195
+ })])]
5166
5196
  });
5167
5197
  };
5168
5198
  }
@@ -6827,10 +6857,13 @@ const VChip = genericComponent()({
6827
6857
  const link = useLink(props, attrs);
6828
6858
  const isLink = computed(() => props.link !== false && link.isLink.value);
6829
6859
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
6830
- function onCloseClick(e) {
6831
- isActive.value = false;
6832
- emit('click:close', e);
6833
- }
6860
+ const closeProps = computed(() => ({
6861
+ 'aria-label': t(props.closeLabel),
6862
+ onClick(e) {
6863
+ isActive.value = false;
6864
+ emit('click:close', e);
6865
+ }
6866
+ }));
6834
6867
  function onClick(e) {
6835
6868
  emit('click', e);
6836
6869
  if (!isClickable.value) return;
@@ -6845,10 +6878,12 @@ const VChip = genericComponent()({
6845
6878
  }
6846
6879
  return () => {
6847
6880
  const Tag = link.isLink.value ? 'a' : props.tag;
6848
- const hasAppend = !!(slots.append || props.appendIcon || props.appendAvatar);
6881
+ const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);
6882
+ const hasAppend = !!(hasAppendMedia || slots.append);
6849
6883
  const hasClose = !!(slots.close || props.closable);
6850
6884
  const hasFilter = !!(slots.filter || props.filter) && group;
6851
- const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6885
+ const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
6886
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
6852
6887
  const hasColor = !group || group.isSelected.value;
6853
6888
  return isActive.value && withDirectives(createVNode(Tag, {
6854
6889
  "class": ['v-chip', {
@@ -6866,77 +6901,94 @@ const VChip = genericComponent()({
6866
6901
  "onClick": onClick,
6867
6902
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
6868
6903
  }, {
6869
- default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VDefaultsProvider, {
6870
- "key": "filter",
6871
- "defaults": {
6872
- VIcon: {
6873
- icon: props.filterIcon
6874
- }
6875
- }
6904
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VExpandXTransition, {
6905
+ "key": "filter"
6876
6906
  }, {
6877
- default: () => [createVNode(VExpandXTransition, null, {
6878
- default: () => [withDirectives(createVNode("div", {
6879
- "class": "v-chip__filter"
6880
- }, [slots.filter ? slots.filter() : createVNode(VIcon, null, null)]), [[vShow, group.isSelected.value]])]
6881
- })]
6882
- }), hasPrepend && createVNode(VDefaultsProvider, {
6907
+ default: () => [withDirectives(createVNode("div", {
6908
+ "class": "v-chip__filter"
6909
+ }, [!slots.filter ? createVNode(VIcon, {
6910
+ "key": "filter-icon",
6911
+ "icon": props.filterIcon
6912
+ }, null) : withDirectives(createVNode(VDefaultsProvider, {
6913
+ "key": "filter-defaults",
6914
+ "disabled": !props.filterIcon,
6915
+ "defaults": {
6916
+ VIcon: {
6917
+ icon: props.filterIcon
6918
+ }
6919
+ }
6920
+ }, null), [[resolveDirective("slot"), slots.filter, "default"]])]), [[vShow, group.isSelected.value]])]
6921
+ }), hasPrepend && createVNode("div", {
6883
6922
  "key": "prepend",
6923
+ "class": "v-chip__prepend"
6924
+ }, [!slots.prepend ? createVNode(Fragment, null, [props.prependIcon && createVNode(VIcon, {
6925
+ "key": "prepend-icon",
6926
+ "icon": props.prependIcon,
6927
+ "start": true
6928
+ }, null), props.prependAvatar && createVNode(VAvatar, {
6929
+ "key": "prepend-avatar",
6930
+ "image": props.prependAvatar,
6931
+ "start": true
6932
+ }, null)]) : createVNode(VDefaultsProvider, {
6933
+ "key": "prepend-defaults",
6934
+ "disabled": !hasPrependMedia,
6884
6935
  "defaults": {
6885
6936
  VAvatar: {
6886
- image: props.prependAvatar
6937
+ image: props.prependAvatar,
6938
+ start: true
6887
6939
  },
6888
6940
  VIcon: {
6889
- icon: props.prependIcon
6941
+ icon: props.prependIcon,
6942
+ start: true
6890
6943
  }
6891
6944
  }
6892
- }, {
6893
- default: () => [slots.prepend ? createVNode("div", {
6894
- "class": "v-chip__prepend"
6895
- }, [slots.prepend()]) : props.prependAvatar ? createVNode(VAvatar, {
6896
- "start": true
6897
- }, null) : props.prependIcon ? createVNode(VIcon, {
6898
- "start": true
6899
- }, null) : undefined]
6900
- }), slots.default?.({
6945
+ }, slots.prepend)]), slots.default?.({
6901
6946
  isSelected: group?.isSelected.value,
6902
6947
  selectedClass: group?.selectedClass.value,
6903
6948
  select: group?.select,
6904
6949
  toggle: group?.toggle,
6905
6950
  value: group?.value.value,
6906
6951
  disabled: props.disabled
6907
- }) ?? props.text, hasAppend && createVNode(VDefaultsProvider, {
6952
+ }) ?? props.text, hasAppend && createVNode("div", {
6908
6953
  "key": "append",
6954
+ "class": "v-chip__append"
6955
+ }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
6956
+ "key": "append-icon",
6957
+ "end": true,
6958
+ "icon": props.appendIcon
6959
+ }, null), props.appendAvatar && createVNode(VAvatar, {
6960
+ "key": "append-avatar",
6961
+ "end": true,
6962
+ "image": props.appendAvatar
6963
+ }, null)]) : createVNode(VDefaultsProvider, {
6964
+ "key": "append-defaults",
6965
+ "disabled": !hasAppendMedia,
6909
6966
  "defaults": {
6910
6967
  VAvatar: {
6968
+ end: true,
6911
6969
  image: props.appendAvatar
6912
6970
  },
6913
6971
  VIcon: {
6972
+ end: true,
6914
6973
  icon: props.appendIcon
6915
6974
  }
6916
6975
  }
6917
- }, {
6918
- default: () => [slots.append ? createVNode("div", {
6919
- "class": "v-chip__append"
6920
- }, [slots.append()]) : props.appendAvatar ? createVNode(VAvatar, {
6921
- "end": true
6922
- }, null) : props.appendIcon ? createVNode(VIcon, {
6923
- "end": true
6924
- }, null) : undefined]
6925
- }), hasClose && createVNode(VDefaultsProvider, {
6976
+ }, slots.append)]), hasClose && createVNode("div", mergeProps({
6926
6977
  "key": "close",
6978
+ "class": "v-chip__close"
6979
+ }, closeProps.value), [!slots.close ? createVNode(VIcon, {
6980
+ "key": "close-icon",
6981
+ "icon": props.closeIcon,
6982
+ "size": "x-small"
6983
+ }, null) : createVNode(VDefaultsProvider, {
6984
+ "key": "close-defaults",
6927
6985
  "defaults": {
6928
6986
  VIcon: {
6929
6987
  icon: props.closeIcon,
6930
6988
  size: 'x-small'
6931
6989
  }
6932
6990
  }
6933
- }, {
6934
- default: () => [createVNode("div", {
6935
- "class": "v-chip__close",
6936
- "aria-label": t(props.closeLabel),
6937
- "onClick": onCloseClick
6938
- }, [slots.close ? slots.close() : createVNode(VIcon, null, null)])]
6939
- })]
6991
+ }, slots.close)])]
6940
6992
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6941
6993
  };
6942
6994
  }
@@ -7686,8 +7738,10 @@ const VListItem = genericComponent()({
7686
7738
  const hasColor = !list || isSelected.value || isActive.value;
7687
7739
  const hasTitle = slots.title || props.title;
7688
7740
  const hasSubtitle = slots.subtitle || props.subtitle;
7689
- const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
7690
- 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);
7691
7745
  list?.updateHasPrepend(hasPrepend);
7692
7746
  return withDirectives(createVNode(Tag, {
7693
7747
  "class": ['v-list-item', {
@@ -7707,7 +7761,7 @@ const VListItem = genericComponent()({
7707
7761
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode("div", {
7708
7762
  "key": "prepend",
7709
7763
  "class": "v-list-item__prepend"
7710
- }, [props.prependAvatar && createVNode(VAvatar, {
7764
+ }, [!slots.prepend ? createVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
7711
7765
  "key": "prepend-avatar",
7712
7766
  "density": props.density,
7713
7767
  "image": props.prependAvatar
@@ -7715,8 +7769,9 @@ const VListItem = genericComponent()({
7715
7769
  "key": "prepend-icon",
7716
7770
  "density": props.density,
7717
7771
  "icon": props.prependIcon
7718
- }, null), slots.prepend && createVNode(VDefaultsProvider, {
7719
- "key": "prepend",
7772
+ }, null)]) : createVNode(VDefaultsProvider, {
7773
+ "key": "prepend-defaults",
7774
+ "disabled": !hasPrependMedia,
7720
7775
  "defaults": {
7721
7776
  VAvatar: {
7722
7777
  density: props.density,
@@ -7731,7 +7786,7 @@ const VListItem = genericComponent()({
7731
7786
  }
7732
7787
  }
7733
7788
  }, {
7734
- default: () => [slots.prepend(slotProps.value)]
7789
+ default: () => [slots.prepend?.(slotProps.value)]
7735
7790
  })]), createVNode("div", {
7736
7791
  "class": "v-list-item__content",
7737
7792
  "data-no-activator": ""
@@ -7750,8 +7805,17 @@ const VListItem = genericComponent()({
7750
7805
  }), slots.default?.(slotProps.value)]), hasAppend && createVNode("div", {
7751
7806
  "key": "append",
7752
7807
  "class": "v-list-item__append"
7753
- }, [slots.append && createVNode(VDefaultsProvider, {
7754
- "key": "append",
7808
+ }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
7809
+ "key": "append-icon",
7810
+ "density": props.density,
7811
+ "icon": props.appendIcon
7812
+ }, null), props.appendAvatar && createVNode(VAvatar, {
7813
+ "key": "append-avatar",
7814
+ "density": props.density,
7815
+ "image": props.appendAvatar
7816
+ }, null)]) : createVNode(VDefaultsProvider, {
7817
+ "key": "append-defaults",
7818
+ "disabled": !hasAppendMedia,
7755
7819
  "defaults": {
7756
7820
  VAvatar: {
7757
7821
  density: props.density,
@@ -7766,16 +7830,8 @@ const VListItem = genericComponent()({
7766
7830
  }
7767
7831
  }
7768
7832
  }, {
7769
- default: () => [slots.append(slotProps.value)]
7770
- }), props.appendIcon && createVNode(VIcon, {
7771
- "key": "append-icon",
7772
- "density": props.density,
7773
- "icon": props.appendIcon
7774
- }, null), props.appendAvatar && createVNode(VAvatar, {
7775
- "key": "append-avatar",
7776
- "density": props.density,
7777
- "image": props.appendAvatar
7778
- }, null)])]
7833
+ default: () => [slots.append?.(slotProps.value)]
7834
+ })])]
7779
7835
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
7780
7836
  });
7781
7837
  return {};
@@ -9984,7 +10040,13 @@ const VSelect = genericComponent()({
9984
10040
  return createVNode("div", {
9985
10041
  "key": item.value,
9986
10042
  "class": "v-select__selection"
9987
- }, [hasChips ? createVNode(VDefaultsProvider, {
10043
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
10044
+ "key": "chip",
10045
+ "closable": props.closableChips,
10046
+ "size": "small",
10047
+ "text": item.title
10048
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
10049
+ "key": "chip-defaults",
9988
10050
  "defaults": {
9989
10051
  VChip: {
9990
10052
  closable: props.closableChips,
@@ -9993,15 +10055,15 @@ const VSelect = genericComponent()({
9993
10055
  }
9994
10056
  }
9995
10057
  }, {
9996
- default: () => [slots.chip ? slots.chip({
10058
+ default: () => [slots.chip?.({
9997
10059
  item,
9998
10060
  index,
9999
10061
  props: slotProps
10000
- }) : createVNode(VChip, slotProps, null)]
10001
- }) : slots.selection ? slots.selection({
10062
+ })]
10063
+ }) : slots.selection?.({
10002
10064
  item,
10003
10065
  index
10004
- }) : createVNode("span", {
10066
+ }) ?? createVNode("span", {
10005
10067
  "class": "v-select__selection-text"
10006
10068
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10007
10069
  "class": "v-select__selection-comma"
@@ -10373,7 +10435,13 @@ const VAutocomplete = genericComponent()({
10373
10435
  return createVNode("div", {
10374
10436
  "key": item.value,
10375
10437
  "class": "v-autocomplete__selection"
10376
- }, [hasChips ? createVNode(VDefaultsProvider, {
10438
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
10439
+ "key": "chip",
10440
+ "closable": props.closableChips,
10441
+ "size": "small",
10442
+ "text": item.title
10443
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
10444
+ "key": "chip-defaults",
10377
10445
  "defaults": {
10378
10446
  VChip: {
10379
10447
  closable: props.closableChips,
@@ -10382,15 +10450,15 @@ const VAutocomplete = genericComponent()({
10382
10450
  }
10383
10451
  }
10384
10452
  }, {
10385
- default: () => [slots.chip ? slots.chip({
10453
+ default: () => [slots.chip?.({
10386
10454
  item,
10387
10455
  index,
10388
10456
  props: slotProps
10389
- }) : createVNode(VChip, slotProps, null)]
10390
- }) : slots.selection ? slots.selection({
10457
+ })]
10458
+ }) : slots.selection?.({
10391
10459
  item,
10392
10460
  index
10393
- }) : createVNode("span", {
10461
+ }) ?? createVNode("span", {
10394
10462
  "class": "v-autocomplete__selection-text"
10395
10463
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10396
10464
  "class": "v-autocomplete__selection-comma"
@@ -10591,7 +10659,8 @@ const VBanner = genericComponent()({
10591
10659
  });
10592
10660
  useRender(() => {
10593
10661
  const hasText = !!(props.text || slots.text);
10594
- const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
10662
+ const hasPrependMedia = !!(props.avatar || props.icon);
10663
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
10595
10664
  return createVNode(props.tag, {
10596
10665
  "class": ['v-banner', {
10597
10666
  'v-banner--stacked': props.stacked || mobile.value,
@@ -10601,8 +10670,18 @@ const VBanner = genericComponent()({
10601
10670
  "style": [dimensionStyles.value, locationStyles.value],
10602
10671
  "role": "banner"
10603
10672
  }, {
10604
- default: () => [hasPrepend && createVNode(VDefaultsProvider, {
10673
+ default: () => [hasPrepend && createVNode("div", {
10605
10674
  "key": "prepend",
10675
+ "class": "v-banner__prepend"
10676
+ }, [!slots.prepend ? createVNode(VAvatar, {
10677
+ "key": "prepend-avatar",
10678
+ "color": color.value,
10679
+ "density": density.value,
10680
+ "icon": props.icon,
10681
+ "image": props.avatar
10682
+ }, null) : createVNode(VDefaultsProvider, {
10683
+ "key": "prepend-defaults",
10684
+ "disabled": !hasPrependMedia,
10606
10685
  "defaults": {
10607
10686
  VAvatar: {
10608
10687
  color: color.value,
@@ -10611,19 +10690,15 @@ const VBanner = genericComponent()({
10611
10690
  image: props.avatar
10612
10691
  }
10613
10692
  }
10614
- }, {
10615
- default: () => [createVNode("div", {
10616
- "class": "v-banner__prepend"
10617
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && createVNode(VAvatar, null, null)])]
10618
- }), createVNode("div", {
10693
+ }, slots.prepend)]), createVNode("div", {
10619
10694
  "class": "v-banner__content"
10620
10695
  }, [hasText && createVNode(VBannerText, {
10621
10696
  "key": "text"
10622
10697
  }, {
10623
- default: () => [slots.text ? slots.text() : props.text]
10624
- }), slots.default?.()]), slots.actions && createVNode(VBannerActions, null, {
10625
- default: () => [slots.actions()]
10626
- })]
10698
+ default: () => [slots.text?.() ?? props.text]
10699
+ }), slots.default?.()]), slots.actions && createVNode(VBannerActions, {
10700
+ "key": "actions"
10701
+ }, slots.actions)]
10627
10702
  });
10628
10703
  });
10629
10704
  }
@@ -10856,19 +10931,23 @@ const VBreadcrumbs = genericComponent()({
10856
10931
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
10857
10932
  "style": backgroundColorStyles.value
10858
10933
  }, {
10859
- default: () => [hasPrepend && createVNode(VDefaultsProvider, {
10934
+ default: () => [hasPrepend && createVNode("div", {
10860
10935
  "key": "prepend",
10936
+ "class": "v-breadcrumbs__prepend"
10937
+ }, [!slots.prepend ? createVNode(VIcon, {
10938
+ "key": "prepend-icon",
10939
+ "start": true,
10940
+ "icon": props.icon
10941
+ }, null) : createVNode(VDefaultsProvider, {
10942
+ "key": "prepend-defaults",
10943
+ "disabled": !props.icon,
10861
10944
  "defaults": {
10862
10945
  VIcon: {
10863
10946
  icon: props.icon,
10864
10947
  start: true
10865
10948
  }
10866
10949
  }
10867
- }, {
10868
- default: () => [createVNode("div", {
10869
- "class": "v-breadcrumbs__prepend"
10870
- }, [slots.prepend ? slots.prepend() : props.icon && createVNode(VIcon, null, null)])]
10871
- }), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
10950
+ }, slots.prepend)]), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
10872
10951
  "key": index,
10873
10952
  "disabled": index >= array.length - 1
10874
10953
  }, typeof item === 'string' ? {
@@ -10932,30 +11011,33 @@ const VCardItem = genericComponent()({
10932
11011
  slots
10933
11012
  } = _ref;
10934
11013
  useRender(() => {
10935
- const hasPrepend = !!(props.prependAvatar || props.prependIcon || slots.prepend);
10936
- 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);
10937
11018
  const hasTitle = !!(props.title || slots.title);
10938
11019
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
10939
11020
  return createVNode("div", {
10940
11021
  "class": "v-card-item"
10941
- }, [hasPrepend && createVNode(VDefaultsProvider, {
11022
+ }, [hasPrepend && createVNode("div", {
10942
11023
  "key": "prepend",
11024
+ "class": "v-card-item__prepend"
11025
+ }, [!slots.prepend ? hasPrependMedia && createVNode(VAvatar, {
11026
+ "key": "prepend-avatar",
11027
+ "density": props.density,
11028
+ "icon": props.prependIcon,
11029
+ "image": props.prependAvatar
11030
+ }, null) : createVNode(VDefaultsProvider, {
11031
+ "key": "prepend-defaults",
11032
+ "disabled": !hasPrependMedia,
10943
11033
  "defaults": {
10944
11034
  VAvatar: {
10945
11035
  density: props.density,
10946
11036
  icon: props.prependIcon,
10947
11037
  image: props.prependAvatar
10948
- },
10949
- VIcon: {
10950
- density: props.density,
10951
- icon: props.prependIcon
10952
11038
  }
10953
11039
  }
10954
- }, {
10955
- default: () => [createVNode("div", {
10956
- "class": "v-card-item__prepend"
10957
- }, [slots.prepend?.() ?? createVNode(VAvatar, null, null)])]
10958
- }), createVNode("div", {
11040
+ }, slots.prepend)]), createVNode("div", {
10959
11041
  "class": "v-card-item__content"
10960
11042
  }, [hasTitle && createVNode(VCardTitle, {
10961
11043
  "key": "title"
@@ -10965,24 +11047,25 @@ const VCardItem = genericComponent()({
10965
11047
  "key": "subtitle"
10966
11048
  }, {
10967
11049
  default: () => [slots.subtitle?.() ?? props.subtitle]
10968
- }), slots.default?.()]), hasAppend && createVNode(VDefaultsProvider, {
11050
+ }), slots.default?.()]), hasAppend && createVNode("div", {
10969
11051
  "key": "append",
11052
+ "class": "v-card-item__append"
11053
+ }, [!slots.append ? hasAppendMedia && createVNode(VAvatar, {
11054
+ "key": "append-avatar",
11055
+ "density": props.density,
11056
+ "icon": props.appendIcon,
11057
+ "image": props.appendAvatar
11058
+ }, null) : createVNode(VDefaultsProvider, {
11059
+ "key": "append-defaults",
11060
+ "disabled": !hasAppendMedia,
10970
11061
  "defaults": {
10971
11062
  VAvatar: {
10972
11063
  density: props.density,
10973
11064
  icon: props.appendIcon,
10974
11065
  image: props.appendAvatar
10975
- },
10976
- VIcon: {
10977
- density: props.density,
10978
- icon: props.appendIcon
10979
11066
  }
10980
11067
  }
10981
- }, {
10982
- default: () => [createVNode("div", {
10983
- "class": "v-card-item__append"
10984
- }, [slots.append?.() ?? createVNode(VAvatar, null, null)])]
10985
- })]);
11068
+ }, slots.append)])]);
10986
11069
  });
10987
11070
  return {};
10988
11071
  }
@@ -11094,19 +11177,23 @@ const VCard = genericComponent()({
11094
11177
  "onClick": isClickable.value && link.navigate,
11095
11178
  "tabindex": props.disabled ? -1 : undefined
11096
11179
  }, {
11097
- default: () => [hasImage && createVNode(VDefaultsProvider, {
11180
+ default: () => [hasImage && createVNode("div", {
11098
11181
  "key": "image",
11182
+ "class": "v-card__image"
11183
+ }, [!slots.image ? createVNode(VImg, {
11184
+ "key": "image-img",
11185
+ "cover": true,
11186
+ "src": props.image
11187
+ }, null) : createVNode(VDefaultsProvider, {
11188
+ "key": "image-defaults",
11189
+ "disabled": !props.image,
11099
11190
  "defaults": {
11100
11191
  VImg: {
11101
11192
  cover: true,
11102
11193
  src: props.image
11103
11194
  }
11104
11195
  }
11105
- }, {
11106
- default: () => [createVNode("div", {
11107
- "class": "v-card__image"
11108
- }, [slots.image?.() ?? createVNode(VImg, null, null)])]
11109
- }), createVNode(LoaderSlot, {
11196
+ }, slots.image)]), createVNode(LoaderSlot, {
11110
11197
  "name": "v-card",
11111
11198
  "active": !!props.loading,
11112
11199
  "color": typeof props.loading === 'boolean' ? undefined : props.loading
@@ -12310,7 +12397,9 @@ const useSlider = _ref => {
12310
12397
  const percentage = (val - min.value) / (max.value - min.value) * 100;
12311
12398
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
12312
12399
  };
12400
+ const showTicks = toRef(props, 'showTicks');
12313
12401
  const parsedTicks = computed(() => {
12402
+ if (!showTicks.value) return [];
12314
12403
  if (!props.ticks) {
12315
12404
  return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {
12316
12405
  const value = min.value + t * step.value;
@@ -12359,7 +12448,7 @@ const useSlider = _ref => {
12359
12448
  readonly: toRef(props, 'readonly'),
12360
12449
  rounded: toRef(props, 'rounded'),
12361
12450
  roundValue,
12362
- showTicks: toRef(props, 'showTicks'),
12451
+ showTicks,
12363
12452
  startOffset,
12364
12453
  step,
12365
12454
  thumbSize,
@@ -12581,6 +12670,7 @@ const VSliderTrack = genericComponent()({
12581
12670
  };
12582
12671
  });
12583
12672
  const computedTicks = computed(() => {
12673
+ if (!showTicks.value) return [];
12584
12674
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
12585
12675
  return ticks.map((tick, index) => {
12586
12676
  const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
@@ -13700,7 +13790,13 @@ const VCombobox = genericComponent()({
13700
13790
  "key": item.value,
13701
13791
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
13702
13792
  "style": index === selectionIndex.value ? textColorStyles.value : {}
13703
- }, [hasChips ? createVNode(VDefaultsProvider, {
13793
+ }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
13794
+ "key": "chip",
13795
+ "closable": props.closableChips,
13796
+ "size": "small",
13797
+ "text": item.title
13798
+ }, slotProps), null) : createVNode(VDefaultsProvider, {
13799
+ "key": "chip-defaults",
13704
13800
  "defaults": {
13705
13801
  VChip: {
13706
13802
  closable: props.closableChips,
@@ -13709,15 +13805,15 @@ const VCombobox = genericComponent()({
13709
13805
  }
13710
13806
  }
13711
13807
  }, {
13712
- default: () => [slots.chip ? slots.chip({
13808
+ default: () => [slots.chip?.({
13713
13809
  item,
13714
13810
  index,
13715
13811
  props: slotProps
13716
- }) : createVNode(VChip, slotProps, null)]
13717
- }) : slots.selection ? slots.selection({
13812
+ })]
13813
+ }) : slots.selection?.({
13718
13814
  item,
13719
13815
  index
13720
- }) : createVNode("span", {
13816
+ }) ?? createVNode("span", {
13721
13817
  "class": "v-combobox__selection-text"
13722
13818
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
13723
13819
  "class": "v-combobox__selection-comma"
@@ -16863,7 +16959,8 @@ const VSnackbar = genericComponent()({
16863
16959
  "persistent": true,
16864
16960
  "noClickAnimation": true,
16865
16961
  "scrim": false,
16866
- "scrollStrategy": "none"
16962
+ "scrollStrategy": "none",
16963
+ "_disableGlobalStack": true
16867
16964
  }, scopeId), {
16868
16965
  default: () => [genOverlays(false, 'v-snackbar'), slots.default && createVNode("div", {
16869
16966
  "class": "v-snackbar__content",
@@ -17229,16 +17326,6 @@ const VTabs = genericComponent()({
17229
17326
  backgroundColorClasses,
17230
17327
  backgroundColorStyles
17231
17328
  } = useBackgroundColor(toRef(props, 'bgColor'));
17232
- provideDefaults({
17233
- VTab: {
17234
- color: toRef(props, 'color'),
17235
- direction: toRef(props, 'direction'),
17236
- stacked: toRef(props, 'stacked'),
17237
- fixed: toRef(props, 'fixedTabs'),
17238
- sliderColor: toRef(props, 'sliderColor'),
17239
- hideSlider: toRef(props, 'hideSlider')
17240
- }
17241
- });
17242
17329
  useRender(() => createVNode(VSlideGroup, {
17243
17330
  "modelValue": model.value,
17244
17331
  "onUpdate:modelValue": $event => model.value = $event,
@@ -17255,9 +17342,27 @@ const VTabs = genericComponent()({
17255
17342
  "mandatory": props.mandatory,
17256
17343
  "direction": props.direction
17257
17344
  }, {
17258
- default: () => [slots.default ? slots.default() : parsedItems.value.map(item => createVNode(VTab, mergeProps(item, {
17259
- "key": item.title
17260
- }), null))]
17345
+ default: () => [!slots.default ? parsedItems.value.map(item => createVNode(VTab, 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)) : 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
  }
@@ -17685,13 +17790,6 @@ const VTimelineDivider = genericComponent()({
17685
17790
  backgroundColorClasses: lineColorClasses,
17686
17791
  backgroundColorStyles: lineColorStyles
17687
17792
  } = useBackgroundColor(toRef(props, 'lineColor'));
17688
- provideDefaults({
17689
- VIcon: {
17690
- color: toRef(props, 'iconColor'),
17691
- icon: toRef(props, 'icon'),
17692
- size: toRef(props, 'size')
17693
- }
17694
- });
17695
17793
  useRender(() => createVNode("div", {
17696
17794
  "class": ['v-timeline-divider', {
17697
17795
  'v-timeline-divider--fill-dot': props.fillDot
@@ -17706,7 +17804,22 @@ const VTimelineDivider = genericComponent()({
17706
17804
  }, [createVNode("div", {
17707
17805
  "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
17708
17806
  "style": backgroundColorStyles.value
17709
- }, [slots.default?.() ?? (props.icon ? createVNode(VIcon, null, null) : undefined)])]), createVNode("div", {
17807
+ }, [!slots.default ? createVNode(VIcon, {
17808
+ "key": "icon",
17809
+ "color": props.iconColor,
17810
+ "icon": props.icon,
17811
+ "size": props.size
17812
+ }, null) : 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)])]), createVNode("div", {
17710
17823
  "class": ['v-timeline-divider__after', lineColorClasses.value],
17711
17824
  "style": lineColorStyles.value
17712
17825
  }, null)]));
@@ -18077,7 +18190,7 @@ const makeDataTableSelectProps = propsFactory({
18077
18190
  }
18078
18191
  }, 'v-data-table-select');
18079
18192
  const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
18080
- function createSelection(props, allItems) {
18193
+ function provideSelection(props, allItems) {
18081
18194
  const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {
18082
18195
  return new Set(v);
18083
18196
  }, v => {
@@ -18137,13 +18250,28 @@ const makeDataTableSortProps = propsFactory({
18137
18250
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
18138
18251
  function createSort(props) {
18139
18252
  const sortBy = useProxiedModel(props, 'sortBy');
18253
+ const mustSort = toRef(props, 'mustSort');
18254
+ const multiSort = toRef(props, 'multiSort');
18255
+ return {
18256
+ sortBy,
18257
+ mustSort,
18258
+ multiSort
18259
+ };
18260
+ }
18261
+ function provideSort(options) {
18262
+ const {
18263
+ sortBy,
18264
+ mustSort,
18265
+ multiSort,
18266
+ page
18267
+ } = options;
18140
18268
  const toggleSort = key => {
18141
18269
  let newSortBy = sortBy.value.map(x => ({
18142
18270
  ...x
18143
18271
  })) ?? [];
18144
18272
  const item = newSortBy.find(x => x.key === key);
18145
18273
  if (!item) {
18146
- if (props.multiSort) newSortBy = [...newSortBy, {
18274
+ if (multiSort.value) newSortBy = [...newSortBy, {
18147
18275
  key,
18148
18276
  order: 'asc'
18149
18277
  }];else newSortBy = [{
@@ -18151,7 +18279,7 @@ function createSort(props) {
18151
18279
  order: 'asc'
18152
18280
  }];
18153
18281
  } else if (item.order === 'desc') {
18154
- if (props.mustSort) {
18282
+ if (mustSort.value) {
18155
18283
  item.order = 'asc';
18156
18284
  } else {
18157
18285
  newSortBy = newSortBy.filter(x => x.key !== key);
@@ -18160,6 +18288,7 @@ function createSort(props) {
18160
18288
  item.order = 'desc';
18161
18289
  }
18162
18290
  sortBy.value = newSortBy;
18291
+ if (page) page.value = 1;
18163
18292
  };
18164
18293
  const data = {
18165
18294
  sortBy,
@@ -18362,9 +18491,6 @@ const VDataTableHeaders = genericComponent()({
18362
18491
  });
18363
18492
 
18364
18493
  // Utilities
18365
-
18366
- // Types
18367
-
18368
18494
  const makeDataTableGroupProps = propsFactory({
18369
18495
  groupBy: {
18370
18496
  type: Array,
@@ -18372,7 +18498,17 @@ const makeDataTableGroupProps = propsFactory({
18372
18498
  }
18373
18499
  }, 'data-table-group');
18374
18500
  const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
18375
- function createGroupBy(props, groupBy, sortBy) {
18501
+ function createGroupBy(props) {
18502
+ const groupBy = useProxiedModel(props, 'groupBy');
18503
+ return {
18504
+ groupBy
18505
+ };
18506
+ }
18507
+ function provideGroupBy(options) {
18508
+ const {
18509
+ groupBy,
18510
+ sortBy
18511
+ } = options;
18376
18512
  const opened = ref(new Set());
18377
18513
  const sortByWithGroups = computed(() => {
18378
18514
  return groupBy.value.map(val => ({
@@ -18582,7 +18718,7 @@ const makeDataTableExpandProps = propsFactory({
18582
18718
  }
18583
18719
  }, 'v-data-table-expand');
18584
18720
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18585
- function createExpanded(props) {
18721
+ function provideExpanded(props) {
18586
18722
  const expandOnClick = toRef(props, 'expandOnClick');
18587
18723
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18588
18724
  return new Set(v);
@@ -18625,7 +18761,8 @@ function useExpanded() {
18625
18761
  const VDataTableRow = defineComponent({
18626
18762
  name: 'VDataTableRow',
18627
18763
  props: {
18628
- item: Object
18764
+ item: Object,
18765
+ onClick: Function
18629
18766
  },
18630
18767
  setup(props, _ref) {
18631
18768
  let {
@@ -18643,7 +18780,10 @@ const VDataTableRow = defineComponent({
18643
18780
  columns
18644
18781
  } = useHeaders();
18645
18782
  useRender(() => createVNode("tr", {
18646
- "class": ['v-data-table__tr']
18783
+ "class": ['v-data-table__tr', {
18784
+ 'v-data-table__tr--clickable': !!props.onClick
18785
+ }],
18786
+ "onClick": props.onClick
18647
18787
  }, [!columns.value.length && createVNode(VDataTableColumn, {
18648
18788
  "key": "no-data"
18649
18789
  }, slots), props.item && columns.value.map((column, i) => createVNode(VDataTableColumn, {
@@ -18774,7 +18914,7 @@ const VDataTableRows = genericComponent()({
18774
18914
  "key": `item_${item.value}`,
18775
18915
  "onClick": event => {
18776
18916
  if (expandOnClick.value) {
18777
- toggleExpand(item.value);
18917
+ toggleExpand(item);
18778
18918
  }
18779
18919
  emit('click:row', event, {
18780
18920
  item
@@ -18802,10 +18942,20 @@ const makeDataTablePaginateProps = propsFactory({
18802
18942
  }
18803
18943
  }, 'v-data-table-paginate');
18804
18944
  const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
18805
- function createPagination(props, items) {
18945
+ function createPagination(props) {
18806
18946
  const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
18807
18947
  const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
18808
- const itemsLength = computed(() => +(props.itemsLength ?? items.value.length));
18948
+ return {
18949
+ page,
18950
+ itemsPerPage
18951
+ };
18952
+ }
18953
+ function providePagination(options) {
18954
+ const {
18955
+ page,
18956
+ itemsPerPage,
18957
+ itemsLength
18958
+ } = options;
18809
18959
  const startIndex = computed(() => {
18810
18960
  if (itemsPerPage.value === -1) return 0;
18811
18961
  return itemsPerPage.value * (page.value - 1);
@@ -18818,13 +18968,18 @@ function createPagination(props, items) {
18818
18968
  if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
18819
18969
  return Math.ceil(itemsLength.value / itemsPerPage.value);
18820
18970
  });
18971
+ function setItemsPerPage(value) {
18972
+ itemsPerPage.value = value;
18973
+ page.value = 1;
18974
+ }
18821
18975
  const data = {
18822
18976
  page,
18823
18977
  itemsPerPage,
18978
+ itemsLength,
18824
18979
  startIndex,
18825
18980
  stopIndex,
18826
18981
  pageCount,
18827
- itemsLength
18982
+ setItemsPerPage
18828
18983
  };
18829
18984
  provide(VDataTablePaginationSymbol, data);
18830
18985
  return data;
@@ -18834,7 +18989,13 @@ function usePagination() {
18834
18989
  if (!data) throw new Error('Missing pagination!');
18835
18990
  return data;
18836
18991
  }
18837
- function usePaginatedItems(items, startIndex, stopIndex, itemsPerPage) {
18992
+ function usePaginatedItems(options) {
18993
+ const {
18994
+ items,
18995
+ startIndex,
18996
+ stopIndex,
18997
+ itemsPerPage
18998
+ } = options;
18838
18999
  const paginatedItems = computed(() => {
18839
19000
  if (itemsPerPage.value <= 0) return items.value;
18840
19001
  return items.value.slice(startIndex.value, stopIndex.value);
@@ -18923,7 +19084,8 @@ const VDataTableFooter = genericComponent()({
18923
19084
  startIndex,
18924
19085
  stopIndex,
18925
19086
  itemsLength,
18926
- itemsPerPage
19087
+ itemsPerPage,
19088
+ setItemsPerPage
18927
19089
  } = usePagination();
18928
19090
  const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => ({
18929
19091
  ...option,
@@ -18936,7 +19098,7 @@ const VDataTableFooter = genericComponent()({
18936
19098
  }, [createVNode("span", null, [t(props.itemsPerPageText)]), createVNode(VSelect, {
18937
19099
  "items": itemsPerPageOptions.value,
18938
19100
  "modelValue": itemsPerPage.value,
18939
- "onUpdate:modelValue": v => itemsPerPage.value = Number(v),
19101
+ "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
18940
19102
  "density": "compact",
18941
19103
  "variant": "outlined",
18942
19104
  "hide-details": true
@@ -19025,22 +19187,10 @@ function useOptions(_ref) {
19025
19187
  groupBy: groupBy.value
19026
19188
  }));
19027
19189
 
19028
- // Reset page when sorting changes
19029
- watch(sortBy, () => {
19030
- page.value = 1;
19031
- }, {
19032
- deep: true
19033
- });
19034
-
19035
19190
  // Reset page when searching
19036
19191
  watch(() => search?.value, () => {
19037
19192
  page.value = 1;
19038
19193
  });
19039
-
19040
- // Reset page when items-per-page changes
19041
- watch(itemsPerPage, () => {
19042
- page.value = 1;
19043
- });
19044
19194
  let oldOptions = null;
19045
19195
  watch(options, () => {
19046
19196
  if (deepEqual(oldOptions, options.value)) return;
@@ -19094,7 +19244,18 @@ const VDataTable = genericComponent()({
19094
19244
  emit,
19095
19245
  slots
19096
19246
  } = _ref;
19097
- const groupBy = useProxiedModel(props, 'groupBy');
19247
+ const {
19248
+ groupBy
19249
+ } = createGroupBy(props);
19250
+ const {
19251
+ sortBy,
19252
+ multiSort,
19253
+ mustSort
19254
+ } = createSort(props);
19255
+ const {
19256
+ page,
19257
+ itemsPerPage
19258
+ } = createPagination(props);
19098
19259
  const {
19099
19260
  columns
19100
19261
  } = createHeaders(props, {
@@ -19112,32 +19273,46 @@ const VDataTable = genericComponent()({
19112
19273
  } = useFilter(props, items, search, {
19113
19274
  filterKeys
19114
19275
  });
19115
- const {
19116
- sortBy
19117
- } = createSort(props);
19276
+ provideSort({
19277
+ sortBy,
19278
+ multiSort,
19279
+ mustSort,
19280
+ page
19281
+ });
19118
19282
  const {
19119
19283
  sortByWithGroups,
19120
19284
  opened,
19121
19285
  extractRows
19122
- } = createGroupBy(props, groupBy, sortBy);
19286
+ } = provideGroupBy({
19287
+ groupBy,
19288
+ sortBy
19289
+ });
19123
19290
  const {
19124
19291
  sortedItems
19125
19292
  } = useSortedItems(filteredItems, sortByWithGroups, columns);
19126
19293
  const {
19127
19294
  flatItems
19128
19295
  } = useGroupedItems(sortedItems, groupBy, opened);
19296
+ const itemsLength = computed(() => flatItems.value.length);
19129
19297
  const {
19130
- page,
19131
- itemsPerPage,
19132
19298
  startIndex,
19133
19299
  stopIndex
19134
- } = createPagination(props, flatItems);
19300
+ } = providePagination({
19301
+ page,
19302
+ itemsPerPage,
19303
+ itemsLength
19304
+ });
19135
19305
  const {
19136
19306
  paginatedItems
19137
- } = usePaginatedItems(flatItems, startIndex, stopIndex, itemsPerPage);
19307
+ } = usePaginatedItems({
19308
+ items: flatItems,
19309
+ startIndex,
19310
+ stopIndex,
19311
+ itemsPerPage
19312
+ });
19138
19313
  const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));
19139
- createSelection(props, paginatedItemsWithoutGroups);
19140
- createExpanded(props);
19314
+ provideSelection(props, paginatedItemsWithoutGroups);
19315
+ provideExpanded(props);
19141
19316
  useOptions({
19142
19317
  page,
19143
19318
  itemsPerPage,
@@ -19285,7 +19460,14 @@ const VDataTableVirtual = genericComponent()({
19285
19460
  emit,
19286
19461
  slots
19287
19462
  } = _ref;
19288
- const groupBy = useProxiedModel(props, 'groupBy');
19463
+ const {
19464
+ groupBy
19465
+ } = createGroupBy(props);
19466
+ const {
19467
+ sortBy,
19468
+ multiSort,
19469
+ mustSort
19470
+ } = createSort(props);
19289
19471
  const {
19290
19472
  columns
19291
19473
  } = createHeaders(props, {
@@ -19303,14 +19485,19 @@ const VDataTableVirtual = genericComponent()({
19303
19485
  } = useFilter(props, items, search, {
19304
19486
  filterKeys
19305
19487
  });
19306
- const {
19307
- sortBy
19308
- } = createSort(props);
19488
+ provideSort({
19489
+ sortBy,
19490
+ multiSort,
19491
+ mustSort
19492
+ });
19309
19493
  const {
19310
19494
  sortByWithGroups,
19311
19495
  opened,
19312
19496
  extractRows
19313
- } = createGroupBy(props, groupBy, sortBy);
19497
+ } = provideGroupBy({
19498
+ groupBy,
19499
+ sortBy
19500
+ });
19314
19501
  const {
19315
19502
  sortedItems
19316
19503
  } = useSortedItems(filteredItems, sortByWithGroups, columns);
@@ -19318,8 +19505,8 @@ const VDataTableVirtual = genericComponent()({
19318
19505
  flatItems
19319
19506
  } = useGroupedItems(sortedItems, groupBy, opened);
19320
19507
  const allRows = computed(() => extractRows(flatItems.value));
19321
- createSelection(props, allRows);
19322
- createExpanded(props);
19508
+ provideSelection(props, allRows);
19509
+ provideExpanded(props);
19323
19510
  const {
19324
19511
  containerRef,
19325
19512
  paddingTop,
@@ -19406,7 +19593,10 @@ const VDataTableServer = genericComponent()({
19406
19593
  type: String,
19407
19594
  default: '$vuetify.dataIterator.loadingText'
19408
19595
  },
19409
- itemsLength: [Number, String],
19596
+ itemsLength: {
19597
+ type: [Number, String],
19598
+ required: true
19599
+ },
19410
19600
  ...makeVDataTableProps(),
19411
19601
  ...makeDataTableExpandProps(),
19412
19602
  ...makeDataTableHeaderProps(),
@@ -19431,8 +19621,20 @@ const VDataTableServer = genericComponent()({
19431
19621
  emit,
19432
19622
  slots
19433
19623
  } = _ref;
19434
- const groupBy = useProxiedModel(props, 'groupBy');
19435
- createExpanded(props);
19624
+ const {
19625
+ groupBy
19626
+ } = createGroupBy(props);
19627
+ const {
19628
+ sortBy,
19629
+ multiSort,
19630
+ mustSort
19631
+ } = createSort(props);
19632
+ const {
19633
+ page,
19634
+ itemsPerPage
19635
+ } = createPagination(props);
19636
+ const itemsLength = computed(() => parseInt(props.itemsLength, 10));
19637
+ provideExpanded(props);
19436
19638
  const {
19437
19639
  columns
19438
19640
  } = createHeaders(props, {
@@ -19444,20 +19646,28 @@ const VDataTableServer = genericComponent()({
19444
19646
  items
19445
19647
  } = useDataTableItems(props, columns);
19446
19648
  const {
19447
- sortBy,
19448
19649
  toggleSort
19449
- } = createSort(props);
19650
+ } = provideSort({
19651
+ sortBy,
19652
+ multiSort,
19653
+ mustSort,
19654
+ page
19655
+ });
19450
19656
  const {
19451
19657
  opened
19452
- } = createGroupBy(props, groupBy, sortBy);
19453
- const {
19658
+ } = provideGroupBy({
19659
+ groupBy,
19660
+ sortBy
19661
+ });
19662
+ providePagination({
19454
19663
  page,
19455
- itemsPerPage
19456
- } = createPagination(props, items);
19664
+ itemsPerPage,
19665
+ itemsLength
19666
+ });
19457
19667
  const {
19458
19668
  flatItems
19459
19669
  } = useGroupedItems(items, groupBy, opened);
19460
- createSelection(props, items);
19670
+ provideSelection(props, items);
19461
19671
  useOptions({
19462
19672
  page,
19463
19673
  itemsPerPage,
@@ -20028,7 +20238,7 @@ function createVuetify$1() {
20028
20238
  locale
20029
20239
  };
20030
20240
  }
20031
- const version$1 = "3.1.8";
20241
+ const version$1 = "3.1.9";
20032
20242
  createVuetify$1.version = version$1;
20033
20243
 
20034
20244
  // Vue's inject() can only be used in setup
@@ -20040,7 +20250,7 @@ function inject(key) {
20040
20250
  }
20041
20251
  }
20042
20252
 
20043
- const version = "3.1.8";
20253
+ const version = "3.1.9";
20044
20254
 
20045
20255
  const createVuetify = function () {
20046
20256
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};