@mui/x-date-pickers 7.4.0 → 7.5.1

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 (159) hide show
  1. package/AdapterDateFns/AdapterDateFns.d.ts +5 -0
  2. package/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -5
  3. package/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -2
  4. package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +3 -20
  5. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +14 -227
  6. package/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts +3 -20
  7. package/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +17 -230
  8. package/AdapterDateFnsV3/AdapterDateFnsV3.d.ts +5 -0
  9. package/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -1
  10. package/AdapterMomentJalaali/AdapterMomentJalaali.js +2 -6
  11. package/CHANGELOG.md +132 -5395
  12. package/DateCalendar/DateCalendar.js +6 -5
  13. package/DateField/DateField.js +1 -1
  14. package/DatePicker/DatePicker.js +1 -1
  15. package/DatePicker/DatePickerToolbar.js +1 -1
  16. package/DateTimeField/DateTimeField.js +1 -1
  17. package/DateTimePicker/DateTimePicker.js +1 -1
  18. package/DateTimePicker/DateTimePickerTabs.js +1 -1
  19. package/DateTimePicker/DateTimePickerToolbar.js +1 -27
  20. package/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -10
  21. package/DesktopDatePicker/DesktopDatePicker.js +1 -1
  22. package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
  23. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +5 -4
  24. package/DesktopTimePicker/DesktopTimePicker.js +1 -1
  25. package/DigitalClock/DigitalClock.js +1 -1
  26. package/LocalizationProvider/LocalizationProvider.js +1 -1
  27. package/MobileDatePicker/MobileDatePicker.js +1 -1
  28. package/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  29. package/MobileTimePicker/MobileTimePicker.js +1 -1
  30. package/MonthCalendar/MonthCalendar.js +1 -1
  31. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  32. package/PickersActionBar/PickersActionBar.js +1 -1
  33. package/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
  34. package/PickersDay/PickersDay.js +1 -1
  35. package/PickersLayout/PickersLayout.d.ts +1 -2
  36. package/PickersLayout/PickersLayout.js +2 -14
  37. package/PickersLayout/usePickerLayout.js +6 -7
  38. package/PickersSectionList/PickersSectionList.js +1 -1
  39. package/PickersShortcuts/PickersShortcuts.js +1 -1
  40. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +1 -1
  41. package/PickersTextField/PickersInput/PickersInput.js +1 -1
  42. package/PickersTextField/PickersInputBase/PickersInputBase.js +1 -1
  43. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +1 -1
  44. package/PickersTextField/PickersTextField.js +1 -1
  45. package/StaticDatePicker/StaticDatePicker.js +1 -1
  46. package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  47. package/StaticTimePicker/StaticTimePicker.js +1 -1
  48. package/TimeClock/TimeClock.js +1 -1
  49. package/TimeField/TimeField.js +1 -1
  50. package/TimePicker/TimePicker.js +1 -1
  51. package/TimePicker/TimePickerToolbar.js +1 -19
  52. package/YearCalendar/YearCalendar.js +1 -1
  53. package/index.js +1 -1
  54. package/internals/components/PickersModalDialog.d.ts +2 -2
  55. package/internals/demo/DemoContainer.js +1 -1
  56. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
  57. package/internals/hooks/useField/useFieldV6TextField.js +1 -1
  58. package/internals/hooks/usePicker/usePickerViews.d.ts +2 -3
  59. package/internals/hooks/usePicker/usePickerViews.js +3 -5
  60. package/modern/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -2
  61. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +14 -227
  62. package/modern/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +17 -230
  63. package/modern/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -1
  64. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +2 -6
  65. package/modern/DateCalendar/DateCalendar.js +6 -5
  66. package/modern/DateField/DateField.js +1 -1
  67. package/modern/DatePicker/DatePicker.js +1 -1
  68. package/modern/DatePicker/DatePickerToolbar.js +1 -1
  69. package/modern/DateTimeField/DateTimeField.js +1 -1
  70. package/modern/DateTimePicker/DateTimePicker.js +1 -1
  71. package/modern/DateTimePicker/DateTimePickerTabs.js +1 -1
  72. package/modern/DateTimePicker/DateTimePickerToolbar.js +1 -27
  73. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -10
  74. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
  75. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
  76. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +5 -4
  77. package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -1
  78. package/modern/DigitalClock/DigitalClock.js +1 -1
  79. package/modern/LocalizationProvider/LocalizationProvider.js +1 -1
  80. package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
  81. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  82. package/modern/MobileTimePicker/MobileTimePicker.js +1 -1
  83. package/modern/MonthCalendar/MonthCalendar.js +1 -1
  84. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  85. package/modern/PickersActionBar/PickersActionBar.js +1 -1
  86. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
  87. package/modern/PickersDay/PickersDay.js +1 -1
  88. package/modern/PickersLayout/PickersLayout.js +2 -14
  89. package/modern/PickersLayout/usePickerLayout.js +6 -7
  90. package/modern/PickersSectionList/PickersSectionList.js +1 -1
  91. package/modern/PickersShortcuts/PickersShortcuts.js +1 -1
  92. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +1 -1
  93. package/modern/PickersTextField/PickersInput/PickersInput.js +1 -1
  94. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +1 -1
  95. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +1 -1
  96. package/modern/PickersTextField/PickersTextField.js +1 -1
  97. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  98. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  99. package/modern/StaticTimePicker/StaticTimePicker.js +1 -1
  100. package/modern/TimeClock/TimeClock.js +1 -1
  101. package/modern/TimeField/TimeField.js +1 -1
  102. package/modern/TimePicker/TimePicker.js +1 -1
  103. package/modern/TimePicker/TimePickerToolbar.js +1 -19
  104. package/modern/YearCalendar/YearCalendar.js +1 -1
  105. package/modern/index.js +1 -1
  106. package/modern/internals/demo/DemoContainer.js +1 -1
  107. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
  108. package/modern/internals/hooks/useField/useFieldV6TextField.js +1 -1
  109. package/modern/internals/hooks/usePicker/usePickerViews.js +3 -5
  110. package/node/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -2
  111. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +14 -227
  112. package/node/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +17 -230
  113. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +2 -6
  114. package/node/DateCalendar/DateCalendar.js +6 -5
  115. package/node/DateField/DateField.js +1 -1
  116. package/node/DatePicker/DatePicker.js +1 -1
  117. package/node/DatePicker/DatePickerToolbar.js +1 -1
  118. package/node/DateTimeField/DateTimeField.js +1 -1
  119. package/node/DateTimePicker/DateTimePicker.js +1 -1
  120. package/node/DateTimePicker/DateTimePickerTabs.js +1 -1
  121. package/node/DateTimePicker/DateTimePickerToolbar.js +1 -27
  122. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -10
  123. package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
  124. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
  125. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +5 -4
  126. package/node/DesktopTimePicker/DesktopTimePicker.js +1 -1
  127. package/node/DigitalClock/DigitalClock.js +1 -1
  128. package/node/LocalizationProvider/LocalizationProvider.js +1 -1
  129. package/node/MobileDatePicker/MobileDatePicker.js +1 -1
  130. package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  131. package/node/MobileTimePicker/MobileTimePicker.js +1 -1
  132. package/node/MonthCalendar/MonthCalendar.js +1 -1
  133. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  134. package/node/PickersActionBar/PickersActionBar.js +1 -1
  135. package/node/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
  136. package/node/PickersDay/PickersDay.js +1 -1
  137. package/node/PickersLayout/PickersLayout.js +1 -12
  138. package/node/PickersLayout/usePickerLayout.js +6 -7
  139. package/node/PickersSectionList/PickersSectionList.js +1 -1
  140. package/node/PickersShortcuts/PickersShortcuts.js +1 -1
  141. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +1 -1
  142. package/node/PickersTextField/PickersInput/PickersInput.js +1 -1
  143. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +1 -1
  144. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +1 -1
  145. package/node/PickersTextField/PickersTextField.js +1 -1
  146. package/node/StaticDatePicker/StaticDatePicker.js +1 -1
  147. package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  148. package/node/StaticTimePicker/StaticTimePicker.js +1 -1
  149. package/node/TimeClock/TimeClock.js +1 -1
  150. package/node/TimeField/TimeField.js +1 -1
  151. package/node/TimePicker/TimePicker.js +1 -1
  152. package/node/TimePicker/TimePickerToolbar.js +1 -19
  153. package/node/YearCalendar/YearCalendar.js +1 -1
  154. package/node/index.js +1 -1
  155. package/node/internals/demo/DemoContainer.js +1 -1
  156. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
  157. package/node/internals/hooks/useField/useFieldV6TextField.js +1 -1
  158. package/node/internals/hooks/usePicker/usePickerViews.js +3 -5
  159. package/package.json +2 -2
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v7.4.0
2
+ * @mui/x-date-pickers v7.5.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import Stack, { stackClasses } from '@mui/material/Stack';
4
4
  import Typography from '@mui/material/Typography';
5
5
  import { textFieldClasses } from '@mui/material/TextField';
6
- import { pickersTextFieldClasses } from '@mui/x-date-pickers/PickersTextField';
6
+ import { pickersTextFieldClasses } from '../../PickersTextField';
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  const getChildTypeFromChildName = childName => {
9
9
  if (childName.match(/^([A-Za-z]+)Range(Calendar|Clock)$/)) {
@@ -121,7 +121,8 @@ export const useDesktopPicker = _ref => {
121
121
  // TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged
122
122
  if (hasUIView) {
123
123
  fieldProps.InputProps = _extends({}, fieldProps.InputProps, {
124
- ref: containerRef,
124
+ ref: containerRef
125
+ }, !props.disableOpenPicker && {
125
126
  [`${inputAdornmentProps.position}Adornment`]: /*#__PURE__*/_jsx(InputAdornment, _extends({}, inputAdornmentProps, {
126
127
  children: /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {
127
128
  children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, innerSlotProps?.openPickerIcon))
@@ -278,7 +278,7 @@ export const useFieldV6TextField = params => {
278
278
  });
279
279
  });
280
280
  const placeholder = React.useMemo(() => {
281
- if (inPlaceholder) {
281
+ if (inPlaceholder !== undefined) {
282
282
  return inPlaceholder;
283
283
  }
284
284
  return fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRTL);
@@ -42,7 +42,6 @@ export const usePickerViews = ({
42
42
  views,
43
43
  openTo,
44
44
  onViewChange,
45
- disableOpenPicker,
46
45
  viewRenderers,
47
46
  timezone
48
47
  } = props;
@@ -67,9 +66,7 @@ export const usePickerViews = ({
67
66
  viewModeLookup
68
67
  } = React.useMemo(() => views.reduce((acc, viewForReduce) => {
69
68
  let viewMode;
70
- if (disableOpenPicker) {
71
- viewMode = 'field';
72
- } else if (viewRenderers[viewForReduce] != null) {
69
+ if (viewRenderers[viewForReduce] != null) {
73
70
  viewMode = 'UI';
74
71
  } else {
75
72
  viewMode = 'field';
@@ -82,7 +79,7 @@ export const usePickerViews = ({
82
79
  }, {
83
80
  hasUIView: false,
84
81
  viewModeLookup: {}
85
- }), [disableOpenPicker, viewRenderers, views]);
82
+ }), [viewRenderers, views]);
86
83
  const timeViewsCount = React.useMemo(() => views.reduce((acc, viewForReduce) => {
87
84
  if (viewRenderers[viewForReduce] != null && isTimeView(viewForReduce)) {
88
85
  return acc + 1;
@@ -100,6 +97,7 @@ export const usePickerViews = ({
100
97
  if (currentViewMode === 'field' && open) {
101
98
  onClose();
102
99
  setTimeout(() => {
100
+ fieldRef?.current?.setSelectedSections(view);
103
101
  // focusing the input before the range selection is done
104
102
  // calling it outside of timeout results in an inconsistent behavior between Safari And Chrome
105
103
  fieldRef?.current?.focusField(view);
@@ -227,7 +227,7 @@ class AdapterDateFnsBase {
227
227
  constructor(props) {
228
228
  this.isMUIAdapter = true;
229
229
  this.isTimezoneCompatible = false;
230
- this.lib = 'date-fns';
230
+ this.lib = void 0;
231
231
  this.locale = void 0;
232
232
  this.formats = void 0;
233
233
  this.formatTokenMap = formatTokenMap;
@@ -292,11 +292,13 @@ class AdapterDateFnsBase {
292
292
  const {
293
293
  locale,
294
294
  formats,
295
- longFormatters
295
+ longFormatters,
296
+ lib
296
297
  } = props;
297
298
  this.locale = locale;
298
299
  this.formats = (0, _extends2.default)({}, defaultFormats, formats);
299
300
  this.longFormatters = longFormatters;
301
+ this.lib = lib || 'date-fns';
300
302
  }
301
303
  }
302
304
  exports.AdapterDateFnsBase = AdapterDateFnsBase;
@@ -50,175 +50,11 @@ var _startOfYear = _interopRequireDefault(require("date-fns-jalali/startOfYear")
50
50
  var _isWithinInterval = _interopRequireDefault(require("date-fns-jalali/isWithinInterval"));
51
51
  var _faIR = _interopRequireDefault(require("date-fns-jalali/locale/fa-IR"));
52
52
  var _longFormatters = _interopRequireDefault(require("date-fns-jalali/_lib/format/longFormatters"));
53
+ var _AdapterDateFnsBase = require("../AdapterDateFnsBase");
53
54
  /* eslint-disable class-methods-use-this */
54
55
 
55
56
  // @ts-ignore
56
57
 
57
- const formatTokenMap = {
58
- // Year
59
- y: {
60
- sectionType: 'year',
61
- contentType: 'digit',
62
- maxLength: 4
63
- },
64
- yy: 'year',
65
- yyy: {
66
- sectionType: 'year',
67
- contentType: 'digit',
68
- maxLength: 4
69
- },
70
- yyyy: 'year',
71
- // Month
72
- M: {
73
- sectionType: 'month',
74
- contentType: 'digit',
75
- maxLength: 2
76
- },
77
- MM: 'month',
78
- MMMM: {
79
- sectionType: 'month',
80
- contentType: 'letter'
81
- },
82
- MMM: {
83
- sectionType: 'month',
84
- contentType: 'letter'
85
- },
86
- L: {
87
- sectionType: 'month',
88
- contentType: 'digit',
89
- maxLength: 2
90
- },
91
- LL: 'month',
92
- LLL: {
93
- sectionType: 'month',
94
- contentType: 'letter'
95
- },
96
- LLLL: {
97
- sectionType: 'month',
98
- contentType: 'letter'
99
- },
100
- // Day of the month
101
- d: {
102
- sectionType: 'day',
103
- contentType: 'digit',
104
- maxLength: 2
105
- },
106
- dd: 'day',
107
- do: {
108
- sectionType: 'day',
109
- contentType: 'digit-with-letter'
110
- },
111
- // Day of the week
112
- E: {
113
- sectionType: 'weekDay',
114
- contentType: 'letter'
115
- },
116
- EE: {
117
- sectionType: 'weekDay',
118
- contentType: 'letter'
119
- },
120
- EEE: {
121
- sectionType: 'weekDay',
122
- contentType: 'letter'
123
- },
124
- EEEE: {
125
- sectionType: 'weekDay',
126
- contentType: 'letter'
127
- },
128
- EEEEE: {
129
- sectionType: 'weekDay',
130
- contentType: 'letter'
131
- },
132
- i: {
133
- sectionType: 'weekDay',
134
- contentType: 'digit',
135
- maxLength: 1
136
- },
137
- ii: 'weekDay',
138
- iii: {
139
- sectionType: 'weekDay',
140
- contentType: 'letter'
141
- },
142
- iiii: {
143
- sectionType: 'weekDay',
144
- contentType: 'letter'
145
- },
146
- e: {
147
- sectionType: 'weekDay',
148
- contentType: 'digit',
149
- maxLength: 1
150
- },
151
- ee: 'weekDay',
152
- eee: {
153
- sectionType: 'weekDay',
154
- contentType: 'letter'
155
- },
156
- eeee: {
157
- sectionType: 'weekDay',
158
- contentType: 'letter'
159
- },
160
- eeeee: {
161
- sectionType: 'weekDay',
162
- contentType: 'letter'
163
- },
164
- eeeeee: {
165
- sectionType: 'weekDay',
166
- contentType: 'letter'
167
- },
168
- c: {
169
- sectionType: 'weekDay',
170
- contentType: 'digit',
171
- maxLength: 1
172
- },
173
- cc: 'weekDay',
174
- ccc: {
175
- sectionType: 'weekDay',
176
- contentType: 'letter'
177
- },
178
- cccc: {
179
- sectionType: 'weekDay',
180
- contentType: 'letter'
181
- },
182
- ccccc: {
183
- sectionType: 'weekDay',
184
- contentType: 'letter'
185
- },
186
- cccccc: {
187
- sectionType: 'weekDay',
188
- contentType: 'letter'
189
- },
190
- // Meridiem
191
- a: 'meridiem',
192
- aa: 'meridiem',
193
- aaa: 'meridiem',
194
- // Hours
195
- H: {
196
- sectionType: 'hours',
197
- contentType: 'digit',
198
- maxLength: 2
199
- },
200
- HH: 'hours',
201
- h: {
202
- sectionType: 'hours',
203
- contentType: 'digit',
204
- maxLength: 2
205
- },
206
- hh: 'hours',
207
- // Minutes
208
- m: {
209
- sectionType: 'minutes',
210
- contentType: 'digit',
211
- maxLength: 2
212
- },
213
- mm: 'minutes',
214
- // Seconds
215
- s: {
216
- sectionType: 'seconds',
217
- contentType: 'digit',
218
- maxLength: 2
219
- },
220
- ss: 'seconds'
221
- };
222
58
  const defaultFormats = {
223
59
  year: 'yyyy',
224
60
  month: 'LLLL',
@@ -281,40 +117,22 @@ const NUMBER_SYMBOL_MAP = {
281
117
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
282
118
  * SOFTWARE.
283
119
  */
284
- class AdapterDateFnsJalali {
120
+ class AdapterDateFnsJalali extends _AdapterDateFnsBase.AdapterDateFnsBase {
285
121
  constructor({
286
- locale: _locale,
122
+ locale,
287
123
  formats
288
124
  } = {}) {
289
- this.isMUIAdapter = true;
290
- this.isTimezoneCompatible = false;
291
- this.lib = 'date-fns-jalali';
292
- this.locale = void 0;
293
- this.formats = void 0;
294
- this.formatTokenMap = formatTokenMap;
295
- this.escapedCharacters = {
296
- start: "'",
297
- end: "'"
298
- };
299
- this.date = value => {
300
- if (typeof value === 'undefined') {
301
- return new Date();
302
- }
303
- if (value === null) {
304
- return null;
305
- }
306
- return new Date(value);
307
- };
308
- this.getInvalidDate = () => new Date('Invalid Date');
309
- this.getTimezone = () => {
310
- return 'default';
311
- };
312
- this.setTimezone = value => {
313
- return value;
314
- };
315
- this.toJsDate = value => {
316
- return value;
317
- };
125
+ if (typeof _addDays.default !== 'function') {
126
+ throw new Error(['MUI: The `date-fns-jalali` package v3.x is not compatible with this adapter.', 'Please, install v2.x of the package or use the `AdapterDateFnsJalaliV3` instead.'].join('\n'));
127
+ }
128
+ super({
129
+ locale: locale ?? _faIR.default,
130
+ // some formats are different in jalali adapter,
131
+ // this ensures that `AdapterDateFnsBase` formats are overridden
132
+ formats: (0, _extends2.default)({}, defaultFormats, formats),
133
+ longFormatters: _longFormatters.default,
134
+ lib: 'date-fns-jalali'
135
+ });
318
136
  this.parse = (value, format) => {
319
137
  if (value === '') {
320
138
  return null;
@@ -326,29 +144,6 @@ class AdapterDateFnsJalali {
326
144
  this.getCurrentLocaleCode = () => {
327
145
  return this.locale?.code || 'fa-IR';
328
146
  };
329
- // Note: date-fns input types are more lenient than this adapter, so we need to expose our more
330
- // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
331
- this.is12HourCycleInCurrentLocale = () => {
332
- if (this.locale) {
333
- return /a/.test(this.locale.formatLong.time());
334
- }
335
-
336
- // By default, date-fns-jalali is using fa-IR locale with am/pm enabled
337
- return true;
338
- };
339
- this.expandFormat = format => {
340
- // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31
341
- const longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
342
- const locale = this.locale ?? _faIR.default;
343
- return format.match(longFormatRegexp).map(token => {
344
- const firstCharacter = token[0];
345
- if (firstCharacter === 'p' || firstCharacter === 'P') {
346
- const longFormatter = _longFormatters.default[firstCharacter];
347
- return longFormatter(token, locale.formatLong, {});
348
- }
349
- return token;
350
- }).join('');
351
- };
352
147
  this.isValid = value => {
353
148
  if (value == null) {
354
149
  return false;
@@ -536,14 +331,6 @@ class AdapterDateFnsJalali {
536
331
  }
537
332
  return years;
538
333
  };
539
- if (typeof _addDays.default !== 'function') {
540
- throw new Error(['MUI: The `date-fns-jalali` package v3.x is not compatible with this adapter.', 'Please, install v2.x of the package or use the `AdapterDateFnsJalaliV3` instead.'].join('\n'));
541
- }
542
- this.locale = _locale;
543
- this.formats = (0, _extends2.default)({}, defaultFormats, formats);
544
- }
545
- getDayOfWeek(value) {
546
- return value.getDay() + 1;
547
334
  }
548
335
  }
549
336
  exports.AdapterDateFnsJalali = AdapterDateFnsJalali;
@@ -49,6 +49,7 @@ var _startOfWeek = require("date-fns-jalali/startOfWeek");
49
49
  var _startOfYear = require("date-fns-jalali/startOfYear");
50
50
  var _isWithinInterval = require("date-fns-jalali/isWithinInterval");
51
51
  var _faIR = require("date-fns-jalali/locale/fa-IR");
52
+ var _AdapterDateFnsBase = require("../AdapterDateFnsBase");
52
53
  /* eslint-disable class-methods-use-this */
53
54
  // TODO remove when date-fns-jalali-v3 is the default
54
55
  // @ts-nocheck
@@ -56,171 +57,6 @@ var _faIR = require("date-fns-jalali/locale/fa-IR");
56
57
  // date-fns-jalali v2 does not export types
57
58
  // @ts-ignore TODO remove when date-fns-jalali-v3 is the default
58
59
 
59
- const formatTokenMap = {
60
- // Year
61
- y: {
62
- sectionType: 'year',
63
- contentType: 'digit',
64
- maxLength: 4
65
- },
66
- yy: 'year',
67
- yyy: {
68
- sectionType: 'year',
69
- contentType: 'digit',
70
- maxLength: 4
71
- },
72
- yyyy: 'year',
73
- // Month
74
- M: {
75
- sectionType: 'month',
76
- contentType: 'digit',
77
- maxLength: 2
78
- },
79
- MM: 'month',
80
- MMMM: {
81
- sectionType: 'month',
82
- contentType: 'letter'
83
- },
84
- MMM: {
85
- sectionType: 'month',
86
- contentType: 'letter'
87
- },
88
- L: {
89
- sectionType: 'month',
90
- contentType: 'digit',
91
- maxLength: 2
92
- },
93
- LL: 'month',
94
- LLL: {
95
- sectionType: 'month',
96
- contentType: 'letter'
97
- },
98
- LLLL: {
99
- sectionType: 'month',
100
- contentType: 'letter'
101
- },
102
- // Day of the month
103
- d: {
104
- sectionType: 'day',
105
- contentType: 'digit',
106
- maxLength: 2
107
- },
108
- dd: 'day',
109
- do: {
110
- sectionType: 'day',
111
- contentType: 'digit-with-letter'
112
- },
113
- // Day of the week
114
- E: {
115
- sectionType: 'weekDay',
116
- contentType: 'letter'
117
- },
118
- EE: {
119
- sectionType: 'weekDay',
120
- contentType: 'letter'
121
- },
122
- EEE: {
123
- sectionType: 'weekDay',
124
- contentType: 'letter'
125
- },
126
- EEEE: {
127
- sectionType: 'weekDay',
128
- contentType: 'letter'
129
- },
130
- EEEEE: {
131
- sectionType: 'weekDay',
132
- contentType: 'letter'
133
- },
134
- i: {
135
- sectionType: 'weekDay',
136
- contentType: 'digit',
137
- maxLength: 1
138
- },
139
- ii: 'weekDay',
140
- iii: {
141
- sectionType: 'weekDay',
142
- contentType: 'letter'
143
- },
144
- iiii: {
145
- sectionType: 'weekDay',
146
- contentType: 'letter'
147
- },
148
- e: {
149
- sectionType: 'weekDay',
150
- contentType: 'digit',
151
- maxLength: 1
152
- },
153
- ee: 'weekDay',
154
- eee: {
155
- sectionType: 'weekDay',
156
- contentType: 'letter'
157
- },
158
- eeee: {
159
- sectionType: 'weekDay',
160
- contentType: 'letter'
161
- },
162
- eeeee: {
163
- sectionType: 'weekDay',
164
- contentType: 'letter'
165
- },
166
- eeeeee: {
167
- sectionType: 'weekDay',
168
- contentType: 'letter'
169
- },
170
- c: {
171
- sectionType: 'weekDay',
172
- contentType: 'digit',
173
- maxLength: 1
174
- },
175
- cc: 'weekDay',
176
- ccc: {
177
- sectionType: 'weekDay',
178
- contentType: 'letter'
179
- },
180
- cccc: {
181
- sectionType: 'weekDay',
182
- contentType: 'letter'
183
- },
184
- ccccc: {
185
- sectionType: 'weekDay',
186
- contentType: 'letter'
187
- },
188
- cccccc: {
189
- sectionType: 'weekDay',
190
- contentType: 'letter'
191
- },
192
- // Meridiem
193
- a: 'meridiem',
194
- aa: 'meridiem',
195
- aaa: 'meridiem',
196
- // Hours
197
- H: {
198
- sectionType: 'hours',
199
- contentType: 'digit',
200
- maxLength: 2
201
- },
202
- HH: 'hours',
203
- h: {
204
- sectionType: 'hours',
205
- contentType: 'digit',
206
- maxLength: 2
207
- },
208
- hh: 'hours',
209
- // Minutes
210
- m: {
211
- sectionType: 'minutes',
212
- contentType: 'digit',
213
- maxLength: 2
214
- },
215
- mm: 'minutes',
216
- // Seconds
217
- s: {
218
- sectionType: 'seconds',
219
- contentType: 'digit',
220
- maxLength: 2
221
- },
222
- ss: 'seconds'
223
- };
224
60
  const defaultFormats = {
225
61
  year: 'yyyy',
226
62
  month: 'LLLL',
@@ -283,40 +119,25 @@ const NUMBER_SYMBOL_MAP = {
283
119
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
284
120
  * SOFTWARE.
285
121
  */
286
- class AdapterDateFnsJalali {
122
+ class AdapterDateFnsJalali extends _AdapterDateFnsBase.AdapterDateFnsBase {
287
123
  constructor({
288
- locale: _locale,
124
+ locale,
289
125
  formats
290
126
  } = {}) {
291
- this.isMUIAdapter = true;
292
- this.isTimezoneCompatible = false;
293
- this.lib = 'date-fns-jalali';
294
- this.locale = void 0;
295
- this.formats = void 0;
296
- this.formatTokenMap = formatTokenMap;
297
- this.escapedCharacters = {
298
- start: "'",
299
- end: "'"
300
- };
301
- this.date = value => {
302
- if (typeof value === 'undefined') {
303
- return new Date();
304
- }
305
- if (value === null) {
306
- return null;
307
- }
308
- return new Date(value);
309
- };
310
- this.getInvalidDate = () => new Date('Invalid Date');
311
- this.getTimezone = () => {
312
- return 'default';
313
- };
314
- this.setTimezone = value => {
315
- return value;
316
- };
317
- this.toJsDate = value => {
318
- return value;
319
- };
127
+ if (typeof _addDays.addDays !== 'function') {
128
+ throw new Error([`MUI: The \`date-fns-jalali\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x of the package or use the `AdapterDateFnsJalali` instead.'].join('\n'));
129
+ }
130
+ if (!_format.longFormatters) {
131
+ throw new Error('MUI: The minimum supported `date-fns-jalali` package version compatible with this adapter is `3.2.x`.');
132
+ }
133
+ super({
134
+ locale: locale ?? _faIR.faIR,
135
+ // some formats are different in jalali adapter,
136
+ // this ensures that `AdapterDateFnsBase` formats are overridden
137
+ formats: (0, _extends2.default)({}, defaultFormats, formats),
138
+ longFormatters: _format.longFormatters,
139
+ lib: 'date-fns-jalali'
140
+ });
320
141
  this.parse = (value, format) => {
321
142
  if (value === '') {
322
143
  return null;
@@ -328,29 +149,6 @@ class AdapterDateFnsJalali {
328
149
  this.getCurrentLocaleCode = () => {
329
150
  return this.locale?.code || 'fa-IR';
330
151
  };
331
- // Note: date-fns input types are more lenient than this adapter, so we need to expose our more
332
- // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
333
- this.is12HourCycleInCurrentLocale = () => {
334
- if (this.locale) {
335
- return /a/.test(this.locale.formatLong.time());
336
- }
337
-
338
- // By default, date-fns-jalali is using fa-IR locale with am/pm enabled
339
- return true;
340
- };
341
- this.expandFormat = format => {
342
- // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31
343
- const longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
344
- const locale = this.locale ?? _faIR.faIR;
345
- return format.match(longFormatRegexp).map(token => {
346
- const firstCharacter = token[0];
347
- if (firstCharacter === 'p' || firstCharacter === 'P') {
348
- const longFormatter = _format.longFormatters[firstCharacter];
349
- return longFormatter(token, locale.formatLong, {});
350
- }
351
- return token;
352
- }).join('');
353
- };
354
152
  this.isValid = value => {
355
153
  if (value == null) {
356
154
  return false;
@@ -538,17 +336,6 @@ class AdapterDateFnsJalali {
538
336
  }
539
337
  return years;
540
338
  };
541
- if (typeof _addDays.addDays !== 'function') {
542
- throw new Error([`MUI: The \`date-fns-jalali\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x of the package or use the `AdapterDateFnsJalali` instead.'].join('\n'));
543
- }
544
- if (!_format.longFormatters) {
545
- throw new Error('MUI: The minimum supported `date-fns-jalali` package version compatible with this adapter is `3.2.x`.');
546
- }
547
- this.locale = _locale;
548
- this.formats = (0, _extends2.default)({}, defaultFormats, formats);
549
- }
550
- getDayOfWeek(value) {
551
- return value.getDay() + 1;
552
339
  }
553
340
  }
554
341
  exports.AdapterDateFnsJalali = AdapterDateFnsJalali;
@@ -171,14 +171,10 @@ class AdapterMomentJalaali extends _AdapterMoment.AdapterMoment {
171
171
  return numberToFormat.replace(/\d/g, match => NUMBER_SYMBOL_MAP[match]).replace(/,/g, '،');
172
172
  };
173
173
  this.isSameYear = (value, comparing) => {
174
- // `isSame` seems to mutate the date on `moment-jalaali`
175
- // @ts-ignore
176
- return value.clone().isSame(comparing, 'jYear');
174
+ return value.jYear() === comparing.jYear();
177
175
  };
178
176
  this.isSameMonth = (value, comparing) => {
179
- // `isSame` seems to mutate the date on `moment-jalaali`
180
- // @ts-ignore
181
- return value.clone().isSame(comparing, 'jMonth');
177
+ return value.jYear() === comparing.jYear() && value.jMonth() === comparing.jMonth();
182
178
  };
183
179
  this.isAfterYear = (value, comparing) => {
184
180
  return value.jYear() > comparing.jYear();