vuetify 3.4.7 → 3.4.8

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 (39) hide show
  1. package/dist/json/attributes.json +48 -40
  2. package/dist/json/importMap.json +102 -102
  3. package/dist/json/tags.json +2 -0
  4. package/dist/json/web-types.json +77 -59
  5. package/dist/vuetify-labs.css +2792 -2789
  6. package/dist/vuetify-labs.d.ts +42 -30
  7. package/dist/vuetify-labs.esm.js +131 -101
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +131 -101
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1022 -1019
  12. package/dist/vuetify.d.ts +73 -61
  13. package/dist/vuetify.esm.js +131 -101
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +131 -101
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +126 -124
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VDataTable/VDataTableFooter.mjs +1 -1
  21. package/lib/components/VDataTable/VDataTableFooter.mjs.map +1 -1
  22. package/lib/components/VDatePicker/VDatePickerMonth.mjs +11 -98
  23. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  24. package/lib/components/VDatePicker/index.d.mts +42 -30
  25. package/lib/components/VOtpInput/VOtpInput.css +3 -0
  26. package/lib/components/VOtpInput/VOtpInput.mjs +1 -0
  27. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  28. package/lib/components/VOtpInput/VOtpInput.sass +3 -0
  29. package/lib/components/VOverlay/VOverlay.mjs +11 -6
  30. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  31. package/lib/components/index.d.mts +42 -30
  32. package/lib/composables/calendar.mjs +113 -0
  33. package/lib/composables/calendar.mjs.map +1 -0
  34. package/lib/entry-bundler.mjs +1 -1
  35. package/lib/framework.mjs +1 -1
  36. package/lib/index.d.mts +31 -31
  37. package/lib/locale/cs.mjs +19 -19
  38. package/lib/locale/cs.mjs.map +1 -1
  39. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.4.7
2
+ * Vuetify v3.4.8
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -9829,7 +9829,7 @@
9829
9829
  } = useRtl();
9830
9830
  const {
9831
9831
  hasContent,
9832
- onAfterLeave
9832
+ onAfterLeave: _onAfterLeave
9833
9833
  } = useLazy(props, isActive);
9834
9834
  const scrimColor = useBackgroundColor(vue.computed(() => {
9835
9835
  return typeof props.scrim === 'string' ? props.scrim : null;
@@ -9896,6 +9896,10 @@
9896
9896
  }, {
9897
9897
  immediate: true
9898
9898
  });
9899
+ vue.onBeforeUnmount(() => {
9900
+ if (!IN_BROWSER) return;
9901
+ window.removeEventListener('keydown', onKeydown);
9902
+ });
9899
9903
  function onKeydown(e) {
9900
9904
  if (e.key === 'Escape' && globalTop.value) {
9901
9905
  if (!props.persistent) {
@@ -9941,6 +9945,10 @@
9941
9945
  easing: standardEasing
9942
9946
  });
9943
9947
  }
9948
+ function onAfterLeave() {
9949
+ _onAfterLeave();
9950
+ emit('afterLeave');
9951
+ }
9944
9952
  useRender(() => vue.createVNode(vue.Fragment, null, [slots.activator?.({
9945
9953
  isActive: isActive.value,
9946
9954
  props: vue.mergeProps({
@@ -9969,10 +9977,7 @@
9969
9977
  "persisted": true,
9970
9978
  "transition": props.transition,
9971
9979
  "target": target.value,
9972
- "onAfterLeave": () => {
9973
- onAfterLeave();
9974
- emit('afterLeave');
9975
- }
9980
+ "onAfterLeave": onAfterLeave
9976
9981
  }, {
9977
9982
  default: () => [vue.withDirectives(vue.createVNode("div", vue.mergeProps({
9978
9983
  "ref": contentEl,
@@ -17750,7 +17755,7 @@
17750
17755
  "last-aria-label": props.lastPageLabel,
17751
17756
  "length": pageCount.value,
17752
17757
  "next-aria-label": props.nextPageLabel,
17753
- "prev-aria-label": props.prevPageLabel,
17758
+ "previous-aria-label": props.prevPageLabel,
17754
17759
  "rounded": true,
17755
17760
  "show-first-last-page": true,
17756
17761
  "total-visible": props.showCurrentPage ? 1 : 0,
@@ -19617,21 +19622,125 @@
19617
19622
  }
19618
19623
  });
19619
19624
 
19625
+ // Composables
19626
+
19620
19627
  // Types
19621
19628
 
19622
- const makeVDatePickerMonthProps = propsFactory({
19629
+ // Types
19630
+
19631
+ // Composables
19632
+ const makeCalendarProps = propsFactory({
19623
19633
  allowedDates: [Array, Function],
19624
19634
  disabled: Boolean,
19625
- color: String,
19635
+ displayValue: null,
19636
+ modelValue: Array,
19626
19637
  month: [Number, String],
19627
- hideWeekdays: Boolean,
19628
19638
  max: null,
19629
19639
  min: null,
19630
- modelValue: Array,
19631
- multiple: Boolean,
19632
19640
  showAdjacentMonths: Boolean,
19633
- showWeek: Boolean,
19634
19641
  year: [Number, String]
19642
+ }, 'calendar');
19643
+ function useCalendar(props) {
19644
+ const adapter = useDate();
19645
+ const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));
19646
+ const displayValue = vue.computed(() => {
19647
+ if (props.displayValue) return adapter.date(props.displayValue);
19648
+ if (model.value.length > 0) return adapter.date(model.value[0]);
19649
+ if (props.min) return adapter.date(props.min);
19650
+ if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0]);
19651
+ return adapter.date();
19652
+ });
19653
+ const year = useProxiedModel(props, 'year', undefined, v => {
19654
+ const value = v != null ? Number(v) : adapter.getYear(displayValue.value);
19655
+ return adapter.startOfYear(adapter.setYear(adapter.date(), value));
19656
+ }, v => adapter.getYear(v));
19657
+ const month = useProxiedModel(props, 'month', undefined, v => {
19658
+ const value = v != null ? Number(v) : adapter.getMonth(displayValue.value);
19659
+ const date = adapter.setYear(adapter.date(), adapter.getYear(year.value));
19660
+ return adapter.setMonth(date, value);
19661
+ }, v => adapter.getMonth(v));
19662
+ const weeksInMonth = vue.computed(() => {
19663
+ const weeks = adapter.getWeekArray(month.value);
19664
+ const days = weeks.flat();
19665
+
19666
+ // Make sure there's always 6 weeks in month (6 * 7 days)
19667
+ // But only do it if we're not hiding adjacent months?
19668
+ const daysInMonth = 6 * 7;
19669
+ if (days.length < daysInMonth) {
19670
+ const lastDay = days[days.length - 1];
19671
+ let week = [];
19672
+ for (let day = 1; day <= daysInMonth - days.length; day++) {
19673
+ week.push(adapter.addDays(lastDay, day));
19674
+ if (day % 7 === 0) {
19675
+ weeks.push(week);
19676
+ week = [];
19677
+ }
19678
+ }
19679
+ }
19680
+ return weeks;
19681
+ });
19682
+ const daysInMonth = vue.computed(() => {
19683
+ const days = weeksInMonth.value.flat();
19684
+ const today = adapter.date();
19685
+ return days.map((date, index) => {
19686
+ const isoDate = adapter.toISO(date);
19687
+ const isAdjacent = !adapter.isSameMonth(date, month.value);
19688
+ const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
19689
+ const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));
19690
+ const isSame = adapter.isSameDay(date, month.value);
19691
+ return {
19692
+ date,
19693
+ isoDate,
19694
+ formatted: adapter.format(date, 'keyboardDate'),
19695
+ year: adapter.getYear(date),
19696
+ month: adapter.getMonth(date),
19697
+ isDisabled: isDisabled(date),
19698
+ isWeekStart: index % 7 === 0,
19699
+ isWeekEnd: index % 7 === 6,
19700
+ isToday: adapter.isSameDay(date, today),
19701
+ isAdjacent,
19702
+ isHidden: isAdjacent && !props.showAdjacentMonths,
19703
+ isStart,
19704
+ isSelected: model.value.some(value => adapter.isSameDay(date, value)),
19705
+ isEnd,
19706
+ isSame,
19707
+ localized: adapter.format(date, 'dayOfMonth')
19708
+ };
19709
+ });
19710
+ });
19711
+ const weekNumbers = vue.computed(() => {
19712
+ return weeksInMonth.value.map(week => {
19713
+ return week.length ? getWeek(adapter, week[0]) : null;
19714
+ });
19715
+ });
19716
+ function isDisabled(value) {
19717
+ if (props.disabled) return true;
19718
+ const date = adapter.date(value);
19719
+ if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true;
19720
+ if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true;
19721
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {
19722
+ return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));
19723
+ }
19724
+ if (typeof props.allowedDates === 'function') {
19725
+ return !props.allowedDates(date);
19726
+ }
19727
+ return false;
19728
+ }
19729
+ return {
19730
+ displayValue,
19731
+ daysInMonth,
19732
+ model,
19733
+ weeksInMonth,
19734
+ weekNumbers
19735
+ };
19736
+ }
19737
+
19738
+ const makeVDatePickerMonthProps = propsFactory({
19739
+ color: String,
19740
+ hideWeekdays: Boolean,
19741
+ multiple: Boolean,
19742
+ showWeek: Boolean,
19743
+ ...makeCalendarProps()
19635
19744
  }, 'VDatePickerMonth');
19636
19745
  const VDatePickerMonth = genericComponent()({
19637
19746
  name: 'VDatePickerMonth',
@@ -19647,87 +19756,12 @@
19647
19756
  slots
19648
19757
  } = _ref;
19649
19758
  const daysRef = vue.ref();
19759
+ const {
19760
+ daysInMonth,
19761
+ model,
19762
+ weekNumbers
19763
+ } = useCalendar(props); // TODO: fix typing
19650
19764
  const adapter = useDate();
19651
- // model comes in always as array
19652
- // leaves as array if multiple
19653
- const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));
19654
- const displayValue = vue.computed(() => {
19655
- if (model.value.length > 0) return adapter.date(model.value[0]);
19656
- if (props.min) return adapter.date(props.min);
19657
- if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0]);
19658
- return adapter.date();
19659
- });
19660
- const year = useProxiedModel(props, 'year', undefined, v => {
19661
- const value = v != null ? Number(v) : adapter.getYear(displayValue.value);
19662
- return adapter.startOfYear(adapter.setYear(adapter.date(), value));
19663
- }, v => adapter.getYear(v));
19664
- const month = useProxiedModel(props, 'month', undefined, v => {
19665
- const value = v != null ? Number(v) : adapter.getMonth(displayValue.value);
19666
- const date = adapter.setYear(adapter.date(), adapter.getYear(year.value));
19667
- return adapter.setMonth(date, value);
19668
- }, v => adapter.getMonth(v));
19669
- const weeksInMonth = vue.computed(() => {
19670
- const weeks = adapter.getWeekArray(month.value);
19671
- const days = weeks.flat();
19672
-
19673
- // Make sure there's always 6 weeks in month (6 * 7 days)
19674
- // But only do it if we're not hiding adjacent months?
19675
- const daysInMonth = 6 * 7;
19676
- if (days.length < daysInMonth) {
19677
- const lastDay = days[days.length - 1];
19678
- let week = [];
19679
- for (let day = 1; day <= daysInMonth - days.length; day++) {
19680
- week.push(adapter.addDays(lastDay, day));
19681
- if (day % 7 === 0) {
19682
- weeks.push(week);
19683
- week = [];
19684
- }
19685
- }
19686
- }
19687
- return weeks;
19688
- });
19689
- const daysInMonth = vue.computed(() => {
19690
- const days = weeksInMonth.value.flat();
19691
- const today = adapter.date();
19692
- return days.map((date, index) => {
19693
- const isoDate = adapter.toISO(date);
19694
- const isAdjacent = !adapter.isSameMonth(date, month.value);
19695
- return {
19696
- date,
19697
- isoDate,
19698
- formatted: adapter.format(date, 'keyboardDate'),
19699
- year: adapter.getYear(date),
19700
- month: adapter.getMonth(date),
19701
- isDisabled: isDisabled(date),
19702
- isWeekStart: index % 7 === 0,
19703
- isWeekEnd: index % 7 === 6,
19704
- isSelected: model.value.some(value => adapter.isSameDay(date, value)),
19705
- isToday: adapter.isSameDay(date, today),
19706
- isAdjacent,
19707
- isHidden: isAdjacent && !props.showAdjacentMonths,
19708
- isHovered: false,
19709
- localized: adapter.format(date, 'dayOfMonth')
19710
- };
19711
- });
19712
- });
19713
- const weeks = vue.computed(() => {
19714
- return weeksInMonth.value.map(week => {
19715
- return getWeek(adapter, week[0]);
19716
- });
19717
- });
19718
- function isDisabled(value) {
19719
- if (props.disabled) return true;
19720
- const date = adapter.date(value);
19721
- if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true;
19722
- if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true;
19723
- if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {
19724
- return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));
19725
- }
19726
- if (typeof props.allowedDates === 'function') {
19727
- return !props.allowedDates(date);
19728
- }
19729
- return false;
19730
- }
19731
19765
  function onClick(value) {
19732
19766
  if (props.multiple) {
19733
19767
  const index = model.value.findIndex(selection => adapter.isSameDay(selection, value));
@@ -19742,10 +19776,6 @@
19742
19776
  model.value = [value];
19743
19777
  }
19744
19778
  }
19745
- vue.watch(displayValue, val => {
19746
- month.value = val;
19747
- year.value = val;
19748
- });
19749
19779
  return () => vue.createVNode("div", {
19750
19780
  "class": "v-date-picker-month"
19751
19781
  }, [props.showWeek && vue.createVNode("div", {
@@ -19754,7 +19784,7 @@
19754
19784
  }, [!props.hideWeekdays && vue.createVNode("div", {
19755
19785
  "key": "hide-week-days",
19756
19786
  "class": "v-date-picker-month__day"
19757
- }, [vue.createTextVNode("\xA0")]), weeks.value.map(week => vue.createVNode("div", {
19787
+ }, [vue.createTextVNode("\xA0")]), weekNumbers.value.map(week => vue.createVNode("div", {
19758
19788
  "class": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']
19759
19789
  }, [week]))]), vue.createVNode("div", {
19760
19790
  "ref": daysRef,
@@ -19773,7 +19803,6 @@
19773
19803
  "class": ['v-date-picker-month__day', {
19774
19804
  'v-date-picker-month__day--adjacent': item.isAdjacent,
19775
19805
  'v-date-picker-month__day--hide-adjacent': item.isHidden,
19776
- 'v-date-picker-month__day--hovered': item.isHovered,
19777
19806
  'v-date-picker-month__day--selected': item.isSelected,
19778
19807
  'v-date-picker-month__day--week-end': item.isWeekEnd,
19779
19808
  'v-date-picker-month__day--week-start': item.isWeekStart
@@ -22054,6 +22083,7 @@
22054
22083
  "key": i
22055
22084
  }, {
22056
22085
  ...slots,
22086
+ loader: undefined,
22057
22087
  default: () => {
22058
22088
  return vue.createVNode("input", {
22059
22089
  "ref": val => inputRef.value[i] = val,
@@ -25204,7 +25234,7 @@
25204
25234
  date
25205
25235
  };
25206
25236
  }
25207
- const version$1 = "3.4.7";
25237
+ const version$1 = "3.4.8";
25208
25238
  createVuetify$1.version = version$1;
25209
25239
 
25210
25240
  // Vue's inject() can only be used in setup
@@ -25229,7 +25259,7 @@
25229
25259
  ...options
25230
25260
  });
25231
25261
  };
25232
- const version = "3.4.7";
25262
+ const version = "3.4.8";
25233
25263
  createVuetify.version = version;
25234
25264
 
25235
25265
  exports.components = components;