@mui/x-date-pickers 7.0.0-alpha.2 → 7.0.0-alpha.3

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 (180) hide show
  1. package/AdapterDateFns/AdapterDateFns.js +10 -14
  2. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +12 -16
  3. package/AdapterDayjs/AdapterDayjs.js +11 -8
  4. package/AdapterLuxon/AdapterLuxon.d.ts +1 -1
  5. package/AdapterLuxon/AdapterLuxon.js +29 -16
  6. package/AdapterMoment/AdapterMoment.d.ts +1 -1
  7. package/AdapterMoment/AdapterMoment.js +14 -14
  8. package/AdapterMomentHijri/AdapterMomentHijri.d.ts +0 -1
  9. package/AdapterMomentHijri/AdapterMomentHijri.js +1 -24
  10. package/AdapterMomentJalaali/AdapterMomentJalaali.d.ts +0 -2
  11. package/AdapterMomentJalaali/AdapterMomentJalaali.js +0 -26
  12. package/CHANGELOG.md +241 -0
  13. package/DateCalendar/DateCalendar.js +2 -2
  14. package/DateCalendar/DayCalendar.d.ts +3 -3
  15. package/DatePicker/DatePicker.js +2 -2
  16. package/DateTimePicker/DateTimePicker.js +2 -2
  17. package/DesktopDatePicker/DesktopDatePicker.js +2 -2
  18. package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  19. package/MobileDatePicker/MobileDatePicker.js +2 -2
  20. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  21. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
  22. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.d.ts +3 -2
  23. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +2 -1
  24. package/PickersShortcuts/PickersShortcuts.d.ts +1 -1
  25. package/PickersShortcuts/PickersShortcuts.js +1 -1
  26. package/README.md +0 -1
  27. package/StaticDatePicker/StaticDatePicker.js +2 -2
  28. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  29. package/index.js +1 -1
  30. package/internals/components/PickersTextField/Outline.d.ts +2 -0
  31. package/internals/components/PickersTextField/Outline.js +99 -0
  32. package/internals/components/PickersTextField/PickersInput.d.ts +4 -0
  33. package/internals/components/PickersTextField/PickersInput.js +264 -0
  34. package/internals/components/PickersTextField/PickersInput.types.d.ts +30 -0
  35. package/internals/components/PickersTextField/PickersInput.types.js +1 -0
  36. package/internals/components/PickersTextField/PickersTextField.d.ts +3 -0
  37. package/internals/components/PickersTextField/PickersTextField.js +120 -0
  38. package/internals/components/PickersTextField/PickersTextField.types.d.ts +18 -0
  39. package/internals/components/PickersTextField/PickersTextField.types.js +1 -0
  40. package/internals/components/PickersTextField/index.d.ts +1 -0
  41. package/internals/components/PickersTextField/index.js +1 -0
  42. package/internals/components/PickersTextField/pickersTextFieldClasses.d.ts +42 -0
  43. package/internals/components/PickersTextField/pickersTextFieldClasses.js +9 -0
  44. package/internals/hooks/useField/useField.utils.js +23 -10
  45. package/internals/hooks/usePicker/usePickerValue.js +2 -6
  46. package/internals/hooks/usePicker/usePickerValue.types.d.ts +2 -2
  47. package/legacy/AdapterDateFns/AdapterDateFns.js +10 -14
  48. package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +12 -16
  49. package/legacy/AdapterDayjs/AdapterDayjs.js +11 -8
  50. package/legacy/AdapterLuxon/AdapterLuxon.js +30 -17
  51. package/legacy/AdapterMoment/AdapterMoment.js +326 -320
  52. package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +4 -25
  53. package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +0 -30
  54. package/legacy/DateCalendar/DateCalendar.js +2 -2
  55. package/legacy/DatePicker/DatePicker.js +2 -2
  56. package/legacy/DateTimePicker/DateTimePicker.js +2 -2
  57. package/legacy/DesktopDatePicker/DesktopDatePicker.js +2 -2
  58. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  59. package/legacy/MobileDatePicker/MobileDatePicker.js +2 -2
  60. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  61. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
  62. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +2 -1
  63. package/legacy/PickersShortcuts/PickersShortcuts.js +2 -1
  64. package/legacy/StaticDatePicker/StaticDatePicker.js +2 -2
  65. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  66. package/legacy/index.js +1 -1
  67. package/legacy/internals/components/PickersTextField/Outline.js +100 -0
  68. package/legacy/internals/components/PickersTextField/PickersInput.js +273 -0
  69. package/legacy/internals/components/PickersTextField/PickersInput.types.js +1 -0
  70. package/legacy/internals/components/PickersTextField/PickersTextField.js +129 -0
  71. package/legacy/internals/components/PickersTextField/PickersTextField.types.js +1 -0
  72. package/legacy/internals/components/PickersTextField/index.js +1 -0
  73. package/legacy/internals/components/PickersTextField/pickersTextFieldClasses.js +9 -0
  74. package/legacy/internals/hooks/useField/useField.utils.js +23 -10
  75. package/legacy/internals/hooks/usePicker/usePickerValue.js +2 -6
  76. package/locales/beBY.d.ts +18 -5
  77. package/locales/caES.d.ts +18 -5
  78. package/locales/csCZ.d.ts +18 -5
  79. package/locales/daDK.d.ts +18 -5
  80. package/locales/deDE.d.ts +18 -5
  81. package/locales/elGR.d.ts +18 -5
  82. package/locales/enUS.d.ts +18 -5
  83. package/locales/esES.d.ts +18 -5
  84. package/locales/eu.d.ts +18 -5
  85. package/locales/faIR.d.ts +18 -5
  86. package/locales/fiFI.d.ts +18 -5
  87. package/locales/frFR.d.ts +18 -5
  88. package/locales/heIL.d.ts +18 -5
  89. package/locales/huHU.d.ts +18 -5
  90. package/locales/isIS.d.ts +18 -5
  91. package/locales/itIT.d.ts +18 -5
  92. package/locales/jaJP.d.ts +18 -5
  93. package/locales/koKR.d.ts +18 -5
  94. package/locales/kzKZ.d.ts +18 -5
  95. package/locales/mk.d.ts +18 -5
  96. package/locales/nbNO.d.ts +18 -5
  97. package/locales/nlNL.d.ts +18 -5
  98. package/locales/plPL.d.ts +18 -5
  99. package/locales/ptBR.d.ts +18 -5
  100. package/locales/roRO.d.ts +18 -5
  101. package/locales/ruRU.d.ts +18 -5
  102. package/locales/skSK.d.ts +18 -5
  103. package/locales/svSE.d.ts +18 -5
  104. package/locales/trTR.d.ts +18 -5
  105. package/locales/ukUA.d.ts +18 -5
  106. package/locales/urPK.d.ts +18 -5
  107. package/locales/utils/getPickersLocalization.d.ts +18 -5
  108. package/locales/utils/pickersLocaleTextApi.d.ts +18 -5
  109. package/locales/viVN.d.ts +18 -5
  110. package/locales/zhCN.d.ts +18 -5
  111. package/locales/zhHK.d.ts +18 -5
  112. package/modern/AdapterDateFns/AdapterDateFns.js +10 -14
  113. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +12 -16
  114. package/modern/AdapterDayjs/AdapterDayjs.js +11 -8
  115. package/modern/AdapterLuxon/AdapterLuxon.js +28 -16
  116. package/modern/AdapterMoment/AdapterMoment.js +14 -14
  117. package/modern/AdapterMomentHijri/AdapterMomentHijri.js +1 -24
  118. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +0 -26
  119. package/modern/DateCalendar/DateCalendar.js +2 -2
  120. package/modern/DatePicker/DatePicker.js +2 -2
  121. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  122. package/modern/DesktopDatePicker/DesktopDatePicker.js +2 -2
  123. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  124. package/modern/MobileDatePicker/MobileDatePicker.js +2 -2
  125. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  126. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
  127. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +2 -1
  128. package/modern/PickersShortcuts/PickersShortcuts.js +1 -1
  129. package/modern/StaticDatePicker/StaticDatePicker.js +2 -2
  130. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  131. package/modern/index.js +1 -1
  132. package/modern/internals/components/PickersTextField/Outline.js +99 -0
  133. package/modern/internals/components/PickersTextField/PickersInput.js +264 -0
  134. package/modern/internals/components/PickersTextField/PickersInput.types.js +1 -0
  135. package/modern/internals/components/PickersTextField/PickersTextField.js +119 -0
  136. package/modern/internals/components/PickersTextField/PickersTextField.types.js +1 -0
  137. package/modern/internals/components/PickersTextField/index.js +1 -0
  138. package/modern/internals/components/PickersTextField/pickersTextFieldClasses.js +9 -0
  139. package/modern/internals/hooks/useField/useField.utils.js +23 -10
  140. package/modern/internals/hooks/usePicker/usePickerValue.js +2 -6
  141. package/node/AdapterDateFns/AdapterDateFns.js +10 -14
  142. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +12 -16
  143. package/node/AdapterDayjs/AdapterDayjs.js +10 -7
  144. package/node/AdapterLuxon/AdapterLuxon.js +28 -16
  145. package/node/AdapterMoment/AdapterMoment.js +14 -14
  146. package/node/AdapterMomentHijri/AdapterMomentHijri.js +1 -24
  147. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +0 -26
  148. package/node/DateCalendar/DateCalendar.js +2 -2
  149. package/node/DatePicker/DatePicker.js +2 -2
  150. package/node/DateTimePicker/DateTimePicker.js +2 -2
  151. package/node/DesktopDatePicker/DesktopDatePicker.js +2 -2
  152. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  153. package/node/MobileDatePicker/MobileDatePicker.js +2 -2
  154. package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  155. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
  156. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +2 -1
  157. package/node/PickersShortcuts/PickersShortcuts.js +1 -1
  158. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  159. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  160. package/node/index.js +1 -1
  161. package/node/internals/components/PickersTextField/Outline.js +108 -0
  162. package/node/internals/components/PickersTextField/PickersInput.js +272 -0
  163. package/node/internals/components/PickersTextField/PickersInput.types.js +5 -0
  164. package/node/internals/components/PickersTextField/PickersTextField.js +127 -0
  165. package/node/internals/components/PickersTextField/PickersTextField.types.js +5 -0
  166. package/node/internals/components/PickersTextField/index.js +12 -0
  167. package/node/internals/components/PickersTextField/pickersTextFieldClasses.js +17 -0
  168. package/node/internals/hooks/useField/useField.utils.js +23 -10
  169. package/node/internals/hooks/usePicker/usePickerValue.js +2 -6
  170. package/package.json +2 -2
  171. package/internals/components/FakeTextField/FakeTextField.d.ts +0 -22
  172. package/internals/components/FakeTextField/FakeTextField.js +0 -44
  173. package/internals/components/FakeTextField/index.d.ts +0 -1
  174. package/internals/components/FakeTextField/index.js +0 -1
  175. package/legacy/internals/components/FakeTextField/FakeTextField.js +0 -49
  176. package/legacy/internals/components/FakeTextField/index.js +0 -1
  177. package/modern/internals/components/FakeTextField/FakeTextField.js +0 -44
  178. package/modern/internals/components/FakeTextField/index.js +0 -1
  179. package/node/internals/components/FakeTextField/FakeTextField.js +0 -52
  180. package/node/internals/components/FakeTextField/index.js +0 -12
@@ -381,10 +381,10 @@ export class AdapterDateFns {
381
381
  return isBefore(value, comparing);
382
382
  };
383
383
  this.isBeforeYear = (value, comparing) => {
384
- return isBefore(value, startOfYear(comparing));
384
+ return isBefore(value, this.startOfYear(comparing));
385
385
  };
386
386
  this.isBeforeDay = (value, comparing) => {
387
- return isBefore(value, startOfDay(comparing));
387
+ return isBefore(value, this.startOfDay(comparing));
388
388
  };
389
389
  this.isWithinRange = (value, [start, end]) => {
390
390
  return isWithinInterval(value, {
@@ -487,20 +487,16 @@ export class AdapterDateFns {
487
487
  return getDaysInMonth(value);
488
488
  };
489
489
  this.getWeekArray = value => {
490
- const start = startOfWeek(startOfMonth(value), {
491
- locale: this.locale
492
- });
493
- const end = endOfWeek(endOfMonth(value), {
494
- locale: this.locale
495
- });
490
+ const start = this.startOfWeek(this.startOfMonth(value));
491
+ const end = this.endOfWeek(this.endOfMonth(value));
496
492
  let count = 0;
497
493
  let current = start;
498
494
  const nestedWeeks = [];
499
- while (isBefore(current, end)) {
495
+ while (this.isBefore(current, end)) {
500
496
  const weekNumber = Math.floor(count / 7);
501
497
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
502
498
  nestedWeeks[weekNumber].push(current);
503
- current = addDays(current, 1);
499
+ current = this.addDays(current, 1);
504
500
  count += 1;
505
501
  }
506
502
  return nestedWeeks;
@@ -511,13 +507,13 @@ export class AdapterDateFns {
511
507
  });
512
508
  };
513
509
  this.getYearRange = ([start, end]) => {
514
- const startDate = startOfYear(start);
515
- const endDate = endOfYear(end);
510
+ const startDate = this.startOfYear(start);
511
+ const endDate = this.endOfYear(end);
516
512
  const years = [];
517
513
  let current = startDate;
518
- while (isBefore(current, endDate)) {
514
+ while (this.isBefore(current, endDate)) {
519
515
  years.push(current);
520
- current = addYears(current, 1);
516
+ current = this.addYears(current, 1);
521
517
  }
522
518
  return years;
523
519
  };
@@ -384,19 +384,19 @@ export class AdapterDateFnsJalali {
384
384
  return isAfter(value, comparing);
385
385
  };
386
386
  this.isAfterYear = (value, comparing) => {
387
- return isAfter(value, endOfYear(comparing));
387
+ return isAfter(value, this.endOfYear(comparing));
388
388
  };
389
389
  this.isAfterDay = (value, comparing) => {
390
- return isAfter(value, endOfDay(comparing));
390
+ return isAfter(value, this.endOfDay(comparing));
391
391
  };
392
392
  this.isBefore = (value, comparing) => {
393
393
  return isBefore(value, comparing);
394
394
  };
395
395
  this.isBeforeYear = (value, comparing) => {
396
- return isBefore(value, startOfYear(comparing));
396
+ return isBefore(value, this.startOfYear(comparing));
397
397
  };
398
398
  this.isBeforeDay = (value, comparing) => {
399
- return isBefore(value, startOfDay(comparing));
399
+ return isBefore(value, this.startOfDay(comparing));
400
400
  };
401
401
  this.isWithinRange = (value, [start, end]) => {
402
402
  return isWithinInterval(value, {
@@ -499,20 +499,16 @@ export class AdapterDateFnsJalali {
499
499
  return getDaysInMonth(value);
500
500
  };
501
501
  this.getWeekArray = value => {
502
- const start = startOfWeek(startOfMonth(value), {
503
- locale: this.locale
504
- });
505
- const end = endOfWeek(endOfMonth(value), {
506
- locale: this.locale
507
- });
502
+ const start = this.startOfWeek(this.startOfMonth(value));
503
+ const end = this.endOfWeek(this.endOfMonth(value));
508
504
  let count = 0;
509
505
  let current = start;
510
506
  const nestedWeeks = [];
511
- while (isBefore(current, end)) {
507
+ while (this.isBefore(current, end)) {
512
508
  const weekNumber = Math.floor(count / 7);
513
509
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
514
510
  nestedWeeks[weekNumber].push(current);
515
- current = addDays(current, 1);
511
+ current = this.addDays(current, 1);
516
512
  count += 1;
517
513
  }
518
514
  return nestedWeeks;
@@ -523,13 +519,13 @@ export class AdapterDateFnsJalali {
523
519
  });
524
520
  };
525
521
  this.getYearRange = ([start, end]) => {
526
- const startDate = startOfYear(start);
527
- const endDate = endOfYear(end);
522
+ const startDate = this.startOfYear(start);
523
+ const endDate = this.endOfYear(end);
528
524
  const years = [];
529
525
  let current = startDate;
530
- while (isBefore(current, endDate)) {
526
+ while (this.isBefore(current, endDate)) {
531
527
  years.push(current);
532
- current = addYears(current, 1);
528
+ current = this.addYears(current, 1);
533
529
  }
534
530
  return years;
535
531
  };
@@ -1,13 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  /* eslint-disable class-methods-use-this */
3
3
  import defaultDayjs from 'dayjs';
4
- import weekOfYear from 'dayjs/plugin/weekOfYear';
4
+ import weekOfYearPlugin from 'dayjs/plugin/weekOfYear';
5
5
  import customParseFormatPlugin from 'dayjs/plugin/customParseFormat';
6
6
  import localizedFormatPlugin from 'dayjs/plugin/localizedFormat';
7
7
  import isBetweenPlugin from 'dayjs/plugin/isBetween';
8
8
  import { buildWarning } from '../internals/utils/warning';
9
- defaultDayjs.extend(customParseFormatPlugin);
10
9
  defaultDayjs.extend(localizedFormatPlugin);
10
+ defaultDayjs.extend(weekOfYearPlugin);
11
11
  defaultDayjs.extend(isBetweenPlugin);
12
12
  const localeNotFoundWarning = buildWarning(['Your locale has not been found.', 'Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale', "Or you forget to import the locale from 'dayjs/locale/{localeUsed}'", 'fallback on English locale']);
13
13
  const formatTokenMap = {
@@ -506,8 +506,8 @@ export class AdapterDayjs {
506
506
  };
507
507
  this.getWeekArray = value => {
508
508
  const cleanValue = this.setLocaleToValue(value);
509
- const start = cleanValue.startOf('month').startOf('week');
510
- const end = cleanValue.endOf('month').endOf('week');
509
+ const start = this.startOfWeek(this.startOfMonth(cleanValue));
510
+ const end = this.endOfWeek(this.endOfMonth(cleanValue));
511
511
  let count = 0;
512
512
  let current = start;
513
513
  const nestedWeeks = [];
@@ -524,11 +524,11 @@ export class AdapterDayjs {
524
524
  return value.week();
525
525
  };
526
526
  this.getYearRange = ([start, end]) => {
527
- const startDate = start.startOf('year');
528
- const endDate = end.endOf('year');
527
+ const startDate = this.startOfYear(start);
528
+ const endDate = this.endOfYear(end);
529
529
  const years = [];
530
530
  let current = startDate;
531
- while (current < endDate) {
531
+ while (this.isBefore(current, endDate)) {
532
532
  years.push(current);
533
533
  current = this.addYears(current, 1);
534
534
  }
@@ -537,6 +537,9 @@ export class AdapterDayjs {
537
537
  this.dayjs = withLocale(defaultDayjs, _locale);
538
538
  this.locale = _locale;
539
539
  this.formats = _extends({}, defaultFormats, formats);
540
- defaultDayjs.extend(weekOfYear);
540
+
541
+ // Moved plugins to the constructor to allow for users to use options on the library
542
+ // for reference: https://github.com/mui/mui-x/pull/11151
543
+ defaultDayjs.extend(customParseFormatPlugin);
541
544
  }
542
545
  }
@@ -94,6 +94,6 @@ export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string>
94
94
  setMilliseconds: (value: DateTime, milliseconds: number) => DateTime;
95
95
  getDaysInMonth: (value: DateTime) => import("luxon").PossibleDaysInMonth;
96
96
  getWeekArray: (value: DateTime) => DateTime[][];
97
- getWeekNumber: (value: DateTime) => number;
97
+ getWeekNumber: (value: DateTime) => any;
98
98
  getYearRange: ([start, end]: [DateTime, DateTime]) => DateTime[];
99
99
  }
@@ -308,12 +308,12 @@ export class AdapterLuxon {
308
308
  };
309
309
  this.isAfterYear = (value, comparing) => {
310
310
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
311
- const diff = value.diff(comparingInValueTimezone.endOf('year'), 'years').toObject();
311
+ const diff = value.diff(this.endOfYear(comparingInValueTimezone), 'years').toObject();
312
312
  return diff.years > 0;
313
313
  };
314
314
  this.isAfterDay = (value, comparing) => {
315
315
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
316
- const diff = value.diff(comparingInValueTimezone.endOf('day'), 'days').toObject();
316
+ const diff = value.diff(this.endOfDay(comparingInValueTimezone), 'days').toObject();
317
317
  return diff.days > 0;
318
318
  };
319
319
  this.isBefore = (value, comparing) => {
@@ -321,12 +321,12 @@ export class AdapterLuxon {
321
321
  };
322
322
  this.isBeforeYear = (value, comparing) => {
323
323
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
324
- const diff = value.diff(comparingInValueTimezone.startOf('year'), 'years').toObject();
324
+ const diff = value.diff(this.startOfYear(comparingInValueTimezone), 'years').toObject();
325
325
  return diff.years < 0;
326
326
  };
327
327
  this.isBeforeDay = (value, comparing) => {
328
328
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
329
- const diff = value.diff(comparingInValueTimezone.startOf('day'), 'days').toObject();
329
+ const diff = value.diff(this.startOfDay(comparingInValueTimezone), 'days').toObject();
330
330
  return diff.days < 0;
331
331
  };
332
332
  this.isWithinRange = (value, [start, end]) => {
@@ -339,7 +339,12 @@ export class AdapterLuxon {
339
339
  return value.startOf('month');
340
340
  };
341
341
  this.startOfWeek = value => {
342
- return value.startOf('week');
342
+ return value.startOf('week',
343
+ // TODO: remove when `@types/luxon` add support for the parameter.
344
+ // @ts-ignore
345
+ {
346
+ useLocaleWeeks: true
347
+ });
343
348
  };
344
349
  this.startOfDay = value => {
345
350
  return value.startOf('day');
@@ -351,7 +356,12 @@ export class AdapterLuxon {
351
356
  return value.endOf('month');
352
357
  };
353
358
  this.endOfWeek = value => {
354
- return value.endOf('week');
359
+ return value.endOf('week',
360
+ // TODO: remove when `@types/luxon` add support for the parameter.
361
+ // @ts-ignore
362
+ {
363
+ useLocaleWeeks: true
364
+ });
355
365
  };
356
366
  this.endOfDay = value => {
357
367
  return value.endOf('day');
@@ -453,11 +463,13 @@ export class AdapterLuxon {
453
463
  };
454
464
  this.getWeekArray = value => {
455
465
  const cleanValue = this.setLocaleToValue(value);
466
+ const firstDay = this.startOfWeek(this.startOfMonth(cleanValue));
467
+ const lastDay = this.endOfWeek(this.endOfMonth(cleanValue));
456
468
  const {
457
469
  days
458
- } = cleanValue.endOf('month').endOf('week').diff(cleanValue.startOf('month').startOf('week'), 'days').toObject();
470
+ } = lastDay.diff(firstDay, 'days').toObject();
459
471
  const weeks = [];
460
- new Array(Math.round(days)).fill(0).map((_, i) => i).map(day => cleanValue.startOf('month').startOf('week').plus({
472
+ new Array(Math.round(days)).fill(0).map((_, i) => i).map(day => firstDay.plus({
461
473
  days: day
462
474
  })).forEach((v, i) => {
463
475
  if (i === 0 || i % 7 === 0 && i > 6) {
@@ -469,18 +481,19 @@ export class AdapterLuxon {
469
481
  return weeks;
470
482
  };
471
483
  this.getWeekNumber = value => {
472
- return value.weekNumber;
484
+ var _value$localeWeekNumb;
485
+ // TODO: remove when `@types/luxon` add support for the parameter.
486
+ // @ts-ignore
487
+ return (_value$localeWeekNumb = value.localeWeekNumber) != null ? _value$localeWeekNumb : value.weekNumber;
473
488
  };
474
489
  this.getYearRange = ([start, end]) => {
475
- const startDate = start.startOf('year');
476
- const endDate = end.endOf('year');
477
- let current = startDate;
490
+ const startDate = this.startOfYear(start);
491
+ const endDate = this.endOfYear(end);
478
492
  const years = [];
479
- while (current < endDate) {
493
+ let current = startDate;
494
+ while (this.isBefore(current, endDate)) {
480
495
  years.push(current);
481
- current = current.plus({
482
- year: 1
483
- });
496
+ current = this.addYears(current, 1);
484
497
  }
485
498
  return years;
486
499
  };
@@ -100,5 +100,5 @@ export declare class AdapterMoment implements MuiPickersAdapter<Moment, string>
100
100
  getDaysInMonth: (value: Moment) => number;
101
101
  getWeekArray: (value: Moment) => defaultMoment.Moment[][];
102
102
  getWeekNumber: (value: Moment) => number;
103
- getYearRange: ([start, end]: [Moment, Moment]) => defaultMoment.Moment[];
103
+ getYearRange([start, end]: [Moment, Moment]): defaultMoment.Moment[];
104
104
  }
@@ -427,8 +427,8 @@ export class AdapterMoment {
427
427
  };
428
428
  this.getWeekArray = value => {
429
429
  const cleanValue = this.setLocaleToValue(value);
430
- const start = cleanValue.clone().startOf('month').startOf('week');
431
- const end = cleanValue.clone().endOf('month').endOf('week');
430
+ const start = this.startOfWeek(this.startOfMonth(cleanValue));
431
+ const end = this.endOfWeek(this.endOfMonth(cleanValue));
432
432
  let count = 0;
433
433
  let current = start;
434
434
  const nestedWeeks = [];
@@ -436,7 +436,7 @@ export class AdapterMoment {
436
436
  const weekNumber = Math.floor(count / 7);
437
437
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
438
438
  nestedWeeks[weekNumber].push(current);
439
- current = current.clone().add(1, 'day');
439
+ current = this.addDays(current, 1);
440
440
  count += 1;
441
441
  }
442
442
  return nestedWeeks;
@@ -444,19 +444,19 @@ export class AdapterMoment {
444
444
  this.getWeekNumber = value => {
445
445
  return value.week();
446
446
  };
447
- this.getYearRange = ([start, end]) => {
448
- const startDate = this.moment(start).startOf('year');
449
- const endDate = this.moment(end).endOf('year');
450
- const years = [];
451
- let current = startDate;
452
- while (current.isBefore(endDate)) {
453
- years.push(current);
454
- current = current.clone().add(1, 'year');
455
- }
456
- return years;
457
- };
458
447
  this.moment = instance || defaultMoment;
459
448
  this.locale = locale;
460
449
  this.formats = _extends({}, defaultFormats, formats);
461
450
  }
451
+ getYearRange([start, end]) {
452
+ const startDate = this.startOfYear(start);
453
+ const endDate = this.endOfYear(end);
454
+ const years = [];
455
+ let current = startDate;
456
+ while (this.isBefore(current, endDate)) {
457
+ years.push(current);
458
+ current = this.addYears(current, 1);
459
+ }
460
+ return years;
461
+ }
462
462
  }
@@ -49,7 +49,6 @@ export declare class AdapterMomentHijri extends AdapterMoment implements MuiPick
49
49
  setYear: (value: Moment, year: number) => defaultHMoment.Moment;
50
50
  setMonth: (value: Moment, month: number) => defaultHMoment.Moment;
51
51
  setDate: (value: Moment, date: number) => defaultHMoment.Moment;
52
- getWeekArray: (value: Moment) => defaultHMoment.Moment[][];
53
52
  getWeekNumber: (value: Moment) => number;
54
53
  getYearRange: ([start, end]: [Moment, Moment]) => defaultHMoment.Moment[];
55
54
  }
@@ -198,21 +198,6 @@ export class AdapterMomentHijri extends AdapterMoment {
198
198
  this.setDate = (value, date) => {
199
199
  return value.clone().iDate(date);
200
200
  };
201
- this.getWeekArray = value => {
202
- const start = value.clone().startOf('iMonth').startOf('week');
203
- const end = value.clone().endOf('iMonth').endOf('week');
204
- let count = 0;
205
- let current = start;
206
- const nestedWeeks = [];
207
- while (current.isBefore(end)) {
208
- const weekNumber = Math.floor(count / 7);
209
- nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
210
- nestedWeeks[weekNumber].push(current);
211
- current = current.clone().add(1, 'day');
212
- count += 1;
213
- }
214
- return nestedWeeks;
215
- };
216
201
  this.getWeekNumber = value => {
217
202
  return value.iWeek();
218
203
  };
@@ -225,15 +210,7 @@ export class AdapterMomentHijri extends AdapterMoment {
225
210
  if (end.isAfter('2076-11-26')) {
226
211
  throw new Error('max date must be on or before 1499-12-29 H (2076-11-26)');
227
212
  }
228
- const startDate = this.moment(start).startOf('iYear');
229
- const endDate = this.moment(end).endOf('iYear');
230
- const years = [];
231
- let current = startDate;
232
- while (current.isBefore(endDate)) {
233
- years.push(current);
234
- current = current.clone().add(1, 'iYear');
235
- }
236
- return years;
213
+ return super.getYearRange([start, end]);
237
214
  };
238
215
  this.moment = instance || defaultHMoment;
239
216
  this.locale = 'ar-SA';
@@ -53,7 +53,5 @@ export declare class AdapterMomentJalaali extends AdapterMoment implements MuiPi
53
53
  setYear: (value: Moment, year: number) => defaultJMoment.Moment;
54
54
  setMonth: (value: Moment, month: number) => defaultJMoment.Moment;
55
55
  setDate: (value: Moment, date: number) => defaultJMoment.Moment;
56
- getWeekArray: (value: Moment) => defaultJMoment.Moment[][];
57
56
  getWeekNumber: (value: Moment) => number;
58
- getYearRange: ([start, end]: [Moment, Moment]) => defaultJMoment.Moment[];
59
57
  }
@@ -212,35 +212,9 @@ export class AdapterMomentJalaali extends AdapterMoment {
212
212
  this.setDate = (value, date) => {
213
213
  return value.clone().jDate(date);
214
214
  };
215
- this.getWeekArray = value => {
216
- const start = value.clone().startOf('jMonth').startOf('week');
217
- const end = value.clone().endOf('jMonth').endOf('week');
218
- let count = 0;
219
- let current = start;
220
- const nestedWeeks = [];
221
- while (current.isBefore(end)) {
222
- const weekNumber = Math.floor(count / 7);
223
- nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
224
- nestedWeeks[weekNumber].push(current);
225
- current = current.clone().add(1, 'day');
226
- count += 1;
227
- }
228
- return nestedWeeks;
229
- };
230
215
  this.getWeekNumber = value => {
231
216
  return value.jWeek();
232
217
  };
233
- this.getYearRange = ([start, end]) => {
234
- const startDate = this.moment(start).startOf('jYear');
235
- const endDate = this.moment(end).endOf('jYear');
236
- const years = [];
237
- let current = startDate;
238
- while (current.isBefore(endDate)) {
239
- years.push(current);
240
- current = current.clone().add(1, 'jYear');
241
- }
242
- return years;
243
- };
244
218
  this.moment = instance || defaultJMoment;
245
219
  this.locale = 'fa';
246
220
  this.formats = _extends({}, defaultFormats, formats);