@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
@@ -0,0 +1,119 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["elements", "className", "color", "disabled", "error", "label", "variant", "fullWidth", "valueStr", "helperText", "valueType", "id", "FormHelperTextProps", "InputLabelProps", "inputProps", "InputProps", "required", "focused", "ownerState"];
4
+ import * as React from 'react';
5
+ import clsx from 'clsx';
6
+ import { styled } from '@mui/material/styles';
7
+ import useForkRef from '@mui/utils/useForkRef';
8
+ import { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';
9
+ import InputLabel from '@mui/material/InputLabel';
10
+ import FormHelperText from '@mui/material/FormHelperText';
11
+ import FormControl from '@mui/material/FormControl';
12
+ import { getPickersTextFieldUtilityClass } from './pickersTextFieldClasses';
13
+ import PickersInput from './PickersInput';
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ import { jsxs as _jsxs } from "react/jsx-runtime";
16
+ const PickersTextFieldRoot = styled(FormControl, {
17
+ name: 'MuiPickersTextField',
18
+ slot: 'Root',
19
+ overridesResolver: (props, styles) => styles.root
20
+ })({});
21
+ const useUtilityClasses = ownerState => {
22
+ const {
23
+ focused,
24
+ disabled,
25
+ classes,
26
+ required
27
+ } = ownerState;
28
+ const slots = {
29
+ root: ['root', focused && !disabled && 'focused', disabled && 'disabled', required && 'required']
30
+ };
31
+ return composeClasses(slots, getPickersTextFieldUtilityClass, classes);
32
+ };
33
+ export const PickersTextField = /*#__PURE__*/React.forwardRef(function PickersTextField(props, ref) {
34
+ const {
35
+ elements,
36
+ className,
37
+ color = 'primary',
38
+ disabled = false,
39
+ error = false,
40
+ label,
41
+ variant = 'outlined',
42
+ fullWidth = false,
43
+ valueStr,
44
+ helperText,
45
+ valueType,
46
+ id: idOverride,
47
+ FormHelperTextProps,
48
+ InputLabelProps,
49
+ inputProps,
50
+ InputProps,
51
+ required = false,
52
+ focused: focusedProp
53
+ } = props,
54
+ other = _objectWithoutPropertiesLoose(props, _excluded);
55
+ const [focused, setFocused] = React.useState(focusedProp);
56
+ const rootRef = React.useRef(null);
57
+ const handleRootRef = useForkRef(ref, rootRef);
58
+ const inputRef = React.useRef(null);
59
+ const handleInputRef = useForkRef(inputRef, InputProps?.ref);
60
+ const id = useId(idOverride);
61
+ const helperTextId = helperText && id ? `${id}-helper-text` : undefined;
62
+ const inputLabelId = label && id ? `${id}-label` : undefined;
63
+ const ownerState = _extends({}, props, {
64
+ color,
65
+ disabled,
66
+ error,
67
+ focused,
68
+ variant
69
+ });
70
+ const classes = useUtilityClasses(ownerState);
71
+
72
+ // TODO: delete after behavior implementation
73
+ const onWrapperClick = () => {
74
+ if (!focused) {
75
+ setFocused(true);
76
+ const container = rootRef.current;
77
+
78
+ // Find the first input element within the container
79
+ const firstInput = container?.querySelector('.content');
80
+
81
+ // Check if the input element exists before focusing it
82
+ if (firstInput) {
83
+ firstInput.focus();
84
+ }
85
+ inputRef.current?.focus();
86
+ }
87
+ };
88
+ return /*#__PURE__*/_jsxs(PickersTextFieldRoot, {
89
+ className: clsx(classes.root, className),
90
+ ref: handleRootRef,
91
+ focused: focused,
92
+ disabled: disabled,
93
+ variant: variant,
94
+ error: error,
95
+ color: color,
96
+ fullWidth: fullWidth,
97
+ required: required,
98
+ ownerState: ownerState,
99
+ children: [/*#__PURE__*/_jsx(InputLabel, _extends({
100
+ htmlFor: id,
101
+ id: inputLabelId
102
+ }, InputLabelProps, {
103
+ children: label
104
+ })), /*#__PURE__*/_jsx(PickersInput, _extends({
105
+ elements,
106
+ valueStr,
107
+ valueType,
108
+ onWrapperClick,
109
+ inputProps,
110
+ label
111
+ }, other, InputProps, {
112
+ ref: handleInputRef
113
+ })), helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({
114
+ id: helperTextId
115
+ }, FormHelperTextProps, {
116
+ children: helperText
117
+ }))]
118
+ });
119
+ });
@@ -0,0 +1 @@
1
+ export { PickersTextField } from './PickersTextField';
@@ -0,0 +1,9 @@
1
+ import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
+ export function getPickersTextFieldUtilityClass(slot) {
3
+ return generateUtilityClass('MuiPickersTextField', slot);
4
+ }
5
+ export const pickersTextFieldClasses = generateUtilityClasses('MuiPickersTextField', ['root', 'focused', 'disabled', 'error', 'required']);
6
+ export function getPickersInputUtilityClass(slot) {
7
+ return generateUtilityClass('MuiPickersInput', slot);
8
+ }
9
+ export const pickersInputClasses = generateUtilityClasses('MuiPickersInput', ['root', 'focused', 'disabled', 'error', 'notchedOutline', 'content', 'before', 'after', 'adornedStart', 'adornedEnd', 'input']);
@@ -207,49 +207,62 @@ export const addPositionPropertiesToSections = (sections, isRTL) => {
207
207
  }
208
208
  return newSections;
209
209
  };
210
- const getSectionPlaceholder = (utils, timezone, localeText, sectionConfig, currentTokenValue) => {
210
+ const getSectionPlaceholder = (utils, timezone, localeText, sectionConfig, sectionFormat) => {
211
211
  switch (sectionConfig.type) {
212
212
  case 'year':
213
213
  {
214
214
  return localeText.fieldYearPlaceholder({
215
- digitAmount: utils.formatByString(utils.date(undefined, timezone), currentTokenValue).length
215
+ digitAmount: utils.formatByString(utils.date(undefined, timezone), sectionFormat).length,
216
+ format: sectionFormat
216
217
  });
217
218
  }
218
219
  case 'month':
219
220
  {
220
221
  return localeText.fieldMonthPlaceholder({
221
- contentType: sectionConfig.contentType
222
+ contentType: sectionConfig.contentType,
223
+ format: sectionFormat
222
224
  });
223
225
  }
224
226
  case 'day':
225
227
  {
226
- return localeText.fieldDayPlaceholder();
228
+ return localeText.fieldDayPlaceholder({
229
+ format: sectionFormat
230
+ });
227
231
  }
228
232
  case 'weekDay':
229
233
  {
230
234
  return localeText.fieldWeekDayPlaceholder({
231
- contentType: sectionConfig.contentType
235
+ contentType: sectionConfig.contentType,
236
+ format: sectionFormat
232
237
  });
233
238
  }
234
239
  case 'hours':
235
240
  {
236
- return localeText.fieldHoursPlaceholder();
241
+ return localeText.fieldHoursPlaceholder({
242
+ format: sectionFormat
243
+ });
237
244
  }
238
245
  case 'minutes':
239
246
  {
240
- return localeText.fieldMinutesPlaceholder();
247
+ return localeText.fieldMinutesPlaceholder({
248
+ format: sectionFormat
249
+ });
241
250
  }
242
251
  case 'seconds':
243
252
  {
244
- return localeText.fieldSecondsPlaceholder();
253
+ return localeText.fieldSecondsPlaceholder({
254
+ format: sectionFormat
255
+ });
245
256
  }
246
257
  case 'meridiem':
247
258
  {
248
- return localeText.fieldMeridiemPlaceholder();
259
+ return localeText.fieldMeridiemPlaceholder({
260
+ format: sectionFormat
261
+ });
249
262
  }
250
263
  default:
251
264
  {
252
- return currentTokenValue;
265
+ return sectionFormat;
253
266
  }
254
267
  }
255
268
  };
@@ -221,9 +221,7 @@ export const usePickerValue = ({
221
221
  const context = {
222
222
  validationError
223
223
  };
224
-
225
- // TODO v7: Remove 2nd condition
226
- if (action.name === 'setValueFromShortcut' && action.shortcut != null) {
224
+ if (action.name === 'setValueFromShortcut') {
227
225
  context.shortcut = action.shortcut;
228
226
  }
229
227
  handleValueChange(action.value, context);
@@ -288,12 +286,10 @@ export const usePickerValue = ({
288
286
  value: newValue,
289
287
  selectionState
290
288
  }));
291
-
292
- // TODO v7: Make changeImportance and label mandatory.
293
289
  const handleSelectShortcut = useEventCallback((newValue, changeImportance, shortcut) => updateDate({
294
290
  name: 'setValueFromShortcut',
295
291
  value: newValue,
296
- changeImportance: changeImportance ?? 'accept',
292
+ changeImportance,
297
293
  shortcut
298
294
  }));
299
295
  const handleChangeFromField = useEventCallback((newValue, context) => updateDate({
@@ -389,10 +389,10 @@ class AdapterDateFns {
389
389
  return (0, _isBefore.default)(value, comparing);
390
390
  };
391
391
  this.isBeforeYear = (value, comparing) => {
392
- return (0, _isBefore.default)(value, (0, _startOfYear.default)(comparing));
392
+ return (0, _isBefore.default)(value, this.startOfYear(comparing));
393
393
  };
394
394
  this.isBeforeDay = (value, comparing) => {
395
- return (0, _isBefore.default)(value, (0, _startOfDay.default)(comparing));
395
+ return (0, _isBefore.default)(value, this.startOfDay(comparing));
396
396
  };
397
397
  this.isWithinRange = (value, [start, end]) => {
398
398
  return (0, _isWithinInterval.default)(value, {
@@ -495,20 +495,16 @@ class AdapterDateFns {
495
495
  return (0, _getDaysInMonth.default)(value);
496
496
  };
497
497
  this.getWeekArray = value => {
498
- const start = (0, _startOfWeek.default)((0, _startOfMonth.default)(value), {
499
- locale: this.locale
500
- });
501
- const end = (0, _endOfWeek.default)((0, _endOfMonth.default)(value), {
502
- locale: this.locale
503
- });
498
+ const start = this.startOfWeek(this.startOfMonth(value));
499
+ const end = this.endOfWeek(this.endOfMonth(value));
504
500
  let count = 0;
505
501
  let current = start;
506
502
  const nestedWeeks = [];
507
- while ((0, _isBefore.default)(current, end)) {
503
+ while (this.isBefore(current, end)) {
508
504
  const weekNumber = Math.floor(count / 7);
509
505
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
510
506
  nestedWeeks[weekNumber].push(current);
511
- current = (0, _addDays.default)(current, 1);
507
+ current = this.addDays(current, 1);
512
508
  count += 1;
513
509
  }
514
510
  return nestedWeeks;
@@ -519,13 +515,13 @@ class AdapterDateFns {
519
515
  });
520
516
  };
521
517
  this.getYearRange = ([start, end]) => {
522
- const startDate = (0, _startOfYear.default)(start);
523
- const endDate = (0, _endOfYear.default)(end);
518
+ const startDate = this.startOfYear(start);
519
+ const endDate = this.endOfYear(end);
524
520
  const years = [];
525
521
  let current = startDate;
526
- while ((0, _isBefore.default)(current, endDate)) {
522
+ while (this.isBefore(current, endDate)) {
527
523
  years.push(current);
528
- current = (0, _addYears.default)(current, 1);
524
+ current = this.addYears(current, 1);
529
525
  }
530
526
  return years;
531
527
  };
@@ -391,19 +391,19 @@ class AdapterDateFnsJalali {
391
391
  return (0, _isAfter.default)(value, comparing);
392
392
  };
393
393
  this.isAfterYear = (value, comparing) => {
394
- return (0, _isAfter.default)(value, (0, _endOfYear.default)(comparing));
394
+ return (0, _isAfter.default)(value, this.endOfYear(comparing));
395
395
  };
396
396
  this.isAfterDay = (value, comparing) => {
397
- return (0, _isAfter.default)(value, (0, _endOfDay.default)(comparing));
397
+ return (0, _isAfter.default)(value, this.endOfDay(comparing));
398
398
  };
399
399
  this.isBefore = (value, comparing) => {
400
400
  return (0, _isBefore.default)(value, comparing);
401
401
  };
402
402
  this.isBeforeYear = (value, comparing) => {
403
- return (0, _isBefore.default)(value, (0, _startOfYear.default)(comparing));
403
+ return (0, _isBefore.default)(value, this.startOfYear(comparing));
404
404
  };
405
405
  this.isBeforeDay = (value, comparing) => {
406
- return (0, _isBefore.default)(value, (0, _startOfDay.default)(comparing));
406
+ return (0, _isBefore.default)(value, this.startOfDay(comparing));
407
407
  };
408
408
  this.isWithinRange = (value, [start, end]) => {
409
409
  return (0, _isWithinInterval.default)(value, {
@@ -506,20 +506,16 @@ class AdapterDateFnsJalali {
506
506
  return (0, _getDaysInMonth.default)(value);
507
507
  };
508
508
  this.getWeekArray = value => {
509
- const start = (0, _startOfWeek.default)((0, _startOfMonth.default)(value), {
510
- locale: this.locale
511
- });
512
- const end = (0, _endOfWeek.default)((0, _endOfMonth.default)(value), {
513
- locale: this.locale
514
- });
509
+ const start = this.startOfWeek(this.startOfMonth(value));
510
+ const end = this.endOfWeek(this.endOfMonth(value));
515
511
  let count = 0;
516
512
  let current = start;
517
513
  const nestedWeeks = [];
518
- while ((0, _isBefore.default)(current, end)) {
514
+ while (this.isBefore(current, end)) {
519
515
  const weekNumber = Math.floor(count / 7);
520
516
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
521
517
  nestedWeeks[weekNumber].push(current);
522
- current = (0, _addDays.default)(current, 1);
518
+ current = this.addDays(current, 1);
523
519
  count += 1;
524
520
  }
525
521
  return nestedWeeks;
@@ -530,13 +526,13 @@ class AdapterDateFnsJalali {
530
526
  });
531
527
  };
532
528
  this.getYearRange = ([start, end]) => {
533
- const startDate = (0, _startOfYear.default)(start);
534
- const endDate = (0, _endOfYear.default)(end);
529
+ const startDate = this.startOfYear(start);
530
+ const endDate = this.endOfYear(end);
535
531
  const years = [];
536
532
  let current = startDate;
537
- while ((0, _isBefore.default)(current, endDate)) {
533
+ while (this.isBefore(current, endDate)) {
538
534
  years.push(current);
539
- current = (0, _addYears.default)(current, 1);
535
+ current = this.addYears(current, 1);
540
536
  }
541
537
  return years;
542
538
  };
@@ -14,8 +14,8 @@ var _isBetween = _interopRequireDefault(require("dayjs/plugin/isBetween"));
14
14
  var _warning = require("../internals/utils/warning");
15
15
  /* eslint-disable class-methods-use-this */
16
16
 
17
- _dayjs.default.extend(_customParseFormat.default);
18
17
  _dayjs.default.extend(_localizedFormat.default);
18
+ _dayjs.default.extend(_weekOfYear.default);
19
19
  _dayjs.default.extend(_isBetween.default);
20
20
  const localeNotFoundWarning = (0, _warning.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']);
21
21
  const formatTokenMap = {
@@ -512,8 +512,8 @@ class AdapterDayjs {
512
512
  };
513
513
  this.getWeekArray = value => {
514
514
  const cleanValue = this.setLocaleToValue(value);
515
- const start = cleanValue.startOf('month').startOf('week');
516
- const end = cleanValue.endOf('month').endOf('week');
515
+ const start = this.startOfWeek(this.startOfMonth(cleanValue));
516
+ const end = this.endOfWeek(this.endOfMonth(cleanValue));
517
517
  let count = 0;
518
518
  let current = start;
519
519
  const nestedWeeks = [];
@@ -530,11 +530,11 @@ class AdapterDayjs {
530
530
  return value.week();
531
531
  };
532
532
  this.getYearRange = ([start, end]) => {
533
- const startDate = start.startOf('year');
534
- const endDate = end.endOf('year');
533
+ const startDate = this.startOfYear(start);
534
+ const endDate = this.endOfYear(end);
535
535
  const years = [];
536
536
  let current = startDate;
537
- while (current < endDate) {
537
+ while (this.isBefore(current, endDate)) {
538
538
  years.push(current);
539
539
  current = this.addYears(current, 1);
540
540
  }
@@ -543,7 +543,10 @@ class AdapterDayjs {
543
543
  this.dayjs = withLocale(_dayjs.default, _locale);
544
544
  this.locale = _locale;
545
545
  this.formats = (0, _extends2.default)({}, defaultFormats, formats);
546
- _dayjs.default.extend(_weekOfYear.default);
546
+
547
+ // Moved plugins to the constructor to allow for users to use options on the library
548
+ // for reference: https://github.com/mui/mui-x/pull/11151
549
+ _dayjs.default.extend(_customParseFormat.default);
547
550
  }
548
551
  }
549
552
  exports.AdapterDayjs = AdapterDayjs;
@@ -315,12 +315,12 @@ class AdapterLuxon {
315
315
  };
316
316
  this.isAfterYear = (value, comparing) => {
317
317
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
318
- const diff = value.diff(comparingInValueTimezone.endOf('year'), 'years').toObject();
318
+ const diff = value.diff(this.endOfYear(comparingInValueTimezone), 'years').toObject();
319
319
  return diff.years > 0;
320
320
  };
321
321
  this.isAfterDay = (value, comparing) => {
322
322
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
323
- const diff = value.diff(comparingInValueTimezone.endOf('day'), 'days').toObject();
323
+ const diff = value.diff(this.endOfDay(comparingInValueTimezone), 'days').toObject();
324
324
  return diff.days > 0;
325
325
  };
326
326
  this.isBefore = (value, comparing) => {
@@ -328,12 +328,12 @@ class AdapterLuxon {
328
328
  };
329
329
  this.isBeforeYear = (value, comparing) => {
330
330
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
331
- const diff = value.diff(comparingInValueTimezone.startOf('year'), 'years').toObject();
331
+ const diff = value.diff(this.startOfYear(comparingInValueTimezone), 'years').toObject();
332
332
  return diff.years < 0;
333
333
  };
334
334
  this.isBeforeDay = (value, comparing) => {
335
335
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
336
- const diff = value.diff(comparingInValueTimezone.startOf('day'), 'days').toObject();
336
+ const diff = value.diff(this.startOfDay(comparingInValueTimezone), 'days').toObject();
337
337
  return diff.days < 0;
338
338
  };
339
339
  this.isWithinRange = (value, [start, end]) => {
@@ -346,7 +346,12 @@ class AdapterLuxon {
346
346
  return value.startOf('month');
347
347
  };
348
348
  this.startOfWeek = value => {
349
- return value.startOf('week');
349
+ return value.startOf('week',
350
+ // TODO: remove when `@types/luxon` add support for the parameter.
351
+ // @ts-ignore
352
+ {
353
+ useLocaleWeeks: true
354
+ });
350
355
  };
351
356
  this.startOfDay = value => {
352
357
  return value.startOf('day');
@@ -358,7 +363,12 @@ class AdapterLuxon {
358
363
  return value.endOf('month');
359
364
  };
360
365
  this.endOfWeek = value => {
361
- return value.endOf('week');
366
+ return value.endOf('week',
367
+ // TODO: remove when `@types/luxon` add support for the parameter.
368
+ // @ts-ignore
369
+ {
370
+ useLocaleWeeks: true
371
+ });
362
372
  };
363
373
  this.endOfDay = value => {
364
374
  return value.endOf('day');
@@ -460,11 +470,13 @@ class AdapterLuxon {
460
470
  };
461
471
  this.getWeekArray = value => {
462
472
  const cleanValue = this.setLocaleToValue(value);
473
+ const firstDay = this.startOfWeek(this.startOfMonth(cleanValue));
474
+ const lastDay = this.endOfWeek(this.endOfMonth(cleanValue));
463
475
  const {
464
476
  days
465
- } = cleanValue.endOf('month').endOf('week').diff(cleanValue.startOf('month').startOf('week'), 'days').toObject();
477
+ } = lastDay.diff(firstDay, 'days').toObject();
466
478
  const weeks = [];
467
- new Array(Math.round(days)).fill(0).map((_, i) => i).map(day => cleanValue.startOf('month').startOf('week').plus({
479
+ new Array(Math.round(days)).fill(0).map((_, i) => i).map(day => firstDay.plus({
468
480
  days: day
469
481
  })).forEach((v, i) => {
470
482
  if (i === 0 || i % 7 === 0 && i > 6) {
@@ -476,18 +488,18 @@ class AdapterLuxon {
476
488
  return weeks;
477
489
  };
478
490
  this.getWeekNumber = value => {
479
- return value.weekNumber;
491
+ // TODO: remove when `@types/luxon` add support for the parameter.
492
+ // @ts-ignore
493
+ return value.localeWeekNumber ?? value.weekNumber;
480
494
  };
481
495
  this.getYearRange = ([start, end]) => {
482
- const startDate = start.startOf('year');
483
- const endDate = end.endOf('year');
484
- let current = startDate;
496
+ const startDate = this.startOfYear(start);
497
+ const endDate = this.endOfYear(end);
485
498
  const years = [];
486
- while (current < endDate) {
499
+ let current = startDate;
500
+ while (this.isBefore(current, endDate)) {
487
501
  years.push(current);
488
- current = current.plus({
489
- year: 1
490
- });
502
+ current = this.addYears(current, 1);
491
503
  }
492
504
  return years;
493
505
  };
@@ -434,8 +434,8 @@ class AdapterMoment {
434
434
  };
435
435
  this.getWeekArray = value => {
436
436
  const cleanValue = this.setLocaleToValue(value);
437
- const start = cleanValue.clone().startOf('month').startOf('week');
438
- const end = cleanValue.clone().endOf('month').endOf('week');
437
+ const start = this.startOfWeek(this.startOfMonth(cleanValue));
438
+ const end = this.endOfWeek(this.endOfMonth(cleanValue));
439
439
  let count = 0;
440
440
  let current = start;
441
441
  const nestedWeeks = [];
@@ -443,7 +443,7 @@ class AdapterMoment {
443
443
  const weekNumber = Math.floor(count / 7);
444
444
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
445
445
  nestedWeeks[weekNumber].push(current);
446
- current = current.clone().add(1, 'day');
446
+ current = this.addDays(current, 1);
447
447
  count += 1;
448
448
  }
449
449
  return nestedWeeks;
@@ -451,20 +451,20 @@ class AdapterMoment {
451
451
  this.getWeekNumber = value => {
452
452
  return value.week();
453
453
  };
454
- this.getYearRange = ([start, end]) => {
455
- const startDate = this.moment(start).startOf('year');
456
- const endDate = this.moment(end).endOf('year');
457
- const years = [];
458
- let current = startDate;
459
- while (current.isBefore(endDate)) {
460
- years.push(current);
461
- current = current.clone().add(1, 'year');
462
- }
463
- return years;
464
- };
465
454
  this.moment = instance || _moment.default;
466
455
  this.locale = locale;
467
456
  this.formats = (0, _extends2.default)({}, defaultFormats, formats);
468
457
  }
458
+ getYearRange([start, end]) {
459
+ const startDate = this.startOfYear(start);
460
+ const endDate = this.endOfYear(end);
461
+ const years = [];
462
+ let current = startDate;
463
+ while (this.isBefore(current, endDate)) {
464
+ years.push(current);
465
+ current = this.addYears(current, 1);
466
+ }
467
+ return years;
468
+ }
469
469
  }
470
470
  exports.AdapterMoment = AdapterMoment;
@@ -206,21 +206,6 @@ class AdapterMomentHijri extends _AdapterMoment.AdapterMoment {
206
206
  this.setDate = (value, date) => {
207
207
  return value.clone().iDate(date);
208
208
  };
209
- this.getWeekArray = value => {
210
- const start = value.clone().startOf('iMonth').startOf('week');
211
- const end = value.clone().endOf('iMonth').endOf('week');
212
- let count = 0;
213
- let current = start;
214
- const nestedWeeks = [];
215
- while (current.isBefore(end)) {
216
- const weekNumber = Math.floor(count / 7);
217
- nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
218
- nestedWeeks[weekNumber].push(current);
219
- current = current.clone().add(1, 'day');
220
- count += 1;
221
- }
222
- return nestedWeeks;
223
- };
224
209
  this.getWeekNumber = value => {
225
210
  return value.iWeek();
226
211
  };
@@ -233,15 +218,7 @@ class AdapterMomentHijri extends _AdapterMoment.AdapterMoment {
233
218
  if (end.isAfter('2076-11-26')) {
234
219
  throw new Error('max date must be on or before 1499-12-29 H (2076-11-26)');
235
220
  }
236
- const startDate = this.moment(start).startOf('iYear');
237
- const endDate = this.moment(end).endOf('iYear');
238
- const years = [];
239
- let current = startDate;
240
- while (current.isBefore(endDate)) {
241
- years.push(current);
242
- current = current.clone().add(1, 'iYear');
243
- }
244
- return years;
221
+ return super.getYearRange([start, end]);
245
222
  };
246
223
  this.moment = instance || _momentHijri.default;
247
224
  this.locale = 'ar-SA';
@@ -220,35 +220,9 @@ class AdapterMomentJalaali extends _AdapterMoment.AdapterMoment {
220
220
  this.setDate = (value, date) => {
221
221
  return value.clone().jDate(date);
222
222
  };
223
- this.getWeekArray = value => {
224
- const start = value.clone().startOf('jMonth').startOf('week');
225
- const end = value.clone().endOf('jMonth').endOf('week');
226
- let count = 0;
227
- let current = start;
228
- const nestedWeeks = [];
229
- while (current.isBefore(end)) {
230
- const weekNumber = Math.floor(count / 7);
231
- nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
232
- nestedWeeks[weekNumber].push(current);
233
- current = current.clone().add(1, 'day');
234
- count += 1;
235
- }
236
- return nestedWeeks;
237
- };
238
223
  this.getWeekNumber = value => {
239
224
  return value.jWeek();
240
225
  };
241
- this.getYearRange = ([start, end]) => {
242
- const startDate = this.moment(start).startOf('jYear');
243
- const endDate = this.moment(end).endOf('jYear');
244
- const years = [];
245
- let current = startDate;
246
- while (current.isBefore(endDate)) {
247
- years.push(current);
248
- current = current.clone().add(1, 'jYear');
249
- }
250
- return years;
251
- };
252
226
  this.moment = instance || _momentJalaali.default;
253
227
  this.locale = 'fa';
254
228
  this.formats = (0, _extends2.default)({}, defaultFormats, formats);
@@ -401,8 +401,8 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
401
401
  */
402
402
  displayWeekNumber: _propTypes.default.bool,
403
403
  /**
404
- * Calendar will show more weeks in order to match this value.
405
- * Put it to 6 for having fix number of week in Gregorian calendars
404
+ * The day view will show as many weeks as needed after the end of the current month to match this value.
405
+ * Put it to 6 to have a fixed number of weeks in Gregorian calendars
406
406
  * @default undefined
407
407
  */
408
408
  fixedWeekNumber: _propTypes.default.number,
@@ -121,8 +121,8 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
121
121
  */
122
122
  displayWeekNumber: _propTypes.default.bool,
123
123
  /**
124
- * Calendar will show more weeks in order to match this value.
125
- * Put it to 6 for having fix number of week in Gregorian calendars
124
+ * The day view will show as many weeks as needed after the end of the current month to match this value.
125
+ * Put it to 6 to have a fixed number of weeks in Gregorian calendars
126
126
  * @default undefined
127
127
  */
128
128
  fixedWeekNumber: _propTypes.default.number,