@mui/x-date-pickers-pro 8.0.0-alpha.0 → 8.0.0-alpha.10

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 (292) hide show
  1. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
  2. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  3. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
  4. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
  5. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  6. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
  7. package/CHANGELOG.md +2215 -119
  8. package/DateRangeCalendar/DateRangeCalendar.js +18 -14
  9. package/DateRangePicker/DateRangePicker.js +1 -4
  10. package/DateRangePicker/DateRangePicker.types.d.ts +6 -2
  11. package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
  12. package/DateRangePicker/DateRangePickerToolbar.js +33 -53
  13. package/DateRangePicker/shared.d.ts +4 -3
  14. package/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  15. package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +1 -2
  16. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
  17. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
  18. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
  19. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  20. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -5
  21. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +85 -123
  22. package/DateTimeRangePicker/shared.d.ts +6 -5
  23. package/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  24. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
  25. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  26. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
  27. package/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  28. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
  29. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  30. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
  31. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
  32. package/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
  33. package/MultiInputDateRangeField/index.d.ts +5 -3
  34. package/MultiInputDateRangeField/index.js +2 -2
  35. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.d.ts +6 -0
  36. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  37. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +9 -4
  38. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
  39. package/MultiInputDateTimeRangeField/index.d.ts +5 -3
  40. package/MultiInputDateTimeRangeField/index.js +2 -2
  41. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.d.ts +6 -0
  42. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  43. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +9 -4
  44. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
  45. package/MultiInputTimeRangeField/index.d.ts +5 -3
  46. package/MultiInputTimeRangeField/index.js +2 -2
  47. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.d.ts +6 -0
  48. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  49. package/README.md +10 -7
  50. package/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  51. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -16
  52. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  53. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  54. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  55. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -17
  56. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  57. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  58. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  59. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -17
  60. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  61. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  62. package/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  63. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
  64. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  65. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  66. package/hooks/index.d.ts +2 -0
  67. package/hooks/index.js +2 -0
  68. package/hooks/package.json +6 -0
  69. package/hooks/useMultiInputRangeField/index.d.ts +1 -0
  70. package/hooks/useMultiInputRangeField/index.js +1 -0
  71. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
  72. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  73. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +17 -0
  74. package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  75. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
  76. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  77. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  78. package/hooks/usePickerRangePositionContext.js +15 -0
  79. package/index.d.ts +2 -0
  80. package/index.js +4 -2
  81. package/internals/hooks/models/index.d.ts +1 -1
  82. package/internals/hooks/models/useRangePicker.d.ts +8 -11
  83. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +70 -102
  84. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +8 -10
  85. package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +26 -17
  86. package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +55 -68
  87. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +59 -82
  88. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
  89. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  90. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  91. package/internals/hooks/useRangePosition.d.ts +4 -3
  92. package/internals/hooks/useRangePosition.js +1 -1
  93. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  94. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +18 -31
  95. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -12
  96. package/internals/models/dateTimeRange.d.ts +1 -6
  97. package/internals/models/fields.d.ts +7 -11
  98. package/internals/models/index.d.ts +0 -1
  99. package/internals/models/index.js +0 -1
  100. package/internals/models/managers.d.ts +3 -0
  101. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
  102. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  103. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
  104. package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
  105. package/internals/utils/createMultiInputRangeField/index.js +2 -0
  106. package/internals/utils/date-fields-utils.d.ts +6 -6
  107. package/internals/utils/date-range-manager.d.ts +2 -1
  108. package/internals/utils/date-range-manager.js +13 -10
  109. package/internals/utils/releaseInfo.js +1 -1
  110. package/internals/utils/valueManagers.d.ts +4 -3
  111. package/internals/utils/valueManagers.js +7 -7
  112. package/managers/index.d.ts +6 -0
  113. package/managers/index.js +3 -0
  114. package/managers/package.json +6 -0
  115. package/managers/useDateRangeManager.d.ts +15 -0
  116. package/managers/useDateRangeManager.js +33 -0
  117. package/managers/useDateTimeRangeManager.d.ts +15 -0
  118. package/managers/useDateTimeRangeManager.js +33 -0
  119. package/managers/useTimeRangeManager.d.ts +15 -0
  120. package/managers/useTimeRangeManager.js +31 -0
  121. package/models/fields.d.ts +7 -11
  122. package/models/index.d.ts +1 -2
  123. package/models/index.js +1 -2
  124. package/models/range.d.ts +0 -2
  125. package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  126. package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  127. package/modern/DateRangeCalendar/DateRangeCalendar.js +18 -14
  128. package/modern/DateRangePicker/DateRangePicker.js +1 -4
  129. package/modern/DateRangePicker/DateRangePickerToolbar.js +33 -53
  130. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  131. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +35 -33
  132. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  133. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +85 -123
  134. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  135. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  136. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  137. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  138. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +15 -121
  139. package/modern/MultiInputDateRangeField/index.js +2 -2
  140. package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  141. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +15 -121
  142. package/modern/MultiInputDateTimeRangeField/index.js +2 -2
  143. package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  144. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -122
  145. package/modern/MultiInputTimeRangeField/index.js +2 -2
  146. package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  147. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +23 -33
  148. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +14 -14
  149. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +23 -33
  150. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +14 -14
  151. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +23 -33
  152. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +14 -14
  153. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  154. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  155. package/modern/hooks/index.js +2 -0
  156. package/modern/hooks/useMultiInputRangeField/index.js +1 -0
  157. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  158. package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  159. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  160. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  161. package/modern/index.js +4 -2
  162. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +70 -102
  163. package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +55 -68
  164. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +59 -82
  165. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  166. package/modern/internals/hooks/useRangePosition.js +1 -1
  167. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +18 -31
  168. package/modern/internals/models/index.js +0 -1
  169. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +136 -0
  170. package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
  171. package/modern/internals/utils/date-range-manager.js +13 -10
  172. package/modern/internals/utils/releaseInfo.js +1 -1
  173. package/modern/internals/utils/valueManagers.js +7 -7
  174. package/modern/managers/index.js +3 -0
  175. package/modern/managers/useDateRangeManager.js +33 -0
  176. package/modern/managers/useDateTimeRangeManager.js +33 -0
  177. package/modern/managers/useTimeRangeManager.js +31 -0
  178. package/modern/models/index.js +1 -2
  179. package/modern/validation/validateDateRange.js +8 -0
  180. package/modern/validation/validateDateTimeRange.js +4 -0
  181. package/modern/validation/validateTimeRange.js +8 -0
  182. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  183. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  184. package/node/DateRangeCalendar/DateRangeCalendar.js +17 -13
  185. package/node/DateRangePicker/DateRangePicker.js +1 -4
  186. package/node/DateRangePicker/DateRangePickerToolbar.js +31 -51
  187. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -5
  188. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +33 -31
  189. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +8 -6
  190. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +83 -121
  191. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +11 -9
  192. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -22
  193. package/node/MobileDateRangePicker/MobileDateRangePicker.js +4 -8
  194. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +18 -16
  195. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +14 -124
  196. package/node/MultiInputDateRangeField/index.js +3 -9
  197. package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
  198. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -124
  199. package/node/MultiInputDateTimeRangeField/index.js +3 -9
  200. package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
  201. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +15 -125
  202. package/node/MultiInputTimeRangeField/index.js +3 -9
  203. package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
  204. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +22 -32
  205. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  206. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +22 -32
  207. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  208. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +22 -32
  209. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  210. package/node/StaticDateRangePicker/StaticDateRangePicker.js +2 -2
  211. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  212. package/node/hooks/index.js +19 -0
  213. package/node/hooks/useMultiInputRangeField/index.js +12 -0
  214. package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
  215. package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
  216. package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
  217. package/node/hooks/usePickerRangePositionContext.js +22 -0
  218. package/node/index.js +23 -1
  219. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +70 -102
  220. package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +57 -70
  221. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +59 -82
  222. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  223. package/node/internals/hooks/useRangePosition.js +1 -1
  224. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +17 -30
  225. package/node/internals/models/index.js +0 -11
  226. package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +143 -0
  227. package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
  228. package/node/internals/utils/date-range-manager.js +13 -10
  229. package/node/internals/utils/releaseInfo.js +1 -1
  230. package/node/internals/utils/valueManagers.js +7 -7
  231. package/node/managers/index.js +26 -0
  232. package/node/managers/useDateRangeManager.js +40 -0
  233. package/node/managers/useDateTimeRangeManager.js +40 -0
  234. package/node/managers/useTimeRangeManager.js +38 -0
  235. package/node/models/index.js +0 -22
  236. package/node/validation/validateDateRange.js +8 -0
  237. package/node/validation/validateDateTimeRange.js +4 -0
  238. package/node/validation/validateTimeRange.js +8 -0
  239. package/package.json +8 -8
  240. package/themeAugmentation/overrides.d.ts +6 -4
  241. package/themeAugmentation/props.d.ts +2 -2
  242. package/validation/validateDateRange.d.ts +9 -1
  243. package/validation/validateDateRange.js +8 -0
  244. package/validation/validateDateTimeRange.d.ts +6 -2
  245. package/validation/validateDateTimeRange.js +4 -0
  246. package/validation/validateTimeRange.d.ts +9 -1
  247. package/validation/validateTimeRange.js +8 -0
  248. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -53
  249. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -54
  250. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -54
  251. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +0 -21
  252. package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
  253. package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  254. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
  255. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -111
  256. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
  257. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -111
  258. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
  259. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
  260. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -111
  261. package/internals/models/timeRange.d.ts +0 -6
  262. package/internals/models/timeRange.js +0 -1
  263. package/models/dateRange.d.ts +0 -7
  264. package/models/dateRange.js +0 -1
  265. package/models/multiInputRangeFieldClasses.d.ts +0 -7
  266. package/models/multiInputRangeFieldClasses.js +0 -1
  267. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  268. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  269. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  270. package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  271. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -111
  272. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -111
  273. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  274. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -111
  275. package/modern/internals/models/timeRange.js +0 -1
  276. package/modern/models/dateRange.js +0 -1
  277. package/modern/models/multiInputRangeFieldClasses.js +0 -1
  278. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
  279. package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
  280. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -119
  281. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -119
  282. package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
  283. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -119
  284. package/node/internals/models/timeRange.js +0 -5
  285. package/node/models/dateRange.js +0 -5
  286. package/node/models/multiInputRangeFieldClasses.js +0 -5
  287. /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  288. /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  289. /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
  290. /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  291. /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  292. /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
@@ -1,111 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import useEventCallback from '@mui/utils/useEventCallback';
3
- import { unstable_useDateField as useDateField } from '@mui/x-date-pickers/DateField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateField } from '@mui/x-date-pickers/internals';
5
- import { useValidation } from '@mui/x-date-pickers/validation';
6
- import { validateDateRange } from "../../../validation/index.js";
7
- import { rangeValueManager } from "../../utils/valueManagers.js";
8
- import { excludeProps } from "./shared.js";
9
- import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
- export const useMultiInputDateRangeField = ({
11
- sharedProps: inSharedProps,
12
- startTextFieldProps,
13
- unstableStartFieldRef,
14
- endTextFieldProps,
15
- unstableEndFieldRef
16
- }) => {
17
- const sharedProps = useDefaultizedDateField(inSharedProps);
18
- const {
19
- value: valueProp,
20
- defaultValue,
21
- format,
22
- formatDensity,
23
- shouldRespectLeadingZeros,
24
- onChange,
25
- disabled,
26
- readOnly,
27
- selectedSections,
28
- onSelectedSectionsChange,
29
- timezone: timezoneProp,
30
- enableAccessibleFieldDOMStructure,
31
- autoFocus
32
- } = sharedProps;
33
- const {
34
- value,
35
- handleValueChange,
36
- timezone
37
- } = useControlledValueWithTimezone({
38
- name: 'useMultiInputDateRangeField',
39
- timezone: timezoneProp,
40
- value: valueProp,
41
- defaultValue,
42
- onChange,
43
- valueManager: rangeValueManager
44
- });
45
- const {
46
- validationError,
47
- getValidationErrorForNewValue
48
- } = useValidation({
49
- props: sharedProps,
50
- value,
51
- timezone,
52
- validator: validateDateRange,
53
- onError: sharedProps.onError
54
- });
55
-
56
- // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
57
- const buildChangeHandler = index => {
58
- return (newDate, rawContext) => {
59
- const newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
60
- const context = _extends({}, rawContext, {
61
- validationError: getValidationErrorForNewValue(newDateRange)
62
- });
63
- handleValueChange(newDateRange, context);
64
- };
65
- };
66
- const handleStartDateChange = useEventCallback(buildChangeHandler(0));
67
- const handleEndDateChange = useEventCallback(buildChangeHandler(1));
68
- const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
- selectedSections,
70
- onSelectedSectionsChange,
71
- unstableStartFieldRef,
72
- unstableEndFieldRef
73
- });
74
- const startFieldProps = _extends({
75
- error: !!validationError[0]
76
- }, startTextFieldProps, selectedSectionsResponse.start, {
77
- disabled,
78
- readOnly,
79
- format,
80
- formatDensity,
81
- shouldRespectLeadingZeros,
82
- timezone,
83
- value: valueProp === undefined ? undefined : valueProp[0],
84
- defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
85
- onChange: handleStartDateChange,
86
- enableAccessibleFieldDOMStructure,
87
- autoFocus // Do not add on end field.
88
- });
89
- const endFieldProps = _extends({
90
- error: !!validationError[1]
91
- }, endTextFieldProps, selectedSectionsResponse.end, {
92
- format,
93
- formatDensity,
94
- shouldRespectLeadingZeros,
95
- disabled,
96
- readOnly,
97
- timezone,
98
- value: valueProp === undefined ? undefined : valueProp[1],
99
- defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
100
- onChange: handleEndDateChange,
101
- enableAccessibleFieldDOMStructure
102
- });
103
- const startDateResponse = useDateField(startFieldProps);
104
- const endDateResponse = useDateField(endFieldProps);
105
-
106
- /* TODO: Undo this change when a clearable behavior for multiple input range fields is implemented */
107
- return {
108
- startDate: excludeProps(startDateResponse, ['clearable', 'onClear']),
109
- endDate: excludeProps(endDateResponse, ['clearable', 'onClear'])
110
- };
111
- };
@@ -1,3 +0,0 @@
1
- import type { UseMultiInputDateTimeRangeFieldParams } from '../../../MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types';
2
- import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputDateTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,111 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import useEventCallback from '@mui/utils/useEventCallback';
3
- import { unstable_useDateTimeField as useDateTimeField } from '@mui/x-date-pickers/DateTimeField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateTimeField } from '@mui/x-date-pickers/internals';
5
- import { useValidation } from '@mui/x-date-pickers/validation';
6
- import { validateDateTimeRange } from "../../../validation/index.js";
7
- import { rangeValueManager } from "../../utils/valueManagers.js";
8
- import { excludeProps } from "./shared.js";
9
- import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
- export const useMultiInputDateTimeRangeField = ({
11
- sharedProps: inSharedProps,
12
- startTextFieldProps,
13
- unstableStartFieldRef,
14
- endTextFieldProps,
15
- unstableEndFieldRef
16
- }) => {
17
- const sharedProps = useDefaultizedDateTimeField(inSharedProps);
18
- const {
19
- value: valueProp,
20
- defaultValue,
21
- format,
22
- formatDensity,
23
- shouldRespectLeadingZeros,
24
- onChange,
25
- disabled,
26
- readOnly,
27
- selectedSections,
28
- onSelectedSectionsChange,
29
- timezone: timezoneProp,
30
- enableAccessibleFieldDOMStructure,
31
- autoFocus
32
- } = sharedProps;
33
- const {
34
- value,
35
- handleValueChange,
36
- timezone
37
- } = useControlledValueWithTimezone({
38
- name: 'useMultiInputDateRangeField',
39
- timezone: timezoneProp,
40
- value: valueProp,
41
- defaultValue,
42
- onChange,
43
- valueManager: rangeValueManager
44
- });
45
- const {
46
- validationError,
47
- getValidationErrorForNewValue
48
- } = useValidation({
49
- props: sharedProps,
50
- value,
51
- timezone,
52
- validator: validateDateTimeRange,
53
- onError: sharedProps.onError
54
- });
55
-
56
- // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
57
- const buildChangeHandler = index => {
58
- return (newDate, rawContext) => {
59
- const newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
60
- const context = _extends({}, rawContext, {
61
- validationError: getValidationErrorForNewValue(newDateRange)
62
- });
63
- handleValueChange(newDateRange, context);
64
- };
65
- };
66
- const handleStartDateChange = useEventCallback(buildChangeHandler(0));
67
- const handleEndDateChange = useEventCallback(buildChangeHandler(1));
68
- const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
- selectedSections,
70
- onSelectedSectionsChange,
71
- unstableStartFieldRef,
72
- unstableEndFieldRef
73
- });
74
- const startFieldProps = _extends({
75
- error: !!validationError[0]
76
- }, startTextFieldProps, selectedSectionsResponse.start, {
77
- disabled,
78
- readOnly,
79
- format,
80
- formatDensity,
81
- shouldRespectLeadingZeros,
82
- timezone,
83
- value: valueProp === undefined ? undefined : valueProp[0],
84
- defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
85
- onChange: handleStartDateChange,
86
- enableAccessibleFieldDOMStructure,
87
- autoFocus // Do not add on end field.
88
- });
89
- const endFieldProps = _extends({
90
- error: !!validationError[1]
91
- }, endTextFieldProps, selectedSectionsResponse.end, {
92
- format,
93
- formatDensity,
94
- shouldRespectLeadingZeros,
95
- disabled,
96
- readOnly,
97
- timezone,
98
- value: valueProp === undefined ? undefined : valueProp[1],
99
- defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
100
- onChange: handleEndDateChange,
101
- enableAccessibleFieldDOMStructure
102
- });
103
- const startDateResponse = useDateTimeField(startFieldProps);
104
- const endDateResponse = useDateTimeField(endFieldProps);
105
-
106
- /* TODO: Undo this change when a clearable behavior for multiple input range fields is implemented */
107
- return {
108
- startDate: excludeProps(startDateResponse, ['clearable', 'onClear']),
109
- endDate: excludeProps(endDateResponse, ['clearable', 'onClear'])
110
- };
111
- };
@@ -1,11 +0,0 @@
1
- import { UseFieldResponse } from '@mui/x-date-pickers/internals';
2
- import { MultiInputFieldRefs } from '../../../models';
3
- export interface UseMultiInputRangeFieldParams<TSharedProps extends {}, TTextFieldSlotProps extends {}> extends MultiInputFieldRefs {
4
- sharedProps: TSharedProps;
5
- startTextFieldProps: TTextFieldSlotProps;
6
- endTextFieldProps: TTextFieldSlotProps;
7
- }
8
- export interface UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure extends boolean, TForwardedProps extends {}> {
9
- startDate: UseFieldResponse<TEnableAccessibleFieldDOMStructure, TForwardedProps>;
10
- endDate: UseFieldResponse<TEnableAccessibleFieldDOMStructure, TForwardedProps>;
11
- }
@@ -1,3 +0,0 @@
1
- import type { UseMultiInputTimeRangeFieldParams } from '../../../MultiInputTimeRangeField/MultiInputTimeRangeField.types';
2
- import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,111 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import useEventCallback from '@mui/utils/useEventCallback';
3
- import { unstable_useTimeField as useTimeField } from '@mui/x-date-pickers/TimeField';
4
- import { useControlledValueWithTimezone, useDefaultizedTimeField } from '@mui/x-date-pickers/internals';
5
- import { useValidation } from '@mui/x-date-pickers/validation';
6
- import { validateTimeRange } from "../../../validation/index.js";
7
- import { rangeValueManager } from "../../utils/valueManagers.js";
8
- import { excludeProps } from "./shared.js";
9
- import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
- export const useMultiInputTimeRangeField = ({
11
- sharedProps: inSharedProps,
12
- startTextFieldProps,
13
- unstableStartFieldRef,
14
- endTextFieldProps,
15
- unstableEndFieldRef
16
- }) => {
17
- const sharedProps = useDefaultizedTimeField(inSharedProps);
18
- const {
19
- value: valueProp,
20
- defaultValue,
21
- format,
22
- formatDensity,
23
- shouldRespectLeadingZeros,
24
- onChange,
25
- disabled,
26
- readOnly,
27
- selectedSections,
28
- onSelectedSectionsChange,
29
- timezone: timezoneProp,
30
- enableAccessibleFieldDOMStructure,
31
- autoFocus
32
- } = sharedProps;
33
- const {
34
- value,
35
- handleValueChange,
36
- timezone
37
- } = useControlledValueWithTimezone({
38
- name: 'useMultiInputDateRangeField',
39
- timezone: timezoneProp,
40
- value: valueProp,
41
- defaultValue,
42
- onChange,
43
- valueManager: rangeValueManager
44
- });
45
- const {
46
- validationError,
47
- getValidationErrorForNewValue
48
- } = useValidation({
49
- props: sharedProps,
50
- validator: validateTimeRange,
51
- value,
52
- timezone,
53
- onError: sharedProps.onError
54
- });
55
-
56
- // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
57
- const buildChangeHandler = index => {
58
- return (newDate, rawContext) => {
59
- const newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
60
- const context = _extends({}, rawContext, {
61
- validationError: getValidationErrorForNewValue(newDateRange)
62
- });
63
- handleValueChange(newDateRange, context);
64
- };
65
- };
66
- const handleStartDateChange = useEventCallback(buildChangeHandler(0));
67
- const handleEndDateChange = useEventCallback(buildChangeHandler(1));
68
- const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
- selectedSections,
70
- onSelectedSectionsChange,
71
- unstableStartFieldRef,
72
- unstableEndFieldRef
73
- });
74
- const startFieldProps = _extends({
75
- error: !!validationError[0]
76
- }, startTextFieldProps, selectedSectionsResponse.start, {
77
- disabled,
78
- readOnly,
79
- format,
80
- formatDensity,
81
- shouldRespectLeadingZeros,
82
- timezone,
83
- value: valueProp === undefined ? undefined : valueProp[0],
84
- defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
85
- onChange: handleStartDateChange,
86
- enableAccessibleFieldDOMStructure,
87
- autoFocus // Do not add on end field.
88
- });
89
- const endFieldProps = _extends({
90
- error: !!validationError[1]
91
- }, endTextFieldProps, selectedSectionsResponse.end, {
92
- format,
93
- formatDensity,
94
- shouldRespectLeadingZeros,
95
- disabled,
96
- readOnly,
97
- timezone,
98
- value: valueProp === undefined ? undefined : valueProp[1],
99
- defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
100
- onChange: handleEndDateChange,
101
- enableAccessibleFieldDOMStructure
102
- });
103
- const startDateResponse = useTimeField(startFieldProps);
104
- const endDateResponse = useTimeField(endFieldProps);
105
-
106
- /* TODO: Undo this change when a clearable behavior for multiple input range fields is implemented */
107
- return {
108
- startDate: excludeProps(startDateResponse, ['clearable', 'onClear']),
109
- endDate: excludeProps(endDateResponse, ['clearable', 'onClear'])
110
- };
111
- };
@@ -1,6 +0,0 @@
1
- import { MakeOptional } from '@mui/x-internals/types';
2
- import { UseFieldInternalProps, AmPmProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
3
- import { TimeRangeValidationError, RangeFieldSection, RangeFieldSeparatorProps } from '../../models';
4
- import type { ExportedValidateTimeRangeProps } from '../../validation/validateTimeRange';
5
- export interface UseTimeRangeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<Omit<UseFieldInternalProps<PickerRangeValue, RangeFieldSection, TEnableAccessibleFieldDOMStructure, TimeRangeValidationError>, 'unstableFieldRef'>, 'format'>, RangeFieldSeparatorProps, ExportedValidateTimeRangeProps, AmPmProps {
6
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,7 +0,0 @@
1
- import { MakeOptional } from '@mui/x-internals/types';
2
- import { UseFieldInternalProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
3
- import { RangeFieldSection, RangeFieldSeparatorProps } from './fields';
4
- import { DateRangeValidationError } from './validation';
5
- import type { ExportedValidateDateRangeProps } from '../validation/validateDateRange';
6
- export interface UseDateRangeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<Omit<UseFieldInternalProps<PickerRangeValue, RangeFieldSection, TEnableAccessibleFieldDOMStructure, DateRangeValidationError>, 'unstableFieldRef'>, 'format'>, RangeFieldSeparatorProps, ExportedValidateDateRangeProps {
7
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,7 +0,0 @@
1
- export interface MultiInputRangeFieldClasses {
2
- /** Styles applied to the root element. */
3
- root: string;
4
- /** Styles applied to the separator element. */
5
- separator: string;
6
- }
7
- export type MultiInputRangeFieldClassKey = keyof MultiInputRangeFieldClasses;
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- /* TODO: remove this when a clearable behavior for multiple input range fields is implemented */
2
- export const excludeProps = (props, excludedProps) => {
3
- return Object.keys(props).reduce((acc, key) => {
4
- if (!excludedProps.includes(key)) {
5
- acc[key] = props[key];
6
- }
7
- return acc;
8
- }, {});
9
- };
@@ -1,111 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import useEventCallback from '@mui/utils/useEventCallback';
3
- import { unstable_useDateField as useDateField } from '@mui/x-date-pickers/DateField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateField } from '@mui/x-date-pickers/internals';
5
- import { useValidation } from '@mui/x-date-pickers/validation';
6
- import { validateDateRange } from "../../../validation/index.js";
7
- import { rangeValueManager } from "../../utils/valueManagers.js";
8
- import { excludeProps } from "./shared.js";
9
- import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
- export const useMultiInputDateRangeField = ({
11
- sharedProps: inSharedProps,
12
- startTextFieldProps,
13
- unstableStartFieldRef,
14
- endTextFieldProps,
15
- unstableEndFieldRef
16
- }) => {
17
- const sharedProps = useDefaultizedDateField(inSharedProps);
18
- const {
19
- value: valueProp,
20
- defaultValue,
21
- format,
22
- formatDensity,
23
- shouldRespectLeadingZeros,
24
- onChange,
25
- disabled,
26
- readOnly,
27
- selectedSections,
28
- onSelectedSectionsChange,
29
- timezone: timezoneProp,
30
- enableAccessibleFieldDOMStructure,
31
- autoFocus
32
- } = sharedProps;
33
- const {
34
- value,
35
- handleValueChange,
36
- timezone
37
- } = useControlledValueWithTimezone({
38
- name: 'useMultiInputDateRangeField',
39
- timezone: timezoneProp,
40
- value: valueProp,
41
- defaultValue,
42
- onChange,
43
- valueManager: rangeValueManager
44
- });
45
- const {
46
- validationError,
47
- getValidationErrorForNewValue
48
- } = useValidation({
49
- props: sharedProps,
50
- value,
51
- timezone,
52
- validator: validateDateRange,
53
- onError: sharedProps.onError
54
- });
55
-
56
- // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
57
- const buildChangeHandler = index => {
58
- return (newDate, rawContext) => {
59
- const newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
60
- const context = _extends({}, rawContext, {
61
- validationError: getValidationErrorForNewValue(newDateRange)
62
- });
63
- handleValueChange(newDateRange, context);
64
- };
65
- };
66
- const handleStartDateChange = useEventCallback(buildChangeHandler(0));
67
- const handleEndDateChange = useEventCallback(buildChangeHandler(1));
68
- const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
- selectedSections,
70
- onSelectedSectionsChange,
71
- unstableStartFieldRef,
72
- unstableEndFieldRef
73
- });
74
- const startFieldProps = _extends({
75
- error: !!validationError[0]
76
- }, startTextFieldProps, selectedSectionsResponse.start, {
77
- disabled,
78
- readOnly,
79
- format,
80
- formatDensity,
81
- shouldRespectLeadingZeros,
82
- timezone,
83
- value: valueProp === undefined ? undefined : valueProp[0],
84
- defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
85
- onChange: handleStartDateChange,
86
- enableAccessibleFieldDOMStructure,
87
- autoFocus // Do not add on end field.
88
- });
89
- const endFieldProps = _extends({
90
- error: !!validationError[1]
91
- }, endTextFieldProps, selectedSectionsResponse.end, {
92
- format,
93
- formatDensity,
94
- shouldRespectLeadingZeros,
95
- disabled,
96
- readOnly,
97
- timezone,
98
- value: valueProp === undefined ? undefined : valueProp[1],
99
- defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
100
- onChange: handleEndDateChange,
101
- enableAccessibleFieldDOMStructure
102
- });
103
- const startDateResponse = useDateField(startFieldProps);
104
- const endDateResponse = useDateField(endFieldProps);
105
-
106
- /* TODO: Undo this change when a clearable behavior for multiple input range fields is implemented */
107
- return {
108
- startDate: excludeProps(startDateResponse, ['clearable', 'onClear']),
109
- endDate: excludeProps(endDateResponse, ['clearable', 'onClear'])
110
- };
111
- };
@@ -1,111 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import useEventCallback from '@mui/utils/useEventCallback';
3
- import { unstable_useDateTimeField as useDateTimeField } from '@mui/x-date-pickers/DateTimeField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateTimeField } from '@mui/x-date-pickers/internals';
5
- import { useValidation } from '@mui/x-date-pickers/validation';
6
- import { validateDateTimeRange } from "../../../validation/index.js";
7
- import { rangeValueManager } from "../../utils/valueManagers.js";
8
- import { excludeProps } from "./shared.js";
9
- import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
- export const useMultiInputDateTimeRangeField = ({
11
- sharedProps: inSharedProps,
12
- startTextFieldProps,
13
- unstableStartFieldRef,
14
- endTextFieldProps,
15
- unstableEndFieldRef
16
- }) => {
17
- const sharedProps = useDefaultizedDateTimeField(inSharedProps);
18
- const {
19
- value: valueProp,
20
- defaultValue,
21
- format,
22
- formatDensity,
23
- shouldRespectLeadingZeros,
24
- onChange,
25
- disabled,
26
- readOnly,
27
- selectedSections,
28
- onSelectedSectionsChange,
29
- timezone: timezoneProp,
30
- enableAccessibleFieldDOMStructure,
31
- autoFocus
32
- } = sharedProps;
33
- const {
34
- value,
35
- handleValueChange,
36
- timezone
37
- } = useControlledValueWithTimezone({
38
- name: 'useMultiInputDateRangeField',
39
- timezone: timezoneProp,
40
- value: valueProp,
41
- defaultValue,
42
- onChange,
43
- valueManager: rangeValueManager
44
- });
45
- const {
46
- validationError,
47
- getValidationErrorForNewValue
48
- } = useValidation({
49
- props: sharedProps,
50
- value,
51
- timezone,
52
- validator: validateDateTimeRange,
53
- onError: sharedProps.onError
54
- });
55
-
56
- // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
57
- const buildChangeHandler = index => {
58
- return (newDate, rawContext) => {
59
- const newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
60
- const context = _extends({}, rawContext, {
61
- validationError: getValidationErrorForNewValue(newDateRange)
62
- });
63
- handleValueChange(newDateRange, context);
64
- };
65
- };
66
- const handleStartDateChange = useEventCallback(buildChangeHandler(0));
67
- const handleEndDateChange = useEventCallback(buildChangeHandler(1));
68
- const selectedSectionsResponse = useMultiInputFieldSelectedSections({
69
- selectedSections,
70
- onSelectedSectionsChange,
71
- unstableStartFieldRef,
72
- unstableEndFieldRef
73
- });
74
- const startFieldProps = _extends({
75
- error: !!validationError[0]
76
- }, startTextFieldProps, selectedSectionsResponse.start, {
77
- disabled,
78
- readOnly,
79
- format,
80
- formatDensity,
81
- shouldRespectLeadingZeros,
82
- timezone,
83
- value: valueProp === undefined ? undefined : valueProp[0],
84
- defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
85
- onChange: handleStartDateChange,
86
- enableAccessibleFieldDOMStructure,
87
- autoFocus // Do not add on end field.
88
- });
89
- const endFieldProps = _extends({
90
- error: !!validationError[1]
91
- }, endTextFieldProps, selectedSectionsResponse.end, {
92
- format,
93
- formatDensity,
94
- shouldRespectLeadingZeros,
95
- disabled,
96
- readOnly,
97
- timezone,
98
- value: valueProp === undefined ? undefined : valueProp[1],
99
- defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
100
- onChange: handleEndDateChange,
101
- enableAccessibleFieldDOMStructure
102
- });
103
- const startDateResponse = useDateTimeField(startFieldProps);
104
- const endDateResponse = useDateTimeField(endFieldProps);
105
-
106
- /* TODO: Undo this change when a clearable behavior for multiple input range fields is implemented */
107
- return {
108
- startDate: excludeProps(startDateResponse, ['clearable', 'onClear']),
109
- endDate: excludeProps(endDateResponse, ['clearable', 'onClear'])
110
- };
111
- };