@mui/x-date-pickers 5.0.2 → 6.0.0-alpha.0

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 (252) hide show
  1. package/CHANGELOG.md +212 -3
  2. package/CalendarPicker/CalendarPicker.d.ts +8 -2
  3. package/CalendarPicker/CalendarPicker.js +54 -71
  4. package/CalendarPicker/DayPicker.d.ts +2 -2
  5. package/CalendarPicker/DayPicker.js +6 -2
  6. package/CalendarPicker/PickersCalendarHeader.d.ts +3 -10
  7. package/CalendarPicker/PickersCalendarHeader.js +7 -20
  8. package/CalendarPicker/useCalendarState.d.ts +2 -2
  9. package/CalendarPicker/useCalendarState.js +7 -7
  10. package/ClockPicker/Clock.d.ts +9 -4
  11. package/ClockPicker/Clock.js +13 -13
  12. package/ClockPicker/ClockNumbers.d.ts +3 -3
  13. package/ClockPicker/ClockNumbers.js +2 -2
  14. package/ClockPicker/ClockPicker.d.ts +8 -58
  15. package/ClockPicker/ClockPicker.js +52 -128
  16. package/ClockPicker/ClockPointer.d.ts +1 -1
  17. package/ClockPicker/ClockPointer.js +4 -4
  18. package/DateField/useDateField.d.ts +1 -1
  19. package/DateField/useDateField.js +5 -1
  20. package/DatePicker/DatePicker.js +10 -20
  21. package/DateTimePicker/DateTimePicker.js +10 -39
  22. package/DesktopDatePicker/DesktopDatePicker.d.ts +1 -1
  23. package/DesktopDatePicker/DesktopDatePicker.js +14 -22
  24. package/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +1 -1
  25. package/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -40
  26. package/DesktopTimePicker/DesktopTimePicker.d.ts +1 -1
  27. package/DesktopTimePicker/DesktopTimePicker.js +9 -21
  28. package/LocalizationProvider/LocalizationProvider.d.ts +10 -11
  29. package/LocalizationProvider/LocalizationProvider.js +31 -24
  30. package/MobileDatePicker/MobileDatePicker.d.ts +1 -1
  31. package/MobileDatePicker/MobileDatePicker.js +14 -22
  32. package/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -1
  33. package/MobileDateTimePicker/MobileDateTimePicker.js +13 -40
  34. package/MobileTimePicker/MobileTimePicker.d.ts +1 -1
  35. package/MobileTimePicker/MobileTimePicker.js +9 -21
  36. package/MonthPicker/MonthPicker.d.ts +12 -9
  37. package/MonthPicker/MonthPicker.js +60 -57
  38. package/MonthPicker/PickersMonth.d.ts +10 -7
  39. package/MonthPicker/PickersMonth.js +76 -44
  40. package/MonthPicker/pickersMonthClasses.d.ts +9 -1
  41. package/MonthPicker/pickersMonthClasses.js +1 -1
  42. package/PickersDay/PickersDay.d.ts +0 -6
  43. package/PickersDay/PickersDay.js +0 -5
  44. package/StaticDatePicker/StaticDatePicker.d.ts +1 -1
  45. package/StaticDatePicker/StaticDatePicker.js +17 -23
  46. package/StaticDateTimePicker/StaticDateTimePicker.d.ts +1 -1
  47. package/StaticDateTimePicker/StaticDateTimePicker.js +17 -42
  48. package/StaticTimePicker/StaticTimePicker.d.ts +1 -1
  49. package/StaticTimePicker/StaticTimePicker.js +17 -22
  50. package/TimePicker/TimePicker.js +5 -19
  51. package/YearPicker/PickersYear.d.ts +7 -6
  52. package/YearPicker/PickersYear.js +34 -23
  53. package/YearPicker/YearPicker.d.ts +21 -4
  54. package/YearPicker/YearPicker.js +109 -49
  55. package/YearPicker/pickersYearClasses.d.ts +1 -1
  56. package/index.js +1 -1
  57. package/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js +2 -2
  58. package/internals/components/PickerStaticWrapper/PickerStaticWrapper.d.ts +20 -6
  59. package/internals/components/PickerStaticWrapper/PickerStaticWrapper.js +38 -22
  60. package/internals/components/PickerStaticWrapper/index.d.ts +1 -1
  61. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.d.ts +3 -0
  62. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +166 -0
  63. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +63 -0
  64. package/internals/{models/muiPickersAdapter.js → components/PickersArrowSwitcher/PickersArrowSwitcher.types.js} +0 -0
  65. package/internals/components/PickersArrowSwitcher/index.d.ts +2 -0
  66. package/internals/components/PickersArrowSwitcher/index.js +1 -0
  67. package/internals/components/{pickersArrowSwitcherClasses.d.ts → PickersArrowSwitcher/pickersArrowSwitcherClasses.d.ts} +0 -0
  68. package/internals/components/{pickersArrowSwitcherClasses.js → PickersArrowSwitcher/pickersArrowSwitcherClasses.js} +0 -0
  69. package/internals/components/PickersPopper.d.ts +2 -6
  70. package/internals/components/PickersPopper.js +5 -5
  71. package/internals/components/PickersToolbar.d.ts +1 -1
  72. package/internals/components/PickersToolbar.js +1 -2
  73. package/internals/components/PickersToolbarText.d.ts +1 -1
  74. package/internals/components/wrappers/DesktopTooltipWrapper.d.ts +1 -1
  75. package/internals/components/wrappers/DesktopTooltipWrapper.js +29 -24
  76. package/internals/components/wrappers/DesktopWrapper.d.ts +8 -3
  77. package/internals/components/wrappers/DesktopWrapper.js +26 -21
  78. package/internals/components/wrappers/MobileWrapper.d.ts +8 -3
  79. package/internals/components/wrappers/MobileWrapper.js +23 -18
  80. package/internals/hooks/useField/useField.interfaces.d.ts +0 -1
  81. package/internals/hooks/useField/useField.js +19 -23
  82. package/internals/hooks/useField/useField.utils.js +10 -2
  83. package/internals/hooks/useUtils.d.ts +5 -2
  84. package/internals/hooks/useUtils.js +11 -2
  85. package/internals/hooks/validation/useDateValidation.d.ts +4 -4
  86. package/internals/hooks/validation/useDateValidation.js +12 -2
  87. package/internals/index.d.ts +5 -5
  88. package/internals/index.js +3 -3
  89. package/internals/models/muiPickersAdapter.d.ts +12 -7
  90. package/internals/models/props/baseToolbarProps.d.ts +0 -8
  91. package/internals/models/props/staticPickerProps.d.ts +2 -8
  92. package/legacy/CalendarPicker/CalendarPicker.js +52 -69
  93. package/legacy/CalendarPicker/DayPicker.js +6 -2
  94. package/legacy/CalendarPicker/PickersCalendarHeader.js +7 -20
  95. package/legacy/CalendarPicker/useCalendarState.js +7 -7
  96. package/legacy/ClockPicker/Clock.js +13 -13
  97. package/legacy/ClockPicker/ClockNumbers.js +2 -2
  98. package/legacy/ClockPicker/ClockPicker.js +57 -133
  99. package/legacy/ClockPicker/ClockPointer.js +4 -4
  100. package/legacy/DateField/useDateField.js +5 -1
  101. package/legacy/DatePicker/DatePicker.js +10 -20
  102. package/legacy/DateTimePicker/DateTimePicker.js +10 -39
  103. package/legacy/DesktopDatePicker/DesktopDatePicker.js +13 -21
  104. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -40
  105. package/legacy/DesktopTimePicker/DesktopTimePicker.js +8 -20
  106. package/legacy/LocalizationProvider/LocalizationProvider.js +28 -23
  107. package/legacy/MobileDatePicker/MobileDatePicker.js +13 -21
  108. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +13 -40
  109. package/legacy/MobileTimePicker/MobileTimePicker.js +8 -20
  110. package/legacy/MonthPicker/MonthPicker.js +67 -62
  111. package/legacy/MonthPicker/PickersMonth.js +89 -57
  112. package/legacy/MonthPicker/pickersMonthClasses.js +1 -1
  113. package/legacy/PickersDay/PickersDay.js +0 -5
  114. package/legacy/StaticDatePicker/StaticDatePicker.js +17 -24
  115. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +17 -43
  116. package/legacy/StaticTimePicker/StaticTimePicker.js +17 -23
  117. package/legacy/TimePicker/TimePicker.js +5 -19
  118. package/legacy/YearPicker/PickersYear.js +35 -25
  119. package/legacy/YearPicker/YearPicker.js +111 -51
  120. package/legacy/index.js +1 -1
  121. package/legacy/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js +2 -2
  122. package/legacy/internals/components/PickerStaticWrapper/PickerStaticWrapper.js +41 -24
  123. package/legacy/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +180 -0
  124. package/legacy/internals/{models/muiPickersAdapter.js → components/PickersArrowSwitcher/PickersArrowSwitcher.types.js} +0 -0
  125. package/legacy/internals/components/PickersArrowSwitcher/index.js +1 -0
  126. package/legacy/internals/components/{pickersArrowSwitcherClasses.js → PickersArrowSwitcher/pickersArrowSwitcherClasses.js} +0 -0
  127. package/legacy/internals/components/PickersPopper.js +5 -5
  128. package/legacy/internals/components/PickersToolbar.js +1 -2
  129. package/legacy/internals/components/wrappers/DesktopTooltipWrapper.js +29 -24
  130. package/legacy/internals/components/wrappers/DesktopWrapper.js +26 -21
  131. package/legacy/internals/components/wrappers/MobileWrapper.js +22 -17
  132. package/legacy/internals/hooks/useField/useField.js +21 -23
  133. package/legacy/internals/hooks/useField/useField.utils.js +10 -2
  134. package/legacy/internals/hooks/useUtils.js +13 -2
  135. package/legacy/internals/hooks/validation/useDateValidation.js +12 -2
  136. package/legacy/internals/index.js +3 -3
  137. package/legacy/locales/faIR.js +52 -0
  138. package/legacy/locales/fiFI.js +61 -0
  139. package/legacy/locales/index.js +2 -0
  140. package/legacy/locales/isIS.js +0 -1
  141. package/locales/faIR.d.ts +35 -0
  142. package/locales/faIR.js +36 -0
  143. package/locales/fiFI.d.ts +35 -0
  144. package/locales/fiFI.js +45 -0
  145. package/locales/index.d.ts +2 -0
  146. package/locales/index.js +2 -0
  147. package/locales/isIS.js +0 -1
  148. package/locales/utils/pickersLocaleTextApi.d.ts +1 -0
  149. package/modern/CalendarPicker/CalendarPicker.js +54 -71
  150. package/modern/CalendarPicker/DayPicker.js +6 -2
  151. package/modern/CalendarPicker/PickersCalendarHeader.js +7 -20
  152. package/modern/CalendarPicker/useCalendarState.js +7 -7
  153. package/modern/ClockPicker/Clock.js +13 -13
  154. package/modern/ClockPicker/ClockNumbers.js +2 -2
  155. package/modern/ClockPicker/ClockPicker.js +52 -128
  156. package/modern/ClockPicker/ClockPointer.js +4 -4
  157. package/modern/DateField/useDateField.js +5 -1
  158. package/modern/DatePicker/DatePicker.js +10 -20
  159. package/modern/DateTimePicker/DateTimePicker.js +10 -39
  160. package/modern/DesktopDatePicker/DesktopDatePicker.js +14 -22
  161. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -40
  162. package/modern/DesktopTimePicker/DesktopTimePicker.js +9 -21
  163. package/modern/LocalizationProvider/LocalizationProvider.js +29 -24
  164. package/modern/MobileDatePicker/MobileDatePicker.js +14 -22
  165. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +13 -40
  166. package/modern/MobileTimePicker/MobileTimePicker.js +9 -21
  167. package/modern/MonthPicker/MonthPicker.js +60 -57
  168. package/modern/MonthPicker/PickersMonth.js +76 -44
  169. package/modern/MonthPicker/pickersMonthClasses.js +1 -1
  170. package/modern/PickersDay/PickersDay.js +0 -5
  171. package/modern/StaticDatePicker/StaticDatePicker.js +17 -23
  172. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +17 -42
  173. package/modern/StaticTimePicker/StaticTimePicker.js +17 -22
  174. package/modern/TimePicker/TimePicker.js +5 -19
  175. package/modern/YearPicker/PickersYear.js +34 -23
  176. package/modern/YearPicker/YearPicker.js +109 -49
  177. package/modern/index.js +1 -1
  178. package/modern/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js +2 -2
  179. package/modern/internals/components/PickerStaticWrapper/PickerStaticWrapper.js +38 -22
  180. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +164 -0
  181. package/modern/internals/{models/muiPickersAdapter.js → components/PickersArrowSwitcher/PickersArrowSwitcher.types.js} +0 -0
  182. package/modern/internals/components/PickersArrowSwitcher/index.js +1 -0
  183. package/modern/internals/components/{pickersArrowSwitcherClasses.js → PickersArrowSwitcher/pickersArrowSwitcherClasses.js} +0 -0
  184. package/modern/internals/components/PickersPopper.js +5 -5
  185. package/modern/internals/components/PickersToolbar.js +1 -2
  186. package/modern/internals/components/wrappers/DesktopTooltipWrapper.js +29 -24
  187. package/modern/internals/components/wrappers/DesktopWrapper.js +26 -21
  188. package/modern/internals/components/wrappers/MobileWrapper.js +23 -18
  189. package/modern/internals/hooks/useField/useField.js +19 -21
  190. package/modern/internals/hooks/useField/useField.utils.js +10 -2
  191. package/modern/internals/hooks/useUtils.js +11 -2
  192. package/modern/internals/hooks/validation/useDateValidation.js +12 -2
  193. package/modern/internals/index.js +3 -3
  194. package/modern/locales/faIR.js +36 -0
  195. package/modern/locales/fiFI.js +45 -0
  196. package/modern/locales/index.js +2 -0
  197. package/modern/locales/isIS.js +0 -1
  198. package/node/CalendarPicker/CalendarPicker.js +54 -71
  199. package/node/CalendarPicker/DayPicker.js +5 -1
  200. package/node/CalendarPicker/PickersCalendarHeader.js +7 -21
  201. package/node/CalendarPicker/useCalendarState.js +6 -6
  202. package/node/ClockPicker/Clock.js +12 -12
  203. package/node/ClockPicker/ClockNumbers.js +2 -2
  204. package/node/ClockPicker/ClockPicker.js +52 -129
  205. package/node/ClockPicker/ClockPointer.js +4 -4
  206. package/node/DateField/useDateField.js +5 -1
  207. package/node/DatePicker/DatePicker.js +10 -20
  208. package/node/DateTimePicker/DateTimePicker.js +10 -39
  209. package/node/DesktopDatePicker/DesktopDatePicker.js +14 -22
  210. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +13 -40
  211. package/node/DesktopTimePicker/DesktopTimePicker.js +9 -21
  212. package/node/LocalizationProvider/LocalizationProvider.js +31 -25
  213. package/node/MobileDatePicker/MobileDatePicker.js +14 -22
  214. package/node/MobileDateTimePicker/MobileDateTimePicker.js +13 -40
  215. package/node/MobileTimePicker/MobileTimePicker.js +9 -21
  216. package/node/MonthPicker/MonthPicker.js +61 -58
  217. package/node/MonthPicker/PickersMonth.js +71 -43
  218. package/node/MonthPicker/pickersMonthClasses.js +1 -1
  219. package/node/PickersDay/PickersDay.js +0 -5
  220. package/node/StaticDatePicker/StaticDatePicker.js +17 -23
  221. package/node/StaticDateTimePicker/StaticDateTimePicker.js +17 -42
  222. package/node/StaticTimePicker/StaticTimePicker.js +17 -22
  223. package/node/TimePicker/TimePicker.js +5 -19
  224. package/node/YearPicker/PickersYear.js +33 -22
  225. package/node/YearPicker/YearPicker.js +111 -49
  226. package/node/index.js +1 -1
  227. package/node/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js +2 -2
  228. package/node/internals/components/PickerStaticWrapper/PickerStaticWrapper.js +39 -22
  229. package/node/internals/components/{PickersArrowSwitcher.js → PickersArrowSwitcher/PickersArrowSwitcher.js} +102 -58
  230. package/node/internals/{models/muiPickersAdapter.js → components/PickersArrowSwitcher/PickersArrowSwitcher.types.js} +0 -0
  231. package/node/internals/components/PickersArrowSwitcher/index.js +13 -0
  232. package/node/internals/components/{pickersArrowSwitcherClasses.js → PickersArrowSwitcher/pickersArrowSwitcherClasses.js} +0 -0
  233. package/node/internals/components/PickersPopper.js +5 -5
  234. package/node/internals/components/PickersToolbar.js +1 -2
  235. package/node/internals/components/wrappers/DesktopTooltipWrapper.js +30 -24
  236. package/node/internals/components/wrappers/DesktopWrapper.js +27 -21
  237. package/node/internals/components/wrappers/MobileWrapper.js +24 -18
  238. package/node/internals/hooks/useField/useField.js +19 -23
  239. package/node/internals/hooks/useField/useField.utils.js +10 -2
  240. package/node/internals/hooks/useUtils.js +15 -2
  241. package/node/internals/hooks/validation/useDateValidation.js +14 -4
  242. package/node/internals/index.js +8 -2
  243. package/node/locales/faIR.js +45 -0
  244. package/node/locales/fiFI.js +54 -0
  245. package/node/locales/index.js +26 -0
  246. package/node/locales/isIS.js +0 -1
  247. package/package.json +4 -4
  248. package/themeAugmentation/props.d.ts +3 -3
  249. package/internals/components/PickersArrowSwitcher.d.ts +0 -62
  250. package/internals/components/PickersArrowSwitcher.js +0 -124
  251. package/legacy/internals/components/PickersArrowSwitcher.js +0 -128
  252. package/modern/internals/components/PickersArrowSwitcher.js +0 -124
@@ -70,7 +70,6 @@ const useField = params => {
70
70
  return {
71
71
  sections,
72
72
  valueParsed,
73
- valueStr: fieldValueManager.getValueStrFromSections(sections),
74
73
  selectedSectionIndexes: null
75
74
  };
76
75
  });
@@ -82,7 +81,6 @@ const useField = params => {
82
81
  } = fieldValueManager.getValueFromSections(utils, state.sections, sections, format);
83
82
  setState(prevState => (0, _extends2.default)({}, prevState, {
84
83
  sections,
85
- valueStr: fieldValueManager.getValueStrFromSections(sections),
86
84
  valueParsed: newValueParsed
87
85
  }));
88
86
 
@@ -103,28 +101,29 @@ const useField = params => {
103
101
 
104
102
  const handleInputClick = (0, _useEventCallback.default)((...args) => {
105
103
  onClick == null ? void 0 : onClick(...args);
106
-
107
- if (state.sections.length === 0) {
108
- return;
109
- }
110
-
111
104
  const nextSectionIndex = state.sections.findIndex(section => {
112
- var _inputRef$current$sel, _inputRef$current;
105
+ var _selectionStart;
113
106
 
114
- return section.start > ((_inputRef$current$sel = (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.selectionStart) != null ? _inputRef$current$sel : 0);
107
+ return section.start > ((_selectionStart = inputRef.current.selectionStart) != null ? _selectionStart : 0);
115
108
  });
116
109
  const sectionIndex = nextSectionIndex === -1 ? state.sections.length - 1 : nextSectionIndex - 1;
117
110
  updateSelectedSections(sectionIndex);
118
111
  });
119
112
  const handleInputFocus = (0, _useEventCallback.default)((...args) => {
120
- onFocus == null ? void 0 : onFocus(...args);
113
+ onFocus == null ? void 0 : onFocus(...args); // The ref is guaranteed to be resolved that this point.
114
+
115
+ const input = inputRef.current;
116
+ clearTimeout(focusTimeoutRef.current);
121
117
  focusTimeoutRef.current = setTimeout(() => {
122
- var _inputRef$current$sel2, _inputRef$current2, _inputRef$current$sel3, _inputRef$current3;
118
+ // The ref changed, the component got remounted, the focus event is no longer relevant.
119
+ if (input !== inputRef.current) {
120
+ return;
121
+ }
123
122
 
124
- if (((_inputRef$current$sel2 = (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.selectionEnd) != null ? _inputRef$current$sel2 : 0) - ((_inputRef$current$sel3 = (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.selectionStart) != null ? _inputRef$current$sel3 : 0) === 0) {
125
- handleInputClick();
126
- } else {
123
+ if (Number(input.selectionEnd) - Number(input.selectionStart) === input.value.length) {
127
124
  updateSelectedSections(0, state.sections.length - 1);
125
+ } else {
126
+ handleInputClick();
128
127
  }
129
128
  });
130
129
  });
@@ -133,17 +132,14 @@ const useField = params => {
133
132
  updateSelectedSections();
134
133
  });
135
134
  const handleInputKeyDown = (0, _useEventCallback.default)(event => {
136
- onKeyDown == null ? void 0 : onKeyDown(event);
137
-
138
- if (!inputRef.current || state.sections.length === 0) {
139
- return;
140
- } // eslint-disable-next-line default-case
141
-
135
+ onKeyDown == null ? void 0 : onKeyDown(event); // eslint-disable-next-line default-case
142
136
 
143
137
  switch (true) {
144
138
  // Select all
145
139
  case event.key === 'a' && (event.ctrlKey || event.metaKey):
146
140
  {
141
+ // prevent default to make sure that the next line "select all" while updating
142
+ // the internal state at the same time.
147
143
  event.preventDefault();
148
144
  updateSelectedSections(0, state.sections.length - 1);
149
145
  return;
@@ -288,7 +284,7 @@ const useField = params => {
288
284
  }
289
285
  });
290
286
  (0, _useEnhancedEffect.default)(() => {
291
- if (!inputRef.current || state.selectedSectionIndexes == null) {
287
+ if (state.selectedSectionIndexes == null) {
292
288
  return;
293
289
  }
294
290
 
@@ -307,7 +303,6 @@ const useField = params => {
307
303
  const sections = fieldValueManager.getSectionsFromValue(utils, state.sections, valueParsed, format);
308
304
  setState(prevState => (0, _extends2.default)({}, prevState, {
309
305
  valueParsed,
310
- valueStr: fieldValueManager.getValueStrFromSections(sections),
311
306
  sections
312
307
  }));
313
308
  }
@@ -321,9 +316,10 @@ const useField = params => {
321
316
  React.useEffect(() => {
322
317
  return () => window.clearTimeout(focusTimeoutRef.current);
323
318
  }, []);
319
+ const valueStr = React.useMemo(() => fieldValueManager.getValueStrFromSections(state.sections), [state.sections, fieldValueManager]);
324
320
  return {
325
321
  inputProps: (0, _extends2.default)({}, otherForwardedProps, {
326
- value: state.valueStr,
322
+ value: valueStr,
327
323
  onClick: handleInputClick,
328
324
  onFocus: handleInputFocus,
329
325
  onBlur: handleInputBlur,
@@ -171,12 +171,20 @@ const adjustInvalidDateSectionValue = (utils, section, keyCode) => {
171
171
 
172
172
  if (shouldSetAbsolute) {
173
173
  if (delta > 0 || isEnd) {
174
- newDate = utils.endOfMonth(today);
175
- } else {
176
174
  newDate = utils.startOfMonth(today);
175
+ } else {
176
+ newDate = utils.endOfMonth(today);
177
177
  }
178
178
  } else {
179
179
  newDate = utils.addDays(utils.parse(section.value, section.formatValue), delta);
180
+
181
+ if (!utils.isSameMonth(newDate, today)) {
182
+ if (delta > 0) {
183
+ newDate = utils.startOfMonth(today);
184
+ } else {
185
+ newDate = utils.endOfMonth(today);
186
+ }
187
+ }
180
188
  }
181
189
 
182
190
  return utils.formatByString(newDate, section.formatValue);
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.useUtils = exports.useNow = exports.useLocalizationContext = exports.useLocaleText = exports.useDefaultDates = void 0;
7
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
8
12
  var React = _interopRequireWildcard(require("react"));
9
13
 
10
14
  var _LocalizationProvider = require("../../LocalizationProvider/LocalizationProvider");
11
15
 
16
+ var _enUS = require("../../locales/enUS");
17
+
12
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
19
 
14
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -17,10 +23,17 @@ const useLocalizationContext = () => {
17
23
  const localization = React.useContext(_LocalizationProvider.MuiPickersAdapterContext);
18
24
 
19
25
  if (localization === null) {
20
- throw new Error('MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.');
26
+ throw new Error(['MUI: Can not find the date and time pickers localization context.', 'It looks like you forgot to wrap your component in LocalizationProvider.', 'This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package'].join('\n'));
27
+ }
28
+
29
+ if (localization.utils === null) {
30
+ throw new Error(['MUI: Can not find the date and time pickers adapter from its localization context.', 'It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider.'].join('\n'));
21
31
  }
22
32
 
23
- return localization;
33
+ const localeText = React.useMemo(() => (0, _extends2.default)({}, _enUS.DEFAULT_LOCALE, localization.localeText), [localization.localeText]);
34
+ return (0, _extends2.default)({}, localization, {
35
+ localeText
36
+ });
24
37
  };
25
38
 
26
39
  exports.useLocalizationContext = useLocalizationContext;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.validateDate = exports.useIsDayDisabled = exports.useDateValidation = exports.isSameDateError = void 0;
6
+ exports.validateDate = exports.useIsDateDisabled = exports.useDateValidation = exports.isSameDateError = void 0;
7
7
 
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
 
@@ -38,6 +38,12 @@ const validateDate = ({
38
38
  case Boolean(props.shouldDisableDate && props.shouldDisableDate(date)):
39
39
  return 'shouldDisableDate';
40
40
 
41
+ case Boolean(props.shouldDisableMonth && props.shouldDisableMonth(date)):
42
+ return 'shouldDisableMonth';
43
+
44
+ case Boolean(props.shouldDisableYear && props.shouldDisableYear(date)):
45
+ return 'shouldDisableYear';
46
+
41
47
  case Boolean(props.disableFuture && adapter.utils.isAfterDay(date, now)):
42
48
  return 'disableFuture';
43
49
 
@@ -57,8 +63,10 @@ const validateDate = ({
57
63
 
58
64
  exports.validateDate = validateDate;
59
65
 
60
- const useIsDayDisabled = ({
66
+ const useIsDateDisabled = ({
61
67
  shouldDisableDate,
68
+ shouldDisableMonth,
69
+ shouldDisableYear,
62
70
  minDate,
63
71
  maxDate,
64
72
  disableFuture,
@@ -70,15 +78,17 @@ const useIsDayDisabled = ({
70
78
  value: day,
71
79
  props: {
72
80
  shouldDisableDate,
81
+ shouldDisableMonth,
82
+ shouldDisableYear,
73
83
  minDate,
74
84
  maxDate,
75
85
  disableFuture,
76
86
  disablePast
77
87
  }
78
- }) !== null, [adapter, shouldDisableDate, minDate, maxDate, disableFuture, disablePast]);
88
+ }) !== null, [adapter, shouldDisableDate, shouldDisableMonth, shouldDisableYear, minDate, maxDate, disableFuture, disablePast]);
79
89
  };
80
90
 
81
- exports.useIsDayDisabled = useIsDayDisabled;
91
+ exports.useIsDateDisabled = useIsDateDisabled;
82
92
 
83
93
  const isSameDateError = (a, b) => a === b;
84
94
 
@@ -165,6 +165,12 @@ Object.defineProperty(exports, "useLocaleText", {
165
165
  return _useUtils.useLocaleText;
166
166
  }
167
167
  });
168
+ Object.defineProperty(exports, "useLocalizationContext", {
169
+ enumerable: true,
170
+ get: function () {
171
+ return _useUtils.useLocalizationContext;
172
+ }
173
+ });
168
174
  Object.defineProperty(exports, "useMaskedInput", {
169
175
  enumerable: true,
170
176
  get: function () {
@@ -216,7 +222,7 @@ var _CalendarOrClockPicker = require("./components/CalendarOrClockPicker/Calenda
216
222
 
217
223
  var _calendarOrClockPickerClasses = require("./components/CalendarOrClockPicker/calendarOrClockPickerClasses");
218
224
 
219
- var _PickersArrowSwitcher = require("./components/PickersArrowSwitcher");
225
+ var _PickersArrowSwitcher = require("./components/PickersArrowSwitcher/PickersArrowSwitcher");
220
226
 
221
227
  var _PickerStaticWrapper = require("./components/PickerStaticWrapper/PickerStaticWrapper");
222
228
 
@@ -228,7 +234,7 @@ var _pickersToolbarButtonClasses = require("./components/pickersToolbarButtonCla
228
234
 
229
235
  var _pickersToolbarTextClasses = require("./components/pickersToolbarTextClasses");
230
236
 
231
- var _pickersArrowSwitcherClasses = require("./components/pickersArrowSwitcherClasses");
237
+ var _pickersArrowSwitcherClasses = require("./components/PickersArrowSwitcher/pickersArrowSwitcherClasses");
232
238
 
233
239
  var _pickersPopperClasses = require("./components/pickersPopperClasses");
234
240
 
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.faIR = void 0;
7
+
8
+ var _getPickersLocalization = require("./utils/getPickersLocalization");
9
+
10
+ const faIRPickers = {
11
+ // Calendar navigation
12
+ previousMonth: 'ماه گذشته',
13
+ nextMonth: 'ماه آینده',
14
+ // View navigation
15
+ openPreviousView: 'نمای قبلی',
16
+ openNextView: 'نمای بعدی',
17
+ calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'نمای سال باز است، رفتن به نمای تقویم' : 'نمای تقویم باز است، رفتن به نمای سال',
18
+ inputModeToggleButtonAriaLabel: (isKeyboardInputOpen, viewType) => isKeyboardInputOpen ? `نمای ورودی متن باز است، رفتن به نمای ${viewType}` : `نمای ${viewType} باز است، رفتن به نمای ورودی متن`,
19
+ // DateRange placeholders
20
+ start: 'شروع',
21
+ end: 'پایان',
22
+ // Action bar
23
+ cancelButtonLabel: 'لغو',
24
+ clearButtonLabel: 'پاک کردن',
25
+ okButtonLabel: 'اوکی',
26
+ todayButtonLabel: 'امروز',
27
+ // Toolbar titles
28
+ datePickerDefaultToolbarTitle: 'تاریخ را انتخاب کنید',
29
+ dateTimePickerDefaultToolbarTitle: 'تاریخ و ساعت را انتخاب کنید',
30
+ timePickerDefaultToolbarTitle: 'ساعت را انتخاب کنید',
31
+ dateRangePickerDefaultToolbarTitle: 'محدوده تاریخ را انتخاب کنید',
32
+ // Clock labels
33
+ clockLabelText: (view, time, adapter) => `Select ${view}. ${time === null ? 'هیچ ساعتی انتخاب نشده است' : `ساعت انتخاب ${adapter.format(time, 'fullTime')} می باشد`}`,
34
+ hoursClockNumberText: hours => `${hours} ساعت ها`,
35
+ minutesClockNumberText: minutes => `${minutes} دقیقه ها`,
36
+ secondsClockNumberText: seconds => `${seconds} ثانیه ها`,
37
+ // Open picker labels
38
+ openDatePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `تاریخ را انتخاب کنید، تاریخ انتخاب شده ${utils.format(utils.date(rawValue), 'fullDate')} می باشد` : 'تاریخ را انتخاب کنید',
39
+ openTimePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `ساعت را انتخاب کنید، ساعت انتخاب شده ${utils.format(utils.date(rawValue), 'fullTime')} می باشد` : 'ساعت را انتخاب کنید',
40
+ // Table labels
41
+ timeTableLabel: 'انتخاب تاریخ',
42
+ dateTableLabel: 'انتخاب ساعت'
43
+ };
44
+ const faIR = (0, _getPickersLocalization.getPickersLocalization)(faIRPickers);
45
+ exports.faIR = faIR;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fiFI = void 0;
7
+
8
+ var _getPickersLocalization = require("./utils/getPickersLocalization");
9
+
10
+ const views = {
11
+ hours: 'tunnit',
12
+ minutes: 'minuutit',
13
+ seconds: 'sekuntit'
14
+ };
15
+ const viewTranslation = {
16
+ calendar: 'kalenteri',
17
+ clock: 'kello'
18
+ };
19
+ const fiFIPickers = {
20
+ // Calendar navigation
21
+ previousMonth: 'Edellinen kuukausi',
22
+ nextMonth: 'Seuraava kuukausi',
23
+ // View navigation
24
+ openPreviousView: 'avaa edellinen kuukausi',
25
+ openNextView: 'avaa seuraava kuukausi',
26
+ calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'vuosinäkymä on auki, vaihda kalenterinäkymään' : 'kalenterinäkymä on auki, vaihda vuosinäkymään',
27
+ inputModeToggleButtonAriaLabel: (isKeyboardInputOpen, viewType) => isKeyboardInputOpen ? `tekstikenttä on auki, mene ${viewTranslation[viewType]}näkymään` : `${viewTranslation[viewType]}näkymä on auki, mene tekstikenttään`,
28
+ // DateRange placeholders
29
+ start: 'Alku',
30
+ end: 'Loppu',
31
+ // Action bar
32
+ cancelButtonLabel: 'Peruuta',
33
+ clearButtonLabel: 'Tyhjennä',
34
+ okButtonLabel: 'OK',
35
+ todayButtonLabel: 'Tänään',
36
+ // Toolbar titles
37
+ datePickerDefaultToolbarTitle: 'Valitse päivä',
38
+ dateTimePickerDefaultToolbarTitle: 'Valitse päivä ja aika',
39
+ timePickerDefaultToolbarTitle: 'Valitse aika',
40
+ dateRangePickerDefaultToolbarTitle: 'Valitse aikaväli',
41
+ // Clock labels
42
+ clockLabelText: (view, time, adapter) => `Valitse ${views[view]}. ${time === null ? 'Ei aikaa valittuna' : `Valittu aika on ${adapter.format(time, 'fullTime')}`}`,
43
+ hoursClockNumberText: hours => `${hours} tuntia`,
44
+ minutesClockNumberText: minutes => `${minutes} minuuttia`,
45
+ secondsClockNumberText: seconds => `${seconds} sekunttia`,
46
+ // Open picker labels
47
+ openDatePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `Valitse päivä, valittu päivä on ${utils.format(utils.date(rawValue), 'fullDate')}` : 'Valitse päivä',
48
+ openTimePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `Valitse aika, valittu aika on ${utils.format(utils.date(rawValue), 'fullTime')}` : 'Valitse aika',
49
+ // Table labels
50
+ timeTableLabel: 'valitse aika',
51
+ dateTableLabel: 'valitse päivä'
52
+ };
53
+ const fiFI = (0, _getPickersLocalization.getPickersLocalization)(fiFIPickers);
54
+ exports.fiFI = fiFI;
@@ -82,6 +82,32 @@ Object.keys(_esES).forEach(function (key) {
82
82
  });
83
83
  });
84
84
 
85
+ var _faIR = require("./faIR");
86
+
87
+ Object.keys(_faIR).forEach(function (key) {
88
+ if (key === "default" || key === "__esModule") return;
89
+ if (key in exports && exports[key] === _faIR[key]) return;
90
+ Object.defineProperty(exports, key, {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _faIR[key];
94
+ }
95
+ });
96
+ });
97
+
98
+ var _fiFI = require("./fiFI");
99
+
100
+ Object.keys(_fiFI).forEach(function (key) {
101
+ if (key === "default" || key === "__esModule") return;
102
+ if (key in exports && exports[key] === _fiFI[key]) return;
103
+ Object.defineProperty(exports, key, {
104
+ enumerable: true,
105
+ get: function () {
106
+ return _fiFI[key];
107
+ }
108
+ });
109
+ });
110
+
85
111
  var _frFR = require("./frFR");
86
112
 
87
113
  Object.keys(_frFR).forEach(function (key) {
@@ -7,7 +7,6 @@ exports.isIS = void 0;
7
7
 
8
8
  var _getPickersLocalization = require("./utils/getPickersLocalization");
9
9
 
10
- // This object is not Partial<PickersLocaleText> because it is the default values
11
10
  const isISPickers = {
12
11
  // Calendar navigation
13
12
  previousMonth: 'Fyrri mánuður',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "5.0.2",
3
+ "version": "6.0.0-alpha.0",
4
4
  "description": "The community edition of the date picker components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -29,17 +29,17 @@
29
29
  ],
30
30
  "repository": {
31
31
  "type": "git",
32
- "url": "https://github.com/mui-org/material-ui-x.git",
32
+ "url": "https://github.com/mui/mui-x.git",
33
33
  "directory": "packages/x-date-pickers"
34
34
  },
35
35
  "dependencies": {
36
- "@babel/runtime": "^7.18.9",
36
+ "@babel/runtime": "^7.19.0",
37
37
  "@date-io/core": "^2.15.0",
38
38
  "@date-io/date-fns": "^2.15.0",
39
39
  "@date-io/dayjs": "^2.15.0",
40
40
  "@date-io/luxon": "^2.15.0",
41
41
  "@date-io/moment": "^2.15.0",
42
- "@mui/utils": "^5.10.3",
42
+ "@mui/utils": "^5.10.6",
43
43
  "@types/react-transition-group": "^4.4.5",
44
44
  "clsx": "^1.2.1",
45
45
  "prop-types": "^15.7.2",
@@ -24,7 +24,7 @@ import { DesktopDatePickerProps } from '../DesktopDatePicker';
24
24
  import {
25
25
  CalendarOrClockPickerProps,
26
26
  DayPickerProps,
27
- ExportedArrowSwitcherProps,
27
+ ExportedPickersArrowSwitcherProps,
28
28
  PickerPopperProps,
29
29
  PickersToolbarButtonProps,
30
30
  PickersToolbarProps,
@@ -54,12 +54,12 @@ export interface PickersComponentsPropsList {
54
54
  MuiMobileDateTimePicker: MobileDateTimePickerProps<unknown, unknown>;
55
55
  MuiMobileTimePicker: MobileTimePickerProps<unknown, unknown>;
56
56
  MuiMonthPicker: MonthPickerProps<unknown>;
57
- MuiPickersArrowSwitcher: ExportedArrowSwitcherProps;
57
+ MuiPickersArrowSwitcher: ExportedPickersArrowSwitcherProps;
58
58
  MuiPickersCalendarHeader: ExportedCalendarHeaderProps<unknown>;
59
59
  MuiPickersDay: PickersDayProps<unknown>;
60
60
  MuiPickersFadeTransitionGroup: PickersFadeTransitionGroupProps;
61
61
  MuiPickersPopper: PickerPopperProps;
62
- MuiPickerStaticWrapper: PickerStaticWrapperProps;
62
+ MuiPickerStaticWrapper: PickerStaticWrapperProps<unknown>;
63
63
  MuiPickersToolbar: PickersToolbarProps<unknown, unknown>;
64
64
  MuiPickersToolbarButton: PickersToolbarButtonProps;
65
65
  MuiStaticDatePicker: StaticDatePickerProps<unknown, unknown>;
@@ -1,62 +0,0 @@
1
- import * as React from 'react';
2
- import { PickersArrowSwitcherClasses } from './pickersArrowSwitcherClasses';
3
- export interface PickersArrowSwitcherSlotsComponent {
4
- /**
5
- * Button allowing to switch to the left view.
6
- * @default IconButton
7
- */
8
- LeftArrowButton: React.ElementType;
9
- /**
10
- * Icon displayed in the left view switch button.
11
- * @default ArrowLeft
12
- */
13
- LeftArrowIcon: React.ElementType;
14
- /**
15
- * Button allowing to switch to the right view.
16
- * @default IconButton
17
- */
18
- RightArrowButton: React.ElementType;
19
- /**
20
- * Icon displayed in the right view switch button.
21
- * @default ArrowRight
22
- */
23
- RightArrowIcon: React.ElementType;
24
- }
25
- export interface PickersArrowSwitcherSlotsComponentsProps {
26
- leftArrowButton: Record<string, any>;
27
- rightArrowButton: Record<string, any>;
28
- }
29
- export interface ExportedArrowSwitcherProps {
30
- /**
31
- * Overrideable components.
32
- * @default {}
33
- */
34
- components?: Partial<PickersArrowSwitcherSlotsComponent>;
35
- /**
36
- * The props used for each component slot.
37
- * @default {}
38
- */
39
- componentsProps?: Partial<PickersArrowSwitcherSlotsComponentsProps>;
40
- /**
41
- * Left arrow icon aria-label text.
42
- * @deprecated
43
- */
44
- leftArrowButtonText?: string;
45
- /**
46
- * Right arrow icon aria-label text.
47
- * @deprecated
48
- */
49
- rightArrowButtonText?: string;
50
- classes?: Partial<PickersArrowSwitcherClasses>;
51
- }
52
- interface ArrowSwitcherProps extends ExportedArrowSwitcherProps, Omit<React.HTMLProps<HTMLDivElement>, 'ref'> {
53
- children?: React.ReactNode;
54
- isLeftDisabled: boolean;
55
- isLeftHidden?: boolean;
56
- isRightDisabled: boolean;
57
- isRightHidden?: boolean;
58
- onLeftClick: () => void;
59
- onRightClick: () => void;
60
- }
61
- export declare const PickersArrowSwitcher: React.ForwardRefExoticComponent<Omit<ArrowSwitcherProps, "as"> & React.RefAttributes<HTMLDivElement>>;
62
- export {};
@@ -1,124 +0,0 @@
1
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["children", "className", "components", "componentsProps", "isLeftDisabled", "isLeftHidden", "isRightDisabled", "isRightHidden", "leftArrowButtonText", "onLeftClick", "onRightClick", "rightArrowButtonText"];
4
- import * as React from 'react';
5
- import clsx from 'clsx';
6
- import Typography from '@mui/material/Typography';
7
- import { useTheme, styled, useThemeProps } from '@mui/material/styles';
8
- import { unstable_composeClasses as composeClasses } from '@mui/material';
9
- import IconButton from '@mui/material/IconButton';
10
- import { ArrowLeft, ArrowRight } from './icons';
11
- import { getPickersArrowSwitcherUtilityClass } from './pickersArrowSwitcherClasses';
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import { jsxs as _jsxs } from "react/jsx-runtime";
14
-
15
- const useUtilityClasses = ownerState => {
16
- const {
17
- classes
18
- } = ownerState;
19
- const slots = {
20
- root: ['root'],
21
- spacer: ['spacer'],
22
- button: ['button']
23
- };
24
- return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);
25
- };
26
-
27
- const PickersArrowSwitcherRoot = styled('div', {
28
- name: 'MuiPickersArrowSwitcher',
29
- slot: 'Root',
30
- overridesResolver: (props, styles) => styles.root
31
- })({
32
- display: 'flex'
33
- });
34
- const PickersArrowSwitcherSpacer = styled('div', {
35
- name: 'MuiPickersArrowSwitcher',
36
- slot: 'Spacer',
37
- overridesResolver: (props, styles) => styles.spacer
38
- })(({
39
- theme
40
- }) => ({
41
- width: theme.spacing(3)
42
- }));
43
- const PickersArrowSwitcherButton = styled(IconButton, {
44
- name: 'MuiPickersArrowSwitcher',
45
- slot: 'Button',
46
- overridesResolver: (props, styles) => styles.button
47
- })(({
48
- ownerState
49
- }) => _extends({}, ownerState.hidden && {
50
- visibility: 'hidden'
51
- }));
52
- export const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(inProps, ref) {
53
- const props = useThemeProps({
54
- props: inProps,
55
- name: 'MuiPickersArrowSwitcher'
56
- });
57
-
58
- const {
59
- children,
60
- className,
61
- components,
62
- componentsProps,
63
- isLeftDisabled,
64
- isLeftHidden,
65
- isRightDisabled,
66
- isRightHidden,
67
- leftArrowButtonText,
68
- onLeftClick,
69
- onRightClick,
70
- rightArrowButtonText
71
- } = props,
72
- other = _objectWithoutPropertiesLoose(props, _excluded);
73
-
74
- const theme = useTheme();
75
- const isRtl = theme.direction === 'rtl';
76
- const leftArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.leftArrowButton) || {};
77
- const LeftArrowIcon = (components == null ? void 0 : components.LeftArrowIcon) || ArrowLeft;
78
- const rightArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.rightArrowButton) || {};
79
- const RightArrowIcon = (components == null ? void 0 : components.RightArrowIcon) || ArrowRight;
80
- const ownerState = props;
81
- const classes = useUtilityClasses(ownerState);
82
- return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({
83
- ref: ref,
84
- className: clsx(classes.root, className),
85
- ownerState: ownerState
86
- }, other, {
87
- children: [/*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({
88
- as: components == null ? void 0 : components.LeftArrowButton,
89
- size: "small",
90
- "aria-label": leftArrowButtonText,
91
- title: leftArrowButtonText,
92
- disabled: isLeftDisabled,
93
- edge: "end",
94
- onClick: onLeftClick
95
- }, leftArrowButtonProps, {
96
- className: clsx(classes.button, leftArrowButtonProps.className),
97
- ownerState: _extends({}, ownerState, leftArrowButtonProps, {
98
- hidden: isLeftHidden
99
- }),
100
- children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, {}) : /*#__PURE__*/_jsx(LeftArrowIcon, {})
101
- })), children ? /*#__PURE__*/_jsx(Typography, {
102
- variant: "subtitle1",
103
- component: "span",
104
- children: children
105
- }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {
106
- className: classes.spacer,
107
- ownerState: ownerState
108
- }), /*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({
109
- as: components == null ? void 0 : components.RightArrowButton,
110
- size: "small",
111
- "aria-label": rightArrowButtonText,
112
- title: rightArrowButtonText,
113
- edge: "start",
114
- disabled: isRightDisabled,
115
- onClick: onRightClick
116
- }, rightArrowButtonProps, {
117
- className: clsx(classes.button, rightArrowButtonProps.className),
118
- ownerState: _extends({}, ownerState, rightArrowButtonProps, {
119
- hidden: isRightHidden
120
- }),
121
- children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, {}) : /*#__PURE__*/_jsx(RightArrowIcon, {})
122
- }))]
123
- }));
124
- });