vuetify 3.3.7 → 3.3.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 (83) hide show
  1. package/dist/json/attributes.json +3 -3
  2. package/dist/json/importMap.json +76 -76
  3. package/dist/json/web-types.json +153 -153
  4. package/dist/vuetify-labs.css +471 -523
  5. package/dist/vuetify-labs.d.ts +65 -64
  6. package/dist/vuetify-labs.esm.js +149 -82
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +148 -81
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +49 -107
  11. package/dist/vuetify.d.ts +23 -23
  12. package/dist/vuetify.esm.js +92 -69
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +91 -68
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +116 -112
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/components/VAutocomplete/VAutocomplete.css +2 -2
  20. package/lib/components/VAutocomplete/VAutocomplete.sass +2 -2
  21. package/lib/components/VCarousel/VCarousel.mjs +58 -57
  22. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  23. package/lib/components/VColorPicker/VColorPickerEdit.css +1 -0
  24. package/lib/components/VColorPicker/VColorPickerEdit.sass +1 -0
  25. package/lib/components/VColorPicker/VColorPickerPreview.css +1 -1
  26. package/lib/components/VColorPicker/_variables.scss +2 -1
  27. package/lib/components/VCombobox/VCombobox.css +2 -2
  28. package/lib/components/VCombobox/VCombobox.sass +2 -2
  29. package/lib/components/VField/VField.css +8 -70
  30. package/lib/components/VField/VField.mjs +1 -1
  31. package/lib/components/VField/VField.mjs.map +1 -1
  32. package/lib/components/VField/VField.sass +5 -8
  33. package/lib/components/VField/_variables.scss +3 -3
  34. package/lib/components/VList/VListItem.css +3 -0
  35. package/lib/components/VList/VListItem.sass +10 -3
  36. package/lib/components/VOverlay/VOverlay.mjs +2 -2
  37. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  38. package/lib/components/VOverlay/locationStrategies.mjs +6 -0
  39. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  40. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -2
  41. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  42. package/lib/components/VTextField/VTextField.css +1 -1
  43. package/lib/composables/filter.mjs +3 -2
  44. package/lib/composables/filter.mjs.map +1 -1
  45. package/lib/composables/theme.mjs +2 -2
  46. package/lib/composables/theme.mjs.map +1 -1
  47. package/lib/entry-bundler.mjs +1 -1
  48. package/lib/framework.mjs +1 -1
  49. package/lib/index.d.mts +23 -23
  50. package/lib/labs/VDataIterator/index.d.mts +1 -0
  51. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  52. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  53. package/lib/labs/VDataTable/composables/items.mjs +1 -0
  54. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  55. package/lib/labs/VDataTable/index.d.mts +47 -46
  56. package/lib/labs/VDataTable/types.mjs.map +1 -1
  57. package/lib/labs/VDateInput/composables.mjs +1 -1
  58. package/lib/labs/VDateInput/composables.mjs.map +1 -1
  59. package/lib/labs/VDateInput/index.d.mts +16 -16
  60. package/lib/labs/VDatePicker/VDatePicker.mjs +8 -7
  61. package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -1
  62. package/lib/labs/VDatePicker/VDatePickerControls.css +7 -0
  63. package/lib/labs/VDatePicker/VDatePickerControls.mjs +1 -0
  64. package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -1
  65. package/lib/labs/VDatePicker/VDatePickerControls.sass +8 -0
  66. package/lib/labs/VDatePicker/composables.mjs +15 -2
  67. package/lib/labs/VDatePicker/composables.mjs.map +1 -1
  68. package/lib/labs/VDatePicker/index.d.mts +18 -18
  69. package/lib/labs/VDateRangePicker/VDateRangePicker.mjs +2 -4
  70. package/lib/labs/VDateRangePicker/VDateRangePicker.mjs.map +1 -1
  71. package/lib/labs/VDateRangePicker/VDateRangePickerHeader.mjs +4 -5
  72. package/lib/labs/VDateRangePicker/VDateRangePickerHeader.mjs.map +1 -1
  73. package/lib/labs/VDateRangePicker/index.d.mts +59 -51
  74. package/lib/labs/VPicker/VPicker.css +0 -1
  75. package/lib/labs/VPicker/VPicker.sass +0 -1
  76. package/lib/labs/components.d.mts +65 -64
  77. package/lib/labs/date/adapters/vuetify.mjs +14 -1
  78. package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
  79. package/lib/labs/date/date.mjs +3 -3
  80. package/lib/labs/date/date.mjs.map +1 -1
  81. package/lib/labs/date/index.d.mts +25 -1
  82. package/package.json +2 -2
  83. package/lib/components/VField/_mixins.sass +0 -7
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.3.7
2
+ * Vuetify v3.3.9
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, warn, watch, onScopeDispose, effectScope, ref, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, readonly, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, toValue, onBeforeUpdate, vModelText, withModifiers } from 'vue';
7
+ import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, warn, watch, onScopeDispose, effectScope, ref, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, readonly, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, onBeforeUpdate, vModelText, withModifiers } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -2161,7 +2161,7 @@ function parseThemeOptions() {
2161
2161
 
2162
2162
  // Composables
2163
2163
  function createTheme(options) {
2164
- const parsedOptions = reactive(parseThemeOptions(options));
2164
+ const parsedOptions = parseThemeOptions(options);
2165
2165
  const name = ref(parsedOptions.defaultTheme);
2166
2166
  const themes = ref(parsedOptions.themes);
2167
2167
  const computedThemes = computed(() => {
@@ -8334,6 +8334,12 @@ function getIntrinsicSize(el, isRtl) {
8334
8334
  // el.style.removeProperty('max-width')
8335
8335
  // el.style.removeProperty('max-height')
8336
8336
 
8337
+ if (isRtl) {
8338
+ el.style.removeProperty('left');
8339
+ } else {
8340
+ el.style.removeProperty('right');
8341
+ }
8342
+
8337
8343
  /* eslint-disable-next-line sonarjs/prefer-immediate-return */
8338
8344
  const contentBox = nullifyTransforms(el);
8339
8345
  if (isRtl) {
@@ -9615,11 +9621,11 @@ const VOverlay = genericComponent()({
9615
9621
  props: mergeProps({
9616
9622
  ref: activatorRef
9617
9623
  }, activatorEvents.value, props.activatorProps)
9618
- }), isMounted.value && createVNode(Teleport, {
9624
+ }), isMounted.value && hasContent.value && createVNode(Teleport, {
9619
9625
  "disabled": !teleportTarget.value,
9620
9626
  "to": teleportTarget.value
9621
9627
  }, {
9622
- default: () => [hasContent.value && createVNode("div", mergeProps({
9628
+ default: () => [createVNode("div", mergeProps({
9623
9629
  "class": ['v-overlay', {
9624
9630
  'v-overlay--absolute': props.absolute || props.contained,
9625
9631
  'v-overlay--active': isActive.value,
@@ -10121,7 +10127,7 @@ const VField = genericComponent()({
10121
10127
  }, null), createVNode(LoaderSlot, {
10122
10128
  "name": "v-field",
10123
10129
  "active": !!props.loading,
10124
- "color": props.error ? 'error' : props.color
10130
+ "color": props.error ? 'error' : typeof props.loading === 'string' ? props.loading : props.color
10125
10131
  }, {
10126
10132
  default: slots.loader
10127
10133
  }), hasPrepend && createVNode("div", {
@@ -11104,7 +11110,8 @@ function useFilter(props, items, query, options) {
11104
11110
  const filteredMatches = ref(new Map());
11105
11111
  const transformedItems = computed(() => options?.transform ? unref(items).map(options?.transform) : unref(items));
11106
11112
  watchEffect(() => {
11107
- const strQuery = typeof toValue(query) !== 'string' && typeof toValue(query) !== 'number' ? '' : String(toValue(query));
11113
+ const _query = typeof query === 'function' ? query() : unref(query);
11114
+ const strQuery = typeof _query !== 'string' && typeof _query !== 'number' ? '' : String(_query);
11108
11115
  const results = filterItems(transformedItems.value, strQuery, {
11109
11116
  customKeyFilter: props.customKeyFilter,
11110
11117
  default: props.customFilter,
@@ -12677,64 +12684,65 @@ const VCarousel = genericComponent()({
12677
12684
  window.clearTimeout(slideTimeout);
12678
12685
  window.requestAnimationFrame(startTimeout);
12679
12686
  }
12680
- useRender(() => createVNode(VWindow, {
12681
- "ref": windowRef,
12682
- "modelValue": model.value,
12683
- "onUpdate:modelValue": $event => model.value = $event,
12684
- "class": ['v-carousel', {
12685
- 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
12686
- 'v-carousel--vertical-delimiters': props.verticalDelimiters
12687
- }, props.class],
12688
- "style": [{
12689
- height: convertToUnit(props.height)
12690
- }, props.style],
12691
- "continuous": true,
12692
- "mandatory": "force",
12693
- "showArrows": props.showArrows
12694
- }, {
12695
- default: slots.default,
12696
- additional: _ref2 => {
12697
- let {
12698
- group
12699
- } = _ref2;
12700
- return createVNode(Fragment, null, [!props.hideDelimiters && createVNode("div", {
12701
- "class": "v-carousel__controls",
12702
- "style": {
12703
- left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',
12704
- right: props.verticalDelimiters === 'right' ? 0 : 'auto'
12705
- }
12706
- }, [group.items.value.length > 0 && createVNode(VDefaultsProvider, {
12707
- "defaults": {
12708
- VBtn: {
12709
- color: props.color,
12710
- icon: props.delimiterIcon,
12711
- size: 'x-small',
12712
- variant: 'text'
12687
+ useRender(() => {
12688
+ const [windowProps] = VWindow.filterProps(props);
12689
+ return createVNode(VWindow, mergeProps({
12690
+ "ref": windowRef
12691
+ }, windowProps, {
12692
+ "modelValue": model.value,
12693
+ "onUpdate:modelValue": $event => model.value = $event,
12694
+ "class": ['v-carousel', {
12695
+ 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
12696
+ 'v-carousel--vertical-delimiters': props.verticalDelimiters
12697
+ }, props.class],
12698
+ "style": [{
12699
+ height: convertToUnit(props.height)
12700
+ }, props.style]
12701
+ }), {
12702
+ default: slots.default,
12703
+ additional: _ref2 => {
12704
+ let {
12705
+ group
12706
+ } = _ref2;
12707
+ return createVNode(Fragment, null, [!props.hideDelimiters && createVNode("div", {
12708
+ "class": "v-carousel__controls",
12709
+ "style": {
12710
+ left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',
12711
+ right: props.verticalDelimiters === 'right' ? 0 : 'auto'
12713
12712
  }
12714
- },
12715
- "scoped": true
12716
- }, {
12717
- default: () => [group.items.value.map((item, index) => {
12718
- const props = {
12719
- id: `carousel-item-${item.id}`,
12720
- 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),
12721
- class: [group.isSelected(item.id) && 'v-btn--active'],
12722
- onClick: () => group.select(item.id, true)
12723
- };
12724
- return slots.item ? slots.item({
12725
- props,
12726
- item
12727
- }) : createVNode(VBtn, mergeProps(item, props), null);
12728
- })]
12729
- })]), props.progress && createVNode(VProgressLinear, {
12730
- "class": "v-carousel__progress",
12731
- "color": typeof props.progress === 'string' ? props.progress : undefined,
12732
- "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
12733
- }, null)]);
12734
- },
12735
- prev: slots.prev,
12736
- next: slots.next
12737
- }));
12713
+ }, [group.items.value.length > 0 && createVNode(VDefaultsProvider, {
12714
+ "defaults": {
12715
+ VBtn: {
12716
+ color: props.color,
12717
+ icon: props.delimiterIcon,
12718
+ size: 'x-small',
12719
+ variant: 'text'
12720
+ }
12721
+ },
12722
+ "scoped": true
12723
+ }, {
12724
+ default: () => [group.items.value.map((item, index) => {
12725
+ const props = {
12726
+ id: `carousel-item-${item.id}`,
12727
+ 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),
12728
+ class: [group.isSelected(item.id) && 'v-btn--active'],
12729
+ onClick: () => group.select(item.id, true)
12730
+ };
12731
+ return slots.item ? slots.item({
12732
+ props,
12733
+ item
12734
+ }) : createVNode(VBtn, mergeProps(item, props), null);
12735
+ })]
12736
+ })]), props.progress && createVNode(VProgressLinear, {
12737
+ "class": "v-carousel__progress",
12738
+ "color": typeof props.progress === 'string' ? props.progress : undefined,
12739
+ "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
12740
+ }, null)]);
12741
+ },
12742
+ prev: slots.prev,
12743
+ next: slots.next
12744
+ });
12745
+ });
12738
12746
  return {};
12739
12747
  }
12740
12748
  });
@@ -17485,8 +17493,10 @@ const VRangeSlider = genericComponent()({
17485
17493
  value
17486
17494
  } = _ref2;
17487
17495
  const newValue = activeThumbRef.value === startThumbRef.value?.$el ? [value, model.value[1]] : [model.value[0], value];
17488
- model.value = newValue;
17489
- emit('end', newValue);
17496
+ if (!props.strict && newValue[0] < newValue[1]) {
17497
+ model.value = newValue;
17498
+ }
17499
+ emit('end', model.value);
17490
17500
  },
17491
17501
  onSliderMove: _ref3 => {
17492
17502
  let {
@@ -20930,7 +20940,7 @@ const VDataTableRows = genericComponent()({
20930
20940
  const itemSlotProps = {
20931
20941
  ...slotProps,
20932
20942
  props: {
20933
- key: `item_${item.value}`,
20943
+ key: `item_${item.key ?? item.index}`,
20934
20944
  onClick: expandOnClick.value || props['onClick:row'] ? event => {
20935
20945
  if (expandOnClick.value) {
20936
20946
  toggleExpand(item);
@@ -20979,6 +20989,7 @@ function transformItem(props, item, index, columns) {
20979
20989
  }, {});
20980
20990
  return {
20981
20991
  type: 'item',
20992
+ key: props.returnObject ? getPropertyFromItem(item, props.itemValue) : value,
20982
20993
  index,
20983
20994
  value,
20984
20995
  selectable,
@@ -21750,11 +21761,24 @@ function startOfMonth(date) {
21750
21761
  function endOfMonth(date) {
21751
21762
  return new Date(date.getFullYear(), date.getMonth() + 1, 0);
21752
21763
  }
21764
+ function formatYyyyMmDd(value) {
21765
+ const formattedValue = value.split('-').map(d => d.padStart(2, '0')).join('-');
21766
+ const offsetMin = new Date().getTimezoneOffset() / -60;
21767
+ const offsetSign = offsetMin < 0 ? '-' : '+';
21768
+ const offsetValue = Math.abs(offsetMin).toString().padStart(2, '0');
21769
+ return `${formattedValue}T00:00:00.000${offsetSign}${offsetValue}:00`;
21770
+ }
21771
+ const _YYYMMDD = /([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))/;
21753
21772
  function date(value) {
21754
21773
  if (value == null) return new Date();
21755
21774
  if (value instanceof Date) return value;
21756
21775
  if (typeof value === 'string') {
21757
- const parsed = Date.parse(value);
21776
+ let parsed;
21777
+ if (_YYYMMDD.test(value)) {
21778
+ parsed = Date.parse(formatYyyyMmDd(value));
21779
+ } else {
21780
+ parsed = Date.parse(value);
21781
+ }
21758
21782
  if (!isNaN(parsed)) return new Date(parsed);
21759
21783
  }
21760
21784
  return null;
@@ -22003,11 +22027,11 @@ function useDate() {
22003
22027
  const date = inject$1(DateAdapterSymbol);
22004
22028
  const locale = useLocale();
22005
22029
  if (!date) throw new Error('[Vuetify] Could not find injected date');
22006
- const instance = typeof date.adapter === 'function'
22030
+ const instance = reactive(typeof date.adapter === 'function'
22007
22031
  // eslint-disable-next-line new-cap
22008
22032
  ? new date.adapter({
22009
22033
  locale: date.locale?.[locale.current.value] ?? locale.current.value
22010
- }) : date.adapter;
22034
+ }) : date.adapter);
22011
22035
  watch(locale.current, value => {
22012
22036
  const newLocale = date.locale ? date.locale[value] : value;
22013
22037
  instance.locale = newLocale ?? instance.locale;
@@ -22053,7 +22077,7 @@ const makeDateProps = propsFactory({
22053
22077
  },
22054
22078
  displayDate: {
22055
22079
  type: null,
22056
- default: new Date()
22080
+ default: null
22057
22081
  },
22058
22082
  inputMode: {
22059
22083
  type: String,
@@ -22072,6 +22096,34 @@ const dateEmits = {
22072
22096
  'update:inputMode': inputMode => true,
22073
22097
  'update:viewMode': viewMode => true
22074
22098
  };
22099
+ function createDateInput(props, isRange) {
22100
+ const adapter = useDate();
22101
+ const model = useProxiedModel(props, 'modelValue', [], v => {
22102
+ if (v == null) return [];
22103
+ const arr = wrapInArray(v).filter(v => !!v);
22104
+ return arr.map(adapter.date);
22105
+ }, v => {
22106
+ const arr = wrapInArray(v);
22107
+ const formatted = props.format ? arr.map(d => adapter.format(d, props.format)) : arr;
22108
+ if (isRange) return formatted;
22109
+ return formatted[0];
22110
+ });
22111
+ const inputMode = useProxiedModel(props, 'inputMode');
22112
+ const viewMode = useProxiedModel(props, 'viewMode');
22113
+ const displayDate = useProxiedModel(props, 'displayDate', model.value.length ? model.value[0] : adapter.date());
22114
+ function parseKeyboardDate(input, fallback) {
22115
+ const date = adapter.date(input);
22116
+ return adapter.isValid(date) ? date : fallback;
22117
+ }
22118
+ return {
22119
+ model,
22120
+ adapter,
22121
+ inputMode,
22122
+ viewMode,
22123
+ displayDate,
22124
+ parseKeyboardDate
22125
+ };
22126
+ }
22075
22127
 
22076
22128
  const makeVDatePickerControlsProps = propsFactory({
22077
22129
  nextIcon: {
@@ -22135,6 +22187,7 @@ const VDatePickerControls = genericComponent()({
22135
22187
  "icon": props.viewMode === 'month' ? props.expandIcon : props.collapseIcon,
22136
22188
  "onClick": () => emit('update:viewMode', props.viewMode === 'month' ? 'year' : 'month')
22137
22189
  }, null), createVNode(VSpacer, null, null), props.viewMode === 'month' && !props.range && createVNode("div", {
22190
+ "class": "v-date-picker-controls__month",
22138
22191
  "key": "month-buttons"
22139
22192
  }, [prevBtn, nextBtn]), props.viewMode === 'month' && props.range === 'end' && nextBtn]);
22140
22193
  });
@@ -22142,7 +22195,7 @@ const VDatePickerControls = genericComponent()({
22142
22195
  }
22143
22196
  });
22144
22197
 
22145
- // Utilities
22198
+ // Composables
22146
22199
 
22147
22200
  // Types
22148
22201
 
@@ -22160,12 +22213,24 @@ function createDatePicker(props) {
22160
22213
  dragHandle,
22161
22214
  hasScrolled
22162
22215
  });
22216
+
22217
+ // TODO: This composable should probably not live in DateInput
22218
+ const {
22219
+ model,
22220
+ displayDate,
22221
+ viewMode,
22222
+ inputMode
22223
+ } = createDateInput(props, !!props.multiple);
22163
22224
  return {
22164
22225
  hoverDate,
22165
22226
  hoverMonth,
22166
22227
  isDragging,
22167
22228
  dragHandle,
22168
- hasScrolled
22229
+ hasScrolled,
22230
+ model,
22231
+ displayDate,
22232
+ viewMode,
22233
+ inputMode
22169
22234
  };
22170
22235
  }
22171
22236
  function useDatePicker() {
@@ -22543,7 +22608,7 @@ const VDateCard = genericComponent()({
22543
22608
  const {
22544
22609
  t
22545
22610
  } = useLocale();
22546
- createDatePicker();
22611
+ createDatePicker(props);
22547
22612
  function onDisplayUpdate(val) {
22548
22613
  emit('update:displayDate', val);
22549
22614
  }
@@ -22759,12 +22824,13 @@ const VDatePicker = genericComponent()({
22759
22824
  const {
22760
22825
  t
22761
22826
  } = useLocale();
22762
- createDatePicker();
22763
- const model = ref(props.modelValue ?? []);
22827
+ const {
22828
+ model,
22829
+ displayDate,
22830
+ viewMode,
22831
+ inputMode
22832
+ } = createDatePicker(props);
22764
22833
  const isReversing = ref(false);
22765
- const displayDate = useProxiedModel(props, 'displayDate', props.displayDate);
22766
- const inputMode = useProxiedModel(props, 'inputMode', props.inputMode);
22767
- const viewMode = useProxiedModel(props, 'viewMode', props.viewMode);
22768
22834
  const inputModel = computed(() => model.value.length ? adapter.format(model.value[0], 'keyboardDate') : '');
22769
22835
  const title = computed(() => t(props.title));
22770
22836
  const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header));
@@ -22809,7 +22875,8 @@ const VDatePicker = genericComponent()({
22809
22875
  return createVNode(VPicker, mergeProps(pickerProps, {
22810
22876
  "class": ['v-date-picker', props.class],
22811
22877
  "style": props.style,
22812
- "title": title.value
22878
+ "title": title.value,
22879
+ "width": props.showWeek ? 408 : 360
22813
22880
  }), {
22814
22881
  header: () => slots.header?.(headerSlotProps.value) ?? createVNode(VDatePickerHeader, mergeProps({
22815
22882
  "key": "header"
@@ -23596,7 +23663,7 @@ function createVuetify$1() {
23596
23663
  date
23597
23664
  };
23598
23665
  }
23599
- const version$1 = "3.3.7";
23666
+ const version$1 = "3.3.9";
23600
23667
  createVuetify$1.version = version$1;
23601
23668
 
23602
23669
  // Vue's inject() can only be used in setup
@@ -23610,7 +23677,7 @@ function inject(key) {
23610
23677
 
23611
23678
  /* eslint-disable local-rules/sort-imports */
23612
23679
 
23613
- const version = "3.3.7";
23680
+ const version = "3.3.9";
23614
23681
 
23615
23682
  /* eslint-disable local-rules/sort-imports */
23616
23683