@gravity-ui/date-components 3.4.2 → 4.1.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 (405) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/components/Calendar/Calendar.d.ts +6 -2
  3. package/dist/cjs/components/Calendar/Calendar.js +1 -1
  4. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/dist/cjs/components/CalendarView/Calendar.css +3 -0
  6. package/dist/cjs/components/CalendarView/Calendar.css.map +1 -1
  7. package/dist/cjs/components/CalendarView/CalendarView.d.ts +2 -1
  8. package/dist/cjs/components/CalendarView/CalendarView.js +8 -8
  9. package/dist/cjs/components/CalendarView/CalendarView.js.map +1 -1
  10. package/dist/cjs/components/CalendarView/hooks/types.d.ts +5 -3
  11. package/dist/cjs/components/CalendarView/hooks/types.js.map +1 -1
  12. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  13. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  14. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  15. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  16. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +7 -1
  17. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  18. package/dist/cjs/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  19. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js +74 -30
  20. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  21. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +16 -9
  22. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  23. package/dist/cjs/components/DateField/DateField.d.ts +1 -1
  24. package/dist/cjs/components/DateField/DateField.js +5 -17
  25. package/dist/cjs/components/DateField/DateField.js.map +1 -1
  26. package/dist/cjs/components/DateField/IncompleteDate.d.ts +28 -0
  27. package/dist/cjs/components/DateField/IncompleteDate.js +116 -0
  28. package/dist/cjs/components/DateField/IncompleteDate.js.map +1 -0
  29. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  30. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +18 -249
  31. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  32. package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  33. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +250 -54
  34. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  35. package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  36. package/dist/cjs/components/DateField/hooks/useDateFieldState.js +84 -118
  37. package/dist/cjs/components/DateField/hooks/useDateFieldState.js.map +1 -1
  38. package/dist/cjs/components/DateField/hooks/useFocusManager.d.ts +29 -0
  39. package/dist/cjs/components/DateField/hooks/useFocusManager.js +116 -0
  40. package/dist/cjs/components/DateField/hooks/useFocusManager.js.map +1 -0
  41. package/dist/cjs/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  42. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js +236 -0
  43. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  44. package/dist/cjs/components/DateField/i18n/ru.json +1 -1
  45. package/dist/cjs/components/DateField/index.d.ts +2 -1
  46. package/dist/cjs/components/DateField/index.js +1 -1
  47. package/dist/cjs/components/DateField/index.js.map +1 -1
  48. package/dist/cjs/components/DateField/types.d.ts +2 -22
  49. package/dist/cjs/components/DateField/types.js.map +1 -1
  50. package/dist/cjs/components/DateField/utils.d.ts +21 -34
  51. package/dist/cjs/components/DateField/utils.js +180 -132
  52. package/dist/cjs/components/DateField/utils.js.map +1 -1
  53. package/dist/cjs/components/DatePicker/DatePicker.d.ts +3 -3
  54. package/dist/cjs/components/DatePicker/DatePicker.js +3 -4
  55. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  56. package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +1 -1
  57. package/dist/cjs/components/DatePicker/MobileCalendar.js +3 -5
  58. package/dist/cjs/components/DatePicker/MobileCalendar.js.map +1 -1
  59. package/dist/cjs/components/DatePicker/StubButton.d.ts +1 -1
  60. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  61. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  62. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  63. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  64. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +30 -17
  65. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  66. package/dist/cjs/components/HiddenInput/HiddenInput.d.ts +2 -5
  67. package/dist/cjs/components/HiddenInput/HiddenInput.js +2 -4
  68. package/dist/cjs/components/HiddenInput/HiddenInput.js.map +1 -1
  69. package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  70. package/dist/cjs/components/RangeCalendar/RangeCalendar.js +2 -3
  71. package/dist/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
  72. package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +1 -1
  73. package/dist/cjs/components/RangeDateField/RangeDateField.js +6 -19
  74. package/dist/cjs/components/RangeDateField/RangeDateField.js.map +1 -1
  75. package/dist/cjs/components/RangeDateField/index.d.ts +0 -1
  76. package/dist/cjs/components/RangeDateField/index.js +0 -1
  77. package/dist/cjs/components/RangeDateField/index.js.map +1 -1
  78. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  79. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +4 -5
  80. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  81. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  82. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +3 -4
  83. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  84. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  85. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js +4 -5
  86. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  87. package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  88. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  89. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  90. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  91. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  92. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  93. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  94. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -21
  95. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  96. package/dist/cjs/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  97. package/dist/cjs/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  98. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  99. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  100. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  101. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +0 -3
  102. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  103. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  104. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  105. package/dist/cjs/components/RangeDateSelection/utils/span.d.ts +2 -1
  106. package/dist/cjs/components/RangeDateSelection/utils/span.js.map +1 -1
  107. package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  108. package/dist/cjs/components/RelativeDateField/RelativeDateField.js +3 -40
  109. package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
  110. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  111. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  112. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  113. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  114. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  115. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  116. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  117. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  118. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  119. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  120. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -21
  121. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  122. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  123. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  124. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  125. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  126. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  127. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  128. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  129. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  130. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  131. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  132. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  133. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  134. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  135. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  136. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -16
  137. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  138. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
  139. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +34 -7
  140. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  141. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  142. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  143. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  144. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  145. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +9 -12
  146. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  147. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  148. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  149. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  150. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +27 -16
  151. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  152. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  153. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  154. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  155. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  156. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  157. package/dist/cjs/components/RelativeRangeDatePicker/types.d.ts +3 -1
  158. package/dist/cjs/components/RelativeRangeDatePicker/types.js.map +1 -1
  159. package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  160. package/dist/cjs/components/RelativeRangeDatePicker/utils.js +32 -9
  161. package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
  162. package/dist/cjs/components/utils/constants.d.ts +2 -0
  163. package/dist/cjs/components/utils/constants.js +7 -1
  164. package/dist/cjs/components/utils/constants.js.map +1 -1
  165. package/dist/cjs/components/utils/dates.d.ts +6 -1
  166. package/dist/cjs/components/utils/dates.js +6 -1
  167. package/dist/cjs/components/utils/dates.js.map +1 -1
  168. package/dist/cjs/components/utils/filterDOMProps.js +1 -1
  169. package/dist/cjs/components/utils/filterDOMProps.js.map +1 -1
  170. package/dist/cjs/components/utils/mergeProps.js +1 -1
  171. package/dist/cjs/components/utils/mergeProps.js.map +1 -1
  172. package/dist/cjs/components/utils/validation/datePicker.js +1 -1
  173. package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
  174. package/dist/cjs/components/utils/validation/i18n/ru.json +2 -2
  175. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  176. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +6 -1
  177. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  178. package/dist/cjs/hooks/useEventHandler.js +1 -2
  179. package/dist/cjs/hooks/useEventHandler.js.map +1 -1
  180. package/dist/cjs/hooks/useMove.d.ts +2 -2
  181. package/dist/cjs/hooks/useMove.js +6 -9
  182. package/dist/cjs/hooks/useMove.js.map +1 -1
  183. package/dist/cjs/hooks/useResizeObserver.js +1 -1
  184. package/dist/cjs/hooks/useResizeObserver.js.map +1 -1
  185. package/dist/cjs/package.json +1 -1
  186. package/dist/docs/INDEX.md +131 -0
  187. package/dist/docs/components/Calendar.md +125 -0
  188. package/dist/docs/components/DateField.md +206 -0
  189. package/dist/docs/components/DatePicker.md +194 -0
  190. package/dist/docs/components/RangeCalendar.md +125 -0
  191. package/dist/docs/components/RelativeDateField.md +73 -0
  192. package/dist/docs/components/RelativeDatePicker.md +59 -0
  193. package/dist/esm/components/Calendar/Calendar.d.ts +6 -2
  194. package/dist/esm/components/Calendar/Calendar.js +1 -1
  195. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  196. package/dist/esm/components/CalendarView/Calendar.css +3 -0
  197. package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
  198. package/dist/esm/components/CalendarView/CalendarView.d.ts +2 -1
  199. package/dist/esm/components/CalendarView/CalendarView.js +8 -8
  200. package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
  201. package/dist/esm/components/CalendarView/hooks/types.d.ts +5 -3
  202. package/dist/esm/components/CalendarView/hooks/types.js.map +1 -1
  203. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  204. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  205. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  206. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  207. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +7 -1
  208. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  209. package/dist/esm/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  210. package/dist/esm/components/CalendarView/hooks/useCalendarState.js +74 -30
  211. package/dist/esm/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  212. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +16 -10
  213. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  214. package/dist/esm/components/DateField/DateField.d.ts +1 -1
  215. package/dist/esm/components/DateField/DateField.js +6 -18
  216. package/dist/esm/components/DateField/DateField.js.map +1 -1
  217. package/dist/esm/components/DateField/IncompleteDate.d.ts +28 -0
  218. package/dist/esm/components/DateField/IncompleteDate.js +112 -0
  219. package/dist/esm/components/DateField/IncompleteDate.js.map +1 -0
  220. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  221. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +17 -248
  222. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  223. package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  224. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +250 -54
  225. package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  226. package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  227. package/dist/esm/components/DateField/hooks/useDateFieldState.js +85 -119
  228. package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
  229. package/dist/esm/components/DateField/hooks/useFocusManager.d.ts +29 -0
  230. package/dist/esm/components/DateField/hooks/useFocusManager.js +112 -0
  231. package/dist/esm/components/DateField/hooks/useFocusManager.js.map +1 -0
  232. package/dist/esm/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  233. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js +232 -0
  234. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  235. package/dist/esm/components/DateField/i18n/ru.json +1 -1
  236. package/dist/esm/components/DateField/index.d.ts +2 -1
  237. package/dist/esm/components/DateField/index.js +1 -1
  238. package/dist/esm/components/DateField/index.js.map +1 -1
  239. package/dist/esm/components/DateField/types.d.ts +2 -22
  240. package/dist/esm/components/DateField/types.js.map +1 -1
  241. package/dist/esm/components/DateField/utils.d.ts +21 -34
  242. package/dist/esm/components/DateField/utils.js +179 -125
  243. package/dist/esm/components/DateField/utils.js.map +1 -1
  244. package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -3
  245. package/dist/esm/components/DatePicker/DatePicker.js +3 -5
  246. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  247. package/dist/esm/components/DatePicker/MobileCalendar.d.ts +1 -1
  248. package/dist/esm/components/DatePicker/MobileCalendar.js +3 -5
  249. package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
  250. package/dist/esm/components/DatePicker/StubButton.d.ts +1 -1
  251. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  252. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  253. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  254. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  255. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +30 -18
  256. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  257. package/dist/esm/components/HiddenInput/HiddenInput.d.ts +2 -5
  258. package/dist/esm/components/HiddenInput/HiddenInput.js +3 -4
  259. package/dist/esm/components/HiddenInput/HiddenInput.js.map +1 -1
  260. package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  261. package/dist/esm/components/RangeCalendar/RangeCalendar.js +2 -3
  262. package/dist/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
  263. package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
  264. package/dist/esm/components/RangeDateField/RangeDateField.js +7 -20
  265. package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
  266. package/dist/esm/components/RangeDateField/index.d.ts +0 -1
  267. package/dist/esm/components/RangeDateField/index.js +0 -1
  268. package/dist/esm/components/RangeDateField/index.js.map +1 -1
  269. package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  270. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +4 -6
  271. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  272. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  273. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +2 -3
  274. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  275. package/dist/esm/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  276. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +4 -5
  277. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  278. package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  279. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  280. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  281. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  282. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  283. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  284. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  285. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -22
  286. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  287. package/dist/esm/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  288. package/dist/esm/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  289. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  290. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  291. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  292. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +1 -2
  293. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  294. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  295. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  296. package/dist/esm/components/RangeDateSelection/utils/span.d.ts +2 -1
  297. package/dist/esm/components/RangeDateSelection/utils/span.js.map +1 -1
  298. package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  299. package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -40
  300. package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
  301. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  302. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  303. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  304. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  305. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  306. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  307. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  308. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  309. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  310. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  311. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -22
  312. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  313. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  314. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  315. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  316. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  317. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  318. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  319. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  320. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  321. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  322. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  323. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  324. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  325. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  326. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  327. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -17
  328. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  329. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
  330. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -7
  331. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  332. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  333. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  334. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  335. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  336. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +8 -10
  337. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  338. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  339. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  340. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  341. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +26 -15
  342. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  343. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  344. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  345. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  346. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  347. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  348. package/dist/esm/components/RelativeRangeDatePicker/types.d.ts +3 -1
  349. package/dist/esm/components/RelativeRangeDatePicker/types.js.map +1 -1
  350. package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  351. package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
  352. package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
  353. package/dist/esm/components/utils/constants.d.ts +2 -0
  354. package/dist/esm/components/utils/constants.js +6 -0
  355. package/dist/esm/components/utils/constants.js.map +1 -1
  356. package/dist/esm/components/utils/dates.d.ts +6 -1
  357. package/dist/esm/components/utils/dates.js +5 -1
  358. package/dist/esm/components/utils/dates.js.map +1 -1
  359. package/dist/esm/components/utils/filterDOMProps.js +1 -1
  360. package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
  361. package/dist/esm/components/utils/mergeProps.js +1 -1
  362. package/dist/esm/components/utils/mergeProps.js.map +1 -1
  363. package/dist/esm/components/utils/validation/datePicker.js +1 -1
  364. package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
  365. package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
  366. package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  367. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
  368. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  369. package/dist/esm/hooks/useEventHandler.js +1 -2
  370. package/dist/esm/hooks/useEventHandler.js.map +1 -1
  371. package/dist/esm/hooks/useMove.d.ts +2 -2
  372. package/dist/esm/hooks/useMove.js +6 -9
  373. package/dist/esm/hooks/useMove.js.map +1 -1
  374. package/dist/esm/hooks/useResizeObserver.js +1 -1
  375. package/dist/esm/hooks/useResizeObserver.js.map +1 -1
  376. package/dist/esm/package.json +1 -1
  377. package/package.json +34 -27
  378. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
  379. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  380. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  381. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
  382. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  383. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  384. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
  385. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  386. package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
  387. package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
  388. package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
  389. package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  390. package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
  391. package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
  392. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
  393. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  394. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  395. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
  396. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  397. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  398. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
  399. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  400. package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
  401. package/dist/esm/components/RangeDateField/utils/index.js +0 -4
  402. package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
  403. package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  404. package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
  405. package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
@@ -1,224 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useRangeDateFieldState = useRangeDateFieldState;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importDefault(require("react"));
6
- const uikit_1 = require("@gravity-ui/uikit");
7
- const DateField_1 = require("../../DateField/index.js");
8
- const utils_1 = require("../../DateField/utils.js");
9
- const dates_1 = require("../../utils/dates.js");
10
- const useDefaultTimeZone_1 = require("../../utils/useDefaultTimeZone.js");
11
- const utils_2 = require("../utils/index.js");
12
- const RANGE_FORMAT_DELIMITER = ' — ';
13
- function useRangeDateFieldState(props) {
14
- var _a, _b, _c, _d, _e;
15
- const [value, setRange] = (0, uikit_1.useControlledState)(props.value, props.defaultValue || null, props.onUpdate);
16
- const inputTimeZone = (0, useDefaultTimeZone_1.useDefaultTimeZone)(((_a = props.value) === null || _a === void 0 ? void 0 : _a.start) || ((_b = props.defaultValue) === null || _b === void 0 ? void 0 : _b.start) || props.placeholderValue);
17
- const timeZone = props.timeZone || inputTimeZone;
18
- const handleUpdateRange = (v) => {
19
- setRange(v ? { start: v.start.timeZone(inputTimeZone), end: v.end.timeZone(inputTimeZone) } : v);
20
- };
21
- const [placeholderDate, setPlaceholderDate] = react_1.default.useState(() => {
22
- return (0, utils_2.createPlaceholderRangeValue)({
23
- placeholderValue: props.placeholderValue,
24
- timeZone,
25
- });
26
- });
27
- const format = props.format || 'L';
28
- const delimiter = (_c = props.delimiter) !== null && _c !== void 0 ? _c : RANGE_FORMAT_DELIMITER;
29
- const sections = (0, utils_1.useFormatSections)(format);
30
- const formatInfo = react_1.default.useMemo(() => (0, utils_1.getFormatInfo)(sections), [sections]);
31
- const allSegments = formatInfo.availableUnits;
32
- // eslint-disable-next-line prefer-const
33
- let [validSegments, setValidSegments] = react_1.default.useState(() => (value ? { start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) } : { start: {}, end: {} }));
34
- if (value &&
35
- (!(0, utils_1.isAllSegmentsValid)(allSegments, validSegments.start) ||
36
- !(0, utils_1.isAllSegmentsValid)(allSegments, validSegments.end))) {
37
- setValidSegments({ start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) });
38
- }
39
- if (!value &&
40
- Object.keys(allSegments).length > 0 &&
41
- (0, utils_1.isAllSegmentsValid)(allSegments, validSegments.start) &&
42
- Object.keys(validSegments.start).length === Object.keys(allSegments).length &&
43
- (0, utils_1.isAllSegmentsValid)(allSegments, validSegments.end) &&
44
- Object.keys(validSegments.end).length === Object.keys(allSegments).length) {
45
- validSegments = { start: {}, end: {} };
46
- setValidSegments(validSegments);
47
- setPlaceholderDate((0, utils_2.createPlaceholderRangeValue)({
48
- placeholderValue: props.placeholderValue,
49
- timeZone,
50
- }));
51
- }
52
- const { lang } = (0, uikit_1.useLang)();
53
- const displayValue = value &&
54
- value.start.isValid() &&
55
- value.end.isValid() &&
56
- Object.keys(validSegments.start).length >= Object.keys(allSegments).length &&
57
- Object.keys(validSegments.end).length >= Object.keys(allSegments).length
58
- ? {
59
- start: value.start.timeZone(timeZone).locale(lang),
60
- end: value.end.timeZone(timeZone).locale(lang),
61
- }
62
- : {
63
- start: placeholderDate.start.timeZone(timeZone).locale(lang),
64
- end: placeholderDate.end.timeZone(timeZone).locale(lang),
65
- };
66
- const sectionsState = useSectionsState(sections, displayValue, validSegments, delimiter);
67
- const [selectedSections, setSelectedSections] = react_1.default.useState(-1);
68
- const selectedSectionIndexes = react_1.default.useMemo(() => {
69
- if (selectedSections === -1) {
70
- return null;
71
- }
72
- if (selectedSections === 'all') {
73
- return {
74
- startIndex: 0,
75
- endIndex: sectionsState.editableSections.length - 1,
76
- };
77
- }
78
- if (typeof selectedSections === 'number') {
79
- return { startIndex: selectedSections, endIndex: selectedSections };
80
- }
81
- if (typeof selectedSections === 'string') {
82
- const selectedSectionIndex = sectionsState.editableSections.findIndex((section) => section.type === selectedSections);
83
- return { startIndex: selectedSectionIndex, endIndex: selectedSectionIndex };
84
- }
85
- return selectedSections;
86
- }, [selectedSections, sectionsState.editableSections]);
87
- function setValue(newValue) {
88
- if (props.disabled || props.readOnly) {
89
- return;
90
- }
91
- if ((0, utils_1.isAllSegmentsValid)(allSegments, validSegments.start) &&
92
- (0, utils_1.isAllSegmentsValid)(allSegments, validSegments.end)) {
93
- if (!value || !(newValue.start.isSame(value.start) && newValue.end.isSame(value.end))) {
94
- handleUpdateRange({
95
- start: (0, utils_1.adjustDateToFormat)(newValue.start, formatInfo, 'startOf'),
96
- end: (0, utils_1.adjustDateToFormat)(newValue.end, formatInfo, 'endOf'),
97
- });
98
- }
99
- }
100
- else {
101
- if (value) {
102
- handleUpdateRange(null);
103
- }
104
- setPlaceholderDate(newValue);
105
- }
106
- }
107
- function markValid(portion, part) {
108
- validSegments[portion] = (0, utils_1.markValidSection)(allSegments, validSegments[portion], part);
109
- setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
110
- }
111
- function setSection(sectionIndex, amount) {
112
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
113
- const section = sectionsState.editableSections[sectionIndex];
114
- markValid(portion, section.type);
115
- setValue(Object.assign(Object.assign({}, displayValue), { [portion]: (0, utils_1.setSegment)(section, displayValue[portion], amount) }));
116
- }
117
- function adjustSection(sectionIndex, amount) {
118
- const section = sectionsState.editableSections[sectionIndex];
119
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
120
- if (validSegments[portion][section.type]) {
121
- setValue(Object.assign(Object.assign({}, displayValue), { [portion]: (0, utils_1.addSegment)(section, displayValue[portion], amount) }));
122
- }
123
- else {
124
- markValid(portion, section.type);
125
- if (Object.keys(validSegments[portion]).length >= Object.keys(allSegments).length) {
126
- setValue(displayValue);
127
- }
128
- }
129
- }
130
- function flushValidSection(sectionIndex) {
131
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
132
- delete validSegments[portion][sectionsState.editableSections[sectionIndex].type];
133
- setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
134
- }
135
- function flushAllValidSections() {
136
- validSegments = { start: {}, end: {} };
137
- setValidSegments({ start: {}, end: {} });
138
- }
139
- function getSectionValue(sectionIndex) {
140
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
141
- return displayValue[portion];
142
- }
143
- function setSectionValue(sectionIndex, currentValue) {
144
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
145
- setValue(Object.assign(Object.assign({}, displayValue), { [portion]: currentValue }));
146
- }
147
- function createPlaceholder() {
148
- return (0, utils_2.createPlaceholderRangeValue)({
149
- placeholderValue: props.placeholderValue,
150
- timeZone,
151
- });
152
- }
153
- function setValueFromString(str) {
154
- var _a;
155
- const [startDate = '', endDate = ''] = str.split(delimiter);
156
- const parseDate = (_a = props.parseDateFromString) !== null && _a !== void 0 ? _a : utils_1.parseDateFromString;
157
- const start = parseDate(startDate, format, timeZone);
158
- const end = parseDate(endDate, format, timeZone);
159
- if (start.isValid() && end.isValid()) {
160
- handleUpdateRange({ start, end });
161
- return true;
162
- }
163
- return false;
164
- }
165
- const validationState = props.validationState ||
166
- ((0, dates_1.isInvalid)(value === null || value === void 0 ? void 0 : value.start, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
167
- ((0, dates_1.isInvalid)(value === null || value === void 0 ? void 0 : value.end, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
168
- (value && !(0, utils_2.isValidRange)(value) ? 'invalid' : undefined) ||
169
- (value && ((_d = props.isDateUnavailable) === null || _d === void 0 ? void 0 : _d.call(props, value.start)) ? 'invalid' : undefined) ||
170
- (value && ((_e = props.isDateUnavailable) === null || _e === void 0 ? void 0 : _e.call(props, value.end)) ? 'invalid' : undefined);
171
- return (0, DateField_1.useBaseDateFieldState)({
172
- value,
173
- displayValue,
174
- placeholderValue: props.placeholderValue,
175
- timeZone,
176
- validationState,
177
- editableSections: sectionsState.editableSections,
178
- formatInfo,
179
- readOnly: props.readOnly,
180
- disabled: props.disabled,
181
- selectedSectionIndexes,
182
- selectedSections,
183
- isEmpty: Object.keys(validSegments.start).length === 0 &&
184
- Object.keys(validSegments.end).length === 0,
185
- flushAllValidSections,
186
- flushValidSection,
187
- setSelectedSections,
188
- setValue,
189
- setDate: handleUpdateRange,
190
- adjustSection,
191
- setSection,
192
- getSectionValue,
193
- setSectionValue,
194
- createPlaceholder,
195
- setValueFromString,
196
- });
197
- }
198
- function useSectionsState(sections, value, validSegments, delimiter) {
199
- const [state, setState] = react_1.default.useState(() => {
200
- return {
201
- value,
202
- sections,
203
- validSegments,
204
- delimiter,
205
- editableSections: (0, utils_2.getRangeEditableSections)(sections, value, validSegments, delimiter),
206
- };
207
- });
208
- if (sections !== state.sections ||
209
- validSegments !== state.validSegments ||
210
- !(value.start.isSame(state.value.start) && value.end.isSame(state.value.end)) ||
211
- value.start.timeZone() !== state.value.start.timeZone() ||
212
- value.start.locale() !== state.value.start.locale() ||
213
- delimiter !== state.delimiter) {
214
- setState({
215
- value,
216
- sections,
217
- validSegments,
218
- delimiter,
219
- editableSections: (0, utils_2.getRangeEditableSections)(sections, value, validSegments, delimiter),
220
- });
221
- }
222
- return state;
223
- }
224
- //# sourceMappingURL=useRangeDateFieldState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRangeDateFieldState.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/hooks/useRangeDateFieldState.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState, useLang} from '@gravity-ui/uikit';\n\nimport {useBaseDateFieldState} from '../../DateField';\nimport type {DateFieldState} from '../../DateField';\nimport type {DateFieldSectionType, DateFieldSectionWithoutPosition} from '../../DateField/types';\nimport type {EDITABLE_SEGMENTS} from '../../DateField/utils';\nimport {\n addSegment,\n adjustDateToFormat,\n getFormatInfo,\n isAllSegmentsValid,\n markValidSection,\n parseDateFromString,\n setSegment,\n useFormatSections,\n} from '../../DateField/utils';\nimport type {DateFieldBase} from '../../types/datePicker';\nimport type {RangeValue} from '../../types/inputs';\nimport {isInvalid} from '../../utils/dates';\nimport {useDefaultTimeZone} from '../../utils/useDefaultTimeZone';\nimport {createPlaceholderRangeValue, getRangeEditableSections, isValidRange} from '../utils';\n\nexport interface RangeDateFieldStateOptions extends DateFieldBase<RangeValue<DateTime>> {\n delimiter?: string;\n}\n\nconst RANGE_FORMAT_DELIMITER = ' — ';\n\nexport type RangeDateFieldState = DateFieldState<RangeValue<DateTime>>;\n\nexport function useRangeDateFieldState(props: RangeDateFieldStateOptions): RangeDateFieldState {\n const [value, setRange] = useControlledState(\n props.value,\n props.defaultValue || null,\n props.onUpdate,\n );\n\n const inputTimeZone = useDefaultTimeZone(\n props.value?.start || props.defaultValue?.start || props.placeholderValue,\n );\n const timeZone = props.timeZone || inputTimeZone;\n\n const handleUpdateRange = (v: RangeValue<DateTime> | null) => {\n setRange(\n v ? {start: v.start.timeZone(inputTimeZone), end: v.end.timeZone(inputTimeZone)} : v,\n );\n };\n\n const [placeholderDate, setPlaceholderDate] = React.useState<RangeValue<DateTime>>(() => {\n return createPlaceholderRangeValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n });\n });\n\n const format = props.format || 'L';\n const delimiter = props.delimiter ?? RANGE_FORMAT_DELIMITER;\n const sections = useFormatSections(format);\n const formatInfo = React.useMemo(() => getFormatInfo(sections), [sections]);\n\n const allSegments = formatInfo.availableUnits;\n\n // eslint-disable-next-line prefer-const\n let [validSegments, setValidSegments] = React.useState<RangeValue<typeof EDITABLE_SEGMENTS>>(\n () => (value ? {start: {...allSegments}, end: {...allSegments}} : {start: {}, end: {}}),\n );\n\n if (\n value &&\n (!isAllSegmentsValid(allSegments, validSegments.start) ||\n !isAllSegmentsValid(allSegments, validSegments.end))\n ) {\n setValidSegments({start: {...allSegments}, end: {...allSegments}});\n }\n\n if (\n !value &&\n Object.keys(allSegments).length > 0 &&\n isAllSegmentsValid(allSegments, validSegments.start) &&\n Object.keys(validSegments.start).length === Object.keys(allSegments).length &&\n isAllSegmentsValid(allSegments, validSegments.end) &&\n Object.keys(validSegments.end).length === Object.keys(allSegments).length\n ) {\n validSegments = {start: {}, end: {}};\n setValidSegments(validSegments);\n setPlaceholderDate(\n createPlaceholderRangeValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n }),\n );\n }\n\n const {lang} = useLang();\n const displayValue =\n value &&\n value.start.isValid() &&\n value.end.isValid() &&\n Object.keys(validSegments.start).length >= Object.keys(allSegments).length &&\n Object.keys(validSegments.end).length >= Object.keys(allSegments).length\n ? {\n start: value.start.timeZone(timeZone).locale(lang),\n end: value.end.timeZone(timeZone).locale(lang),\n }\n : {\n start: placeholderDate.start.timeZone(timeZone).locale(lang),\n end: placeholderDate.end.timeZone(timeZone).locale(lang),\n };\n const sectionsState = useSectionsState(sections, displayValue, validSegments, delimiter);\n\n const [selectedSections, setSelectedSections] = React.useState<number | 'all'>(-1);\n\n const selectedSectionIndexes = React.useMemo<{\n startIndex: number;\n endIndex: number;\n } | null>(() => {\n if (selectedSections === -1) {\n return null;\n }\n\n if (selectedSections === 'all') {\n return {\n startIndex: 0,\n endIndex: sectionsState.editableSections.length - 1,\n };\n }\n\n if (typeof selectedSections === 'number') {\n return {startIndex: selectedSections, endIndex: selectedSections};\n }\n\n if (typeof selectedSections === 'string') {\n const selectedSectionIndex = sectionsState.editableSections.findIndex(\n (section) => section.type === selectedSections,\n );\n\n return {startIndex: selectedSectionIndex, endIndex: selectedSectionIndex};\n }\n\n return selectedSections;\n }, [selectedSections, sectionsState.editableSections]);\n\n function setValue(newValue: RangeValue<DateTime>) {\n if (props.disabled || props.readOnly) {\n return;\n }\n\n if (\n isAllSegmentsValid(allSegments, validSegments.start) &&\n isAllSegmentsValid(allSegments, validSegments.end)\n ) {\n if (!value || !(newValue.start.isSame(value.start) && newValue.end.isSame(value.end))) {\n handleUpdateRange({\n start: adjustDateToFormat(newValue.start, formatInfo, 'startOf'),\n end: adjustDateToFormat(newValue.end, formatInfo, 'endOf'),\n });\n }\n } else {\n if (value) {\n handleUpdateRange(null);\n }\n setPlaceholderDate(newValue);\n }\n }\n\n function markValid(portion: 'start' | 'end', part: DateFieldSectionType) {\n validSegments[portion] = markValidSection(allSegments, validSegments[portion], part);\n setValidSegments({...validSegments, [portion]: {...validSegments[portion]}});\n }\n\n function setSection(sectionIndex: number, amount: number) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n const section = sectionsState.editableSections[sectionIndex];\n markValid(portion, section.type);\n setValue({\n ...displayValue,\n [portion]: setSegment(section, displayValue[portion], amount),\n });\n }\n\n function adjustSection(sectionIndex: number, amount: number) {\n const section = sectionsState.editableSections[sectionIndex];\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n if (validSegments[portion][section.type]) {\n setValue({\n ...displayValue,\n [portion]: addSegment(section, displayValue[portion], amount),\n });\n } else {\n markValid(portion, section.type);\n if (Object.keys(validSegments[portion]).length >= Object.keys(allSegments).length) {\n setValue(displayValue);\n }\n }\n }\n\n function flushValidSection(sectionIndex: number) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n delete validSegments[portion][sectionsState.editableSections[sectionIndex].type];\n setValidSegments({...validSegments, [portion]: {...validSegments[portion]}});\n }\n\n function flushAllValidSections() {\n validSegments = {start: {}, end: {}};\n setValidSegments({start: {}, end: {}});\n }\n\n function getSectionValue(sectionIndex: number) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n return displayValue[portion];\n }\n\n function setSectionValue(sectionIndex: number, currentValue: DateTime) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n setValue({...displayValue, [portion]: currentValue});\n }\n\n function createPlaceholder() {\n return createPlaceholderRangeValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n });\n }\n\n function setValueFromString(str: string) {\n const [startDate = '', endDate = ''] = str.split(delimiter);\n const parseDate = props.parseDateFromString ?? parseDateFromString;\n const start = parseDate(startDate, format, timeZone);\n const end = parseDate(endDate, format, timeZone);\n if (start.isValid() && end.isValid()) {\n handleUpdateRange({start, end});\n return true;\n }\n return false;\n }\n\n const validationState =\n props.validationState ||\n (isInvalid(value?.start, props.minValue, props.maxValue) ? 'invalid' : undefined) ||\n (isInvalid(value?.end, props.minValue, props.maxValue) ? 'invalid' : undefined) ||\n (value && !isValidRange(value) ? 'invalid' : undefined) ||\n (value && props.isDateUnavailable?.(value.start) ? 'invalid' : undefined) ||\n (value && props.isDateUnavailable?.(value.end) ? 'invalid' : undefined);\n\n return useBaseDateFieldState({\n value,\n displayValue,\n placeholderValue: props.placeholderValue,\n timeZone,\n validationState,\n editableSections: sectionsState.editableSections,\n formatInfo,\n readOnly: props.readOnly,\n disabled: props.disabled,\n selectedSectionIndexes,\n selectedSections,\n isEmpty:\n Object.keys(validSegments.start).length === 0 &&\n Object.keys(validSegments.end).length === 0,\n flushAllValidSections,\n flushValidSection,\n setSelectedSections,\n setValue,\n setDate: handleUpdateRange,\n adjustSection,\n setSection,\n getSectionValue,\n setSectionValue,\n createPlaceholder,\n setValueFromString,\n });\n}\n\nfunction useSectionsState(\n sections: DateFieldSectionWithoutPosition[],\n value: RangeValue<DateTime>,\n validSegments: RangeValue<typeof EDITABLE_SEGMENTS>,\n delimiter: string,\n) {\n const [state, setState] = React.useState(() => {\n return {\n value,\n sections,\n validSegments,\n delimiter,\n editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),\n };\n });\n\n if (\n sections !== state.sections ||\n validSegments !== state.validSegments ||\n !(value.start.isSame(state.value.start) && value.end.isSame(state.value.end)) ||\n value.start.timeZone() !== state.value.start.timeZone() ||\n value.start.locale() !== state.value.start.locale() ||\n delimiter !== state.delimiter\n ) {\n setState({\n value,\n sections,\n validSegments,\n delimiter,\n editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),\n });\n }\n\n return state;\n}\n"]}
@@ -1,5 +0,0 @@
1
- import type { PlaceholderValueOptions } from "../../utils/dates.js";
2
- export declare function createPlaceholderRangeValue({ placeholderValue, timeZone }: PlaceholderValueOptions): {
3
- start: import("@gravity-ui/date-utils").DateTime;
4
- end: import("@gravity-ui/date-utils").DateTime;
5
- };
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPlaceholderRangeValue = createPlaceholderRangeValue;
4
- const dates_1 = require("../../utils/dates.js");
5
- function createPlaceholderRangeValue({ placeholderValue, timeZone }) {
6
- const date = (0, dates_1.createPlaceholderValue)({ placeholderValue, timeZone });
7
- return { start: date.startOf('day'), end: date.endOf('day') };
8
- }
9
- //# sourceMappingURL=createPlaceholderRangeValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPlaceholderRangeValue.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/createPlaceholderRangeValue.ts"],"names":[],"mappings":";;AAGA,kEAGC;AAND,gDAAyD;AAGzD,SAAgB,2BAA2B,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IAC7F,MAAM,IAAI,GAAG,IAAA,8BAAsB,EAAC,EAAC,gBAAgB,EAAE,QAAQ,EAAC,CAAC,CAAC;IAClE,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC;AAChE,CAAC","sourcesContent":["import {createPlaceholderValue} from '../../utils/dates';\nimport type {PlaceholderValueOptions} from '../../utils/dates';\n\nexport function createPlaceholderRangeValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n const date = createPlaceholderValue({placeholderValue, timeZone});\n return {start: date.startOf('day'), end: date.endOf('day')};\n}\n"]}
@@ -1,5 +0,0 @@
1
- import type { DateTime } from '@gravity-ui/date-utils';
2
- import type { DateFieldSectionWithoutPosition } from "../../DateField/types.js";
3
- import type { EDITABLE_SEGMENTS } from "../../DateField/utils.js";
4
- import type { RangeValue } from "../../types/index.js";
5
- export declare function getRangeEditableSections(sections: DateFieldSectionWithoutPosition[], value: RangeValue<DateTime>, validSegments: RangeValue<typeof EDITABLE_SEGMENTS>, delimiter: string): import("../../DateField/types.js").DateFieldSection[];
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRangeEditableSections = getRangeEditableSections;
4
- const utils_1 = require("../../DateField/utils.js");
5
- function getRangeEditableSections(sections, value, validSegments, delimiter) {
6
- const start = (0, utils_1.getEditableSections)(sections, value.start, validSegments.start);
7
- const end = (0, utils_1.getEditableSections)(sections, value.end, validSegments.end);
8
- const last = start[start.length - 1];
9
- let position = last.end;
10
- const previousEditableSection = last.nextEditableSection;
11
- const sectionsCount = start.length + 1;
12
- const delimiterSection = (0, utils_1.toEditableSection)({
13
- type: 'literal',
14
- contentType: 'letter',
15
- format: delimiter,
16
- placeholder: delimiter,
17
- hasLeadingZeros: false,
18
- }, value.start, validSegments.start, position, previousEditableSection);
19
- position += delimiterSection.textValue.length - 1;
20
- let nextEditableSection;
21
- for (let index = 0; index < end.length; index++) {
22
- const section = end[index];
23
- section.start += position;
24
- section.end += position;
25
- if (section.previousEditableSection === 0 && nextEditableSection === undefined) {
26
- section.previousEditableSection = previousEditableSection;
27
- }
28
- else {
29
- section.previousEditableSection += sectionsCount;
30
- }
31
- section.nextEditableSection += sectionsCount;
32
- if ((0, utils_1.isEditableSection)(section) && nextEditableSection === undefined) {
33
- nextEditableSection = index + sectionsCount;
34
- }
35
- }
36
- if (nextEditableSection !== undefined) {
37
- delimiterSection.nextEditableSection = nextEditableSection;
38
- start[previousEditableSection].nextEditableSection = nextEditableSection;
39
- }
40
- return [...start, delimiterSection, ...end];
41
- }
42
- //# sourceMappingURL=getRangeEditableSections.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getRangeEditableSections.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/getRangeEditableSections.ts"],"names":[],"mappings":";;AAOA,4DAyDC;AA7DD,oDAAgG;AAIhG,SAAgB,wBAAwB,CACpC,QAA2C,EAC3C,KAA2B,EAC3B,aAAmD,EACnD,SAAiB;IAEjB,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,IAAA,2BAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;IACxB,MAAM,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvC,MAAM,gBAAgB,GAAG,IAAA,yBAAiB,EACtC;QACI,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;QACrB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,SAAS;QACtB,eAAe,EAAE,KAAK;KACzB,EACD,KAAK,CAAC,KAAK,EACX,aAAa,CAAC,KAAK,EACnB,QAAQ,EACR,uBAAuB,CAC1B,CAAC;IAEF,QAAQ,IAAI,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAElD,IAAI,mBAAmB,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3B,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;QAC1B,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC;QAExB,IAAI,OAAO,CAAC,uBAAuB,KAAK,CAAC,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC7E,OAAO,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QAC9D,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,uBAAuB,IAAI,aAAa,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,mBAAmB,IAAI,aAAa,CAAC;QAE7C,IAAI,IAAA,yBAAiB,EAAC,OAAO,CAAC,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAClE,mBAAmB,GAAG,KAAK,GAAG,aAAa,CAAC;QAChD,CAAC;IACL,CAAC;IAED,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACpC,gBAAgB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE3D,KAAK,CAAC,uBAAuB,CAAC,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {DateFieldSectionWithoutPosition} from '../../DateField/types';\nimport {getEditableSections, isEditableSection, toEditableSection} from '../../DateField/utils';\nimport type {EDITABLE_SEGMENTS} from '../../DateField/utils';\nimport type {RangeValue} from '../../types';\n\nexport function getRangeEditableSections(\n sections: DateFieldSectionWithoutPosition[],\n value: RangeValue<DateTime>,\n validSegments: RangeValue<typeof EDITABLE_SEGMENTS>,\n delimiter: string,\n) {\n const start = getEditableSections(sections, value.start, validSegments.start);\n const end = getEditableSections(sections, value.end, validSegments.end);\n\n const last = start[start.length - 1];\n let position = last.end;\n const previousEditableSection = last.nextEditableSection;\n const sectionsCount = start.length + 1;\n\n const delimiterSection = toEditableSection(\n {\n type: 'literal',\n contentType: 'letter',\n format: delimiter,\n placeholder: delimiter,\n hasLeadingZeros: false,\n },\n value.start,\n validSegments.start,\n position,\n previousEditableSection,\n );\n\n position += delimiterSection.textValue.length - 1;\n\n let nextEditableSection;\n for (let index = 0; index < end.length; index++) {\n const section = end[index];\n\n section.start += position;\n section.end += position;\n\n if (section.previousEditableSection === 0 && nextEditableSection === undefined) {\n section.previousEditableSection = previousEditableSection;\n } else {\n section.previousEditableSection += sectionsCount;\n }\n\n section.nextEditableSection += sectionsCount;\n\n if (isEditableSection(section) && nextEditableSection === undefined) {\n nextEditableSection = index + sectionsCount;\n }\n }\n\n if (nextEditableSection !== undefined) {\n delimiterSection.nextEditableSection = nextEditableSection;\n\n start[previousEditableSection].nextEditableSection = nextEditableSection;\n }\n\n return [...start, delimiterSection, ...end];\n}\n"]}
@@ -1,3 +0,0 @@
1
- export * from "./getRangeEditableSections.js";
2
- export * from "./isValidRange.js";
3
- export * from "./createPlaceholderRangeValue.js";
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./getRangeEditableSections.js"), exports);
5
- tslib_1.__exportStar(require("./isValidRange.js"), exports);
6
- tslib_1.__exportStar(require("./createPlaceholderRangeValue.js"), exports);
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/index.ts"],"names":[],"mappings":";;;AAAA,wEAA2C;AAC3C,4DAA+B;AAC/B,2EAA8C","sourcesContent":["export * from './getRangeEditableSections';\nexport * from './isValidRange';\nexport * from './createPlaceholderRangeValue';\n"]}
@@ -1,3 +0,0 @@
1
- import type { DateTime } from '@gravity-ui/date-utils';
2
- import type { RangeValue } from "../../types/index.js";
3
- export declare function isValidRange({ start, end }: RangeValue<DateTime>): boolean;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidRange = isValidRange;
4
- function isValidRange({ start, end }) {
5
- return start.isValid() && end.isValid() && (start.isSame(end) || start.isBefore(end));
6
- }
7
- //# sourceMappingURL=isValidRange.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isValidRange.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/isValidRange.ts"],"names":[],"mappings":";;AAIA,oCAEC;AAFD,SAAgB,YAAY,CAAC,EAAC,KAAK,EAAE,GAAG,EAAuB;IAC3D,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1F,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {RangeValue} from '../../types';\n\nexport function isValidRange({start, end}: RangeValue<DateTime>): boolean {\n return start.isValid() && end.isValid() && (start.isSame(end) || start.isBefore(end));\n}\n"]}
@@ -1,220 +0,0 @@
1
- import React from 'react';
2
- import { useControlledState, useLang } from '@gravity-ui/uikit';
3
- import { useBaseDateFieldState } from "../../DateField/index.js";
4
- import { addSegment, adjustDateToFormat, getFormatInfo, isAllSegmentsValid, markValidSection, parseDateFromString, setSegment, useFormatSections, } from "../../DateField/utils.js";
5
- import { isInvalid } from "../../utils/dates.js";
6
- import { useDefaultTimeZone } from "../../utils/useDefaultTimeZone.js";
7
- import { createPlaceholderRangeValue, getRangeEditableSections, isValidRange } from "../utils/index.js";
8
- const RANGE_FORMAT_DELIMITER = ' — ';
9
- export function useRangeDateFieldState(props) {
10
- var _a, _b, _c, _d, _e;
11
- const [value, setRange] = useControlledState(props.value, props.defaultValue || null, props.onUpdate);
12
- const inputTimeZone = useDefaultTimeZone(((_a = props.value) === null || _a === void 0 ? void 0 : _a.start) || ((_b = props.defaultValue) === null || _b === void 0 ? void 0 : _b.start) || props.placeholderValue);
13
- const timeZone = props.timeZone || inputTimeZone;
14
- const handleUpdateRange = (v) => {
15
- setRange(v ? { start: v.start.timeZone(inputTimeZone), end: v.end.timeZone(inputTimeZone) } : v);
16
- };
17
- const [placeholderDate, setPlaceholderDate] = React.useState(() => {
18
- return createPlaceholderRangeValue({
19
- placeholderValue: props.placeholderValue,
20
- timeZone,
21
- });
22
- });
23
- const format = props.format || 'L';
24
- const delimiter = (_c = props.delimiter) !== null && _c !== void 0 ? _c : RANGE_FORMAT_DELIMITER;
25
- const sections = useFormatSections(format);
26
- const formatInfo = React.useMemo(() => getFormatInfo(sections), [sections]);
27
- const allSegments = formatInfo.availableUnits;
28
- // eslint-disable-next-line prefer-const
29
- let [validSegments, setValidSegments] = React.useState(() => (value ? { start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) } : { start: {}, end: {} }));
30
- if (value &&
31
- (!isAllSegmentsValid(allSegments, validSegments.start) ||
32
- !isAllSegmentsValid(allSegments, validSegments.end))) {
33
- setValidSegments({ start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) });
34
- }
35
- if (!value &&
36
- Object.keys(allSegments).length > 0 &&
37
- isAllSegmentsValid(allSegments, validSegments.start) &&
38
- Object.keys(validSegments.start).length === Object.keys(allSegments).length &&
39
- isAllSegmentsValid(allSegments, validSegments.end) &&
40
- Object.keys(validSegments.end).length === Object.keys(allSegments).length) {
41
- validSegments = { start: {}, end: {} };
42
- setValidSegments(validSegments);
43
- setPlaceholderDate(createPlaceholderRangeValue({
44
- placeholderValue: props.placeholderValue,
45
- timeZone,
46
- }));
47
- }
48
- const { lang } = useLang();
49
- const displayValue = value &&
50
- value.start.isValid() &&
51
- value.end.isValid() &&
52
- Object.keys(validSegments.start).length >= Object.keys(allSegments).length &&
53
- Object.keys(validSegments.end).length >= Object.keys(allSegments).length
54
- ? {
55
- start: value.start.timeZone(timeZone).locale(lang),
56
- end: value.end.timeZone(timeZone).locale(lang),
57
- }
58
- : {
59
- start: placeholderDate.start.timeZone(timeZone).locale(lang),
60
- end: placeholderDate.end.timeZone(timeZone).locale(lang),
61
- };
62
- const sectionsState = useSectionsState(sections, displayValue, validSegments, delimiter);
63
- const [selectedSections, setSelectedSections] = React.useState(-1);
64
- const selectedSectionIndexes = React.useMemo(() => {
65
- if (selectedSections === -1) {
66
- return null;
67
- }
68
- if (selectedSections === 'all') {
69
- return {
70
- startIndex: 0,
71
- endIndex: sectionsState.editableSections.length - 1,
72
- };
73
- }
74
- if (typeof selectedSections === 'number') {
75
- return { startIndex: selectedSections, endIndex: selectedSections };
76
- }
77
- if (typeof selectedSections === 'string') {
78
- const selectedSectionIndex = sectionsState.editableSections.findIndex((section) => section.type === selectedSections);
79
- return { startIndex: selectedSectionIndex, endIndex: selectedSectionIndex };
80
- }
81
- return selectedSections;
82
- }, [selectedSections, sectionsState.editableSections]);
83
- function setValue(newValue) {
84
- if (props.disabled || props.readOnly) {
85
- return;
86
- }
87
- if (isAllSegmentsValid(allSegments, validSegments.start) &&
88
- isAllSegmentsValid(allSegments, validSegments.end)) {
89
- if (!value || !(newValue.start.isSame(value.start) && newValue.end.isSame(value.end))) {
90
- handleUpdateRange({
91
- start: adjustDateToFormat(newValue.start, formatInfo, 'startOf'),
92
- end: adjustDateToFormat(newValue.end, formatInfo, 'endOf'),
93
- });
94
- }
95
- }
96
- else {
97
- if (value) {
98
- handleUpdateRange(null);
99
- }
100
- setPlaceholderDate(newValue);
101
- }
102
- }
103
- function markValid(portion, part) {
104
- validSegments[portion] = markValidSection(allSegments, validSegments[portion], part);
105
- setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
106
- }
107
- function setSection(sectionIndex, amount) {
108
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
109
- const section = sectionsState.editableSections[sectionIndex];
110
- markValid(portion, section.type);
111
- setValue(Object.assign(Object.assign({}, displayValue), { [portion]: setSegment(section, displayValue[portion], amount) }));
112
- }
113
- function adjustSection(sectionIndex, amount) {
114
- const section = sectionsState.editableSections[sectionIndex];
115
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
116
- if (validSegments[portion][section.type]) {
117
- setValue(Object.assign(Object.assign({}, displayValue), { [portion]: addSegment(section, displayValue[portion], amount) }));
118
- }
119
- else {
120
- markValid(portion, section.type);
121
- if (Object.keys(validSegments[portion]).length >= Object.keys(allSegments).length) {
122
- setValue(displayValue);
123
- }
124
- }
125
- }
126
- function flushValidSection(sectionIndex) {
127
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
128
- delete validSegments[portion][sectionsState.editableSections[sectionIndex].type];
129
- setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
130
- }
131
- function flushAllValidSections() {
132
- validSegments = { start: {}, end: {} };
133
- setValidSegments({ start: {}, end: {} });
134
- }
135
- function getSectionValue(sectionIndex) {
136
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
137
- return displayValue[portion];
138
- }
139
- function setSectionValue(sectionIndex, currentValue) {
140
- const portion = sectionIndex <= sections.length ? 'start' : 'end';
141
- setValue(Object.assign(Object.assign({}, displayValue), { [portion]: currentValue }));
142
- }
143
- function createPlaceholder() {
144
- return createPlaceholderRangeValue({
145
- placeholderValue: props.placeholderValue,
146
- timeZone,
147
- });
148
- }
149
- function setValueFromString(str) {
150
- var _a;
151
- const [startDate = '', endDate = ''] = str.split(delimiter);
152
- const parseDate = (_a = props.parseDateFromString) !== null && _a !== void 0 ? _a : parseDateFromString;
153
- const start = parseDate(startDate, format, timeZone);
154
- const end = parseDate(endDate, format, timeZone);
155
- if (start.isValid() && end.isValid()) {
156
- handleUpdateRange({ start, end });
157
- return true;
158
- }
159
- return false;
160
- }
161
- const validationState = props.validationState ||
162
- (isInvalid(value === null || value === void 0 ? void 0 : value.start, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
163
- (isInvalid(value === null || value === void 0 ? void 0 : value.end, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
164
- (value && !isValidRange(value) ? 'invalid' : undefined) ||
165
- (value && ((_d = props.isDateUnavailable) === null || _d === void 0 ? void 0 : _d.call(props, value.start)) ? 'invalid' : undefined) ||
166
- (value && ((_e = props.isDateUnavailable) === null || _e === void 0 ? void 0 : _e.call(props, value.end)) ? 'invalid' : undefined);
167
- return useBaseDateFieldState({
168
- value,
169
- displayValue,
170
- placeholderValue: props.placeholderValue,
171
- timeZone,
172
- validationState,
173
- editableSections: sectionsState.editableSections,
174
- formatInfo,
175
- readOnly: props.readOnly,
176
- disabled: props.disabled,
177
- selectedSectionIndexes,
178
- selectedSections,
179
- isEmpty: Object.keys(validSegments.start).length === 0 &&
180
- Object.keys(validSegments.end).length === 0,
181
- flushAllValidSections,
182
- flushValidSection,
183
- setSelectedSections,
184
- setValue,
185
- setDate: handleUpdateRange,
186
- adjustSection,
187
- setSection,
188
- getSectionValue,
189
- setSectionValue,
190
- createPlaceholder,
191
- setValueFromString,
192
- });
193
- }
194
- function useSectionsState(sections, value, validSegments, delimiter) {
195
- const [state, setState] = React.useState(() => {
196
- return {
197
- value,
198
- sections,
199
- validSegments,
200
- delimiter,
201
- editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),
202
- };
203
- });
204
- if (sections !== state.sections ||
205
- validSegments !== state.validSegments ||
206
- !(value.start.isSame(state.value.start) && value.end.isSame(state.value.end)) ||
207
- value.start.timeZone() !== state.value.start.timeZone() ||
208
- value.start.locale() !== state.value.start.locale() ||
209
- delimiter !== state.delimiter) {
210
- setState({
211
- value,
212
- sections,
213
- validSegments,
214
- delimiter,
215
- editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),
216
- });
217
- }
218
- return state;
219
- }
220
- //# sourceMappingURL=useRangeDateFieldState.js.map