@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
@@ -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
  */
@@ -17823,7 +17823,20 @@
17823
17823
  vue.watch(locale.current, value => {
17824
17824
  instance.locale = options.locale[value] ?? value ?? instance.locale;
17825
17825
  });
17826
- return instance;
17826
+ return Object.assign(instance, {
17827
+ createDateRange(start, stop) {
17828
+ const diff = instance.getDiff(stop ?? start, start, 'days');
17829
+ const datesInRange = [start];
17830
+ for (let i = 1; i < diff; i++) {
17831
+ const nextDate = instance.addDays(start, i);
17832
+ datesInRange.push(nextDate);
17833
+ }
17834
+ if (stop) {
17835
+ datesInRange.push(instance.endOfDay(stop));
17836
+ }
17837
+ return datesInRange;
17838
+ }
17839
+ });
17827
17840
  }
17828
17841
  function useDate() {
17829
17842
  const options = vue.inject(DateOptionsSymbol);
@@ -22217,14 +22230,7 @@
22217
22230
  } else {
22218
22231
  rangeStop.value = adapter.endOfDay(_value);
22219
22232
  }
22220
- const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
22221
- const datesInRange = [rangeStart.value];
22222
- for (let i = 1; i < diff; i++) {
22223
- const nextDate = adapter.addDays(rangeStart.value, i);
22224
- datesInRange.push(nextDate);
22225
- }
22226
- datesInRange.push(rangeStop.value);
22227
- model.value = datesInRange;
22233
+ model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22228
22234
  } else {
22229
22235
  rangeStart.value = value;
22230
22236
  rangeStop.value = undefined;
@@ -22310,7 +22316,8 @@
22310
22316
  min: null,
22311
22317
  max: null,
22312
22318
  modelValue: Number,
22313
- year: Number
22319
+ year: Number,
22320
+ allowedMonths: [Array, Function]
22314
22321
  }, 'VDatePickerMonths');
22315
22322
  const VDatePickerMonths = genericComponent()({
22316
22323
  name: 'VDatePickerMonths',
@@ -22332,7 +22339,7 @@
22332
22339
  }
22333
22340
  return createRange(12).map(i => {
22334
22341
  const text = adapter.format(date, 'monthShort');
22335
- const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
22342
+ 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))));
22336
22343
  date = adapter.getNextMonth(date);
22337
22344
  return {
22338
22345
  isDisabled,
@@ -22344,6 +22351,15 @@
22344
22351
  vue.watchEffect(() => {
22345
22352
  model.value = model.value ?? adapter.getMonth(adapter.date());
22346
22353
  });
22354
+ function isMonthAllowed(month) {
22355
+ if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
22356
+ return props.allowedMonths.includes(month);
22357
+ }
22358
+ if (typeof props.allowedMonths === 'function') {
22359
+ return props.allowedMonths(month);
22360
+ }
22361
+ return true;
22362
+ }
22347
22363
  useRender(() => vue.createElementVNode("div", {
22348
22364
  "class": "v-date-picker-months",
22349
22365
  "style": vue.normalizeStyle({
@@ -22389,7 +22405,8 @@
22389
22405
  height: [String, Number],
22390
22406
  min: null,
22391
22407
  max: null,
22392
- modelValue: Number
22408
+ modelValue: Number,
22409
+ allowedYears: [Array, Function]
22393
22410
  }, 'VDatePickerYears');
22394
22411
  const VDatePickerYears = genericComponent()({
22395
22412
  name: 'VDatePickerYears',
@@ -22421,7 +22438,8 @@
22421
22438
  date = adapter.setYear(date, adapter.getYear(date) + 1);
22422
22439
  return {
22423
22440
  text,
22424
- value: i
22441
+ value: i,
22442
+ isDisabled: !isYearAllowed(i)
22425
22443
  };
22426
22444
  });
22427
22445
  });
@@ -22435,6 +22453,15 @@
22435
22453
  block: 'center'
22436
22454
  });
22437
22455
  });
22456
+ function isYearAllowed(year) {
22457
+ if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
22458
+ return props.allowedYears.includes(year);
22459
+ }
22460
+ if (typeof props.allowedYears === 'function') {
22461
+ return props.allowedYears(year);
22462
+ }
22463
+ return true;
22464
+ }
22438
22465
  useRender(() => vue.createElementVNode("div", {
22439
22466
  "class": "v-date-picker-years",
22440
22467
  "style": vue.normalizeStyle({
@@ -22449,6 +22476,7 @@
22449
22476
  color: model.value === year.value ? props.color : undefined,
22450
22477
  rounded: true,
22451
22478
  text: year.text,
22479
+ disabled: year.isDisabled,
22452
22480
  variant: model.value === year.value ? 'flat' : 'text',
22453
22481
  onClick: () => {
22454
22482
  if (model.value === year.value) {
@@ -22598,6 +22626,41 @@
22598
22626
  }
22599
22627
  return targets;
22600
22628
  });
22629
+ function isAllowedInRange(start, end) {
22630
+ const allowedDates = props.allowedDates;
22631
+ if (typeof allowedDates !== 'function') return true;
22632
+ const days = adapter.getDiff(end, start, 'days');
22633
+ for (let i = 0; i < days; i++) {
22634
+ if (allowedDates(adapter.addDays(start, i))) return true;
22635
+ }
22636
+ return false;
22637
+ }
22638
+ function allowedYears(year) {
22639
+ if (typeof props.allowedDates === 'function') {
22640
+ const startOfYear = adapter.parseISO(`${year}-01-01`);
22641
+ return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
22642
+ }
22643
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22644
+ for (const date of props.allowedDates) {
22645
+ if (adapter.getYear(adapter.date(date)) === year) return true;
22646
+ }
22647
+ return false;
22648
+ }
22649
+ return true;
22650
+ }
22651
+ function allowedMonths(month) {
22652
+ if (typeof props.allowedDates === 'function') {
22653
+ const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
22654
+ return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
22655
+ }
22656
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22657
+ for (const date of props.allowedDates) {
22658
+ if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
22659
+ }
22660
+ return false;
22661
+ }
22662
+ return true;
22663
+ }
22601
22664
 
22602
22665
  // function onClickAppend () {
22603
22666
  // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
@@ -22713,14 +22776,16 @@
22713
22776
  "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
22714
22777
  "min": minDate.value,
22715
22778
  "max": maxDate.value,
22716
- "year": year.value
22779
+ "year": year.value,
22780
+ "allowedMonths": allowedMonths
22717
22781
  }), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
22718
22782
  "key": "date-picker-years"
22719
22783
  }, datePickerYearsProps, {
22720
22784
  "modelValue": year.value,
22721
22785
  "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
22722
22786
  "min": minDate.value,
22723
- "max": maxDate.value
22787
+ "max": maxDate.value,
22788
+ "allowedYears": allowedYears
22724
22789
  }), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
22725
22790
  "key": "date-picker-month"
22726
22791
  }, datePickerMonthProps, {
@@ -29553,18 +29618,14 @@
29553
29618
  const parts = value.trim().split(/\D+-\D+|[^\d\-/.]+/);
29554
29619
  if (parts.every(isValid)) {
29555
29620
  if (props.multiple === 'range') {
29556
- model.value = getRange(parts);
29621
+ const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
29622
+ model.value = adapter.createDateRange(start, stop);
29557
29623
  } else {
29558
29624
  model.value = parts.map(parseDate);
29559
29625
  }
29560
29626
  }
29561
29627
  }
29562
29628
  }
29563
- function getRange(inputDates) {
29564
- const [start, stop] = inputDates.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
29565
- const diff = adapter.getDiff(stop ?? start, start, 'days');
29566
- return [start, ...createRange(diff, 1).map(i => adapter.addDays(start, i))];
29567
- }
29568
29629
  useRender(() => {
29569
29630
  const confirmEditProps = VConfirmEdit.filterProps(props);
29570
29631
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
@@ -32016,7 +32077,7 @@
32016
32077
  };
32017
32078
  });
32018
32079
  }
32019
- const version$1 = "3.8.7-master.2025-05-27";
32080
+ const version$1 = "3.8.7-master.2025-05-31";
32020
32081
  createVuetify$1.version = version$1;
32021
32082
 
32022
32083
  // Vue's inject() can only be used in setup
@@ -32314,7 +32375,7 @@
32314
32375
 
32315
32376
  /* eslint-disable local-rules/sort-imports */
32316
32377
 
32317
- const version = "3.8.7-master.2025-05-27";
32378
+ const version = "3.8.7-master.2025-05-31";
32318
32379
 
32319
32380
  /* eslint-disable local-rules/sort-imports */
32320
32381