@vuetify/nightly 3.8.7-master.2025-05-27 → 3.8.7-master.2025-05-31

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 (47) hide show
  1. package/CHANGELOG.md +13 -3
  2. package/dist/json/attributes.json +2816 -2792
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +156 -156
  5. package/dist/json/tags.json +6 -0
  6. package/dist/json/web-types.json +5254 -5200
  7. package/dist/vuetify-labs.cjs +85 -24
  8. package/dist/vuetify-labs.css +3367 -3367
  9. package/dist/vuetify-labs.d.ts +89 -55
  10. package/dist/vuetify-labs.esm.js +85 -24
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +85 -24
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +83 -18
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3390 -3390
  17. package/dist/vuetify.d.ts +79 -55
  18. package/dist/vuetify.esm.js +83 -18
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +83 -18
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +25 -16
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDatePicker/VDatePicker.d.ts +20 -0
  26. package/lib/components/VDatePicker/VDatePicker.js +39 -2
  27. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  28. package/lib/components/VDatePicker/VDatePickerMonth.js +1 -8
  29. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  30. package/lib/components/VDatePicker/VDatePickerMonths.d.ts +10 -0
  31. package/lib/components/VDatePicker/VDatePickerMonths.js +12 -2
  32. package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
  33. package/lib/components/VDatePicker/VDatePickerYears.d.ts +10 -0
  34. package/lib/components/VDatePicker/VDatePickerYears.js +14 -2
  35. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  36. package/lib/composables/date/date.d.ts +4 -0
  37. package/lib/composables/date/date.js +14 -1
  38. package/lib/composables/date/date.js.map +1 -1
  39. package/lib/entry-bundler.d.ts +3 -0
  40. package/lib/entry-bundler.js +1 -1
  41. package/lib/framework.d.ts +59 -55
  42. package/lib/framework.js +1 -1
  43. package/lib/labs/VDateInput/VDateInput.d.ts +20 -0
  44. package/lib/labs/VDateInput/VDateInput.js +3 -7
  45. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  46. package/lib/labs/entry-bundler.d.ts +3 -0
  47. package/package.json +1 -1
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.7-master.2025-05-27
2
+ * Vuetify v3.8.7-master.2025-05-31
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -18101,7 +18101,20 @@
18101
18101
  vue.watch(locale.current, value => {
18102
18102
  instance.locale = options.locale[value] ?? value ?? instance.locale;
18103
18103
  });
18104
- return instance;
18104
+ return Object.assign(instance, {
18105
+ createDateRange(start, stop) {
18106
+ const diff = instance.getDiff(stop ?? start, start, 'days');
18107
+ const datesInRange = [start];
18108
+ for (let i = 1; i < diff; i++) {
18109
+ const nextDate = instance.addDays(start, i);
18110
+ datesInRange.push(nextDate);
18111
+ }
18112
+ if (stop) {
18113
+ datesInRange.push(instance.endOfDay(stop));
18114
+ }
18115
+ return datesInRange;
18116
+ }
18117
+ });
18105
18118
  }
18106
18119
  function useDate() {
18107
18120
  const options = vue.inject(DateOptionsSymbol);
@@ -22495,14 +22508,7 @@
22495
22508
  } else {
22496
22509
  rangeStop.value = adapter.endOfDay(_value);
22497
22510
  }
22498
- const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
22499
- const datesInRange = [rangeStart.value];
22500
- for (let i = 1; i < diff; i++) {
22501
- const nextDate = adapter.addDays(rangeStart.value, i);
22502
- datesInRange.push(nextDate);
22503
- }
22504
- datesInRange.push(rangeStop.value);
22505
- model.value = datesInRange;
22511
+ model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22506
22512
  } else {
22507
22513
  rangeStart.value = value;
22508
22514
  rangeStop.value = undefined;
@@ -22588,7 +22594,8 @@
22588
22594
  min: null,
22589
22595
  max: null,
22590
22596
  modelValue: Number,
22591
- year: Number
22597
+ year: Number,
22598
+ allowedMonths: [Array, Function]
22592
22599
  }, 'VDatePickerMonths');
22593
22600
  const VDatePickerMonths = genericComponent()({
22594
22601
  name: 'VDatePickerMonths',
@@ -22610,7 +22617,7 @@
22610
22617
  }
22611
22618
  return createRange(12).map(i => {
22612
22619
  const text = adapter.format(date, 'monthShort');
22613
- const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
22620
+ const isDisabled = !!(!isMonthAllowed(i) || props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
22614
22621
  date = adapter.getNextMonth(date);
22615
22622
  return {
22616
22623
  isDisabled,
@@ -22622,6 +22629,15 @@
22622
22629
  vue.watchEffect(() => {
22623
22630
  model.value = model.value ?? adapter.getMonth(adapter.date());
22624
22631
  });
22632
+ function isMonthAllowed(month) {
22633
+ if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
22634
+ return props.allowedMonths.includes(month);
22635
+ }
22636
+ if (typeof props.allowedMonths === 'function') {
22637
+ return props.allowedMonths(month);
22638
+ }
22639
+ return true;
22640
+ }
22625
22641
  useRender(() => vue.createElementVNode("div", {
22626
22642
  "class": "v-date-picker-months",
22627
22643
  "style": vue.normalizeStyle({
@@ -22667,7 +22683,8 @@
22667
22683
  height: [String, Number],
22668
22684
  min: null,
22669
22685
  max: null,
22670
- modelValue: Number
22686
+ modelValue: Number,
22687
+ allowedYears: [Array, Function]
22671
22688
  }, 'VDatePickerYears');
22672
22689
  const VDatePickerYears = genericComponent()({
22673
22690
  name: 'VDatePickerYears',
@@ -22699,7 +22716,8 @@
22699
22716
  date = adapter.setYear(date, adapter.getYear(date) + 1);
22700
22717
  return {
22701
22718
  text,
22702
- value: i
22719
+ value: i,
22720
+ isDisabled: !isYearAllowed(i)
22703
22721
  };
22704
22722
  });
22705
22723
  });
@@ -22713,6 +22731,15 @@
22713
22731
  block: 'center'
22714
22732
  });
22715
22733
  });
22734
+ function isYearAllowed(year) {
22735
+ if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
22736
+ return props.allowedYears.includes(year);
22737
+ }
22738
+ if (typeof props.allowedYears === 'function') {
22739
+ return props.allowedYears(year);
22740
+ }
22741
+ return true;
22742
+ }
22716
22743
  useRender(() => vue.createElementVNode("div", {
22717
22744
  "class": "v-date-picker-years",
22718
22745
  "style": vue.normalizeStyle({
@@ -22727,6 +22754,7 @@
22727
22754
  color: model.value === year.value ? props.color : undefined,
22728
22755
  rounded: true,
22729
22756
  text: year.text,
22757
+ disabled: year.isDisabled,
22730
22758
  variant: model.value === year.value ? 'flat' : 'text',
22731
22759
  onClick: () => {
22732
22760
  if (model.value === year.value) {
@@ -22876,6 +22904,41 @@
22876
22904
  }
22877
22905
  return targets;
22878
22906
  });
22907
+ function isAllowedInRange(start, end) {
22908
+ const allowedDates = props.allowedDates;
22909
+ if (typeof allowedDates !== 'function') return true;
22910
+ const days = adapter.getDiff(end, start, 'days');
22911
+ for (let i = 0; i < days; i++) {
22912
+ if (allowedDates(adapter.addDays(start, i))) return true;
22913
+ }
22914
+ return false;
22915
+ }
22916
+ function allowedYears(year) {
22917
+ if (typeof props.allowedDates === 'function') {
22918
+ const startOfYear = adapter.parseISO(`${year}-01-01`);
22919
+ return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
22920
+ }
22921
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22922
+ for (const date of props.allowedDates) {
22923
+ if (adapter.getYear(adapter.date(date)) === year) return true;
22924
+ }
22925
+ return false;
22926
+ }
22927
+ return true;
22928
+ }
22929
+ function allowedMonths(month) {
22930
+ if (typeof props.allowedDates === 'function') {
22931
+ const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
22932
+ return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
22933
+ }
22934
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22935
+ for (const date of props.allowedDates) {
22936
+ if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
22937
+ }
22938
+ return false;
22939
+ }
22940
+ return true;
22941
+ }
22879
22942
 
22880
22943
  // function onClickAppend () {
22881
22944
  // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
@@ -22991,14 +23054,16 @@
22991
23054
  "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
22992
23055
  "min": minDate.value,
22993
23056
  "max": maxDate.value,
22994
- "year": year.value
23057
+ "year": year.value,
23058
+ "allowedMonths": allowedMonths
22995
23059
  }), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
22996
23060
  "key": "date-picker-years"
22997
23061
  }, datePickerYearsProps, {
22998
23062
  "modelValue": year.value,
22999
23063
  "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
23000
23064
  "min": minDate.value,
23001
- "max": maxDate.value
23065
+ "max": maxDate.value,
23066
+ "allowedYears": allowedYears
23002
23067
  }), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
23003
23068
  "key": "date-picker-month"
23004
23069
  }, datePickerMonthProps, {
@@ -29321,7 +29386,7 @@
29321
29386
  };
29322
29387
  });
29323
29388
  }
29324
- const version$1 = "3.8.7-master.2025-05-27";
29389
+ const version$1 = "3.8.7-master.2025-05-31";
29325
29390
  createVuetify$1.version = version$1;
29326
29391
 
29327
29392
  // Vue's inject() can only be used in setup
@@ -29346,7 +29411,7 @@
29346
29411
  ...options
29347
29412
  });
29348
29413
  };
29349
- const version = "3.8.7-master.2025-05-27";
29414
+ const version = "3.8.7-master.2025-05-31";
29350
29415
  createVuetify.version = version;
29351
29416
 
29352
29417
  exports.blueprints = index;