@mui/x-date-pickers 7.16.0 → 7.17.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 (370) hide show
  1. package/AdapterDayjs/AdapterDayjs.js +1 -1
  2. package/CHANGELOG.md +87 -0
  3. package/DateCalendar/DateCalendar.js +2 -0
  4. package/DateCalendar/useCalendarState.js +2 -0
  5. package/DateCalendar/useIsDateDisabled.d.ts +4 -3
  6. package/DateCalendar/useIsDateDisabled.js +5 -3
  7. package/DateField/DateField.js +2 -0
  8. package/DateField/DateField.types.d.ts +7 -2
  9. package/DateField/index.d.ts +1 -1
  10. package/DateField/useDateField.d.ts +1 -1
  11. package/DateField/useDateField.js +5 -3
  12. package/DatePicker/DatePicker.js +2 -0
  13. package/DatePicker/DatePickerToolbar.js +2 -0
  14. package/DateTimeField/DateTimeField.js +2 -0
  15. package/DateTimeField/DateTimeField.types.d.ts +7 -2
  16. package/DateTimeField/index.d.ts +1 -1
  17. package/DateTimeField/useDateTimeField.d.ts +1 -1
  18. package/DateTimeField/useDateTimeField.js +5 -3
  19. package/DateTimePicker/DateTimePicker.js +2 -0
  20. package/DateTimePicker/DateTimePickerTabs.js +2 -0
  21. package/DateTimePicker/DateTimePickerToolbar.js +2 -0
  22. package/DayCalendarSkeleton/DayCalendarSkeleton.js +2 -0
  23. package/DesktopDatePicker/DesktopDatePicker.js +10 -3
  24. package/DesktopDateTimePicker/DesktopDateTimePicker.js +10 -3
  25. package/DesktopTimePicker/DesktopTimePicker.js +10 -3
  26. package/DigitalClock/DigitalClock.js +2 -0
  27. package/LocalizationProvider/LocalizationProvider.js +2 -0
  28. package/MobileDatePicker/MobileDatePicker.js +10 -3
  29. package/MobileDateTimePicker/MobileDateTimePicker.js +10 -3
  30. package/MobileTimePicker/MobileTimePicker.js +10 -3
  31. package/MonthCalendar/MonthCalendar.js +2 -0
  32. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
  33. package/PickersActionBar/PickersActionBar.js +2 -0
  34. package/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
  35. package/PickersDay/PickersDay.js +2 -0
  36. package/PickersLayout/PickersLayout.js +2 -0
  37. package/PickersLayout/usePickerLayout.js +2 -0
  38. package/PickersSectionList/PickersSectionList.js +2 -0
  39. package/PickersShortcuts/PickersShortcuts.js +2 -0
  40. package/PickersTextField/PickersTextField.js +2 -0
  41. package/StaticDatePicker/StaticDatePicker.js +3 -1
  42. package/StaticDateTimePicker/StaticDateTimePicker.js +3 -1
  43. package/StaticTimePicker/StaticTimePicker.js +3 -1
  44. package/TimeClock/Clock.js +1 -1
  45. package/TimeClock/TimeClock.js +2 -0
  46. package/TimeField/TimeField.js +2 -0
  47. package/TimeField/TimeField.types.d.ts +7 -2
  48. package/TimeField/index.d.ts +1 -1
  49. package/TimeField/useTimeField.d.ts +1 -1
  50. package/TimeField/useTimeField.js +5 -3
  51. package/TimePicker/TimePicker.js +2 -0
  52. package/TimePicker/TimePickerToolbar.js +2 -0
  53. package/YearCalendar/YearCalendar.js +2 -0
  54. package/hooks/index.d.ts +1 -0
  55. package/hooks/index.js +2 -1
  56. package/hooks/useClearableField.js +2 -0
  57. package/hooks/usePickersTranslations.js +2 -0
  58. package/hooks/useSplitFieldProps.d.ts +19 -0
  59. package/hooks/useSplitFieldProps.js +43 -0
  60. package/index.d.ts +1 -0
  61. package/index.js +3 -2
  62. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
  63. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
  64. package/internals/hooks/useField/useField.js +11 -6
  65. package/internals/hooks/useField/useField.types.d.ts +4 -22
  66. package/internals/hooks/useField/useFieldState.js +2 -4
  67. package/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
  68. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +2 -2
  69. package/internals/hooks/usePicker/usePicker.d.ts +1 -2
  70. package/internals/hooks/usePicker/usePicker.js +1 -1
  71. package/internals/hooks/usePicker/usePickerValue.d.ts +1 -2
  72. package/internals/hooks/usePicker/usePickerValue.js +12 -16
  73. package/internals/hooks/usePicker/usePickerValue.types.d.ts +4 -15
  74. package/internals/index.d.ts +0 -8
  75. package/internals/index.js +0 -7
  76. package/locales/beBY.d.ts +3 -3
  77. package/locales/beBY.js +4 -4
  78. package/locales/caES.d.ts +3 -3
  79. package/locales/caES.js +3 -3
  80. package/locales/csCZ.d.ts +3 -3
  81. package/locales/csCZ.js +4 -4
  82. package/locales/daDK.d.ts +3 -3
  83. package/locales/daDK.js +3 -3
  84. package/locales/deDE.d.ts +3 -3
  85. package/locales/deDE.js +3 -3
  86. package/locales/elGR.d.ts +3 -3
  87. package/locales/elGR.js +4 -4
  88. package/locales/enUS.d.ts +3 -3
  89. package/locales/enUS.js +4 -4
  90. package/locales/esES.d.ts +3 -3
  91. package/locales/esES.js +3 -3
  92. package/locales/eu.d.ts +3 -3
  93. package/locales/eu.js +3 -3
  94. package/locales/faIR.d.ts +3 -3
  95. package/locales/faIR.js +3 -3
  96. package/locales/fiFI.d.ts +3 -3
  97. package/locales/fiFI.js +3 -3
  98. package/locales/frFR.d.ts +3 -3
  99. package/locales/frFR.js +3 -3
  100. package/locales/heIL.d.ts +3 -3
  101. package/locales/heIL.js +3 -3
  102. package/locales/huHU.d.ts +3 -3
  103. package/locales/huHU.js +3 -3
  104. package/locales/isIS.d.ts +3 -3
  105. package/locales/isIS.js +4 -4
  106. package/locales/itIT.d.ts +3 -3
  107. package/locales/itIT.js +3 -3
  108. package/locales/jaJP.d.ts +3 -3
  109. package/locales/jaJP.js +3 -3
  110. package/locales/koKR.d.ts +3 -3
  111. package/locales/koKR.js +3 -3
  112. package/locales/kzKZ.d.ts +3 -3
  113. package/locales/kzKZ.js +4 -4
  114. package/locales/mk.d.ts +3 -3
  115. package/locales/mk.js +3 -3
  116. package/locales/nbNO.d.ts +3 -3
  117. package/locales/nbNO.js +4 -4
  118. package/locales/nlNL.d.ts +3 -3
  119. package/locales/nlNL.js +3 -3
  120. package/locales/nnNO.d.ts +3 -3
  121. package/locales/nnNO.js +3 -3
  122. package/locales/plPL.d.ts +3 -3
  123. package/locales/plPL.js +4 -4
  124. package/locales/ptBR.d.ts +3 -3
  125. package/locales/ptBR.js +4 -4
  126. package/locales/roRO.d.ts +3 -3
  127. package/locales/roRO.js +3 -3
  128. package/locales/ruRU.d.ts +3 -3
  129. package/locales/ruRU.js +3 -3
  130. package/locales/skSK.d.ts +3 -3
  131. package/locales/skSK.js +4 -4
  132. package/locales/svSE.d.ts +3 -3
  133. package/locales/svSE.js +3 -3
  134. package/locales/trTR.d.ts +3 -3
  135. package/locales/trTR.js +4 -4
  136. package/locales/ukUA.d.ts +3 -3
  137. package/locales/ukUA.js +3 -3
  138. package/locales/urPK.d.ts +3 -3
  139. package/locales/urPK.js +4 -4
  140. package/locales/utils/getPickersLocalization.d.ts +10 -3
  141. package/locales/utils/getPickersLocalization.js +13 -0
  142. package/locales/utils/pickersLocaleTextApi.d.ts +27 -3
  143. package/locales/viVN.d.ts +3 -3
  144. package/locales/viVN.js +3 -3
  145. package/locales/zhCN.d.ts +3 -3
  146. package/locales/zhCN.js +3 -3
  147. package/locales/zhHK.d.ts +3 -3
  148. package/locales/zhHK.js +3 -3
  149. package/models/validation.d.ts +13 -0
  150. package/modern/AdapterDayjs/AdapterDayjs.js +1 -1
  151. package/modern/DateCalendar/DateCalendar.js +2 -0
  152. package/modern/DateCalendar/useCalendarState.js +2 -0
  153. package/modern/DateCalendar/useIsDateDisabled.js +5 -3
  154. package/modern/DateField/DateField.js +2 -0
  155. package/modern/DateField/useDateField.js +5 -3
  156. package/modern/DatePicker/DatePicker.js +2 -0
  157. package/modern/DatePicker/DatePickerToolbar.js +2 -0
  158. package/modern/DateTimeField/DateTimeField.js +2 -0
  159. package/modern/DateTimeField/useDateTimeField.js +5 -3
  160. package/modern/DateTimePicker/DateTimePicker.js +2 -0
  161. package/modern/DateTimePicker/DateTimePickerTabs.js +2 -0
  162. package/modern/DateTimePicker/DateTimePickerToolbar.js +2 -0
  163. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +2 -0
  164. package/modern/DesktopDatePicker/DesktopDatePicker.js +10 -3
  165. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +10 -3
  166. package/modern/DesktopTimePicker/DesktopTimePicker.js +10 -3
  167. package/modern/DigitalClock/DigitalClock.js +2 -0
  168. package/modern/LocalizationProvider/LocalizationProvider.js +2 -0
  169. package/modern/MobileDatePicker/MobileDatePicker.js +10 -3
  170. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +10 -3
  171. package/modern/MobileTimePicker/MobileTimePicker.js +10 -3
  172. package/modern/MonthCalendar/MonthCalendar.js +2 -0
  173. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
  174. package/modern/PickersActionBar/PickersActionBar.js +2 -0
  175. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
  176. package/modern/PickersDay/PickersDay.js +2 -0
  177. package/modern/PickersLayout/PickersLayout.js +2 -0
  178. package/modern/PickersLayout/usePickerLayout.js +2 -0
  179. package/modern/PickersSectionList/PickersSectionList.js +2 -0
  180. package/modern/PickersShortcuts/PickersShortcuts.js +2 -0
  181. package/modern/PickersTextField/PickersTextField.js +2 -0
  182. package/modern/StaticDatePicker/StaticDatePicker.js +3 -1
  183. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +3 -1
  184. package/modern/StaticTimePicker/StaticTimePicker.js +3 -1
  185. package/modern/TimeClock/Clock.js +1 -1
  186. package/modern/TimeClock/TimeClock.js +2 -0
  187. package/modern/TimeField/TimeField.js +2 -0
  188. package/modern/TimeField/useTimeField.js +5 -3
  189. package/modern/TimePicker/TimePicker.js +2 -0
  190. package/modern/TimePicker/TimePickerToolbar.js +2 -0
  191. package/modern/YearCalendar/YearCalendar.js +2 -0
  192. package/modern/hooks/index.js +2 -1
  193. package/modern/hooks/useClearableField.js +2 -0
  194. package/modern/hooks/usePickersTranslations.js +2 -0
  195. package/modern/hooks/useSplitFieldProps.js +43 -0
  196. package/modern/index.js +3 -2
  197. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
  198. package/modern/internals/hooks/useField/useField.js +11 -6
  199. package/modern/internals/hooks/useField/useFieldState.js +2 -4
  200. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
  201. package/modern/internals/hooks/usePicker/usePicker.js +1 -1
  202. package/modern/internals/hooks/usePicker/usePickerValue.js +12 -16
  203. package/modern/internals/index.js +0 -7
  204. package/modern/locales/beBY.js +4 -4
  205. package/modern/locales/caES.js +3 -3
  206. package/modern/locales/csCZ.js +4 -4
  207. package/modern/locales/daDK.js +3 -3
  208. package/modern/locales/deDE.js +3 -3
  209. package/modern/locales/elGR.js +4 -4
  210. package/modern/locales/enUS.js +4 -4
  211. package/modern/locales/esES.js +3 -3
  212. package/modern/locales/eu.js +3 -3
  213. package/modern/locales/faIR.js +3 -3
  214. package/modern/locales/fiFI.js +3 -3
  215. package/modern/locales/frFR.js +3 -3
  216. package/modern/locales/heIL.js +3 -3
  217. package/modern/locales/huHU.js +3 -3
  218. package/modern/locales/isIS.js +4 -4
  219. package/modern/locales/itIT.js +3 -3
  220. package/modern/locales/jaJP.js +3 -3
  221. package/modern/locales/koKR.js +3 -3
  222. package/modern/locales/kzKZ.js +4 -4
  223. package/modern/locales/mk.js +3 -3
  224. package/modern/locales/nbNO.js +4 -4
  225. package/modern/locales/nlNL.js +3 -3
  226. package/modern/locales/nnNO.js +3 -3
  227. package/modern/locales/plPL.js +4 -4
  228. package/modern/locales/ptBR.js +4 -4
  229. package/modern/locales/roRO.js +3 -3
  230. package/modern/locales/ruRU.js +3 -3
  231. package/modern/locales/skSK.js +4 -4
  232. package/modern/locales/svSE.js +3 -3
  233. package/modern/locales/trTR.js +4 -4
  234. package/modern/locales/ukUA.js +3 -3
  235. package/modern/locales/urPK.js +4 -4
  236. package/modern/locales/utils/getPickersLocalization.js +13 -0
  237. package/modern/locales/viVN.js +3 -3
  238. package/modern/locales/zhCN.js +3 -3
  239. package/modern/locales/zhHK.js +3 -3
  240. package/modern/validation/index.js +5 -0
  241. package/modern/validation/useValidation.js +54 -0
  242. package/{internals/utils → modern}/validation/validateDate.js +6 -4
  243. package/modern/{internals/utils/validation → validation}/validateDateTime.js +8 -3
  244. package/{internals/utils → modern}/validation/validateTime.js +6 -4
  245. package/node/AdapterDayjs/AdapterDayjs.js +1 -1
  246. package/node/DateCalendar/DateCalendar.js +1 -0
  247. package/node/DateCalendar/useCalendarState.js +1 -0
  248. package/node/DateCalendar/useIsDateDisabled.js +5 -4
  249. package/node/DateField/DateField.js +1 -0
  250. package/node/DateField/useDateField.js +5 -4
  251. package/node/DatePicker/DatePicker.js +1 -0
  252. package/node/DatePicker/DatePickerToolbar.js +1 -0
  253. package/node/DateTimeField/DateTimeField.js +1 -0
  254. package/node/DateTimeField/useDateTimeField.js +5 -4
  255. package/node/DateTimePicker/DateTimePicker.js +1 -0
  256. package/node/DateTimePicker/DateTimePickerTabs.js +1 -0
  257. package/node/DateTimePicker/DateTimePickerToolbar.js +1 -0
  258. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -0
  259. package/node/DesktopDatePicker/DesktopDatePicker.js +11 -5
  260. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +11 -5
  261. package/node/DesktopTimePicker/DesktopTimePicker.js +11 -5
  262. package/node/DigitalClock/DigitalClock.js +1 -0
  263. package/node/LocalizationProvider/LocalizationProvider.js +1 -0
  264. package/node/MobileDatePicker/MobileDatePicker.js +11 -5
  265. package/node/MobileDateTimePicker/MobileDateTimePicker.js +11 -5
  266. package/node/MobileTimePicker/MobileTimePicker.js +11 -5
  267. package/node/MonthCalendar/MonthCalendar.js +1 -0
  268. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
  269. package/node/PickersActionBar/PickersActionBar.js +1 -0
  270. package/node/PickersCalendarHeader/PickersCalendarHeader.js +1 -0
  271. package/node/PickersDay/PickersDay.js +1 -0
  272. package/node/PickersLayout/PickersLayout.js +1 -0
  273. package/node/PickersLayout/usePickerLayout.js +1 -0
  274. package/node/PickersSectionList/PickersSectionList.js +1 -0
  275. package/node/PickersShortcuts/PickersShortcuts.js +1 -0
  276. package/node/PickersTextField/PickersTextField.js +1 -0
  277. package/node/StaticDatePicker/StaticDatePicker.js +3 -2
  278. package/node/StaticDateTimePicker/StaticDateTimePicker.js +3 -2
  279. package/node/StaticTimePicker/StaticTimePicker.js +3 -2
  280. package/node/TimeClock/Clock.js +1 -1
  281. package/node/TimeClock/TimeClock.js +1 -0
  282. package/node/TimeField/TimeField.js +1 -0
  283. package/node/TimeField/useTimeField.js +5 -4
  284. package/node/TimePicker/TimePicker.js +1 -0
  285. package/node/TimePicker/TimePickerToolbar.js +1 -0
  286. package/node/YearCalendar/YearCalendar.js +1 -0
  287. package/node/hooks/index.js +8 -1
  288. package/node/hooks/useClearableField.js +1 -0
  289. package/node/hooks/usePickersTranslations.js +1 -0
  290. package/node/hooks/useSplitFieldProps.js +51 -0
  291. package/node/index.js +13 -1
  292. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
  293. package/node/internals/hooks/useField/useField.js +11 -6
  294. package/node/internals/hooks/useField/useFieldState.js +2 -4
  295. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
  296. package/node/internals/hooks/usePicker/usePicker.js +1 -1
  297. package/node/internals/hooks/usePicker/usePickerValue.js +12 -16
  298. package/node/internals/index.js +0 -49
  299. package/node/locales/beBY.js +4 -4
  300. package/node/locales/caES.js +3 -3
  301. package/node/locales/csCZ.js +4 -4
  302. package/node/locales/daDK.js +3 -3
  303. package/node/locales/deDE.js +3 -3
  304. package/node/locales/elGR.js +4 -4
  305. package/node/locales/enUS.js +4 -4
  306. package/node/locales/esES.js +3 -3
  307. package/node/locales/eu.js +3 -3
  308. package/node/locales/faIR.js +3 -3
  309. package/node/locales/fiFI.js +3 -3
  310. package/node/locales/frFR.js +3 -3
  311. package/node/locales/heIL.js +3 -3
  312. package/node/locales/huHU.js +3 -3
  313. package/node/locales/isIS.js +4 -4
  314. package/node/locales/itIT.js +3 -3
  315. package/node/locales/jaJP.js +3 -3
  316. package/node/locales/koKR.js +3 -3
  317. package/node/locales/kzKZ.js +4 -4
  318. package/node/locales/mk.js +3 -3
  319. package/node/locales/nbNO.js +4 -4
  320. package/node/locales/nlNL.js +3 -3
  321. package/node/locales/nnNO.js +3 -3
  322. package/node/locales/plPL.js +4 -4
  323. package/node/locales/ptBR.js +4 -4
  324. package/node/locales/roRO.js +3 -3
  325. package/node/locales/ruRU.js +3 -3
  326. package/node/locales/skSK.js +4 -4
  327. package/node/locales/svSE.js +3 -3
  328. package/node/locales/trTR.js +4 -4
  329. package/node/locales/ukUA.js +3 -3
  330. package/node/locales/urPK.js +4 -4
  331. package/node/locales/utils/getPickersLocalization.js +16 -2
  332. package/node/locales/viVN.js +3 -3
  333. package/node/locales/zhCN.js +3 -3
  334. package/node/locales/zhHK.js +3 -3
  335. package/node/validation/index.js +40 -0
  336. package/node/validation/useValidation.js +61 -0
  337. package/node/{internals/utils/validation → validation}/validateDate.js +6 -4
  338. package/node/{internals/utils/validation → validation}/validateDateTime.js +8 -3
  339. package/node/{internals/utils/validation → validation}/validateTime.js +6 -4
  340. package/package.json +2 -2
  341. package/{internals/utils/validation → validation}/extractValidationProps.d.ts +1 -1
  342. package/validation/index.d.ts +9 -0
  343. package/validation/index.js +5 -0
  344. package/validation/package.json +6 -0
  345. package/validation/useValidation.d.ts +68 -0
  346. package/validation/useValidation.js +54 -0
  347. package/validation/validateDate.d.ts +6 -0
  348. package/{modern/internals/utils/validation → validation}/validateDate.js +6 -4
  349. package/validation/validateDateTime.d.ts +7 -0
  350. package/{internals/utils/validation → validation}/validateDateTime.js +8 -3
  351. package/validation/validateTime.d.ts +6 -0
  352. package/{modern/internals/utils/validation → validation}/validateTime.js +6 -4
  353. package/internals/hooks/useValidation.d.ts +0 -24
  354. package/internals/hooks/useValidation.js +0 -22
  355. package/internals/utils/fields.d.ts +0 -5
  356. package/internals/utils/fields.js +0 -28
  357. package/internals/utils/validation/validateDate.d.ts +0 -7
  358. package/internals/utils/validation/validateDateTime.d.ts +0 -7
  359. package/internals/utils/validation/validateTime.d.ts +0 -7
  360. package/internals/utils/warning.d.ts +0 -2
  361. package/internals/utils/warning.js +0 -21
  362. package/modern/internals/hooks/useValidation.js +0 -22
  363. package/modern/internals/utils/fields.js +0 -28
  364. package/modern/internals/utils/warning.js +0 -21
  365. package/node/internals/hooks/useValidation.js +0 -29
  366. package/node/internals/utils/fields.js +0 -36
  367. package/node/internals/utils/warning.js +0 -28
  368. /package/{internals/utils → modern}/validation/extractValidationProps.js +0 -0
  369. /package/node/{internals/utils/validation → validation}/extractValidationProps.js +0 -0
  370. /package/{modern/internals/utils/validation → validation}/extractValidationProps.js +0 -0
@@ -29,7 +29,7 @@ const mkPickers = {
29
29
  timePickerToolbarTitle: 'Избери време',
30
30
  dateRangePickerToolbarTitle: 'Избери временски опсег',
31
31
  // Clock labels
32
- clockLabelText: (view, time, adapter) => `Select ${view}. ${time === null ? 'Нема избрано време' : `Избраното време е ${adapter.format(time, 'fullTime')}`}`,
32
+ clockLabelText: (view, time, utils, formattedTime) => `Select ${view}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Нема избрано време' : `Избраното време е ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
33
33
  hoursClockNumberText: hours => `${hours} часа`,
34
34
  minutesClockNumberText: minutes => `${minutes} минути`,
35
35
  secondsClockNumberText: seconds => `${seconds} секунди`,
@@ -41,8 +41,8 @@ const mkPickers = {
41
41
  calendarWeekNumberAriaLabelText: weekNumber => `Недела ${weekNumber}`,
42
42
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
43
43
  // Open picker labels
44
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Избери датум, избраниот датум е ${utils.format(value, 'fullDate')}` : 'Избери датум',
45
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Избери време, избраното време е ${utils.format(value, 'fullTime')}` : 'Избери време',
44
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Избери датум, избраниот датум е ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Избери датум',
45
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Избери време, избраното време е ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Избери време',
46
46
  fieldClearLabel: 'Избриши',
47
47
  // Table labels
48
48
  timeTableLabel: 'одбери време',
@@ -32,7 +32,7 @@ const nbNOPickers = {
32
32
  timePickerToolbarTitle: 'Velg klokkeslett',
33
33
  dateRangePickerToolbarTitle: 'Velg datoperiode',
34
34
  // Clock labels
35
- clockLabelText: (view, time, adapter) => `Velg ${timeViews[view]}. ${time === null ? 'Ingen tid valgt' : `Valgt tid er ${adapter.format(time, 'fullTime')}`}`,
35
+ clockLabelText: (view, time, utils, formattedTime) => `Velg ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Ingen tid valgt' : `Valgt tid er ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
36
36
  hoursClockNumberText: hours => `${hours} timer`,
37
37
  minutesClockNumberText: minutes => `${minutes} minutter`,
38
38
  secondsClockNumberText: seconds => `${seconds} sekunder`,
@@ -44,9 +44,9 @@ const nbNOPickers = {
44
44
  calendarWeekNumberAriaLabelText: weekNumber => `Uke ${weekNumber}`,
45
45
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
46
46
  // Open picker labels
47
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Velg dato, valgt dato er ${utils.format(value, 'fullDate')}` : 'Velg dato',
48
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Velg tid, valgt tid er ${utils.format(value, 'fullTime')}` : 'Velg tid',
49
- // fieldClearLabel: 'Clear value',
47
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Velg dato, valgt dato er ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Velg dato',
48
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Velg tid, valgt tid er ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Velg tid',
49
+ // fieldClearLabel: 'Clear',
50
50
 
51
51
  // Table labels
52
52
  timeTableLabel: 'velg tid',
@@ -31,7 +31,7 @@ const nlNLPickers = {
31
31
  timePickerToolbarTitle: 'Selecteer tijd',
32
32
  dateRangePickerToolbarTitle: 'Selecteer datumbereik',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `Selecteer ${timeViews[view]}. ${time === null ? 'Geen tijd geselecteerd' : `Geselecteerde tijd is ${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `Selecteer ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Geen tijd geselecteerd' : `Geselecteerde tijd is ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours} uren`,
36
36
  minutesClockNumberText: minutes => `${minutes} minuten`,
37
37
  secondsClockNumberText: seconds => `${seconds} seconden`,
@@ -43,8 +43,8 @@ const nlNLPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Kies datum, geselecteerde datum is ${utils.format(value, 'fullDate')}` : 'Kies datum',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Kies tijd, geselecteerde tijd is ${utils.format(value, 'fullTime')}` : 'Kies tijd',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Kies datum, geselecteerde datum is ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Kies datum',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Kies tijd, geselecteerde tijd is ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Kies tijd',
48
48
  fieldClearLabel: 'Wissen',
49
49
  // Table labels
50
50
  timeTableLabel: 'kies tijd',
@@ -31,7 +31,7 @@ const nnNOPickers = {
31
31
  timePickerToolbarTitle: 'Vel klokkeslett',
32
32
  dateRangePickerToolbarTitle: 'Vel datoperiode',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `Vel ${timeViews[view]}. ${time === null ? 'Ingen tid vald' : `Vald tid er ${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `Vel ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Ingen tid vald' : `Vald tid er ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours} timar`,
36
36
  minutesClockNumberText: minutes => `${minutes} minuttar`,
37
37
  secondsClockNumberText: seconds => `${seconds} sekundar`,
@@ -43,8 +43,8 @@ const nnNOPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `Veke ${weekNumber}`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vel dato, vald dato er ${utils.format(value, 'fullDate')}` : 'Vel dato',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vel tid, vald tid er ${utils.format(value, 'fullTime')}` : 'Vel tid',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Vel dato, vald dato er ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Vel dato',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Vel tid, vald tid er ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Vel tid',
48
48
  fieldClearLabel: 'Fjern verdi',
49
49
  // Table labels
50
50
  timeTableLabel: 'vel tid',
@@ -32,7 +32,7 @@ const plPLPickers = {
32
32
  timePickerToolbarTitle: 'Wybierz czas',
33
33
  dateRangePickerToolbarTitle: 'Wybierz zakres dat',
34
34
  // Clock labels
35
- clockLabelText: (view, time, adapter) => `Wybierz ${timeViews[view]}. ${time === null ? 'Nie wybrano czasu' : `Wybrany czas to ${adapter.format(time, 'fullTime')}`}`,
35
+ clockLabelText: (view, time, utils, formattedTime) => `Wybierz ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Nie wybrano czasu' : `Wybrany czas to ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
36
36
  hoursClockNumberText: hours => `${hours} godzin`,
37
37
  minutesClockNumberText: minutes => `${minutes} minut`,
38
38
  secondsClockNumberText: seconds => `${seconds} sekund`,
@@ -44,9 +44,9 @@ const plPLPickers = {
44
44
  calendarWeekNumberAriaLabelText: weekNumber => `Tydzień ${weekNumber}`,
45
45
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
46
46
  // Open picker labels
47
- openDatePickerDialogue: (value, utils) => value != null && utils.isValid(value) ? `Wybierz datę, obecnie wybrana data to ${utils.format(value, 'fullDate')}` : 'Wybierz datę',
48
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Wybierz czas, obecnie wybrany czas to ${utils.format(value, 'fullTime')}` : 'Wybierz czas',
49
- // fieldClearLabel: 'Clear value',
47
+ openDatePickerDialogue: (value, utils, formattedDate) => value != null && utils.isValid(value) ? `Wybierz datę, obecnie wybrana data to ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Wybierz datę',
48
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Wybierz czas, obecnie wybrany czas to ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Wybierz czas',
49
+ // fieldClearLabel: 'Clear',
50
50
 
51
51
  // Table labels
52
52
  timeTableLabel: 'wybierz czas',
@@ -31,7 +31,7 @@ const ptBRPickers = {
31
31
  timePickerToolbarTitle: 'Selecione a hora',
32
32
  dateRangePickerToolbarTitle: 'Selecione o intervalo entre datas',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `Selecione ${timeViews[view]}. ${time === null ? 'Hora não selecionada' : `Selecionado a hora ${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `Selecione ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Hora não selecionada' : `Selecionado a hora ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours} horas`,
36
36
  minutesClockNumberText: minutes => `${minutes} minutos`,
37
37
  secondsClockNumberText: seconds => `${seconds} segundos`,
@@ -43,9 +43,9 @@ const ptBRPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `Semana ${weekNumber}`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Escolha uma data, data selecionada ${utils.format(value, 'fullDate')}` : 'Escolha uma data',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Escolha uma hora, hora selecionada ${utils.format(value, 'fullTime')}` : 'Escolha uma hora',
48
- // fieldClearLabel: 'Clear value',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Escolha uma data, data selecionada ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Escolha uma data',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Escolha uma hora, hora selecionada ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Escolha uma hora',
48
+ // fieldClearLabel: 'Clear',
49
49
 
50
50
  // Table labels
51
51
  timeTableLabel: 'escolha uma hora',
@@ -33,7 +33,7 @@ const roROPickers = {
33
33
  timePickerToolbarTitle: 'Selectați ora',
34
34
  dateRangePickerToolbarTitle: 'Selectați intervalul de date',
35
35
  // Clock labels
36
- clockLabelText: (view, time, adapter) => `Selectați ${timeViews[view] ?? view}. ${time === null ? 'Nicio oră selectată' : `Ora selectată este ${adapter.format(time, 'fullTime')}`}`,
36
+ clockLabelText: (view, time, utils, formattedTime) => `Selectați ${timeViews[view] ?? view}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Nicio oră selectată' : `Ora selectată este ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
37
37
  hoursClockNumberText: hours => `${hours} ${timeViews.hours}`,
38
38
  minutesClockNumberText: minutes => `${minutes} ${timeViews.minutes}`,
39
39
  secondsClockNumberText: seconds => `${seconds} ${timeViews.seconds}`,
@@ -45,8 +45,8 @@ const roROPickers = {
45
45
  calendarWeekNumberAriaLabelText: weekNumber => `Săptămâna ${weekNumber}`,
46
46
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
47
47
  // Open picker labels
48
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Selectați data, data selectată este ${utils.format(value, 'fullDate')}` : 'Selectați data',
49
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Selectați ora, ora selectată este ${utils.format(value, 'fullTime')}` : 'Selectați ora',
48
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Selectați data, data selectată este ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Selectați data',
49
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Selectați ora, ora selectată este ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Selectați ora',
50
50
  fieldClearLabel: 'Golire conținut',
51
51
  // Table labels
52
52
  timeTableLabel: 'Selectați ora',
@@ -32,7 +32,7 @@ const ruRUPickers = {
32
32
  timePickerToolbarTitle: 'Выбрать время',
33
33
  dateRangePickerToolbarTitle: 'Выбрать период',
34
34
  // Clock labels
35
- clockLabelText: (view, time, adapter) => `Выбрать ${timeViews[view]}. ${time === null ? 'Время не выбрано' : `Выбрано время ${adapter.format(time, 'fullTime')}`}`,
35
+ clockLabelText: (view, time, utils, formattedTime) => `Выбрать ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Время не выбрано' : `Выбрано время ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
36
36
  hoursClockNumberText: hours => `${hours} часов`,
37
37
  minutesClockNumberText: minutes => `${minutes} минут`,
38
38
  secondsClockNumberText: seconds => `${seconds} секунд`,
@@ -44,8 +44,8 @@ const ruRUPickers = {
44
44
  calendarWeekNumberAriaLabelText: weekNumber => `Неделя ${weekNumber}`,
45
45
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
46
46
  // Open picker labels
47
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Выберите дату, выбрана дата ${utils.format(value, 'fullDate')}` : 'Выберите дату',
48
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Выберите время, выбрано время ${utils.format(value, 'fullTime')}` : 'Выберите время',
47
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Выберите дату, выбрана дата ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Выберите дату',
48
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Выберите время, выбрано время ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Выберите время',
49
49
  fieldClearLabel: 'Очистить значение',
50
50
  // Table labels
51
51
  timeTableLabel: 'выбрать время',
@@ -33,7 +33,7 @@ const skSKPickers = {
33
33
  timePickerToolbarTitle: 'Vyberte čas',
34
34
  dateRangePickerToolbarTitle: 'Vyberete rozmedzie dátumov',
35
35
  // Clock labels
36
- clockLabelText: (view, time, adapter) => `${timeViews[view] ?? view} vybraný. ${time === null ? 'Nie je vybraný čas' : `Vybraný čas je ${adapter.format(time, 'fullTime')}`}`,
36
+ clockLabelText: (view, time, utils, formattedTime) => `${timeViews[view] ?? view} vybraný. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Nie je vybraný čas' : `Vybraný čas je ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
37
37
  hoursClockNumberText: hours => `${hours} hodín`,
38
38
  minutesClockNumberText: minutes => `${minutes} minút`,
39
39
  secondsClockNumberText: seconds => `${seconds} sekúnd`,
@@ -45,9 +45,9 @@ const skSKPickers = {
45
45
  calendarWeekNumberAriaLabelText: weekNumber => `${weekNumber} týždeň v roku`,
46
46
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
47
47
  // Open picker labels
48
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vyberte dátum, vybraný dátum je ${utils.format(value, 'fullDate')}` : 'Vyberte dátum',
49
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vyberte čas, vybraný čas je ${utils.format(value, 'fullTime')}` : 'Vyberte čas',
50
- // fieldClearLabel: 'Clear value',
48
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Vyberte dátum, vybraný dátum je ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Vyberte dátum',
49
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Vyberte čas, vybraný čas je ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Vyberte čas',
50
+ // fieldClearLabel: 'Clear',
51
51
 
52
52
  // Table labels
53
53
  timeTableLabel: 'vyberte čas',
@@ -31,7 +31,7 @@ const svSEPickers = {
31
31
  timePickerToolbarTitle: 'Välj tid',
32
32
  dateRangePickerToolbarTitle: 'Välj datumintervall',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `Välj ${timeViews[view]}. ${time === null ? 'Ingen tid vald' : `Vald tid är ${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `Välj ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Ingen tid vald' : `Vald tid är ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours} timmar`,
36
36
  minutesClockNumberText: minutes => `${minutes} minuter`,
37
37
  secondsClockNumberText: seconds => `${seconds} sekunder`,
@@ -43,8 +43,8 @@ const svSEPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `Vecka ${weekNumber}`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Välj datum, valt datum är ${utils.format(value, 'fullDate')}` : 'Välj datum',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Välj tid, vald tid är ${utils.format(value, 'fullTime')}` : 'Välj tid',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Välj datum, valt datum är ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Välj datum',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Välj tid, vald tid är ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Välj tid',
48
48
  fieldClearLabel: 'Rensa värde',
49
49
  // Table labels
50
50
  timeTableLabel: 'välj tid',
@@ -32,7 +32,7 @@ const trTRPickers = {
32
32
  timePickerToolbarTitle: 'Saat seç',
33
33
  dateRangePickerToolbarTitle: 'Tarih aralığı seçin',
34
34
  // Clock labels
35
- clockLabelText: (view, time, adapter) => `${timeViews[view]} seç. ${time === null ? 'Zaman seçilmedi' : `Seçilen zaman: ${adapter.format(time, 'fullTime')}`}`,
35
+ clockLabelText: (view, time, utils, formattedTime) => `${timeViews[view]} seç. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Zaman seçilmedi' : `Seçilen zaman: ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
36
36
  hoursClockNumberText: hours => `${hours} saat`,
37
37
  minutesClockNumberText: minutes => `${minutes} dakika`,
38
38
  secondsClockNumberText: seconds => `${seconds} saniye`,
@@ -44,9 +44,9 @@ const trTRPickers = {
44
44
  calendarWeekNumberAriaLabelText: weekNumber => `Hafta ${weekNumber}`,
45
45
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
46
46
  // Open picker labels
47
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Tarih seçin, seçilen tarih: ${utils.format(value, 'fullDate')}` : 'Tarih seç',
48
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Saat seçin, seçilen saat: ${utils.format(value, 'fullTime')}` : 'Saat seç',
49
- // fieldClearLabel: 'Clear value',
47
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Tarih seçin, seçilen tarih: ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Tarih seç',
48
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Saat seçin, seçilen saat: ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Saat seç',
49
+ // fieldClearLabel: 'Clear',
50
50
 
51
51
  // Table labels
52
52
  timeTableLabel: 'saat seç',
@@ -31,7 +31,7 @@ const ukUAPickers = {
31
31
  timePickerToolbarTitle: 'Вибрати час',
32
32
  dateRangePickerToolbarTitle: 'Вибрати календарний період',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `Вибрати ${timeViews[view]}. ${time === null ? 'Час не вибраний' : `Вибрано час ${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `Вибрати ${timeViews[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Час не вибраний' : `Вибрано час ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours} годин`,
36
36
  minutesClockNumberText: minutes => `${minutes} хвилин`,
37
37
  secondsClockNumberText: seconds => `${seconds} секунд`,
@@ -43,8 +43,8 @@ const ukUAPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `Тиждень ${weekNumber}`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Оберіть дату, обрана дата ${utils.format(value, 'fullDate')}` : 'Оберіть дату',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Оберіть час, обраний час ${utils.format(value, 'fullTime')}` : 'Оберіть час',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Оберіть дату, обрана дата ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Оберіть дату',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Оберіть час, обраний час ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Оберіть час',
48
48
  fieldClearLabel: 'Очистити дані',
49
49
  // Table labels
50
50
  timeTableLabel: 'оберіть час',
@@ -32,7 +32,7 @@ const urPKPickers = {
32
32
  timePickerToolbarTitle: 'وقت منتخب کریں',
33
33
  dateRangePickerToolbarTitle: 'تاریخوں کی رینج منتخب کریں',
34
34
  // Clock labels
35
- clockLabelText: (view, time, adapter) => `${timeViews[view]} منتخب کریں ${time === null ? 'کوئی وقت منتخب نہیں' : `منتخب وقت ہے ${adapter.format(time, 'fullTime')}`}`,
35
+ clockLabelText: (view, time, utils, formattedTime) => `${timeViews[view]} منتخب کریں ${!formattedTime && (time === null || !utils.isValid(time)) ? 'کوئی وقت منتخب نہیں' : `منتخب وقت ہے ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
36
36
  hoursClockNumberText: hours => `${hours} گھنٹے`,
37
37
  minutesClockNumberText: minutes => `${minutes} منٹ`,
38
38
  secondsClockNumberText: seconds => `${seconds} سیکنڈ`,
@@ -44,9 +44,9 @@ const urPKPickers = {
44
44
  calendarWeekNumberAriaLabelText: weekNumber => `ہفتہ ${weekNumber}`,
45
45
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
46
46
  // Open picker labels
47
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `تاریخ منتخب کریں، منتخب شدہ تاریخ ہے ${utils.format(value, 'fullDate')}` : 'تاریخ منتخب کریں',
48
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `وقت منتخب کریں، منتخب شدہ وقت ہے ${utils.format(value, 'fullTime')}` : 'وقت منتخب کریں',
49
- // fieldClearLabel: 'Clear value',
47
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `تاریخ منتخب کریں، منتخب شدہ تاریخ ہے ${formattedDate ?? utils.format(value, 'fullDate')}` : 'تاریخ منتخب کریں',
48
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `وقت منتخب کریں، منتخب شدہ وقت ہے ${formattedTime ?? utils.format(value, 'fullTime')}` : 'وقت منتخب کریں',
49
+ // fieldClearLabel: 'Clear',
50
50
 
51
51
  // Table labels
52
52
  timeTableLabel: 'وقت منتخب کریں',
@@ -9,4 +9,17 @@ export const getPickersLocalization = pickersTranslations => {
9
9
  }
10
10
  }
11
11
  };
12
+ };
13
+ export const buildGetOpenDialogAriaText = params => {
14
+ const {
15
+ utils,
16
+ formatKey,
17
+ contextTranslation,
18
+ propsTranslation
19
+ } = params;
20
+ return value => {
21
+ const formattedValue = value !== null && utils.isValid(value) ? utils.format(value, formatKey) : null;
22
+ const translation = propsTranslation ?? contextTranslation;
23
+ return translation(value, utils, formattedValue);
24
+ };
12
25
  };
@@ -31,7 +31,7 @@ const viVNPickers = {
31
31
  timePickerToolbarTitle: 'Chọn giờ',
32
32
  dateRangePickerToolbarTitle: 'Chọn khoảng ngày',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `Chọn ${views[view]}. ${time === null ? 'Không có giờ được chọn' : `Giờ được chọn là ${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `Chọn ${views[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? 'Không có giờ được chọn' : `Giờ được chọn là ${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours} giờ`,
36
36
  minutesClockNumberText: minutes => `${minutes} phút`,
37
37
  secondsClockNumberText: seconds => `${seconds} giây`,
@@ -43,8 +43,8 @@ const viVNPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `Tuần ${weekNumber}`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- 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',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Chọn giờ, giờ đã chọn là ${utils.format(value, 'fullTime')}` : 'Chọn giờ',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `Chọn ngày, ngày đã chọn là ${formattedDate ?? utils.format(value, 'fullDate')}` : 'Chọn ngày',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `Chọn giờ, giờ đã chọn là ${formattedTime ?? utils.format(value, 'fullTime')}` : 'Chọn giờ',
48
48
  fieldClearLabel: 'Xóa giá trị',
49
49
  // Table labels
50
50
  timeTableLabel: 'chọn giờ',
@@ -31,7 +31,7 @@ const zhCNPickers = {
31
31
  timePickerToolbarTitle: '选择时间',
32
32
  dateRangePickerToolbarTitle: '选择时间范围',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `选择 ${views[view]}. ${time === null ? '未选择时间' : `已选择${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `选择 ${views[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? '未选择时间' : `已选择${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours}小时`,
36
36
  minutesClockNumberText: minutes => `${minutes}分钟`,
37
37
  secondsClockNumberText: seconds => `${seconds}秒`,
@@ -43,8 +43,8 @@ const zhCNPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `第${weekNumber}周`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `选择日期,已选择${utils.format(value, 'fullDate')}` : '选择日期',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `选择时间,已选择${utils.format(value, 'fullTime')}` : '选择时间',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `选择日期,已选择${formattedDate ?? utils.format(value, 'fullDate')}` : '选择日期',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `选择时间,已选择${formattedTime ?? utils.format(value, 'fullTime')}` : '选择时间',
48
48
  fieldClearLabel: '清除',
49
49
  // Table labels
50
50
  timeTableLabel: '选择时间',
@@ -31,7 +31,7 @@ const zhHKPickers = {
31
31
  timePickerToolbarTitle: '選擇時間',
32
32
  dateRangePickerToolbarTitle: '選擇時間範圍',
33
33
  // Clock labels
34
- clockLabelText: (view, time, adapter) => `選擇 ${views[view]}. ${time === null ? '未選擇時間' : `已選擇${adapter.format(time, 'fullTime')}`}`,
34
+ clockLabelText: (view, time, utils, formattedTime) => `選擇 ${views[view]}. ${!formattedTime && (time === null || !utils.isValid(time)) ? '未選擇時間' : `已選擇${formattedTime ?? utils.format(time, 'fullTime')}`}`,
35
35
  hoursClockNumberText: hours => `${hours}小時`,
36
36
  minutesClockNumberText: minutes => `${minutes}分鐘`,
37
37
  secondsClockNumberText: seconds => `${seconds}秒`,
@@ -43,8 +43,8 @@ const zhHKPickers = {
43
43
  calendarWeekNumberAriaLabelText: weekNumber => `第${weekNumber}週`,
44
44
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
45
  // Open picker labels
46
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `選擇日期,已選擇${utils.format(value, 'fullDate')}` : '選擇日期',
47
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `選擇時間,已選擇${utils.format(value, 'fullTime')}` : '選擇時間',
46
+ openDatePickerDialogue: (value, utils, formattedDate) => formattedDate || value !== null && utils.isValid(value) ? `選擇日期,已選擇${formattedDate ?? utils.format(value, 'fullDate')}` : '選擇日期',
47
+ openTimePickerDialogue: (value, utils, formattedTime) => formattedTime || value !== null && utils.isValid(value) ? `選擇時間,已選擇${formattedTime ?? utils.format(value, 'fullTime')}` : '選擇時間',
48
48
  fieldClearLabel: '清除',
49
49
  // Table labels
50
50
  timeTableLabel: '選擇時間',
@@ -0,0 +1,5 @@
1
+ export { validateDate } from "./validateDate.js";
2
+ export { validateTime } from "./validateTime.js";
3
+ export { validateDateTime } from "./validateDateTime.js";
4
+ export { extractValidationProps } from "./extractValidationProps.js";
5
+ export { useValidation } from "./useValidation.js";
@@ -0,0 +1,54 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import useEventCallback from '@mui/utils/useEventCallback';
5
+ import { useLocalizationContext } from "../internals/hooks/useUtils.js";
6
+ /**
7
+ * Utility hook to check if a given value is valid based on the provided validation props.
8
+ * @template TDate
9
+ * @template TValue The value type. It will be either the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
10
+ * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.
11
+ * @param {UseValidationOptions<TValue, TDate, TError, TValidationProps>} options The options to configure the hook.
12
+ * @param {TValue} options.value The value to validate.
13
+ * @param {PickersTimezone} options.timezone The timezone to use for the validation.
14
+ * @param {Validator<TValue, TDate, TError, TValidationProps>} options.validator The validator function to use.
15
+ * @param {TValidationProps} options.props The validation props, they differ depending on the component.
16
+ * @param {(error: TError, value: TValue) => void} options.onError Callback fired when the error associated with the current value changes.
17
+ */
18
+ export function useValidation(options) {
19
+ const {
20
+ props,
21
+ validator,
22
+ value,
23
+ timezone,
24
+ onError
25
+ } = options;
26
+ const adapter = useLocalizationContext();
27
+ const previousValidationErrorRef = React.useRef(validator.valueManager.defaultErrorState);
28
+ const validationError = validator({
29
+ adapter,
30
+ value,
31
+ timezone,
32
+ props
33
+ });
34
+ const hasValidationError = validator.valueManager.hasError(validationError);
35
+ React.useEffect(() => {
36
+ if (onError && !validator.valueManager.isSameError(validationError, previousValidationErrorRef.current)) {
37
+ onError(validationError, value);
38
+ }
39
+ previousValidationErrorRef.current = validationError;
40
+ }, [validator, onError, validationError, value]);
41
+ const getValidationErrorForNewValue = useEventCallback(newValue => {
42
+ return validator({
43
+ adapter,
44
+ value: newValue,
45
+ timezone,
46
+ props
47
+ });
48
+ });
49
+ return {
50
+ validationError,
51
+ hasValidationError,
52
+ getValidationErrorForNewValue
53
+ };
54
+ }
@@ -1,7 +1,9 @@
1
- import { applyDefaultDate } from "../date-utils.js";
1
+ import { applyDefaultDate } from "../internals/utils/date-utils.js";
2
+ import { singleItemValueManager } from "../internals/utils/valueManagers.js";
2
3
  export const validateDate = ({
3
4
  props,
4
5
  value,
6
+ timezone,
5
7
  adapter
6
8
  }) => {
7
9
  if (value === null) {
@@ -12,8 +14,7 @@ export const validateDate = ({
12
14
  shouldDisableMonth,
13
15
  shouldDisableYear,
14
16
  disablePast,
15
- disableFuture,
16
- timezone
17
+ disableFuture
17
18
  } = props;
18
19
  const now = adapter.utils.date(undefined, timezone);
19
20
  const minDate = applyDefaultDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);
@@ -38,4 +39,5 @@ export const validateDate = ({
38
39
  default:
39
40
  return null;
40
41
  }
41
- };
42
+ };
43
+ validateDate.valueManager = singleItemValueManager;
@@ -1,13 +1,16 @@
1
1
  import { validateDate } from "./validateDate.js";
2
2
  import { validateTime } from "./validateTime.js";
3
+ import { singleItemValueManager } from "../internals/utils/valueManagers.js";
3
4
  export const validateDateTime = ({
4
- props,
5
+ adapter,
5
6
  value,
6
- adapter
7
+ timezone,
8
+ props
7
9
  }) => {
8
10
  const dateValidationResult = validateDate({
9
11
  adapter,
10
12
  value,
13
+ timezone,
11
14
  props
12
15
  });
13
16
  if (dateValidationResult !== null) {
@@ -16,6 +19,8 @@ export const validateDateTime = ({
16
19
  return validateTime({
17
20
  adapter,
18
21
  value,
22
+ timezone,
19
23
  props
20
24
  });
21
- };
25
+ };
26
+ validateDateTime.valueManager = singleItemValueManager;
@@ -1,7 +1,9 @@
1
- import { createIsAfterIgnoreDatePart } from "../time-utils.js";
1
+ import { createIsAfterIgnoreDatePart } from "../internals/utils/time-utils.js";
2
+ import { singleItemValueManager } from "../internals/utils/valueManagers.js";
2
3
  export const validateTime = ({
3
4
  adapter,
4
5
  value,
6
+ timezone,
5
7
  props
6
8
  }) => {
7
9
  if (value === null) {
@@ -14,8 +16,7 @@ export const validateTime = ({
14
16
  shouldDisableTime,
15
17
  disableIgnoringDatePartForTimeValidation = false,
16
18
  disablePast,
17
- disableFuture,
18
- timezone
19
+ disableFuture
19
20
  } = props;
20
21
  const now = adapter.utils.date(undefined, timezone);
21
22
  const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter.utils);
@@ -41,4 +42,5 @@ export const validateTime = ({
41
42
  default:
42
43
  return null;
43
44
  }
44
- };
45
+ };
46
+ validateTime.valueManager = singleItemValueManager;
@@ -12,7 +12,7 @@ var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customPars
12
12
  var _localizedFormat = _interopRequireDefault(require("dayjs/plugin/localizedFormat"));
13
13
  var _isBetween = _interopRequireDefault(require("dayjs/plugin/isBetween"));
14
14
  var _advancedFormat = _interopRequireDefault(require("dayjs/plugin/advancedFormat"));
15
- var _warning = require("../internals/utils/warning");
15
+ var _warning = require("@mui/x-internals/warning");
16
16
  /* eslint-disable class-methods-use-this */
17
17
 
18
18
  _dayjs.default.extend(_localizedFormat.default);
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -6,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
6
7
  });
7
8
  exports.useIsDateDisabled = void 0;
8
9
  var React = _interopRequireWildcard(require("react"));
9
- var _validateDate = require("../internals/utils/validation/validateDate");
10
+ var _validation = require("../validation");
10
11
  var _useUtils = require("../internals/hooks/useUtils");
11
12
  const useIsDateDisabled = ({
12
13
  shouldDisableDate,
@@ -19,9 +20,10 @@ const useIsDateDisabled = ({
19
20
  timezone
20
21
  }) => {
21
22
  const adapter = (0, _useUtils.useLocalizationContext)();
22
- return React.useCallback(day => (0, _validateDate.validateDate)({
23
+ return React.useCallback(day => (0, _validation.validateDate)({
23
24
  adapter,
24
25
  value: day,
26
+ timezone,
25
27
  props: {
26
28
  shouldDisableDate,
27
29
  shouldDisableMonth,
@@ -29,8 +31,7 @@ const useIsDateDisabled = ({
29
31
  minDate,
30
32
  maxDate,
31
33
  disableFuture,
32
- disablePast,
33
- timezone
34
+ disablePast
34
35
  }
35
36
  }) !== null, [adapter, shouldDisableDate, shouldDisableMonth, shouldDisableYear, minDate, maxDate, disableFuture, disablePast, timezone]);
36
37
  };
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;