@mui/x-date-pickers 6.14.0 → 6.16.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 (432) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/DateCalendar/DateCalendar.js +6 -2
  3. package/DateCalendar/DateCalendar.types.d.ts +1 -1
  4. package/DateCalendar/DayCalendar.d.ts +6 -5
  5. package/DateCalendar/DayCalendar.js +18 -6
  6. package/DateCalendar/dayCalendarClasses.d.ts +2 -0
  7. package/DateCalendar/dayCalendarClasses.js +1 -1
  8. package/DateField/DateField.js +32 -4
  9. package/DateField/DateField.types.d.ts +3 -2
  10. package/DatePicker/DatePicker.js +6 -2
  11. package/DateTimeField/DateTimeField.js +32 -4
  12. package/DateTimeField/DateTimeField.types.d.ts +3 -2
  13. package/DateTimePicker/DateTimePicker.js +6 -2
  14. package/DateTimePicker/DateTimePickerToolbar.js +1 -0
  15. package/DesktopDatePicker/DesktopDatePicker.js +6 -2
  16. package/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
  17. package/MobileDatePicker/MobileDatePicker.js +6 -2
  18. package/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
  19. package/StaticDatePicker/StaticDatePicker.js +6 -2
  20. package/StaticDateTimePicker/StaticDateTimePicker.js +6 -2
  21. package/TimeField/TimeField.js +29 -4
  22. package/TimeField/TimeField.types.d.ts +3 -2
  23. package/TimePicker/TimePickerToolbar.js +1 -0
  24. package/hooks/index.d.ts +1 -0
  25. package/hooks/index.js +1 -0
  26. package/hooks/package.json +6 -0
  27. package/hooks/useClearableField.d.ts +25 -0
  28. package/hooks/useClearableField.js +79 -0
  29. package/icons/index.d.ts +6 -0
  30. package/icons/index.js +8 -1
  31. package/index.d.ts +1 -0
  32. package/index.js +3 -2
  33. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +3 -1
  34. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +3 -2
  35. package/internals/hooks/useField/index.d.ts +1 -1
  36. package/internals/hooks/useField/useField.js +24 -6
  37. package/internals/hooks/useField/useField.types.d.ts +31 -1
  38. package/internals/hooks/useField/useField.utils.js +8 -3
  39. package/internals/index.d.ts +1 -1
  40. package/internals/models/props/toolbar.d.ts +3 -0
  41. package/internals/models/validation.d.ts +3 -0
  42. package/internals/utils/date-utils.d.ts +1 -0
  43. package/internals/utils/date-utils.js +4 -0
  44. package/legacy/DateCalendar/DateCalendar.js +6 -2
  45. package/legacy/DateCalendar/DayCalendar.js +22 -9
  46. package/legacy/DateCalendar/dayCalendarClasses.js +1 -1
  47. package/legacy/DateField/DateField.js +30 -3
  48. package/legacy/DatePicker/DatePicker.js +6 -2
  49. package/legacy/DateTimeField/DateTimeField.js +30 -3
  50. package/legacy/DateTimePicker/DateTimePicker.js +6 -2
  51. package/legacy/DateTimePicker/DateTimePickerToolbar.js +1 -0
  52. package/legacy/DesktopDatePicker/DesktopDatePicker.js +6 -2
  53. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
  54. package/legacy/MobileDatePicker/MobileDatePicker.js +6 -2
  55. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
  56. package/legacy/StaticDatePicker/StaticDatePicker.js +6 -2
  57. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +6 -2
  58. package/legacy/TimeField/TimeField.js +27 -3
  59. package/legacy/TimePicker/TimePickerToolbar.js +1 -0
  60. package/legacy/hooks/index.js +1 -0
  61. package/legacy/hooks/useClearableField.js +80 -0
  62. package/legacy/icons/index.js +8 -1
  63. package/legacy/index.js +3 -2
  64. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +3 -1
  65. package/legacy/internals/hooks/useField/useField.js +28 -7
  66. package/legacy/internals/hooks/useField/useField.utils.js +16 -8
  67. package/legacy/internals/utils/date-utils.js +6 -0
  68. package/legacy/locales/beBY.js +2 -0
  69. package/legacy/locales/caES.js +2 -0
  70. package/legacy/locales/csCZ.js +2 -0
  71. package/legacy/locales/daDK.js +2 -0
  72. package/legacy/locales/deDE.js +2 -0
  73. package/legacy/locales/elGR.js +2 -0
  74. package/legacy/locales/enUS.js +1 -0
  75. package/legacy/locales/esES.js +2 -0
  76. package/legacy/locales/faIR.js +2 -0
  77. package/legacy/locales/fiFI.js +27 -11
  78. package/legacy/locales/frFR.js +2 -0
  79. package/legacy/locales/heIL.js +2 -0
  80. package/legacy/locales/huHU.js +1 -0
  81. package/legacy/locales/isIS.js +2 -0
  82. package/legacy/locales/itIT.js +2 -0
  83. package/legacy/locales/jaJP.js +2 -0
  84. package/legacy/locales/koKR.js +2 -0
  85. package/legacy/locales/kzKZ.js +2 -0
  86. package/legacy/locales/nbNO.js +2 -0
  87. package/legacy/locales/nlNL.js +2 -0
  88. package/legacy/locales/plPL.js +2 -0
  89. package/legacy/locales/ptBR.js +2 -0
  90. package/legacy/locales/roRO.js +1 -0
  91. package/legacy/locales/ruRU.js +2 -0
  92. package/legacy/locales/skSK.js +2 -0
  93. package/legacy/locales/svSE.js +2 -0
  94. package/legacy/locales/trTR.js +2 -0
  95. package/legacy/locales/ukUA.js +2 -0
  96. package/legacy/locales/urPK.js +2 -0
  97. package/legacy/locales/viVN.js +2 -0
  98. package/legacy/locales/zhCN.js +2 -0
  99. package/legacy/locales/zhHK.js +2 -0
  100. package/locales/beBY.d.ts +1 -0
  101. package/locales/beBY.js +2 -0
  102. package/locales/caES.d.ts +1 -0
  103. package/locales/caES.js +2 -0
  104. package/locales/csCZ.d.ts +1 -0
  105. package/locales/csCZ.js +2 -0
  106. package/locales/daDK.d.ts +1 -0
  107. package/locales/daDK.js +2 -0
  108. package/locales/deDE.d.ts +1 -0
  109. package/locales/deDE.js +2 -0
  110. package/locales/elGR.d.ts +1 -0
  111. package/locales/elGR.js +2 -0
  112. package/locales/enUS.d.ts +1 -0
  113. package/locales/enUS.js +1 -0
  114. package/locales/esES.d.ts +1 -0
  115. package/locales/esES.js +2 -0
  116. package/locales/faIR.d.ts +1 -0
  117. package/locales/faIR.js +2 -0
  118. package/locales/fiFI.d.ts +1 -0
  119. package/locales/fiFI.js +11 -11
  120. package/locales/frFR.d.ts +1 -0
  121. package/locales/frFR.js +2 -0
  122. package/locales/heIL.d.ts +1 -0
  123. package/locales/heIL.js +2 -0
  124. package/locales/huHU.d.ts +1 -0
  125. package/locales/huHU.js +1 -0
  126. package/locales/isIS.d.ts +1 -0
  127. package/locales/isIS.js +2 -0
  128. package/locales/itIT.d.ts +1 -0
  129. package/locales/itIT.js +2 -0
  130. package/locales/jaJP.d.ts +1 -0
  131. package/locales/jaJP.js +2 -0
  132. package/locales/koKR.d.ts +1 -0
  133. package/locales/koKR.js +2 -0
  134. package/locales/kzKZ.d.ts +1 -0
  135. package/locales/kzKZ.js +2 -0
  136. package/locales/nbNO.d.ts +1 -0
  137. package/locales/nbNO.js +2 -0
  138. package/locales/nlNL.d.ts +1 -0
  139. package/locales/nlNL.js +2 -0
  140. package/locales/plPL.d.ts +1 -0
  141. package/locales/plPL.js +2 -0
  142. package/locales/ptBR.d.ts +1 -0
  143. package/locales/ptBR.js +2 -0
  144. package/locales/roRO.d.ts +1 -0
  145. package/locales/roRO.js +1 -0
  146. package/locales/ruRU.d.ts +1 -0
  147. package/locales/ruRU.js +2 -0
  148. package/locales/skSK.d.ts +1 -0
  149. package/locales/skSK.js +2 -0
  150. package/locales/svSE.d.ts +1 -0
  151. package/locales/svSE.js +2 -0
  152. package/locales/trTR.d.ts +1 -0
  153. package/locales/trTR.js +2 -0
  154. package/locales/ukUA.d.ts +1 -0
  155. package/locales/ukUA.js +2 -0
  156. package/locales/urPK.d.ts +1 -0
  157. package/locales/urPK.js +2 -0
  158. package/locales/utils/getPickersLocalization.d.ts +1 -0
  159. package/locales/utils/pickersLocaleTextApi.d.ts +1 -0
  160. package/locales/viVN.d.ts +1 -0
  161. package/locales/viVN.js +2 -0
  162. package/locales/zhCN.d.ts +1 -0
  163. package/locales/zhCN.js +2 -0
  164. package/locales/zhHK.d.ts +1 -0
  165. package/locales/zhHK.js +2 -0
  166. package/models/adapters.d.ts +1 -0
  167. package/models/fields.d.ts +2 -0
  168. package/modern/DateCalendar/DateCalendar.js +6 -2
  169. package/modern/DateCalendar/DayCalendar.js +25 -11
  170. package/modern/DateCalendar/dayCalendarClasses.js +1 -1
  171. package/modern/DateField/DateField.js +32 -4
  172. package/modern/DatePicker/DatePicker.js +6 -2
  173. package/modern/DateTimeField/DateTimeField.js +32 -4
  174. package/modern/DateTimePicker/DateTimePicker.js +6 -2
  175. package/modern/DateTimePicker/DateTimePickerToolbar.js +1 -0
  176. package/modern/DesktopDatePicker/DesktopDatePicker.js +6 -2
  177. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
  178. package/modern/MobileDatePicker/MobileDatePicker.js +6 -2
  179. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
  180. package/modern/StaticDatePicker/StaticDatePicker.js +6 -2
  181. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +6 -2
  182. package/modern/TimeField/TimeField.js +29 -4
  183. package/modern/TimePicker/TimePickerToolbar.js +1 -0
  184. package/modern/hooks/index.js +1 -0
  185. package/modern/hooks/useClearableField.js +78 -0
  186. package/modern/icons/index.js +8 -1
  187. package/modern/index.js +3 -2
  188. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +3 -1
  189. package/modern/internals/hooks/useField/useField.js +23 -6
  190. package/modern/internals/hooks/useField/useField.utils.js +8 -3
  191. package/modern/internals/utils/date-utils.js +4 -0
  192. package/modern/locales/beBY.js +2 -0
  193. package/modern/locales/caES.js +2 -0
  194. package/modern/locales/csCZ.js +2 -0
  195. package/modern/locales/daDK.js +2 -0
  196. package/modern/locales/deDE.js +2 -0
  197. package/modern/locales/elGR.js +2 -0
  198. package/modern/locales/enUS.js +1 -0
  199. package/modern/locales/esES.js +2 -0
  200. package/modern/locales/faIR.js +2 -0
  201. package/modern/locales/fiFI.js +11 -11
  202. package/modern/locales/frFR.js +2 -0
  203. package/modern/locales/heIL.js +2 -0
  204. package/modern/locales/huHU.js +1 -0
  205. package/modern/locales/isIS.js +2 -0
  206. package/modern/locales/itIT.js +2 -0
  207. package/modern/locales/jaJP.js +2 -0
  208. package/modern/locales/koKR.js +2 -0
  209. package/modern/locales/kzKZ.js +2 -0
  210. package/modern/locales/nbNO.js +2 -0
  211. package/modern/locales/nlNL.js +2 -0
  212. package/modern/locales/plPL.js +2 -0
  213. package/modern/locales/ptBR.js +2 -0
  214. package/modern/locales/roRO.js +1 -0
  215. package/modern/locales/ruRU.js +2 -0
  216. package/modern/locales/skSK.js +2 -0
  217. package/modern/locales/svSE.js +2 -0
  218. package/modern/locales/trTR.js +2 -0
  219. package/modern/locales/ukUA.js +2 -0
  220. package/modern/locales/urPK.js +2 -0
  221. package/modern/locales/viVN.js +2 -0
  222. package/modern/locales/zhCN.js +2 -0
  223. package/modern/locales/zhHK.js +2 -0
  224. package/node/DateCalendar/DateCalendar.js +6 -2
  225. package/node/DateCalendar/DayCalendar.js +24 -10
  226. package/node/DateCalendar/dayCalendarClasses.js +1 -1
  227. package/node/DateField/DateField.js +32 -4
  228. package/node/DatePicker/DatePicker.js +6 -2
  229. package/node/DateTimeField/DateTimeField.js +32 -4
  230. package/node/DateTimePicker/DateTimePicker.js +6 -2
  231. package/node/DateTimePicker/DateTimePickerToolbar.js +1 -0
  232. package/node/DesktopDatePicker/DesktopDatePicker.js +6 -2
  233. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
  234. package/node/MobileDatePicker/MobileDatePicker.js +6 -2
  235. package/node/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
  236. package/node/StaticDatePicker/StaticDatePicker.js +6 -2
  237. package/node/StaticDateTimePicker/StaticDateTimePicker.js +6 -2
  238. package/node/TimeField/TimeField.js +29 -4
  239. package/node/TimePicker/TimePickerToolbar.js +1 -0
  240. package/node/hooks/index.js +12 -0
  241. package/node/hooks/useClearableField.js +87 -0
  242. package/node/icons/index.js +10 -2
  243. package/node/index.js +13 -1
  244. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +3 -1
  245. package/node/internals/hooks/useField/useField.js +23 -6
  246. package/node/internals/hooks/useField/useField.utils.js +8 -3
  247. package/node/internals/utils/date-utils.js +7 -2
  248. package/node/locales/beBY.js +2 -0
  249. package/node/locales/caES.js +2 -0
  250. package/node/locales/csCZ.js +2 -0
  251. package/node/locales/daDK.js +2 -0
  252. package/node/locales/deDE.js +2 -0
  253. package/node/locales/elGR.js +2 -0
  254. package/node/locales/enUS.js +1 -0
  255. package/node/locales/esES.js +2 -0
  256. package/node/locales/faIR.js +2 -0
  257. package/node/locales/fiFI.js +11 -11
  258. package/node/locales/frFR.js +2 -0
  259. package/node/locales/heIL.js +2 -0
  260. package/node/locales/huHU.js +1 -0
  261. package/node/locales/isIS.js +2 -0
  262. package/node/locales/itIT.js +2 -0
  263. package/node/locales/jaJP.js +2 -0
  264. package/node/locales/koKR.js +2 -0
  265. package/node/locales/kzKZ.js +2 -0
  266. package/node/locales/nbNO.js +2 -0
  267. package/node/locales/nlNL.js +2 -0
  268. package/node/locales/plPL.js +2 -0
  269. package/node/locales/ptBR.js +2 -0
  270. package/node/locales/roRO.js +1 -0
  271. package/node/locales/ruRU.js +2 -0
  272. package/node/locales/skSK.js +2 -0
  273. package/node/locales/svSE.js +2 -0
  274. package/node/locales/trTR.js +2 -0
  275. package/node/locales/ukUA.js +2 -0
  276. package/node/locales/urPK.js +2 -0
  277. package/node/locales/viVN.js +2 -0
  278. package/node/locales/zhCN.js +2 -0
  279. package/node/locales/zhHK.js +2 -0
  280. package/package.json +1 -1
  281. package/legacy/tests/describe.types.js +0 -1
  282. package/legacy/tests/describeAdapters/describeAdapters.js +0 -29
  283. package/legacy/tests/describeAdapters/index.js +0 -1
  284. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.js +0 -32
  285. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +0 -1
  286. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.utils.js +0 -2
  287. package/legacy/tests/describeGregorianAdapter/index.js +0 -2
  288. package/legacy/tests/describeGregorianAdapter/testCalculations.js +0 -707
  289. package/legacy/tests/describeGregorianAdapter/testFormat.js +0 -26
  290. package/legacy/tests/describeGregorianAdapter/testLocalization.js +0 -49
  291. package/legacy/tests/describeHijriAdapter/describeHijriAdapter.js +0 -21
  292. package/legacy/tests/describeHijriAdapter/describeHijriAdapter.types.js +0 -1
  293. package/legacy/tests/describeHijriAdapter/index.js +0 -1
  294. package/legacy/tests/describeHijriAdapter/testCalculations.js +0 -167
  295. package/legacy/tests/describeHijriAdapter/testLocalization.js +0 -20
  296. package/legacy/tests/describeJalaliAdapter/describeJalaliAdapter.js +0 -21
  297. package/legacy/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +0 -1
  298. package/legacy/tests/describeJalaliAdapter/index.js +0 -1
  299. package/legacy/tests/describeJalaliAdapter/testCalculations.js +0 -236
  300. package/legacy/tests/describeJalaliAdapter/testLocalization.js +0 -20
  301. package/legacy/tests/describePicker/describePicker.js +0 -159
  302. package/legacy/tests/describePicker/describePicker.types.js +0 -1
  303. package/legacy/tests/describePicker/index.js +0 -1
  304. package/legacy/tests/describeValidation/describeValidation.js +0 -31
  305. package/legacy/tests/describeValidation/describeValidation.types.js +0 -1
  306. package/legacy/tests/describeValidation/index.js +0 -1
  307. package/legacy/tests/describeValidation/testDayViewValidation.js +0 -281
  308. package/legacy/tests/describeValidation/testMinutesViewValidation.js +0 -194
  309. package/legacy/tests/describeValidation/testMonthViewValidation.js +0 -136
  310. package/legacy/tests/describeValidation/testTextFieldValidation.js +0 -463
  311. package/legacy/tests/describeValidation/testYearViewValidation.js +0 -95
  312. package/legacy/tests/describeValue/describeValue.js +0 -57
  313. package/legacy/tests/describeValue/describeValue.types.js +0 -1
  314. package/legacy/tests/describeValue/index.js +0 -1
  315. package/legacy/tests/describeValue/testControlledUnControlled.js +0 -237
  316. package/legacy/tests/describeValue/testPickerActionBar.js +0 -250
  317. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -362
  318. package/legacy/tests/describeValue/testShortcuts.js +0 -119
  319. package/modern/tests/describe.types.js +0 -1
  320. package/modern/tests/describeAdapters/describeAdapters.js +0 -29
  321. package/modern/tests/describeAdapters/index.js +0 -1
  322. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.js +0 -29
  323. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +0 -1
  324. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.utils.js +0 -2
  325. package/modern/tests/describeGregorianAdapter/index.js +0 -2
  326. package/modern/tests/describeGregorianAdapter/testCalculations.js +0 -706
  327. package/modern/tests/describeGregorianAdapter/testFormat.js +0 -27
  328. package/modern/tests/describeGregorianAdapter/testLocalization.js +0 -50
  329. package/modern/tests/describeHijriAdapter/describeHijriAdapter.js +0 -21
  330. package/modern/tests/describeHijriAdapter/describeHijriAdapter.types.js +0 -1
  331. package/modern/tests/describeHijriAdapter/index.js +0 -1
  332. package/modern/tests/describeHijriAdapter/testCalculations.js +0 -164
  333. package/modern/tests/describeHijriAdapter/testLocalization.js +0 -21
  334. package/modern/tests/describeJalaliAdapter/describeJalaliAdapter.js +0 -21
  335. package/modern/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +0 -1
  336. package/modern/tests/describeJalaliAdapter/index.js +0 -1
  337. package/modern/tests/describeJalaliAdapter/testCalculations.js +0 -237
  338. package/modern/tests/describeJalaliAdapter/testLocalization.js +0 -21
  339. package/modern/tests/describePicker/describePicker.js +0 -162
  340. package/modern/tests/describePicker/describePicker.types.js +0 -1
  341. package/modern/tests/describePicker/index.js +0 -1
  342. package/modern/tests/describeValidation/describeValidation.js +0 -31
  343. package/modern/tests/describeValidation/describeValidation.types.js +0 -1
  344. package/modern/tests/describeValidation/index.js +0 -1
  345. package/modern/tests/describeValidation/testDayViewValidation.js +0 -280
  346. package/modern/tests/describeValidation/testMinutesViewValidation.js +0 -193
  347. package/modern/tests/describeValidation/testMonthViewValidation.js +0 -137
  348. package/modern/tests/describeValidation/testTextFieldValidation.js +0 -470
  349. package/modern/tests/describeValidation/testYearViewValidation.js +0 -94
  350. package/modern/tests/describeValue/describeValue.js +0 -59
  351. package/modern/tests/describeValue/describeValue.types.js +0 -1
  352. package/modern/tests/describeValue/index.js +0 -1
  353. package/modern/tests/describeValue/testControlledUnControlled.js +0 -239
  354. package/modern/tests/describeValue/testPickerActionBar.js +0 -254
  355. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -371
  356. package/modern/tests/describeValue/testShortcuts.js +0 -112
  357. package/node/tests/describe.types.js +0 -5
  358. package/node/tests/describeAdapters/describeAdapters.js +0 -37
  359. package/node/tests/describeAdapters/index.js +0 -12
  360. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.js +0 -37
  361. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +0 -5
  362. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.utils.js +0 -10
  363. package/node/tests/describeGregorianAdapter/index.js +0 -19
  364. package/node/tests/describeGregorianAdapter/testCalculations.js +0 -711
  365. package/node/tests/describeGregorianAdapter/testFormat.js +0 -34
  366. package/node/tests/describeGregorianAdapter/testLocalization.js +0 -57
  367. package/node/tests/describeHijriAdapter/describeHijriAdapter.js +0 -29
  368. package/node/tests/describeHijriAdapter/describeHijriAdapter.types.js +0 -5
  369. package/node/tests/describeHijriAdapter/index.js +0 -12
  370. package/node/tests/describeHijriAdapter/testCalculations.js +0 -171
  371. package/node/tests/describeHijriAdapter/testLocalization.js +0 -28
  372. package/node/tests/describeJalaliAdapter/describeJalaliAdapter.js +0 -29
  373. package/node/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +0 -5
  374. package/node/tests/describeJalaliAdapter/index.js +0 -12
  375. package/node/tests/describeJalaliAdapter/testCalculations.js +0 -244
  376. package/node/tests/describeJalaliAdapter/testLocalization.js +0 -28
  377. package/node/tests/describePicker/describePicker.js +0 -173
  378. package/node/tests/describePicker/describePicker.types.js +0 -5
  379. package/node/tests/describePicker/index.js +0 -12
  380. package/node/tests/describeValidation/describeValidation.js +0 -39
  381. package/node/tests/describeValidation/describeValidation.types.js +0 -5
  382. package/node/tests/describeValidation/index.js +0 -12
  383. package/node/tests/describeValidation/testDayViewValidation.js +0 -290
  384. package/node/tests/describeValidation/testMinutesViewValidation.js +0 -203
  385. package/node/tests/describeValidation/testMonthViewValidation.js +0 -147
  386. package/node/tests/describeValidation/testTextFieldValidation.js +0 -480
  387. package/node/tests/describeValidation/testYearViewValidation.js +0 -104
  388. package/node/tests/describeValue/describeValue.js +0 -69
  389. package/node/tests/describeValue/describeValue.types.js +0 -5
  390. package/node/tests/describeValue/index.js +0 -12
  391. package/node/tests/describeValue/testControlledUnControlled.js +0 -248
  392. package/node/tests/describeValue/testPickerActionBar.js +0 -264
  393. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -381
  394. package/node/tests/describeValue/testShortcuts.js +0 -122
  395. package/tests/describe.types.js +0 -1
  396. package/tests/describeAdapters/describeAdapters.js +0 -29
  397. package/tests/describeAdapters/index.js +0 -1
  398. package/tests/describeGregorianAdapter/describeGregorianAdapter.js +0 -30
  399. package/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +0 -1
  400. package/tests/describeGregorianAdapter/describeGregorianAdapter.utils.js +0 -2
  401. package/tests/describeGregorianAdapter/index.js +0 -2
  402. package/tests/describeGregorianAdapter/testCalculations.js +0 -706
  403. package/tests/describeGregorianAdapter/testFormat.js +0 -27
  404. package/tests/describeGregorianAdapter/testLocalization.js +0 -50
  405. package/tests/describeHijriAdapter/describeHijriAdapter.js +0 -21
  406. package/tests/describeHijriAdapter/describeHijriAdapter.types.js +0 -1
  407. package/tests/describeHijriAdapter/index.js +0 -1
  408. package/tests/describeHijriAdapter/testCalculations.js +0 -164
  409. package/tests/describeHijriAdapter/testLocalization.js +0 -21
  410. package/tests/describeJalaliAdapter/describeJalaliAdapter.js +0 -21
  411. package/tests/describeJalaliAdapter/describeJalaliAdapter.types.js +0 -1
  412. package/tests/describeJalaliAdapter/index.js +0 -1
  413. package/tests/describeJalaliAdapter/testCalculations.js +0 -237
  414. package/tests/describeJalaliAdapter/testLocalization.js +0 -21
  415. package/tests/describePicker/describePicker.js +0 -162
  416. package/tests/describePicker/describePicker.types.js +0 -1
  417. package/tests/describePicker/index.js +0 -1
  418. package/tests/describeValidation/describeValidation.js +0 -31
  419. package/tests/describeValidation/describeValidation.types.js +0 -1
  420. package/tests/describeValidation/index.js +0 -1
  421. package/tests/describeValidation/testDayViewValidation.js +0 -280
  422. package/tests/describeValidation/testMinutesViewValidation.js +0 -193
  423. package/tests/describeValidation/testMonthViewValidation.js +0 -137
  424. package/tests/describeValidation/testTextFieldValidation.js +0 -470
  425. package/tests/describeValidation/testYearViewValidation.js +0 -94
  426. package/tests/describeValue/describeValue.js +0 -59
  427. package/tests/describeValue/describeValue.types.js +0 -1
  428. package/tests/describeValue/index.js +0 -1
  429. package/tests/describeValue/testControlledUnControlled.js +0 -239
  430. package/tests/describeValue/testPickerActionBar.js +0 -254
  431. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +0 -371
  432. package/tests/describeValue/testShortcuts.js +0 -112
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["onClick", "onKeyDown", "onFocus", "onBlur", "onMouseUp", "onPaste", "error"];
3
+ const _excluded = ["onClick", "onKeyDown", "onFocus", "onBlur", "onMouseUp", "onPaste", "error", "clearable", "onClear"];
4
4
  import * as React from 'react';
5
5
  import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
6
6
  import useEventCallback from '@mui/utils/useEventCallback';
@@ -42,7 +42,9 @@ export const useField = params => {
42
42
  onBlur,
43
43
  onMouseUp,
44
44
  onPaste,
45
- error
45
+ error,
46
+ clearable,
47
+ onClear
46
48
  },
47
49
  fieldValueManager,
48
50
  valueManager,
@@ -84,8 +86,13 @@ export const useField = params => {
84
86
  const sectionIndex = nextSectionIndex === -1 ? state.sections.length - 1 : nextSectionIndex - 1;
85
87
  setSelectedSections(sectionIndex);
86
88
  };
87
- const handleInputClick = useEventCallback((...args) => {
88
- onClick?.(...args);
89
+ const handleInputClick = useEventCallback((event, ...args) => {
90
+ // The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.
91
+ // We avoid this by checking if the call of `handleInputClick` is actually intended, or a side effect.
92
+ if (event.isDefaultPrevented()) {
93
+ return;
94
+ }
95
+ onClick?.(event, ...args);
89
96
  syncSelectionFromDOM();
90
97
  });
91
98
  const handleInputMouseUp = useEventCallback(event => {
@@ -369,7 +376,8 @@ export const useField = params => {
369
376
  return 'numeric';
370
377
  }, [selectedSectionIndexes, state.sections]);
371
378
  const inputHasFocus = inputRef.current && inputRef.current === getActiveElement(document);
372
- const shouldShowPlaceholder = !inputHasFocus && valueManager.areValuesEqual(utils, state.value, valueManager.emptyValue);
379
+ const areAllSectionsEmpty = valueManager.areValuesEqual(utils, state.value, valueManager.emptyValue);
380
+ const shouldShowPlaceholder = !inputHasFocus && areAllSectionsEmpty;
373
381
  React.useImperativeHandle(unstableFieldRef, () => ({
374
382
  getSections: () => state.sections,
375
383
  getActiveSectionIndex: () => {
@@ -384,6 +392,13 @@ export const useField = params => {
384
392
  },
385
393
  setSelectedSections: activeSectionIndex => setSelectedSections(activeSectionIndex)
386
394
  }));
395
+ const handleClearValue = useEventCallback((event, ...args) => {
396
+ event.preventDefault();
397
+ onClear?.(event, ...args);
398
+ clearValue();
399
+ inputRef?.current?.focus();
400
+ setSelectedSections(0);
401
+ });
387
402
  return _extends({
388
403
  placeholder,
389
404
  autoComplete: 'off'
@@ -398,7 +413,9 @@ export const useField = params => {
398
413
  onChange: handleInputChange,
399
414
  onKeyDown: handleInputKeyDown,
400
415
  onMouseUp: handleInputMouseUp,
416
+ onClear: handleClearValue,
401
417
  error: inputError,
402
- ref: handleRef
418
+ ref: handleRef,
419
+ clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly)
403
420
  });
404
421
  };
@@ -385,15 +385,20 @@ export const splitFormatIntoSections = (utils, timezone, localeText, format, dat
385
385
  const escapedParts = getEscapedPartsFromFormat(utils, expandedFormat);
386
386
 
387
387
  // This RegExp test if the beginning of a string correspond to a supported token
388
- const isTokenStartRegExp = new RegExp(`^(${Object.keys(utils.formatTokenMap).join('|')})`);
388
+ const isTokenStartRegExp = new RegExp(`^(${Object.keys(utils.formatTokenMap).sort((a, b) => b.length - a.length) // Sort to put longest word first
389
+ .join('|')})`, 'g') // used to get access to lastIndex state
390
+ ;
391
+
389
392
  let currentTokenValue = '';
390
393
  for (let i = 0; i < expandedFormat.length; i += 1) {
391
394
  const escapedPartOfCurrentChar = escapedParts.find(escapeIndex => escapeIndex.start <= i && escapeIndex.end >= i);
392
395
  const char = expandedFormat[i];
393
396
  const isEscapedChar = escapedPartOfCurrentChar != null;
394
397
  const potentialToken = `${currentTokenValue}${expandedFormat.slice(i)}`;
395
- if (!isEscapedChar && char.match(/([A-Za-z]+)/) && isTokenStartRegExp.test(potentialToken)) {
396
- currentTokenValue += char;
398
+ const regExpMatch = isTokenStartRegExp.test(potentialToken);
399
+ if (!isEscapedChar && char.match(/([A-Za-z]+)/) && regExpMatch) {
400
+ currentTokenValue = potentialToken.slice(0, isTokenStartRegExp.lastIndex);
401
+ i += isTokenStartRegExp.lastIndex - 1;
397
402
  } else {
398
403
  // If we are on the opening or closing character of an escaped part of the format,
399
404
  // Then we ignore this character.
@@ -116,4 +116,8 @@ export const resolveDateFormat = (utils, {
116
116
  return /en/.test(utils.getCurrentLocaleCode()) ? formats.normalDateWithWeekday : formats.normalDate;
117
117
  }
118
118
  return formats.keyboardDate;
119
+ };
120
+ export const getWeekdays = (utils, date) => {
121
+ const start = utils.startOfWeek(date);
122
+ return [0, 1, 2, 3, 4, 5, 6].map(diff => utils.addDays(start, diff));
119
123
  };
@@ -42,6 +42,8 @@ const beBYPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Абраць дату, абрана дата ${utils.format(value, 'fullDate')}` : 'Абраць дату',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Абраць час, абрыны час ${utils.format(value, 'fullTime')}` : 'Абраць час',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: 'абраць час',
47
49
  dateTableLabel: 'абраць дату',
@@ -41,6 +41,8 @@ const caESPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Tria la data, la data triada és ${utils.format(value, 'fullDate')}` : 'Tria la data',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Tria l'hora, l'hora triada és ${utils.format(value, 'fullTime')}` : "Tria l'hora",
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'tria la data',
46
48
  dateTableLabel: "tria l'hora",
@@ -42,6 +42,8 @@ const csCZPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vyberte datum, vybrané datum je ${utils.format(value, 'fullDate')}` : 'Vyberte datum',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vyberte čas, vybraný čas je ${utils.format(value, 'fullTime')}` : 'Vyberte čas',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: 'vyberte čas',
47
49
  dateTableLabel: 'vyberte datum',
@@ -42,6 +42,8 @@ const daDKPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vælg dato, valgte dato er ${utils.format(value, 'fullDate')}` : 'Vælg dato',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vælg tidspunkt, valgte tidspunkt er ${utils.format(value, 'fullTime')}` : 'Vælg tidspunkt',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: 'vælg tidspunkt',
47
49
  dateTableLabel: 'vælg dato',
@@ -42,6 +42,8 @@ const deDEPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Datum auswählen, gewähltes Datum ist ${utils.format(value, 'fullDate')}` : 'Datum auswählen',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Uhrzeit auswählen, gewählte Uhrzeit ist ${utils.format(value, 'fullTime')}` : 'Uhrzeit auswählen',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: 'Uhrzeit auswählen',
47
49
  dateTableLabel: 'Datum auswählen',
@@ -41,6 +41,8 @@ const elGRPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Επιλέξτε ημερομηνία, η επιλεγμένη ημερομηνία είναι ${utils.format(value, 'fullDate')}` : 'Επιλέξτε ημερομηνία',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Επιλέξτε ώρα, η επιλεγμένη ώρα είναι ${utils.format(value, 'fullTime')}` : 'Επιλέξτε ώρα',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'επιλέξτε ώρα',
46
48
  dateTableLabel: 'επιλέξτε ημερομηνία',
@@ -38,6 +38,7 @@ const enUSPickers = {
38
38
  // Open picker labels
39
39
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choose date, selected date is ${utils.format(value, 'fullDate')}` : 'Choose date',
40
40
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choose time, selected time is ${utils.format(value, 'fullTime')}` : 'Choose time',
41
+ fieldClearLabel: 'Clear value',
41
42
  // Table labels
42
43
  timeTableLabel: 'pick time',
43
44
  dateTableLabel: 'pick date',
@@ -41,6 +41,8 @@ const esESPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Elige la fecha, la fecha elegida es ${utils.format(value, 'fullDate')}` : 'Elige la fecha',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Elige la hora, la hora elegido es ${utils.format(value, 'fullTime')}` : 'Elige la hora',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'elige la fecha',
46
48
  dateTableLabel: 'elige la hora',
@@ -41,6 +41,8 @@ const faIRPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `تاریخ را انتخاب کنید، تاریخ انتخاب شده ${utils.format(value, 'fullDate')} می باشد` : 'تاریخ را انتخاب کنید',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `ساعت را انتخاب کنید، ساعت انتخاب شده ${utils.format(value, 'fullTime')} می باشد` : 'ساعت را انتخاب کنید',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'انتخاب تاریخ',
46
48
  dateTableLabel: 'انتخاب ساعت',
@@ -41,19 +41,19 @@ const fiFIPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Valitse päivä, valittu päivä on ${utils.format(value, 'fullDate')}` : 'Valitse päivä',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Valitse aika, valittu aika on ${utils.format(value, 'fullTime')}` : 'Valitse aika',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'valitse aika',
46
- dateTableLabel: 'valitse päivä'
47
-
48
+ dateTableLabel: 'valitse päivä',
48
49
  // Field section placeholders
49
- // fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
50
- // fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
51
- // fieldDayPlaceholder: () => 'DD',
52
- // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
53
- // fieldHoursPlaceholder: () => 'hh',
54
- // fieldMinutesPlaceholder: () => 'mm',
55
- // fieldSecondsPlaceholder: () => 'ss',
56
- // fieldMeridiemPlaceholder: () => 'aa',
50
+ fieldYearPlaceholder: params => 'V'.repeat(params.digitAmount),
51
+ fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'KKKK' : 'KK',
52
+ fieldDayPlaceholder: () => 'PP',
53
+ fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
54
+ fieldHoursPlaceholder: () => 'tt',
55
+ fieldMinutesPlaceholder: () => 'mm',
56
+ fieldSecondsPlaceholder: () => 'ss',
57
+ fieldMeridiemPlaceholder: () => 'aa'
57
58
  };
58
-
59
59
  export const fiFI = getPickersLocalization(fiFIPickers);
@@ -41,6 +41,8 @@ const frFRPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choisir la date, la date sélectionnée est ${utils.format(value, 'fullDate')}` : 'Choisir la date',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choisir l'heure, l'heure sélectionnée est ${utils.format(value, 'fullTime')}` : "Choisir l'heure",
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: "choix de l'heure",
46
48
  dateTableLabel: 'choix de la date',
@@ -41,6 +41,8 @@ const heILPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `בחירת תאריך, התאריך שנבחר הוא ${utils.format(value, 'fullDate')}` : 'בחירת תאריך',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `בחירת שעה, השעה שנבחרה היא ${utils.format(value, 'fullTime')}` : 'בחירת שעה',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'בחירת שעה',
46
48
  dateTableLabel: 'בחירת תאריך',
@@ -42,6 +42,7 @@ const huHUPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Válasszon dátumot, a kiválasztott dátum: ${utils.format(value, 'fullDate')}` : 'Válasszon dátumot',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Válasszon időt, a kiválasztott idő: ${utils.format(value, 'fullTime')}` : 'Válasszon időt',
45
+ fieldClearLabel: 'Tartalom ürítése',
45
46
  // Table labels
46
47
  timeTableLabel: 'válasszon időt',
47
48
  dateTableLabel: 'válasszon dátumot',
@@ -41,6 +41,8 @@ const isISPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Velja dagsetningu, valin dagsetning er ${utils.format(value, 'fullDate')}` : 'Velja dagsetningu',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Velja tíma, valinn tími er ${utils.format(value, 'fullTime')}` : 'Velja tíma',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'velja tíma',
46
48
  dateTableLabel: 'velja dagsetningu',
@@ -41,6 +41,8 @@ const itITPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Scegli la data, la data selezionata è ${utils.format(value, 'fullDate')}` : 'Scegli la data',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Scegli l'ora, l'ora selezionata è ${utils.format(value, 'fullTime')}` : "Scegli l'ora",
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: "scegli un'ora",
46
48
  dateTableLabel: 'scegli una data',
@@ -42,6 +42,8 @@ const jaJPPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `日付を選択してください。選択した日付は ${utils.format(value, 'fullDate')} です` : '日付を選択してください',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `時間を選択してください。選択した時間は ${utils.format(value, 'fullTime')} です` : '時間を選択してください',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: '時間を選択',
47
49
  dateTableLabel: '日付を選択',
@@ -41,6 +41,8 @@ const koKRPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `날짜를 선택하세요. 현재 선택된 날짜는 ${utils.format(value, 'fullDate')}입니다.` : '날짜를 선택하세요',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `시간을 선택하세요. 현재 선택된 시간은 ${utils.format(value, 'fullTime')}입니다.` : '시간을 선택하세요',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: '선택한 시간',
46
48
  dateTableLabel: '선택한 날짜',
@@ -42,6 +42,8 @@ const kzKZPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Күнді таңдаңыз, таңдалған күн ${utils.format(value, 'fullDate')}` : 'Күнді таңдаңыз',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Уақытты таңдаңыз, таңдалған уақыт ${utils.format(value, 'fullTime')}` : 'Уақытты таңдаңыз',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: 'уақытты таңдау',
47
49
  dateTableLabel: 'күнді таңдау',
@@ -41,6 +41,8 @@ const nbNOPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Velg dato, valgt dato er ${utils.format(value, 'fullDate')}` : 'Velg dato',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Velg tid, valgt tid er ${utils.format(value, 'fullTime')}` : 'Velg tid',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'velg tid',
46
48
  dateTableLabel: 'velg dato',
@@ -41,6 +41,8 @@ const nlNLPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Kies datum, geselecteerde datum is ${utils.format(value, 'fullDate')}` : 'Kies datum',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Kies tijd, geselecteerde tijd is ${utils.format(value, 'fullTime')}` : 'Kies tijd',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'kies tijd',
46
48
  dateTableLabel: 'kies datum',
@@ -41,6 +41,8 @@ const plPLPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value != null && utils.isValid(value) ? `Wybierz datę, obecnie wybrana data to ${utils.format(value, 'fullDate')}` : 'Wybierz datę',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Wybierz czas, obecnie wybrany czas to ${utils.format(value, 'fullTime')}` : 'Wybierz czas',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'wybierz czas',
46
48
  dateTableLabel: 'wybierz datę'
@@ -41,6 +41,8 @@ const ptBRPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Escolha uma data, data selecionada ${utils.format(value, 'fullDate')}` : 'Escolha uma data',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Escolha uma hora, hora selecionada ${utils.format(value, 'fullTime')}` : 'Escolha uma hora',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'escolha uma hora',
46
48
  dateTableLabel: 'escolha uma data',
@@ -42,6 +42,7 @@ const roROPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Selectați data, data selectată este ${utils.format(value, 'fullDate')}` : 'Selectați data',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Selectați ora, ora selectată este ${utils.format(value, 'fullTime')}` : 'Selectați ora',
45
+ fieldClearLabel: 'Golire conținut',
45
46
  // Table labels
46
47
  timeTableLabel: 'Selectați ora',
47
48
  dateTableLabel: 'Selectați data',
@@ -42,6 +42,8 @@ const ruRUPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Выберите дату, выбрана дата ${utils.format(value, 'fullDate')}` : 'Выберите дату',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Выберите время, выбрано время ${utils.format(value, 'fullTime')}` : 'Выберите время',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: 'выбрать время',
47
49
  dateTableLabel: 'выбрать дату',
@@ -42,6 +42,8 @@ const skSKPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vyberte dátum, vybraný dátum je ${utils.format(value, 'fullDate')}` : 'Vyberte dátum',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vyberte čas, vybraný čas je ${utils.format(value, 'fullTime')}` : 'Vyberte čas',
45
+ // fieldClearLabel: 'Clear value',
46
+
45
47
  // Table labels
46
48
  timeTableLabel: 'vyberte čas',
47
49
  dateTableLabel: 'vyberte dátum',
@@ -41,6 +41,8 @@ const svSEPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Välj datum, valt datum är ${utils.format(value, 'fullDate')}` : 'Välj datum',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Välj tid, vald tid är ${utils.format(value, 'fullTime')}` : 'Välj tid',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'välj tid',
46
48
  dateTableLabel: 'välj datum'
@@ -41,6 +41,8 @@ const trTRPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Tarih seçin, seçilen tarih: ${utils.format(value, 'fullDate')}` : 'Tarih seç',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Saat seçin, seçilen saat: ${utils.format(value, 'fullTime')}` : 'Saat seç',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'saat seç',
46
48
  dateTableLabel: 'tarih seç',
@@ -41,6 +41,8 @@ const ukUAPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Оберіть дату, обрана дата ${utils.format(value, 'fullDate')}` : 'Оберіть дату',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Оберіть час, обраний час ${utils.format(value, 'fullTime')}` : 'Оберіть час',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'оберіть час',
46
48
  dateTableLabel: 'оберіть дату',
@@ -41,6 +41,8 @@ const urPKPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `تاریخ منتخب کریں، منتخب شدہ تاریخ ہے ${utils.format(value, 'fullDate')}` : 'تاریخ منتخب کریں',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `وقت منتخب کریں، منتخب شدہ وقت ہے ${utils.format(value, 'fullTime')}` : 'وقت منتخب کریں',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'وقت منتخب کریں',
46
48
  dateTableLabel: 'تاریخ منتخب کریں'
@@ -41,6 +41,8 @@ const viVNPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Chọn ngày, ngày đã chọn là ${utils.format(value, 'fullDate')}` : 'Chọn ngày',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Chọn giờ, giờ đã chọn là ${utils.format(value, 'fullTime')}` : 'Chọn giờ',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: 'chọn giờ',
46
48
  dateTableLabel: 'chọn ngày',
@@ -41,6 +41,8 @@ const zhCNPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `选择日期,已选择${utils.format(value, 'fullDate')}` : '选择日期',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `选择时间,已选择${utils.format(value, 'fullTime')}` : '选择时间',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: '选择时间',
46
48
  dateTableLabel: '选择日期',
@@ -41,6 +41,8 @@ const zhHKPickers = {
41
41
  // Open picker labels
42
42
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `選擇日期,已選擇${utils.format(value, 'fullDate')}` : '選擇日期',
43
43
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `選擇時間,已選擇${utils.format(value, 'fullTime')}` : '選擇時間',
44
+ // fieldClearLabel: 'Clear value',
45
+
44
46
  // Table labels
45
47
  timeTableLabel: '選擇時間',
46
48
  dateTableLabel: '選擇日期',
@@ -382,9 +382,10 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
382
382
  componentsProps: _propTypes.default.object,
383
383
  /**
384
384
  * Formats the day of week displayed in the calendar header.
385
- * @param {string} day The day of week provided by the adapter's method `getWeekdays`.
385
+ * @param {string} day The day of week provided by the adapter. Deprecated, will be removed in v7: Use `date` instead.
386
+ * @param {TDate} date The date of the day of week provided by the adapter.
386
387
  * @returns {string} The name to display.
387
- * @default (day) => day.charAt(0).toUpperCase()
388
+ * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
388
389
  */
389
390
  dayOfWeekFormatter: _propTypes.default.func,
390
391
  /**
@@ -510,6 +511,9 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
510
511
  renderLoading: _propTypes.default.func,
511
512
  /**
512
513
  * Disable specific date.
514
+ *
515
+ * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
516
+ *
513
517
  * @template TDate
514
518
  * @param {TDate} day The date to test.
515
519
  * @returns {boolean} If `true` the date will be disabled.
@@ -31,6 +31,7 @@ const useUtilityClasses = ownerState => {
31
31
  classes
32
32
  } = ownerState;
33
33
  const slots = {
34
+ root: ['root'],
34
35
  header: ['header'],
35
36
  weekDayLabel: ['weekDayLabel'],
36
37
  loadingContainer: ['loadingContainer'],
@@ -42,8 +43,12 @@ const useUtilityClasses = ownerState => {
42
43
  };
43
44
  return (0, _utils2.unstable_composeClasses)(slots, _dayCalendarClasses.getDayCalendarUtilityClass, classes);
44
45
  };
45
- const defaultDayOfWeekFormatter = day => day.charAt(0).toUpperCase();
46
46
  const weeksContainerHeight = (_dimensions.DAY_SIZE + _dimensions.DAY_MARGIN * 2) * 6;
47
+ const PickersCalendarDayRoot = (0, _styles.styled)('div', {
48
+ name: 'MuiDayCalendar',
49
+ slot: 'Root',
50
+ overridesResolver: (_, styles) => styles.root
51
+ })({});
47
52
  const PickersCalendarDayHeader = (0, _styles.styled)('div', {
48
53
  name: 'MuiDayCalendar',
49
54
  slot: 'Header',
@@ -243,7 +248,7 @@ function DayCalendar(inProps) {
243
248
  shouldDisableDate,
244
249
  shouldDisableMonth,
245
250
  shouldDisableYear,
246
- dayOfWeekFormatter = defaultDayOfWeekFormatter,
251
+ dayOfWeekFormatter: dayOfWeekFormatterFromProps,
247
252
  hasFocus,
248
253
  onFocusedViewChange,
249
254
  gridLabelId,
@@ -257,6 +262,9 @@ function DayCalendar(inProps) {
257
262
  const classes = useUtilityClasses(props);
258
263
  const theme = (0, _styles.useTheme)();
259
264
  const isRTL = theme.direction === 'rtl';
265
+
266
+ // before we could define this outside of the component scope, but now we need utils, which is only defined here
267
+ const dayOfWeekFormatter = dayOfWeekFormatterFromProps || ((_day, date) => utils.format(date, 'weekdayShort').charAt(0).toUpperCase());
260
268
  const isDateDisabled = (0, _useIsDateDisabled.useIsDateDisabled)({
261
269
  shouldDisableDate,
262
270
  shouldDisableMonth,
@@ -398,9 +406,10 @@ function DayCalendar(inProps) {
398
406
  }
399
407
  return toDisplay;
400
408
  }, [currentMonth, fixedWeekNumber, utils, timezone]);
401
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
409
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(PickersCalendarDayRoot, {
402
410
  role: "grid",
403
411
  "aria-labelledby": gridLabelId,
412
+ className: classes.root,
404
413
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(PickersCalendarDayHeader, {
405
414
  role: "row",
406
415
  className: classes.header,
@@ -410,13 +419,18 @@ function DayCalendar(inProps) {
410
419
  "aria-label": localeText.calendarWeekNumberHeaderLabel,
411
420
  className: classes.weekNumberLabel,
412
421
  children: localeText.calendarWeekNumberHeaderText
413
- }), utils.getWeekdays().map((day, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersCalendarWeekDayLabel, {
414
- variant: "caption",
415
- role: "columnheader",
416
- "aria-label": utils.format(utils.addDays(startOfCurrentWeek, i), 'weekday'),
417
- className: classes.weekDayLabel,
418
- children: dayOfWeekFormatter?.(day) ?? day
419
- }, day + i.toString()))]
422
+ }), (0, _dateUtils.getWeekdays)(utils, now).map((weekday, i) => {
423
+ // regression-prevention:
424
+ // since 'weekdayShort' now always returns an abbreviated form we slice the first 2 letters from it.
425
+ const day = utils.format(weekday, 'weekdayShort').slice(0, 2);
426
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersCalendarWeekDayLabel, {
427
+ variant: "caption",
428
+ role: "columnheader",
429
+ "aria-label": utils.format(utils.addDays(startOfCurrentWeek, i), 'weekday'),
430
+ className: classes.weekDayLabel,
431
+ children: dayOfWeekFormatter?.(day, weekday) ?? day
432
+ }, day + i.toString());
433
+ })]
420
434
  }), loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersCalendarLoadingContainer, {
421
435
  className: classes.loadingContainer,
422
436
  children: renderLoading()
@@ -7,5 +7,5 @@ exports.getDayCalendarUtilityClass = exports.dayPickerClasses = void 0;
7
7
  var _utils = require("@mui/utils");
8
8
  const getDayCalendarUtilityClass = slot => (0, _utils.unstable_generateUtilityClass)('MuiDayCalendar', slot);
9
9
  exports.getDayCalendarUtilityClass = getDayCalendarUtilityClass;
10
- const dayPickerClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDayCalendar', ['header', 'weekDayLabel', 'loadingContainer', 'slideTransition', 'monthContainer', 'weekContainer', 'weekNumberLabel', 'weekNumber']);
10
+ const dayPickerClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDayCalendar', ['root', 'header', 'weekDayLabel', 'loadingContainer', 'slideTransition', 'monthContainer', 'weekContainer', 'weekNumberLabel', 'weekNumber']);
11
11
  exports.dayPickerClasses = dayPickerClasses;