vuetify 3.5.12 → 3.5.14

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 (78) hide show
  1. package/dist/json/attributes.json +160 -160
  2. package/dist/json/importMap-labs.json +10 -10
  3. package/dist/json/importMap.json +124 -124
  4. package/dist/json/web-types.json +161 -161
  5. package/dist/vuetify-labs.css +2164 -2150
  6. package/dist/vuetify-labs.d.ts +993 -845
  7. package/dist/vuetify-labs.esm.js +91 -23
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +91 -23
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +745 -736
  12. package/dist/vuetify.d.ts +789 -669
  13. package/dist/vuetify.esm.js +86 -18
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +86 -18
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +122 -120
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/index.d.mts +2 -0
  21. package/lib/blueprints/md1.d.mts +2 -0
  22. package/lib/blueprints/md2.d.mts +2 -0
  23. package/lib/blueprints/md3.d.mts +2 -0
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -0
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.mts +34 -28
  27. package/lib/components/VBtn/VBtn.mjs +2 -0
  28. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  29. package/lib/components/VChip/VChip.mjs +1 -0
  30. package/lib/components/VChip/VChip.mjs.map +1 -1
  31. package/lib/components/VCombobox/VCombobox.mjs +6 -0
  32. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  33. package/lib/components/VCombobox/index.d.mts +34 -28
  34. package/lib/components/VDataTable/VDataTableServer.mjs +3 -2
  35. package/lib/components/VDataTable/VDataTableServer.mjs.map +1 -1
  36. package/lib/components/VDatePicker/VDatePicker.mjs +9 -2
  37. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  38. package/lib/components/VField/VField.mjs +29 -3
  39. package/lib/components/VField/VField.mjs.map +1 -1
  40. package/lib/components/VField/index.d.mts +9 -3
  41. package/lib/components/VFileInput/VFileInput.mjs +2 -2
  42. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  43. package/lib/components/VFileInput/index.d.mts +51 -23
  44. package/lib/components/VList/VListItem.css +3 -0
  45. package/lib/components/VList/VListItem.sass +4 -0
  46. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  47. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  48. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -3
  49. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  50. package/lib/components/VSelect/VSelect.mjs +6 -0
  51. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  52. package/lib/components/VSelect/index.d.mts +34 -28
  53. package/lib/components/VSwitch/VSwitch.css +6 -0
  54. package/lib/components/VSwitch/VSwitch.sass +7 -0
  55. package/lib/components/VSwitch/_variables.scss +1 -0
  56. package/lib/components/VTextField/index.d.mts +88 -46
  57. package/lib/components/VTextarea/index.d.mts +54 -26
  58. package/lib/components/index.d.mts +764 -650
  59. package/lib/composables/date/DateAdapter.mjs.map +1 -1
  60. package/lib/composables/date/adapters/vuetify.mjs +14 -0
  61. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  62. package/lib/composables/router.mjs +2 -2
  63. package/lib/composables/router.mjs.map +1 -1
  64. package/lib/entry-bundler.mjs +1 -1
  65. package/lib/framework.mjs +1 -1
  66. package/lib/index.d.mts +44 -38
  67. package/lib/labs/VEmptyState/VEmptyState.css +4 -0
  68. package/lib/labs/VEmptyState/VEmptyState.mjs +6 -1
  69. package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -1
  70. package/lib/labs/VEmptyState/VEmptyState.sass +4 -0
  71. package/lib/labs/VEmptyState/_variables.scss +1 -0
  72. package/lib/labs/VNumberInput/VNumberInput.css +1 -0
  73. package/lib/labs/VNumberInput/VNumberInput.mjs +0 -4
  74. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  75. package/lib/labs/VNumberInput/VNumberInput.sass +1 -0
  76. package/lib/labs/VNumberInput/index.d.mts +51 -23
  77. package/lib/labs/components.d.mts +50 -22
  78. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.12
2
+ * Vuetify v3.5.14
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -5084,7 +5084,7 @@
5084
5084
  const isClickable = vue.computed(() => {
5085
5085
  return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');
5086
5086
  });
5087
- if (typeof RouterLink === 'string') {
5087
+ if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {
5088
5088
  return {
5089
5089
  isLink,
5090
5090
  isClickable,
@@ -5094,7 +5094,7 @@
5094
5094
  // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined
5095
5095
  const linkProps = vue.computed(() => ({
5096
5096
  ...props,
5097
- to: props.to ? props.to : {}
5097
+ to: vue.toRef(() => props.to || {})
5098
5098
  }));
5099
5099
  const routerLink = RouterLink.useLink(linkProps.value);
5100
5100
  // Actual link needs to be undefined when to prop is not used
@@ -5593,8 +5593,10 @@
5593
5593
  'v-btn--stacked': props.stacked
5594
5594
  }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5595
5595
  "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5596
+ "aria-busy": props.loading ? true : undefined,
5596
5597
  "disabled": isDisabled.value || undefined,
5597
5598
  "href": link.href.value,
5599
+ "tabindex": props.loading ? -1 : undefined,
5598
5600
  "onClick": onClick,
5599
5601
  "value": valueAttr.value
5600
5602
  }, {
@@ -7621,6 +7623,7 @@
7621
7623
  const closeProps = vue.computed(() => ({
7622
7624
  'aria-label': t(props.closeLabel),
7623
7625
  onClick(e) {
7626
+ e.preventDefault();
7624
7627
  e.stopPropagation();
7625
7628
  isActive.value = false;
7626
7629
  emit('click:close', e);
@@ -11138,6 +11141,12 @@
11138
11141
  e.preventDefault();
11139
11142
  }
11140
11143
  }
11144
+ function onKeydownClear(e) {
11145
+ if (e.key !== 'Enter' && e.key !== ' ') return;
11146
+ e.preventDefault();
11147
+ e.stopPropagation();
11148
+ props['onClick:clear']?.(new MouseEvent('click'));
11149
+ }
11141
11150
  useRender(() => {
11142
11151
  const isOutlined = props.variant === 'outlined';
11143
11152
  const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);
@@ -11218,9 +11227,28 @@
11218
11227
  e.preventDefault();
11219
11228
  e.stopPropagation();
11220
11229
  }
11221
- }, [slots.clear ? slots.clear() : vue.createVNode(InputIcon, {
11222
- "name": "clear"
11223
- }, null)]), [[vue.vShow, props.dirty]])]
11230
+ }, [vue.createVNode(VDefaultsProvider, {
11231
+ "defaults": {
11232
+ VIcon: {
11233
+ icon: props.clearIcon
11234
+ }
11235
+ }
11236
+ }, {
11237
+ default: () => [slots.clear ? slots.clear({
11238
+ ...slotProps.value,
11239
+ props: {
11240
+ onKeydown: onKeydownClear,
11241
+ onFocus: focus,
11242
+ onBlur: blur,
11243
+ onClick: props['onClick:clear']
11244
+ }
11245
+ }) : vue.createVNode(InputIcon, {
11246
+ "name": "clear",
11247
+ "onKeydown": onKeydownClear,
11248
+ "onFocus": focus,
11249
+ "onBlur": blur
11250
+ }, null)]
11251
+ })]), [[vue.vShow, props.dirty]])]
11224
11252
  }), hasAppend && vue.createVNode("div", {
11225
11253
  "key": "append",
11226
11254
  "class": "v-field__append-inner"
@@ -12243,6 +12271,12 @@
12243
12271
  }
12244
12272
  const slotProps = {
12245
12273
  'onClick:close': onChipClose,
12274
+ onKeydown(e) {
12275
+ if (e.key !== 'Enter' && e.key !== ' ') return;
12276
+ e.preventDefault();
12277
+ e.stopPropagation();
12278
+ onChipClose(e);
12279
+ },
12246
12280
  onMousedown(e) {
12247
12281
  e.preventDefault();
12248
12282
  e.stopPropagation();
@@ -12807,6 +12841,12 @@
12807
12841
  }
12808
12842
  const slotProps = {
12809
12843
  'onClick:close': onChipClose,
12844
+ onKeydown(e) {
12845
+ if (e.key !== 'Enter' && e.key !== ' ') return;
12846
+ e.preventDefault();
12847
+ e.stopPropagation();
12848
+ onChipClose(e);
12849
+ },
12810
12850
  onMousedown(e) {
12811
12851
  e.preventDefault();
12812
12852
  e.stopPropagation();
@@ -16615,6 +16655,12 @@
16615
16655
  }
16616
16656
  const slotProps = {
16617
16657
  'onClick:close': onChipClose,
16658
+ onKeydown(e) {
16659
+ if (e.key !== 'Enter' && e.key !== ' ') return;
16660
+ e.preventDefault();
16661
+ e.stopPropagation();
16662
+ onChipClose(e);
16663
+ },
16618
16664
  onMousedown(e) {
16619
16665
  e.preventDefault();
16620
16666
  e.stopPropagation();
@@ -17564,6 +17610,9 @@
17564
17610
  function getMonth(date) {
17565
17611
  return date.getMonth();
17566
17612
  }
17613
+ function getDate(date) {
17614
+ return date.getDate();
17615
+ }
17567
17616
  function getNextMonth(date) {
17568
17617
  return new Date(date.getFullYear(), date.getMonth() + 1, 1);
17569
17618
  }
@@ -17642,6 +17691,11 @@
17642
17691
  d.setMonth(count);
17643
17692
  return d;
17644
17693
  }
17694
+ function setDate(date, day) {
17695
+ const d = new Date(date);
17696
+ d.setDate(day);
17697
+ return d;
17698
+ }
17645
17699
  function setYear(date, year) {
17646
17700
  const d = new Date(date);
17647
17701
  d.setFullYear(year);
@@ -17733,6 +17787,9 @@
17733
17787
  setMonth(date, count) {
17734
17788
  return setMonth(date, count);
17735
17789
  }
17790
+ setDate(date, day) {
17791
+ return setDate(date, day);
17792
+ }
17736
17793
  setYear(date, year) {
17737
17794
  return setYear(date, year);
17738
17795
  }
@@ -17748,6 +17805,9 @@
17748
17805
  getMonth(date) {
17749
17806
  return getMonth(date);
17750
17807
  }
17808
+ getDate(date) {
17809
+ return getDate(date);
17810
+ }
17751
17811
  getNextMonth(date) {
17752
17812
  return getNextMonth(date);
17753
17813
  }
@@ -20175,9 +20235,9 @@
20175
20235
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
20176
20236
  "items": flatItems.value
20177
20237
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
20178
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : vue.createVNode(VDataTableFooter, dataTableFooterProps, {
20238
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
20179
20239
  prepend: slots['footer.prepend']
20180
- })
20240
+ })])
20181
20241
  });
20182
20242
  });
20183
20243
  }
@@ -21207,10 +21267,17 @@
21207
21267
  const year = vue.ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
21208
21268
  const isReversing = vue.shallowRef(false);
21209
21269
  const header = vue.computed(() => {
21210
- return props.multiple && model.value.length > 1 ? t('$vuetify.datePicker.itemsSelected', model.value.length) : model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header);
21270
+ if (props.multiple && model.value.length > 1) {
21271
+ return t('$vuetify.datePicker.itemsSelected', model.value.length);
21272
+ }
21273
+ return model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday') : t(props.header);
21211
21274
  });
21212
21275
  const text = vue.computed(() => {
21213
- return adapter.format(adapter.date(new Date(year.value, month.value, 1)), 'monthAndYear');
21276
+ let date = adapter.date();
21277
+ date = adapter.setYear(date, year.value);
21278
+ date = adapter.setMonth(date, month.value);
21279
+ date = adapter.setDate(date, 1);
21280
+ return adapter.format(date, 'monthAndYear');
21214
21281
  });
21215
21282
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
21216
21283
  const headerTransition = vue.computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
@@ -21639,7 +21706,7 @@
21639
21706
  prependIcon: '$file'
21640
21707
  }),
21641
21708
  modelValue: {
21642
- type: Array,
21709
+ type: [Array, Object],
21643
21710
  default: () => [],
21644
21711
  validator: val => {
21645
21712
  return wrapInArray(val).every(v => v != null && typeof v === 'object');
@@ -21668,7 +21735,7 @@
21668
21735
  const {
21669
21736
  t
21670
21737
  } = useLocale();
21671
- const model = useProxiedModel(props, 'modelValue');
21738
+ const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
21672
21739
  const {
21673
21740
  isFocused,
21674
21741
  focus,
@@ -23097,7 +23164,7 @@
23097
23164
  focus,
23098
23165
  blur
23099
23166
  } = useFocus(props);
23100
- const model = useProxiedModel(props, 'modelValue', '', val => String(val).split(''), val => val.join(''));
23167
+ const model = useProxiedModel(props, 'modelValue', '', val => val == null ? [] : String(val).split(''), val => val.join(''));
23101
23168
  const {
23102
23169
  t
23103
23170
  } = useLocale();
@@ -23523,7 +23590,8 @@
23523
23590
  onSliderMousedown,
23524
23591
  onSliderTouchstart,
23525
23592
  position,
23526
- trackContainerRef
23593
+ trackContainerRef,
23594
+ readonly
23527
23595
  } = useSlider({
23528
23596
  props,
23529
23597
  steps,
@@ -23591,8 +23659,8 @@
23591
23659
  } = _ref4;
23592
23660
  return vue.createVNode("div", {
23593
23661
  "class": "v-slider__container",
23594
- "onMousedown": onSliderMousedown,
23595
- "onTouchstartPassive": onSliderTouchstart
23662
+ "onMousedown": !readonly.value ? onSliderMousedown : undefined,
23663
+ "onTouchstartPassive": !readonly.value ? onSliderTouchstart : undefined
23596
23664
  }, [vue.createVNode("input", {
23597
23665
  "id": `${id.value}_start`,
23598
23666
  "name": props.name || id.value,
@@ -26246,6 +26314,9 @@
26246
26314
  const {
26247
26315
  dimensionStyles
26248
26316
  } = useDimension(props);
26317
+ const {
26318
+ displayClasses
26319
+ } = useDisplay();
26249
26320
  function onClickAction(e) {
26250
26321
  emit('click:action', e);
26251
26322
  }
@@ -26259,7 +26330,7 @@
26259
26330
  return vue.createVNode("div", {
26260
26331
  "class": ['v-empty-state', {
26261
26332
  [`v-empty-state--${props.justify}`]: true
26262
- }, themeClasses.value, backgroundColorClasses.value, props.class],
26333
+ }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class],
26263
26334
  "style": [backgroundColorStyles.value, dimensionStyles.value, props.style]
26264
26335
  }, [hasMedia && vue.createVNode("div", {
26265
26336
  "key": "media",
@@ -26270,6 +26341,7 @@
26270
26341
  "height": size
26271
26342
  }, null) : props.icon ? vue.createVNode(VIcon, {
26272
26343
  "key": "icon",
26344
+ "color": props.color,
26273
26345
  "size": size,
26274
26346
  "icon": props.icon
26275
26347
  }, null) : undefined]) : vue.createVNode(VDefaultsProvider, {
@@ -26511,7 +26583,6 @@
26511
26583
  "key": "decrement-btn",
26512
26584
  "height": defaultHeight,
26513
26585
  "icon": "$expand",
26514
- "rounded": "0",
26515
26586
  "size": "small",
26516
26587
  "onClick": onClickDown
26517
26588
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -26519,7 +26590,6 @@
26519
26590
  "defaults": {
26520
26591
  VBtn: {
26521
26592
  flat: true,
26522
- rounded: '0',
26523
26593
  height: defaultHeight,
26524
26594
  size: 'small',
26525
26595
  icon: '$expand'
@@ -26535,7 +26605,6 @@
26535
26605
  "height": defaultHeight,
26536
26606
  "icon": "$collapse",
26537
26607
  "onClick": onClickUp,
26538
- "rounded": "0",
26539
26608
  "size": "small"
26540
26609
  }, null) : vue.createVNode(VDefaultsProvider, {
26541
26610
  "key": "increment-defaults",
@@ -26543,7 +26612,6 @@
26543
26612
  VBtn: {
26544
26613
  flat: true,
26545
26614
  height: defaultHeight,
26546
- rounded: '0',
26547
26615
  size: 'small',
26548
26616
  icon: '$collapse'
26549
26617
  }
@@ -28512,7 +28580,7 @@
28512
28580
  goTo
28513
28581
  };
28514
28582
  }
28515
- const version$1 = "3.5.12";
28583
+ const version$1 = "3.5.14";
28516
28584
  createVuetify$1.version = version$1;
28517
28585
 
28518
28586
  // Vue's inject() can only be used in setup
@@ -28765,7 +28833,7 @@
28765
28833
 
28766
28834
  /* eslint-disable local-rules/sort-imports */
28767
28835
 
28768
- const version = "3.5.12";
28836
+ const version = "3.5.14";
28769
28837
 
28770
28838
  /* eslint-disable local-rules/sort-imports */
28771
28839