vuetify 3.3.20 → 3.3.22

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 (85) hide show
  1. package/dist/json/attributes.json +222 -6
  2. package/dist/json/importMap.json +50 -50
  3. package/dist/json/tags.json +60 -3
  4. package/dist/json/web-types.json +977 -80
  5. package/dist/vuetify-labs.css +5608 -5595
  6. package/dist/vuetify-labs.d.ts +273 -67
  7. package/dist/vuetify-labs.esm.js +97 -29
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +97 -29
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +4408 -4399
  12. package/dist/vuetify.d.ts +16 -14
  13. package/dist/vuetify.esm.js +31 -5
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +31 -5
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +798 -795
  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.css +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.sass +2 -2
  26. package/lib/components/VAutocomplete/_variables.scss +1 -0
  27. package/lib/components/VCard/VCard.css +3 -1
  28. package/lib/components/VCard/VCard.sass +2 -1
  29. package/lib/components/VCard/_variables.scss +7 -5
  30. package/lib/components/VChip/VChip.css +67 -67
  31. package/lib/components/VChip/_variables.scss +1 -1
  32. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -0
  33. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  34. package/lib/components/VCombobox/VCombobox.mjs +3 -3
  35. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  36. package/lib/components/VField/VField.css +3 -0
  37. package/lib/components/VField/VField.sass +3 -0
  38. package/lib/components/VField/_variables.scss +1 -0
  39. package/lib/components/VList/VListItem.css +0 -4
  40. package/lib/components/VList/VListItem.sass +0 -5
  41. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +5 -0
  42. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +4 -0
  43. package/lib/components/VTable/VTable.css +3 -0
  44. package/lib/components/VTable/VTable.sass +3 -0
  45. package/lib/components/VToolbar/_variables.scss +6 -3
  46. package/lib/entry-bundler.mjs +1 -1
  47. package/lib/framework.mjs +1 -1
  48. package/lib/index.d.mts +16 -14
  49. package/lib/labs/VDataTable/VDataTable.css +0 -6
  50. package/lib/labs/VDataTable/VDataTable.sass +0 -1
  51. package/lib/labs/VDataTable/VDataTableFooter.mjs +12 -4
  52. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  53. package/lib/labs/VDataTable/index.d.mts +48 -48
  54. package/lib/labs/VDatePicker/VDatePickerMonth.mjs +14 -2
  55. package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  56. package/lib/labs/VDatePicker/index.d.mts +18 -0
  57. package/lib/labs/VDateRangePicker/index.d.mts +12 -0
  58. package/lib/labs/VOtpInput/VOtpInput.css +3 -2
  59. package/lib/labs/VOtpInput/VOtpInput.mjs +7 -4
  60. package/lib/labs/VOtpInput/VOtpInput.mjs.map +1 -1
  61. package/lib/labs/VOtpInput/VOtpInput.sass +9 -8
  62. package/lib/labs/VOtpInput/_variables.scss +9 -0
  63. package/lib/labs/VStepper/VStepper.css +9 -0
  64. package/lib/labs/VStepper/VStepper.mjs +1 -2
  65. package/lib/labs/VStepper/VStepper.mjs.map +1 -1
  66. package/lib/labs/VStepper/VStepper.sass +17 -8
  67. package/lib/labs/VStepper/VStepperActions.mjs +34 -13
  68. package/lib/labs/VStepper/VStepperActions.mjs.map +1 -1
  69. package/lib/labs/VStepper/VStepperItem.mjs.map +1 -1
  70. package/lib/labs/VStepper/VStepperItem.sass +15 -15
  71. package/lib/labs/VStepper/_variables.scss +24 -1
  72. package/lib/labs/VStepper/index.d.mts +205 -19
  73. package/lib/labs/components.d.mts +271 -67
  74. package/lib/labs/date/DateAdapter.mjs.map +1 -1
  75. package/lib/labs/date/adapters/vuetify.d.mts +4 -0
  76. package/lib/labs/date/adapters/vuetify.mjs +18 -1
  77. package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
  78. package/lib/labs/date/index.d.mts +4 -0
  79. package/lib/locale/de.mjs +20 -20
  80. package/lib/locale/de.mjs.map +1 -1
  81. package/lib/locale/nl.mjs +22 -22
  82. package/lib/locale/nl.mjs.map +1 -1
  83. package/lib/util/helpers.mjs +4 -0
  84. package/lib/util/helpers.mjs.map +1 -1
  85. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.3.20
2
+ * Vuetify v3.3.22
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -237,6 +237,10 @@
237
237
  const onRE = /^on[^a-z]/;
238
238
  const isOn = key => onRE.test(key);
239
239
  const bubblingEvents = ['onAfterscriptexecute', 'onAnimationcancel', 'onAnimationend', 'onAnimationiteration', 'onAnimationstart', 'onAuxclick', 'onBeforeinput', 'onBeforescriptexecute', 'onChange', 'onClick', 'onCompositionend', 'onCompositionstart', 'onCompositionupdate', 'onContextmenu', 'onCopy', 'onCut', 'onDblclick', 'onFocusin', 'onFocusout', 'onFullscreenchange', 'onFullscreenerror', 'onGesturechange', 'onGestureend', 'onGesturestart', 'onGotpointercapture', 'onInput', 'onKeydown', 'onKeypress', 'onKeyup', 'onLostpointercapture', 'onMousedown', 'onMousemove', 'onMouseout', 'onMouseover', 'onMouseup', 'onMousewheel', 'onPaste', 'onPointercancel', 'onPointerdown', 'onPointerenter', 'onPointerleave', 'onPointermove', 'onPointerout', 'onPointerover', 'onPointerup', 'onReset', 'onSelect', 'onSubmit', 'onTouchcancel', 'onTouchend', 'onTouchmove', 'onTouchstart', 'onTransitioncancel', 'onTransitionend', 'onTransitionrun', 'onTransitionstart', 'onWheel'];
240
+ const compositionIgnoreKeys = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft', 'Enter', 'Escape', 'Tab', ' '];
241
+ function isComposingIgnoreKey(e) {
242
+ return e.isComposing && compositionIgnoreKeys.includes(e.key);
243
+ }
240
244
 
241
245
  /**
242
246
  * Filter attributes that should be applied to
@@ -267,6 +271,10 @@
267
271
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
268
272
  return str + char.repeat(Math.max(0, length - str.length));
269
273
  }
274
+ function padStart(str, length) {
275
+ let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
276
+ return char.repeat(Math.max(0, length - str.length)) + str;
277
+ }
270
278
  function chunk(str) {
271
279
  let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
272
280
  const chunked = [];
@@ -13130,6 +13138,7 @@
13130
13138
  x,
13131
13139
  y
13132
13140
  } = val;
13141
+ _dotPosition.value = val;
13133
13142
  emit('update:color', {
13134
13143
  h: props.color?.h ?? 0,
13135
13144
  s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
@@ -14924,7 +14933,7 @@
14924
14933
  return _search.value;
14925
14934
  },
14926
14935
  set: val => {
14927
- _search.value = val;
14936
+ _search.value = val ?? '';
14928
14937
  if (!props.multiple) {
14929
14938
  model.value = [transformItem$3(props, val)];
14930
14939
  }
@@ -14997,7 +15006,7 @@
14997
15006
  menu.value = !menu.value;
14998
15007
  }
14999
15008
  function onKeydown(e) {
15000
- if (props.readonly || form?.isReadonly.value) return;
15009
+ if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
15001
15010
  const selectionStart = vTextFieldRef.value.selectionStart;
15002
15011
  const length = model.value.length;
15003
15012
  if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
@@ -20529,10 +20538,18 @@
20529
20538
  itemsPerPage,
20530
20539
  setItemsPerPage
20531
20540
  } = usePagination();
20532
- const itemsPerPageOptions = vue.computed(() => props.itemsPerPageOptions.map(option => ({
20533
- ...option,
20534
- title: t(option.title)
20535
- })));
20541
+ const itemsPerPageOptions = vue.computed(() => props.itemsPerPageOptions.map(option => {
20542
+ if (typeof option === 'number') {
20543
+ return {
20544
+ value: option,
20545
+ title: option === -1 ? t('$vuetify.dataFooter.itemsPerPageAll') : String(option)
20546
+ };
20547
+ }
20548
+ return {
20549
+ ...option,
20550
+ title: t(option.title)
20551
+ };
20552
+ }));
20536
20553
  return () => vue.createVNode("div", {
20537
20554
  "class": "v-data-table-footer"
20538
20555
  }, [slots.prepend?.(), vue.createVNode("div", {
@@ -22163,6 +22180,17 @@
22163
22180
  }
22164
22181
  return new Intl.DateTimeFormat(locale, options).format(date);
22165
22182
  }
22183
+ function toISO(adapter, value) {
22184
+ const date = adapter.toJsDate(value);
22185
+ const year = date.getFullYear();
22186
+ const month = padStart(String(date.getMonth() + 1), 2, '0');
22187
+ const day = padStart(String(date.getDate()), 2, '0');
22188
+ return `${year}-${month}-${day}`;
22189
+ }
22190
+ function parseISO(value) {
22191
+ const [year, month, day] = value.split('-').map(Number);
22192
+ return new Date(year, month - 1, day);
22193
+ }
22166
22194
  function addDays(date, amount) {
22167
22195
  const d = new Date(date);
22168
22196
  d.setDate(d.getDate() + amount);
@@ -22237,6 +22265,12 @@
22237
22265
  toJsDate(date) {
22238
22266
  return date;
22239
22267
  }
22268
+ toISO(date) {
22269
+ return toISO(this, date);
22270
+ }
22271
+ parseISO(date) {
22272
+ return parseISO(date);
22273
+ }
22240
22274
  addDays(date, amount) {
22241
22275
  return addDays(date, amount);
22242
22276
  }
@@ -22517,6 +22551,7 @@
22517
22551
  }
22518
22552
 
22519
22553
  const makeVDatePickerMonthProps = propsFactory({
22554
+ allowedDates: [Array, Function],
22520
22555
  color: String,
22521
22556
  showAdjacentMonths: Boolean,
22522
22557
  hideWeekdays: Boolean,
@@ -22603,7 +22638,6 @@
22603
22638
  const startDate = validDates[0];
22604
22639
  const endDate = validDates[1];
22605
22640
  return days.map((date, index) => {
22606
- const isDisabled = !!(props.min && adapter.isAfter(props.min, date) || props.max && adapter.isAfter(date, props.max));
22607
22641
  const isStart = startDate && adapter.isSameDay(date, startDate);
22608
22642
  const isEnd = endDate && adapter.isSameDay(date, endDate);
22609
22643
  const isAdjacent = !adapter.isSameMonth(date, month.value);
@@ -22614,7 +22648,7 @@
22614
22648
  formatted: adapter.format(date, 'keyboardDate'),
22615
22649
  year: adapter.getYear(date),
22616
22650
  month: adapter.getMonth(date),
22617
- isDisabled,
22651
+ isDisabled: isDisabled(date),
22618
22652
  isWeekStart: index % 7 === 0,
22619
22653
  isWeekEnd: index % 7 === 6,
22620
22654
  isSelected: isStart || isEnd,
@@ -22641,6 +22675,18 @@
22641
22675
  backgroundColorClasses,
22642
22676
  backgroundColorStyles
22643
22677
  } = useBackgroundColor(props, 'color');
22678
+ function isDisabled(value) {
22679
+ const date = adapter.date(value);
22680
+ if (props.min && adapter.isAfter(props.min, date)) return true;
22681
+ if (props.max && adapter.isAfter(date, props.max)) return true;
22682
+ if (Array.isArray(props.allowedDates)) {
22683
+ return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));
22684
+ }
22685
+ if (typeof props.allowedDates === 'function') {
22686
+ return !props.allowedDates(date);
22687
+ }
22688
+ return false;
22689
+ }
22644
22690
  function selectDate(date) {
22645
22691
  let newModel = props.modelValue.slice();
22646
22692
  if (props.multiple) {
@@ -23545,7 +23591,7 @@
23545
23591
  placeholder: String,
23546
23592
  type: {
23547
23593
  type: String,
23548
- default: 'text'
23594
+ default: 'number'
23549
23595
  },
23550
23596
  ...makeDimensionProps(),
23551
23597
  ...makeFocusProps(),
@@ -23591,7 +23637,7 @@
23591
23637
  model.value = array;
23592
23638
  let target = null;
23593
23639
  if (focusIndex.value > model.value.length) {
23594
- target = model.value.length + 1;
23640
+ target = model.value.length;
23595
23641
  } else if (focusIndex.value + 1 !== Number(props.length)) {
23596
23642
  target = 'next';
23597
23643
  } else {
@@ -23616,7 +23662,7 @@
23616
23662
  target = 'prev';
23617
23663
  } else {
23618
23664
  requestAnimationFrame(() => {
23619
- inputRef.value[index].select();
23665
+ inputRef.value[index]?.select();
23620
23666
  });
23621
23667
  }
23622
23668
  }
@@ -23645,6 +23691,9 @@
23645
23691
  }
23646
23692
  provideDefaults({
23647
23693
  VField: {
23694
+ color: vue.computed(() => props.color),
23695
+ bgColor: vue.computed(() => props.color),
23696
+ baseColor: vue.computed(() => props.baseColor),
23648
23697
  disabled: vue.computed(() => props.disabled),
23649
23698
  error: vue.computed(() => props.error),
23650
23699
  variant: vue.computed(() => props.variant)
@@ -23660,7 +23709,7 @@
23660
23709
  vue.watch(focusIndex, val => {
23661
23710
  if (val < 0) return;
23662
23711
  IN_BROWSER && window.requestAnimationFrame(() => {
23663
- inputRef.value[val].select();
23712
+ inputRef.value[val]?.select();
23664
23713
  });
23665
23714
  });
23666
23715
  useRender(() => {
@@ -23906,20 +23955,40 @@
23906
23955
  emit('click:next');
23907
23956
  }
23908
23957
  useRender(() => {
23958
+ const prevSlotProps = {
23959
+ onClick: onClickPrev
23960
+ };
23961
+ const nextSlotProps = {
23962
+ onClick: onClickNext
23963
+ };
23909
23964
  return vue.createVNode("div", {
23910
23965
  "class": "v-stepper-actions"
23911
- }, [vue.createVNode(VBtn, {
23912
- "disabled": ['prev', true].includes(props.disabled),
23913
- "text": t(props.prevText),
23914
- "variant": "text",
23915
- "onClick": onClickPrev
23916
- }, null), vue.createVNode(VBtn, {
23917
- "disabled": ['next', true].includes(props.disabled),
23918
- "color": props.color,
23919
- "text": t(props.nextText),
23920
- "variant": "tonal",
23921
- "onClick": onClickNext
23922
- }, null)]);
23966
+ }, [vue.createVNode(VDefaultsProvider, {
23967
+ "defaults": {
23968
+ VBtn: {
23969
+ disabled: ['prev', true].includes(props.disabled),
23970
+ text: t(props.prevText),
23971
+ variant: 'text'
23972
+ }
23973
+ }
23974
+ }, {
23975
+ default: () => [slots.prev?.({
23976
+ props: prevSlotProps
23977
+ }) ?? vue.createVNode(VBtn, prevSlotProps, null)]
23978
+ }), vue.createVNode(VDefaultsProvider, {
23979
+ "defaults": {
23980
+ VBtn: {
23981
+ color: props.color,
23982
+ disabled: ['next', true].includes(props.disabled),
23983
+ text: t(props.nextText),
23984
+ variant: 'tonal'
23985
+ }
23986
+ }
23987
+ }, {
23988
+ default: () => [slots.next?.({
23989
+ props: nextSlotProps
23990
+ }) ?? vue.createVNode(VBtn, nextSlotProps, null)]
23991
+ })]);
23923
23992
  });
23924
23993
  return {};
23925
23994
  }
@@ -24138,7 +24207,6 @@
24138
24207
  let {
24139
24208
  slots
24140
24209
  } = _ref;
24141
- // TODO: fix typing
24142
24210
  const {
24143
24211
  items: _items,
24144
24212
  next,
@@ -24224,7 +24292,7 @@
24224
24292
  "key": "stepper-actions",
24225
24293
  "onClick:prev": prev,
24226
24294
  "onClick:next": next
24227
- }, null))]
24295
+ }, slots))]
24228
24296
  });
24229
24297
  });
24230
24298
  return {
@@ -24612,7 +24680,7 @@
24612
24680
  date
24613
24681
  };
24614
24682
  }
24615
- const version$1 = "3.3.20";
24683
+ const version$1 = "3.3.22";
24616
24684
  createVuetify$1.version = version$1;
24617
24685
 
24618
24686
  // Vue's inject() can only be used in setup
@@ -24626,7 +24694,7 @@
24626
24694
 
24627
24695
  /* eslint-disable local-rules/sort-imports */
24628
24696
 
24629
- const version = "3.3.20";
24697
+ const version = "3.3.22";
24630
24698
 
24631
24699
  /* eslint-disable local-rules/sort-imports */
24632
24700