@gravity-ui/date-components 3.4.2 → 4.0.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 (401) 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 +2 -1
  139. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -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/utils.d.ts +2 -2
  158. package/dist/cjs/components/RelativeRangeDatePicker/utils.js +32 -9
  159. package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
  160. package/dist/cjs/components/utils/constants.d.ts +2 -0
  161. package/dist/cjs/components/utils/constants.js +7 -1
  162. package/dist/cjs/components/utils/constants.js.map +1 -1
  163. package/dist/cjs/components/utils/dates.d.ts +6 -1
  164. package/dist/cjs/components/utils/dates.js +6 -1
  165. package/dist/cjs/components/utils/dates.js.map +1 -1
  166. package/dist/cjs/components/utils/filterDOMProps.js +1 -1
  167. package/dist/cjs/components/utils/filterDOMProps.js.map +1 -1
  168. package/dist/cjs/components/utils/mergeProps.js +1 -1
  169. package/dist/cjs/components/utils/mergeProps.js.map +1 -1
  170. package/dist/cjs/components/utils/validation/datePicker.js +1 -1
  171. package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
  172. package/dist/cjs/components/utils/validation/i18n/ru.json +2 -2
  173. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  174. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +6 -1
  175. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  176. package/dist/cjs/hooks/useEventHandler.js +1 -2
  177. package/dist/cjs/hooks/useEventHandler.js.map +1 -1
  178. package/dist/cjs/hooks/useMove.d.ts +2 -2
  179. package/dist/cjs/hooks/useMove.js +6 -9
  180. package/dist/cjs/hooks/useMove.js.map +1 -1
  181. package/dist/cjs/hooks/useResizeObserver.js +1 -1
  182. package/dist/cjs/hooks/useResizeObserver.js.map +1 -1
  183. package/dist/cjs/package.json +1 -1
  184. package/dist/docs/INDEX.md +131 -0
  185. package/dist/docs/components/Calendar.md +125 -0
  186. package/dist/docs/components/DateField.md +206 -0
  187. package/dist/docs/components/DatePicker.md +194 -0
  188. package/dist/docs/components/RangeCalendar.md +125 -0
  189. package/dist/docs/components/RelativeDateField.md +73 -0
  190. package/dist/docs/components/RelativeDatePicker.md +59 -0
  191. package/dist/esm/components/Calendar/Calendar.d.ts +6 -2
  192. package/dist/esm/components/Calendar/Calendar.js +1 -1
  193. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  194. package/dist/esm/components/CalendarView/Calendar.css +3 -0
  195. package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
  196. package/dist/esm/components/CalendarView/CalendarView.d.ts +2 -1
  197. package/dist/esm/components/CalendarView/CalendarView.js +8 -8
  198. package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
  199. package/dist/esm/components/CalendarView/hooks/types.d.ts +5 -3
  200. package/dist/esm/components/CalendarView/hooks/types.js.map +1 -1
  201. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  202. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  203. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  204. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  205. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +7 -1
  206. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  207. package/dist/esm/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  208. package/dist/esm/components/CalendarView/hooks/useCalendarState.js +74 -30
  209. package/dist/esm/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  210. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +16 -10
  211. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  212. package/dist/esm/components/DateField/DateField.d.ts +1 -1
  213. package/dist/esm/components/DateField/DateField.js +6 -18
  214. package/dist/esm/components/DateField/DateField.js.map +1 -1
  215. package/dist/esm/components/DateField/IncompleteDate.d.ts +28 -0
  216. package/dist/esm/components/DateField/IncompleteDate.js +112 -0
  217. package/dist/esm/components/DateField/IncompleteDate.js.map +1 -0
  218. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  219. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +17 -248
  220. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  221. package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  222. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +250 -54
  223. package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  224. package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  225. package/dist/esm/components/DateField/hooks/useDateFieldState.js +85 -119
  226. package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
  227. package/dist/esm/components/DateField/hooks/useFocusManager.d.ts +29 -0
  228. package/dist/esm/components/DateField/hooks/useFocusManager.js +112 -0
  229. package/dist/esm/components/DateField/hooks/useFocusManager.js.map +1 -0
  230. package/dist/esm/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  231. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js +232 -0
  232. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  233. package/dist/esm/components/DateField/i18n/ru.json +1 -1
  234. package/dist/esm/components/DateField/index.d.ts +2 -1
  235. package/dist/esm/components/DateField/index.js +1 -1
  236. package/dist/esm/components/DateField/index.js.map +1 -1
  237. package/dist/esm/components/DateField/types.d.ts +2 -22
  238. package/dist/esm/components/DateField/types.js.map +1 -1
  239. package/dist/esm/components/DateField/utils.d.ts +21 -34
  240. package/dist/esm/components/DateField/utils.js +179 -125
  241. package/dist/esm/components/DateField/utils.js.map +1 -1
  242. package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -3
  243. package/dist/esm/components/DatePicker/DatePicker.js +3 -5
  244. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  245. package/dist/esm/components/DatePicker/MobileCalendar.d.ts +1 -1
  246. package/dist/esm/components/DatePicker/MobileCalendar.js +3 -5
  247. package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
  248. package/dist/esm/components/DatePicker/StubButton.d.ts +1 -1
  249. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  250. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  251. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  252. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  253. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +30 -18
  254. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  255. package/dist/esm/components/HiddenInput/HiddenInput.d.ts +2 -5
  256. package/dist/esm/components/HiddenInput/HiddenInput.js +3 -4
  257. package/dist/esm/components/HiddenInput/HiddenInput.js.map +1 -1
  258. package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  259. package/dist/esm/components/RangeCalendar/RangeCalendar.js +2 -3
  260. package/dist/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
  261. package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
  262. package/dist/esm/components/RangeDateField/RangeDateField.js +7 -20
  263. package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
  264. package/dist/esm/components/RangeDateField/index.d.ts +0 -1
  265. package/dist/esm/components/RangeDateField/index.js +0 -1
  266. package/dist/esm/components/RangeDateField/index.js.map +1 -1
  267. package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  268. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +4 -6
  269. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  270. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  271. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +2 -3
  272. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  273. package/dist/esm/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  274. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +4 -5
  275. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  276. package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  277. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  278. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  279. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  280. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  281. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  282. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  283. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -22
  284. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  285. package/dist/esm/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  286. package/dist/esm/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  287. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  288. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  289. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  290. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +1 -2
  291. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  292. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  293. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  294. package/dist/esm/components/RangeDateSelection/utils/span.d.ts +2 -1
  295. package/dist/esm/components/RangeDateSelection/utils/span.js.map +1 -1
  296. package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  297. package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -40
  298. package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
  299. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  300. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  301. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  302. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  303. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  304. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  305. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  306. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  307. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  308. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  309. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -22
  310. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  311. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  312. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  313. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  314. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  315. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  316. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  317. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  318. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  319. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  320. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  321. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  322. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  323. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  324. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  325. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -17
  326. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  327. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +2 -1
  328. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +32 -7
  329. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  330. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  331. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  332. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  333. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  334. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +8 -10
  335. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  336. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  337. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  338. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  339. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +26 -15
  340. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  341. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  342. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  343. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  344. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  345. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  346. package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  347. package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
  348. package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
  349. package/dist/esm/components/utils/constants.d.ts +2 -0
  350. package/dist/esm/components/utils/constants.js +6 -0
  351. package/dist/esm/components/utils/constants.js.map +1 -1
  352. package/dist/esm/components/utils/dates.d.ts +6 -1
  353. package/dist/esm/components/utils/dates.js +5 -1
  354. package/dist/esm/components/utils/dates.js.map +1 -1
  355. package/dist/esm/components/utils/filterDOMProps.js +1 -1
  356. package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
  357. package/dist/esm/components/utils/mergeProps.js +1 -1
  358. package/dist/esm/components/utils/mergeProps.js.map +1 -1
  359. package/dist/esm/components/utils/validation/datePicker.js +1 -1
  360. package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
  361. package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
  362. package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  363. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
  364. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  365. package/dist/esm/hooks/useEventHandler.js +1 -2
  366. package/dist/esm/hooks/useEventHandler.js.map +1 -1
  367. package/dist/esm/hooks/useMove.d.ts +2 -2
  368. package/dist/esm/hooks/useMove.js +6 -9
  369. package/dist/esm/hooks/useMove.js.map +1 -1
  370. package/dist/esm/hooks/useResizeObserver.js +1 -1
  371. package/dist/esm/hooks/useResizeObserver.js.map +1 -1
  372. package/dist/esm/package.json +1 -1
  373. package/package.json +34 -27
  374. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
  375. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  376. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  377. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
  378. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  379. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  380. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
  381. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  382. package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
  383. package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
  384. package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
  385. package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  386. package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
  387. package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
  388. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
  389. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  390. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  391. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
  392. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  393. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  394. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
  395. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  396. package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
  397. package/dist/esm/components/RangeDateField/utils/index.js +0 -4
  398. package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
  399. package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  400. package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
  401. package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,MAAM,GAAG,EAAE,GAAG,cAAM,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE,GAAG,cAAM,CAAC;AACnB,QAAA,GAAG,GAAG,EAAE,GAAG,YAAI,CAAC;AAChB,QAAA,IAAI,GAAG,CAAC,GAAG,WAAG,CAAC;AACf,QAAA,KAAK,GAAG,EAAE,GAAG,WAAG,CAAC;AACjB,QAAA,IAAI,GAAG,GAAG,GAAG,WAAG,CAAC","sourcesContent":["export const SECOND = 1000;\nexport const MINUTE = 60 * SECOND;\nexport const HOUR = 60 * MINUTE;\nexport const DAY = 24 * HOUR;\nexport const WEEK = 7 * DAY;\nexport const MONTH = 30 * DAY;\nexport const YEAR = 365 * DAY;\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,MAAM,GAAG,EAAE,GAAG,cAAM,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE,GAAG,cAAM,CAAC;AACnB,QAAA,GAAG,GAAG,EAAE,GAAG,YAAI,CAAC;AAChB,QAAA,IAAI,GAAG,CAAC,GAAG,WAAG,CAAC;AACf,QAAA,KAAK,GAAG,EAAE,GAAG,WAAG,CAAC;AACjB,QAAA,IAAI,GAAG,GAAG,GAAG,WAAG,CAAC;AAE9B,MAAM,QAAQ,GACV,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS;IAC7C,CAAC,CAAC,mBAAmB;QACnB,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ;IAC1E,CAAC,CAAC,EAAE,CAAC;AAEA,QAAA,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,QAAA,OAAO,GAAG,aAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["export const SECOND = 1000;\nexport const MINUTE = 60 * SECOND;\nexport const HOUR = 60 * MINUTE;\nexport const DAY = 24 * HOUR;\nexport const WEEK = 7 * DAY;\nexport const MONTH = 30 * DAY;\nexport const YEAR = 365 * DAY;\n\nconst platform =\n typeof window !== 'undefined' && window.navigator\n ? // @ts-expect-error\n window.navigator['userAgentData']?.platform || window.navigator.platform\n : '';\n\nexport const isMac = /^Mac/i.test(platform);\nexport const CtrlCmd = isMac ? 'metaKey' : 'ctrlKey';\n"]}
@@ -1,11 +1,16 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
2
  export declare function isWeekend(date: DateTime): boolean;
3
- export interface PlaceholderValueOptions {
3
+ interface PlaceholderValueOptions {
4
4
  placeholderValue?: DateTime;
5
5
  timeZone?: string;
6
6
  }
7
7
  export declare function createPlaceholderValue({ placeholderValue, timeZone }: PlaceholderValueOptions): DateTime;
8
+ export declare function createPlaceholderRangeValue({ placeholderValue, timeZone }: PlaceholderValueOptions): {
9
+ start: DateTime;
10
+ end: DateTime;
11
+ };
8
12
  export declare function isInvalid(value: DateTime | null | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined): boolean;
9
13
  export declare function constrainValue(value: DateTime, minValue: DateTime | undefined, maxValue: DateTime | undefined): DateTime;
10
14
  export declare function mergeDateTime(date: DateTime, time: DateTime): DateTime;
11
15
  export declare function formatDateTime(date: DateTime, format: string, timezone: string, lang: string): string;
16
+ export {};
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isWeekend = isWeekend;
4
4
  exports.createPlaceholderValue = createPlaceholderValue;
5
+ exports.createPlaceholderRangeValue = createPlaceholderRangeValue;
5
6
  exports.isInvalid = isInvalid;
6
7
  exports.constrainValue = constrainValue;
7
8
  exports.mergeDateTime = mergeDateTime;
@@ -11,7 +12,11 @@ function isWeekend(date) {
11
12
  return [0, 6].includes(date.day());
12
13
  }
13
14
  function createPlaceholderValue({ placeholderValue, timeZone }) {
14
- return placeholderValue !== null && placeholderValue !== void 0 ? placeholderValue : (0, date_utils_1.dateTime)({ timeZone }).startOf('day');
15
+ return placeholderValue ?? (0, date_utils_1.dateTime)({ timeZone }).startOf('day');
16
+ }
17
+ function createPlaceholderRangeValue({ placeholderValue, timeZone }) {
18
+ const date = createPlaceholderValue({ placeholderValue, timeZone });
19
+ return { start: date.startOf('day'), end: date.endOf('day') };
15
20
  }
16
21
  function isInvalid(value, minValue, maxValue) {
17
22
  if (!value) {
@@ -1 +1 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":";;AAGA,8BAEC;AAMD,wDAEC;AAED,8BAiBC;AAED,wCAaC;AAED,sCAKC;AAED,wCAEC;AA1DD,uDAAgD;AAGhD,SAAgB,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,SAAgB,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,IAAA,qBAAQ,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,SAAS,CACrB,KAAkC,EAClC,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAC1B,KAAe,EACf,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAc,EAAE,IAAc;IACxD,OAAO,IAAI;SACN,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,IAAA,qBAAQ,EAAC,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import {dateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nexport function isWeekend(date: DateTime) {\n return [0, 6].includes(date.day());\n}\n\nexport interface PlaceholderValueOptions {\n placeholderValue?: DateTime;\n timeZone?: string;\n}\nexport function createPlaceholderValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n return placeholderValue ?? dateTime({timeZone}).startOf('day');\n}\n\nexport function isInvalid(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (!value) {\n return false;\n }\n\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n\n return false;\n}\n\nexport function constrainValue(\n value: DateTime,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n\n return value;\n}\n\nexport function mergeDateTime(date: DateTime, time: DateTime) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n\nexport function formatDateTime(date: DateTime, format: string, timezone: string, lang: string) {\n return dateTime({input: date, timeZone: timezone, lang}).format(format);\n}\n"]}
1
+ {"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":";;AAGA,8BAEC;AAMD,wDAEC;AAED,kEAGC;AAED,8BAiBC;AAED,wCAaC;AAED,sCAKC;AAED,wCAEC;AA/DD,uDAAgD;AAGhD,SAAgB,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,SAAgB,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,IAAI,IAAA,qBAAQ,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,2BAA2B,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IAC7F,MAAM,IAAI,GAAG,sBAAsB,CAAC,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;AAED,SAAgB,SAAS,CACrB,KAAkC,EAClC,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAC1B,KAAe,EACf,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAc,EAAE,IAAc;IACxD,OAAO,IAAI;SACN,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,IAAA,qBAAQ,EAAC,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import {dateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nexport function isWeekend(date: DateTime) {\n return [0, 6].includes(date.day());\n}\n\ninterface PlaceholderValueOptions {\n placeholderValue?: DateTime;\n timeZone?: string;\n}\nexport function createPlaceholderValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n return placeholderValue ?? dateTime({timeZone}).startOf('day');\n}\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\nexport function isInvalid(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (!value) {\n return false;\n }\n\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n\n return false;\n}\n\nexport function constrainValue(\n value: DateTime,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n\n return value;\n}\n\nexport function mergeDateTime(date: DateTime, time: DateTime) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n\nexport function formatDateTime(date: DateTime, format: string, timezone: string, lang: string) {\n return dateTime({input: date, timeZone: timezone, lang}).format(format);\n}\n"]}
@@ -17,7 +17,7 @@ function filterDOMProps(props, options = {}) {
17
17
  if (Object.prototype.hasOwnProperty.call(props, prop) &&
18
18
  (DOMPropNames.has(prop) ||
19
19
  (labelable && labelablePropNames.has(prop)) ||
20
- (propNames === null || propNames === void 0 ? void 0 : propNames.has(prop)) ||
20
+ propNames?.has(prop) ||
21
21
  propRe.test(prop))) {
22
22
  // @ts-expect-error
23
23
  filteredProps[prop] = props[prop];
@@ -1 +1 @@
1
- {"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":";;AAyBA,wCAqBC;AA5CD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;CACjB,CAAC,CAAC;AAaH,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,yDAAyD;AACzD,SAAgB,cAAc,CAC1B,KAAyC,EACzC,UAAmB,EAAE;IAErB,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACvC,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IACI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACjD,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,CAAC,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC3C,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxB,CAAC;YACC,mBAAmB;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC","sourcesContent":["import type {AccessibilityProps} from '../types';\n\nconst DOMPropNames = new Set(['id']);\n\nconst labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details',\n]);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean;\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set<string>;\n}\n\nconst propRe = /^(data-.*)$/;\n\n/* FIXME: use the same function from @gravity-ui/uikit */\nexport function filterDOMProps(\n props: {id?: string} & AccessibilityProps,\n options: Options = {},\n): {id?: string} & AccessibilityProps {\n const {labelable, propNames} = options;\n const filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) &&\n (DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop))\n ) {\n // @ts-expect-error\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n"]}
1
+ {"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":";;AAyBA,wCAqBC;AA5CD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;CACjB,CAAC,CAAC;AAaH,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,yDAAyD;AACzD,SAAgB,cAAc,CAC1B,KAAyC,EACzC,UAAmB,EAAE;IAErB,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACvC,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IACI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACjD,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,CAAC,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxB,CAAC;YACC,mBAAmB;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC","sourcesContent":["import type {AccessibilityProps} from '../types';\n\nconst DOMPropNames = new Set(['id']);\n\nconst labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details',\n]);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean;\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set<string>;\n}\n\nconst propRe = /^(data-.*)$/;\n\n/* FIXME: use the same function from @gravity-ui/uikit */\nexport function filterDOMProps(\n props: {id?: string} & AccessibilityProps,\n options: Options = {},\n): {id?: string} & AccessibilityProps {\n const {labelable, propNames} = options;\n const filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) &&\n (DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop))\n ) {\n // @ts-expect-error\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mergeProps = mergeProps;
4
4
  function mergeProps(...args) {
5
- const result = Object.assign({}, args[0]);
5
+ const result = { ...args[0] };
6
6
  for (let i = 1; i < args.length; i++) {
7
7
  const props = args[i];
8
8
  if (!props) {
@@ -1 +1 @@
1
- {"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":";;AAgBA,gCAuCC;AAvCD,SAAgB,UAAU,CAAwB,GAAG,IAAO;IACxD,MAAM,MAAM,qBAAc,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,SAAS;QACb,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAEzB,IACI,OAAO,IAAI,KAAK,UAAU;gBAC1B,OAAO,KAAK,KAAK,UAAU;gBAC3B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE;gBAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EACjC,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,WAAW;gBACnB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,cAAc;gBACtB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAA4C,CAAC;AACxD,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,GAAc;IAC5B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC3B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["interface Props {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\ntype PropsArgs = Props | undefined | null;\n\ntype TupleTypes<T> = {[P in keyof T]: T[P]} extends {[key: number]: infer V}\n ? NullToObject<V>\n : never;\ntype NullToObject<T> = T extends null | undefined ? {} : T;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport function mergeProps<T extends PropsArgs[]>(...args: T): UnionToIntersection<TupleTypes<T>> {\n const result: Props = {...args[0]};\n\n for (let i = 1; i < args.length; i++) {\n const props = args[i];\n if (!props) {\n continue;\n }\n for (const key of Object.keys(props)) {\n const left = result[key];\n const right = props[key];\n\n if (\n typeof left === 'function' &&\n typeof right === 'function' &&\n key.startsWith('on') &&\n key.charCodeAt(2) >= /* A */ 65 &&\n key.charCodeAt(2) <= /* Z */ 90\n ) {\n result[key] = chain(left, right);\n } else if (\n key === 'className' &&\n typeof left === 'string' &&\n typeof right === 'string'\n ) {\n result[key] = left + ' ' + right;\n } else if (\n key === 'controlProps' &&\n typeof left === 'object' &&\n typeof right === 'object'\n ) {\n result[key] = mergeProps(left, right);\n } else {\n result[key] = right === undefined ? left : right;\n }\n }\n }\n\n return result as UnionToIntersection<TupleTypes<T>>;\n}\n\nfunction chain(...fns: unknown[]) {\n return (...args: unknown[]) => {\n for (const fn of fns) {\n if (typeof fn === 'function') {\n fn(...args);\n }\n }\n };\n}\n"]}
1
+ {"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":";;AAgBA,gCAuCC;AAvCD,SAAgB,UAAU,CAAwB,GAAG,IAAO;IACxD,MAAM,MAAM,GAAU,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,SAAS;QACb,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAEzB,IACI,OAAO,IAAI,KAAK,UAAU;gBAC1B,OAAO,KAAK,KAAK,UAAU;gBAC3B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE;gBAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EACjC,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,WAAW;gBACnB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,cAAc;gBACtB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAA4C,CAAC;AACxD,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,GAAc;IAC5B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC3B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["interface Props {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\ntype PropsArgs = Props | undefined | null;\n\ntype TupleTypes<T> = {[P in keyof T]: T[P]} extends {[key: number]: infer V}\n ? NullToObject<V>\n : never;\ntype NullToObject<T> = T extends null | undefined ? {} : T;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport function mergeProps<T extends PropsArgs[]>(...args: T): UnionToIntersection<TupleTypes<T>> {\n const result: Props = {...args[0]};\n\n for (let i = 1; i < args.length; i++) {\n const props = args[i];\n if (!props) {\n continue;\n }\n for (const key of Object.keys(props)) {\n const left = result[key];\n const right = props[key];\n\n if (\n typeof left === 'function' &&\n typeof right === 'function' &&\n key.startsWith('on') &&\n key.charCodeAt(2) >= /* A */ 65 &&\n key.charCodeAt(2) <= /* Z */ 90\n ) {\n result[key] = chain(left, right);\n } else if (\n key === 'className' &&\n typeof left === 'string' &&\n typeof right === 'string'\n ) {\n result[key] = left + ' ' + right;\n } else if (\n key === 'controlProps' &&\n typeof left === 'object' &&\n typeof right === 'object'\n ) {\n result[key] = mergeProps(left, right);\n } else {\n result[key] = right === undefined ? left : right;\n }\n }\n }\n\n return result as UnionToIntersection<TupleTypes<T>>;\n}\n\nfunction chain(...fns: unknown[]) {\n return (...args: unknown[]) => {\n for (const fn of fns) {\n if (typeof fn === 'function') {\n fn(...args);\n }\n }\n };\n}\n"]}
@@ -5,7 +5,7 @@ const i18n_1 = require("./i18n/index.js");
5
5
  function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value', t = i18n_1.i18n) {
6
6
  const rangeOverflow = value && maxValue && maxValue.isBefore(value);
7
7
  const rangeUnderflow = value && minValue && value.isBefore(minValue);
8
- const isUnavailable = (value && (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(value))) || false;
8
+ const isUnavailable = (value && isDateUnavailable?.(value)) || false;
9
9
  const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;
10
10
  const errors = [];
11
11
  if (isInvalid) {
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":";;AAWA,kDAwCC;AA/CD,0CAA4B;AAO5B,SAAgB,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,WAAI;IAE1C,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,KAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,KAAK,CAAC,CAAA,CAAC,IAAI,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,oCAAoC,EAAE;gBACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,sCAAsC,EAAE;gBACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC;AAC/B,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {ExtractFunctionType} from '../../types';\n\nimport {i18n} from './i18n';\n\nexport interface ValidationResult {\n isInvalid: boolean;\n errors: string[];\n}\n\nexport function getValidationResult(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime) => boolean) | undefined,\n timeZone: string,\n valueTitle = 'Value',\n t: ExtractFunctionType<typeof i18n> = i18n,\n): ValidationResult {\n const rangeOverflow = value && maxValue && maxValue.isBefore(value);\n const rangeUnderflow = value && minValue && value.isBefore(minValue);\n const isUnavailable = (value && isDateUnavailable?.(value)) || false;\n const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;\n const errors = [];\n\n if (isInvalid) {\n if (rangeUnderflow && minValue) {\n errors.push(\n t('Value must be {minValue} or later.', {\n minValue: minValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (rangeOverflow && maxValue) {\n errors.push(\n t('Value must be {maxValue} or earlier.', {\n maxValue: maxValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (isUnavailable) {\n errors.push(t('Selected date unavailable.'));\n }\n }\n\n return {isInvalid, errors};\n}\n"]}
1
+ {"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":";;AAWA,kDAwCC;AA/CD,0CAA4B;AAO5B,SAAgB,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,WAAI;IAE1C,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,oCAAoC,EAAE;gBACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,sCAAsC,EAAE;gBACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC;AAC/B,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {ExtractFunctionType} from '../../types';\n\nimport {i18n} from './i18n';\n\nexport interface ValidationResult {\n isInvalid: boolean;\n errors: string[];\n}\n\nexport function getValidationResult(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime) => boolean) | undefined,\n timeZone: string,\n valueTitle = 'Value',\n t: ExtractFunctionType<typeof i18n> = i18n,\n): ValidationResult {\n const rangeOverflow = value && maxValue && maxValue.isBefore(value);\n const rangeUnderflow = value && minValue && value.isBefore(minValue);\n const isUnavailable = (value && isDateUnavailable?.(value)) || false;\n const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;\n const errors = [];\n\n if (isInvalid) {\n if (rangeUnderflow && minValue) {\n errors.push(\n t('Value must be {minValue} or later.', {\n minValue: minValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (rangeOverflow && maxValue) {\n errors.push(\n t('Value must be {maxValue} or earlier.', {\n maxValue: maxValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (isUnavailable) {\n errors.push(t('Selected date unavailable.'));\n }\n }\n\n return {isInvalid, errors};\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  {
2
- "Value must be {minValue} or later.": "{{value}} должно ровняться {{minValue}} или быть позже.",
3
- "Value must be {maxValue} or earlier.": "{{value}} должно ровняться {{maxValue}} или быть раньше.",
2
+ "Value must be {minValue} or later.": "{{value}} должно равняться {{minValue}} или быть позже.",
3
+ "Value must be {maxValue} or earlier.": "{{value}} должно равняться {{maxValue}} или быть раньше.",
4
4
  "Selected date unavailable.": "Выбранная дата недоступна.",
5
5
  "Value is required.": "{{value}} обязательно.",
6
6
  "\"From\"": "«От»",
@@ -1,15 +1,11 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
2
  import type { RelativeRangeDatePickerValue } from "../../RelativeRangeDatePicker/index.js";
3
3
  import type { ExtractFunctionType } from "../../types/index.js";
4
+ import type { ValidationResult } from "./datePicker.js";
4
5
  import { i18n } from "./i18n/index.js";
5
- export declare function getRangeValidationResult(value: RelativeRangeDatePickerValue | null, allowNullableValues: boolean | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined, timeZone: string, t?: ExtractFunctionType<typeof i18n>): {
6
- isInvalid: boolean;
7
- errors: never[];
8
- startValidationResult?: undefined;
9
- endValidationResult?: undefined;
10
- } | {
11
- isInvalid: boolean;
12
- startValidationResult: import("./datePicker.js").ValidationResult;
13
- endValidationResult: import("./datePicker.js").ValidationResult;
14
- errors: string[];
15
- };
6
+ interface RangeValidationResult extends ValidationResult {
7
+ startValidationResult: ValidationResult;
8
+ endValidationResult: ValidationResult;
9
+ }
10
+ export declare function getRangeValidationResult(value: RelativeRangeDatePickerValue | null, allowNullableValues: boolean | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined, timeZone: string, t?: ExtractFunctionType<typeof i18n>): RangeValidationResult;
11
+ export {};
@@ -6,7 +6,12 @@ const datePicker_1 = require("./datePicker.js");
6
6
  const i18n_1 = require("./i18n/index.js");
7
7
  function getRangeValidationResult(value, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone, t = i18n_1.i18n) {
8
8
  if (!value) {
9
- return { isInvalid: false, errors: [] };
9
+ return {
10
+ isInvalid: false,
11
+ errors: [],
12
+ startValidationResult: { isInvalid: false, errors: [] },
13
+ endValidationResult: { isInvalid: false, errors: [] },
14
+ };
10
15
  }
11
16
  const startDate = value.start ? (0, date_utils_1.dateTimeParse)(value.start.value, { timeZone }) : null;
12
17
  const endDate = value.end ? (0, date_utils_1.dateTimeParse)(value.end.value, { timeZone, roundUp: true }) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"relativeRangeDatePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/relativeRangeDatePicker.ts"],"names":[],"mappings":";;AASA,4DAyDC;AAlED,uDAAqD;AAMrD,gDAAiD;AACjD,0CAA4B;AAE5B,SAAgB,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,WAAI;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,IAAA,gCAAmB,EAC7C,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,EACR,CAAC,CAAC,QAAQ,CAAC,EACX,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrC,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAA,gCAAmB,EAC3C,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACxE,QAAQ,EACR,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACrC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACH,SAAS,EAAE,qBAAqB,CAAC,SAAS,IAAI,mBAAmB,CAAC,SAAS;QAC3E,qBAAqB;QACrB,mBAAmB;QACnB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;KAC1E,CAAC;AACN,CAAC","sourcesContent":["import {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {RelativeRangeDatePickerValue} from '../../RelativeRangeDatePicker';\nimport type {ExtractFunctionType} from '../../types';\n\nimport {getValidationResult} from './datePicker';\nimport {i18n} from './i18n';\n\nexport function getRangeValidationResult(\n value: RelativeRangeDatePickerValue | null,\n allowNullableValues: boolean | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined,\n timeZone: string,\n t: ExtractFunctionType<typeof i18n> = i18n,\n) {\n if (!value) {\n return {isInvalid: false, errors: []};\n }\n\n const startDate = value.start ? dateTimeParse(value.start.value, {timeZone}) : null;\n const endDate = value.end ? dateTimeParse(value.end.value, {timeZone, roundUp: true}) : null;\n\n const startValidationResult = getValidationResult(\n startDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined,\n timeZone,\n t('\"From\"'),\n t,\n );\n\n if (!startDate && !allowNullableValues) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t('\"From\" is required.'));\n }\n\n const endValidationResult = getValidationResult(\n endDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined,\n timeZone,\n t('\"To\"'),\n t,\n );\n\n if (!endDate && !allowNullableValues) {\n endValidationResult.isInvalid = true;\n endValidationResult.errors.push(t('\"To\" is required.'));\n }\n\n if (startDate && endDate && endDate.isBefore(startDate)) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t(`\"From\" can't be after \"To\".`));\n }\n\n return {\n isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,\n startValidationResult,\n endValidationResult,\n errors: startValidationResult.errors.concat(endValidationResult.errors),\n };\n}\n"]}
1
+ {"version":3,"file":"relativeRangeDatePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/relativeRangeDatePicker.ts"],"names":[],"mappings":";;AAeA,4DA8DC;AA7ED,uDAAqD;AAMrD,gDAAiD;AAEjD,0CAA4B;AAO5B,SAAgB,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,WAAI;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO;YACH,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,EAAE;YACV,qBAAqB,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC;YACrD,mBAAmB,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC;SACtD,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,IAAA,gCAAmB,EAC7C,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,EACR,CAAC,CAAC,QAAQ,CAAC,EACX,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrC,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAA,gCAAmB,EAC3C,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACxE,QAAQ,EACR,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACrC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACH,SAAS,EAAE,qBAAqB,CAAC,SAAS,IAAI,mBAAmB,CAAC,SAAS;QAC3E,qBAAqB;QACrB,mBAAmB;QACnB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;KAC1E,CAAC;AACN,CAAC","sourcesContent":["import {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {RelativeRangeDatePickerValue} from '../../RelativeRangeDatePicker';\nimport type {ExtractFunctionType} from '../../types';\n\nimport {getValidationResult} from './datePicker';\nimport type {ValidationResult} from './datePicker';\nimport {i18n} from './i18n';\n\ninterface RangeValidationResult extends ValidationResult {\n startValidationResult: ValidationResult;\n endValidationResult: ValidationResult;\n}\n\nexport function getRangeValidationResult(\n value: RelativeRangeDatePickerValue | null,\n allowNullableValues: boolean | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined,\n timeZone: string,\n t: ExtractFunctionType<typeof i18n> = i18n,\n): RangeValidationResult {\n if (!value) {\n return {\n isInvalid: false,\n errors: [],\n startValidationResult: {isInvalid: false, errors: []},\n endValidationResult: {isInvalid: false, errors: []},\n };\n }\n\n const startDate = value.start ? dateTimeParse(value.start.value, {timeZone}) : null;\n const endDate = value.end ? dateTimeParse(value.end.value, {timeZone, roundUp: true}) : null;\n\n const startValidationResult = getValidationResult(\n startDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined,\n timeZone,\n t('\"From\"'),\n t,\n );\n\n if (!startDate && !allowNullableValues) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t('\"From\" is required.'));\n }\n\n const endValidationResult = getValidationResult(\n endDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined,\n timeZone,\n t('\"To\"'),\n t,\n );\n\n if (!endDate && !allowNullableValues) {\n endValidationResult.isInvalid = true;\n endValidationResult.errors.push(t('\"To\" is required.'));\n }\n\n if (startDate && endDate && endDate.isBefore(startDate)) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t(`\"From\" can't be after \"To\".`));\n }\n\n return {\n isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,\n startValidationResult,\n endValidationResult,\n errors: startValidationResult.errors.concat(endValidationResult.errors),\n };\n}\n"]}
@@ -16,8 +16,7 @@ function useEventHandler(handler) {
16
16
  }, [handler]);
17
17
  // @ts-expect-error
18
18
  return react_1.default.useCallback((...args) => {
19
- var _a;
20
- return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref, ...args);
19
+ return ref.current?.(...args);
21
20
  }, []);
22
21
  }
23
22
  //# sourceMappingURL=useEventHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":";;AAQA,0CASC;;AAjBD,0DAA0B;AAE1B;;;;;GAKG;AACH,SAAgB,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,eAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,eAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,eAAK,CAAC,WAAW,CAAI,CAAC,GAAG,IAAI,EAAE,EAAE;;QACpC,OAAO,MAAA,GAAG,CAAC,OAAO,oDAAG,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import React from 'react';\n\n/*\n * TODO: move to @gravity-ui/uikit\n * The hook returns a stable function (an empty list of dependencies),\n * but this function always calls the actual function associated with the last render.\n * The returned function should be used as an event handler or inside a useEffect.\n */\nexport function useEventHandler<T extends Function>(handler?: T) {\n const ref = React.useRef<T | undefined>(handler);\n React.useLayoutEffect(() => {\n ref.current = handler;\n }, [handler]);\n // @ts-expect-error\n return React.useCallback<T>((...args) => {\n return ref.current?.(...args);\n }, []);\n}\n"]}
1
+ {"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":";;AAQA,0CASC;;AAjBD,0DAA0B;AAE1B;;;;;GAKG;AACH,SAAgB,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,eAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,eAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,eAAK,CAAC,WAAW,CAAI,CAAC,GAAG,IAAI,EAAE,EAAE;QACpC,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import React from 'react';\n\n/*\n * TODO: move to @gravity-ui/uikit\n * The hook returns a stable function (an empty list of dependencies),\n * but this function always calls the actual function associated with the last render.\n * The returned function should be used as an event handler or inside a useEffect.\n */\nexport function useEventHandler<T extends Function>(handler?: T) {\n const ref = React.useRef<T | undefined>(handler);\n React.useLayoutEffect(() => {\n ref.current = handler;\n }, [handler]);\n // @ts-expect-error\n return React.useCallback<T>((...args) => {\n return ref.current?.(...args);\n }, []);\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- export type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';
2
+ type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';
3
3
  interface EventBase {
4
4
  shiftKey: boolean;
5
5
  ctrlKey: boolean;
@@ -20,7 +20,7 @@ export interface MoveMoveEvent extends BaseMoveEvent {
20
20
  export interface MoveEndEvent extends BaseMoveEvent {
21
21
  type: 'moveend';
22
22
  }
23
- export interface MoveEvents {
23
+ interface MoveEvents {
24
24
  onMoveStart?: (e: MoveStartEvent) => void;
25
25
  onMove?: (e: MoveMoveEvent) => void;
26
26
  onMoveEnd?: (e: MoveEndEvent) => void;
@@ -17,7 +17,7 @@ function useMove(props) {
17
17
  }
18
18
  if (!state.current.isMoving) {
19
19
  state.current.isMoving = true;
20
- onMoveStart === null || onMoveStart === void 0 ? void 0 : onMoveStart({
20
+ onMoveStart?.({
21
21
  type: 'movestart',
22
22
  pointerType,
23
23
  shiftKey: originalEvent.shiftKey,
@@ -26,7 +26,7 @@ function useMove(props) {
26
26
  altKey: originalEvent.altKey,
27
27
  });
28
28
  }
29
- onMove === null || onMove === void 0 ? void 0 : onMove({
29
+ onMove?.({
30
30
  type: 'move',
31
31
  pointerType,
32
32
  deltaX,
@@ -40,7 +40,7 @@ function useMove(props) {
40
40
  const end = (0, useEventHandler_1.useEventHandler)((originalEvent, pointerType) => {
41
41
  if (state.current.isMoving) {
42
42
  state.current.isMoving = false;
43
- onMoveEnd === null || onMoveEnd === void 0 ? void 0 : onMoveEnd({
43
+ onMoveEnd?.({
44
44
  type: 'moveend',
45
45
  pointerType,
46
46
  shiftKey: originalEvent.shiftKey,
@@ -59,9 +59,8 @@ function useMove(props) {
59
59
  e.preventDefault();
60
60
  state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
61
61
  const handleMouseMove = (ev) => {
62
- var _a, _b;
63
62
  if (ev.buttons === 0) {
64
- move(ev, ev.pageX - (((_a = state.current.lastPosition) === null || _a === void 0 ? void 0 : _a.pageX) || 0), ev.pageY - (((_b = state.current.lastPosition) === null || _b === void 0 ? void 0 : _b.pageY) || 0), 'mouse');
63
+ move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), 'mouse');
65
64
  state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
66
65
  }
67
66
  };
@@ -85,11 +84,10 @@ function useMove(props) {
85
84
  state.current.lastPosition = { pageX, pageY };
86
85
  e.preventDefault();
87
86
  const handleTouchMove = (ev) => {
88
- var _a, _b;
89
87
  const touch = [...ev.changedTouches].findIndex((el) => el.identifier === state.current.id);
90
88
  if (touch !== -1) {
91
89
  const { pageX, pageY } = e.changedTouches[touch];
92
- move(ev, pageX - (((_a = state.current.lastPosition) === null || _a === void 0 ? void 0 : _a.pageX) || 0), pageY - (((_b = state.current.lastPosition) === null || _b === void 0 ? void 0 : _b.pageY) || 0), 'touch');
90
+ move(ev, pageX - (state.current.lastPosition?.pageX || 0), pageY - (state.current.lastPosition?.pageY || 0), 'touch');
93
91
  state.current.lastPosition = { pageX, pageY };
94
92
  }
95
93
  };
@@ -116,9 +114,8 @@ function useMove(props) {
116
114
  state.current.id = e.pointerId;
117
115
  state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
118
116
  const handlePointerMove = (ev) => {
119
- var _a, _b;
120
117
  if (ev.pointerId === state.current.id) {
121
- move(ev, ev.pageX - (((_a = state.current.lastPosition) === null || _a === void 0 ? void 0 : _a.pageX) || 0), ev.pageY - (((_b = state.current.lastPosition) === null || _b === void 0 ? void 0 : _b.pageY) || 0), (ev.pointerType || 'mouse'));
118
+ move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), (ev.pointerType || 'mouse'));
122
119
  state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
123
120
  }
124
121
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useMove.js","sourceRoot":"../../../src","sources":["hooks/useMove.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {useEventHandler} from './useEventHandler';\n\nexport type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';\n\ninterface EventBase {\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n}\n\ninterface BaseMoveEvent extends EventBase {\n pointerType: PointerType;\n}\n\nexport interface MoveStartEvent extends BaseMoveEvent {\n type: 'movestart';\n}\n\nexport interface MoveMoveEvent extends BaseMoveEvent {\n type: 'move';\n deltaX: number;\n deltaY: number;\n}\n\nexport interface MoveEndEvent extends BaseMoveEvent {\n type: 'moveend';\n}\n\nexport interface MoveEvents {\n onMoveStart?: (e: MoveStartEvent) => void;\n onMove?: (e: MoveMoveEvent) => void;\n onMoveEnd?: (e: MoveEndEvent) => void;\n}\n\nexport function useMove(props: MoveEvents) {\n const {onMoveStart, onMove, onMoveEnd} = props;\n\n const state = React.useRef<{\n isMoving: boolean;\n lastPosition: null | {pageX: number; pageY: number};\n id: null | number;\n }>({\n isMoving: false,\n lastPosition: null,\n id: null,\n });\n\n const move = useEventHandler(\n (originalEvent: EventBase, deltaX: number, deltaY: number, pointerType: PointerType) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.isMoving) {\n state.current.isMoving = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n onMove?.({\n type: 'move',\n pointerType,\n deltaX,\n deltaY,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n },\n );\n\n const end = useEventHandler((originalEvent: EventBase, pointerType: PointerType) => {\n if (state.current.isMoving) {\n state.current.isMoving = false;\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n });\n\n return React.useMemo(() => {\n const moveProps: React.DOMAttributes<HTMLElement> = {};\n\n if (typeof PointerEvent === 'undefined') {\n moveProps.onMouseDown = (e) => {\n if (e.button === 0) {\n state.current.isMoving = false;\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handleMouseMove = (ev: MouseEvent) => {\n if (ev.buttons === 0) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n 'mouse',\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handleMouseUp = (ev: MouseEvent) => {\n if (ev.button === 0) {\n end(ev, 'mouse');\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n };\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n };\n\n moveProps.onTouchStart = (e) => {\n if (e.touches.length === 0 || state.current.id !== null) {\n return;\n }\n\n const {pageX, pageY, identifier} = e.touches[0];\n state.current.id = identifier;\n state.current.lastPosition = {pageX, pageY};\n e.preventDefault();\n\n const handleTouchMove = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n const {pageX, pageY} = e.changedTouches[touch];\n move(\n ev,\n pageX - (state.current.lastPosition?.pageX || 0),\n pageY - (state.current.lastPosition?.pageY || 0),\n 'touch',\n );\n state.current.lastPosition = {pageX, pageY};\n }\n };\n const handleTouchEnd = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n end(ev, 'touch');\n state.current.id = null;\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('touchend', handleTouchEnd);\n window.removeEventListener('touchcancel', handleTouchEnd);\n }\n };\n window.addEventListener('touchmove', handleTouchMove);\n window.addEventListener('touchend', handleTouchEnd);\n window.addEventListener('touchcancel', handleTouchEnd);\n };\n } else {\n moveProps.onPointerDown = (e) => {\n if (e.button === 0 && state.current.id === null) {\n e.preventDefault();\n state.current.isMoving = false;\n state.current.id = e.pointerId;\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handlePointerMove = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n (ev.pointerType || 'mouse') as PointerType,\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handlePointerUp = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n end(ev, (ev.pointerType || 'mouse') as PointerType);\n state.current.id = null;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n window.removeEventListener('pointercancel', handlePointerUp);\n }\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n window.addEventListener('pointercancel', handlePointerUp);\n }\n };\n }\n\n const handleKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n state.current.isMoving = false;\n move(e, deltaX, deltaY, 'keyboard');\n end(e, 'keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft': {\n e.preventDefault();\n handleKeyboardMove(e, -1, 0);\n break;\n }\n case 'ArrowRight': {\n e.preventDefault();\n handleKeyboardMove(e, 1, 0);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n handleKeyboardMove(e, 0, -1);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n handleKeyboardMove(e, 0, 1);\n break;\n }\n }\n };\n\n return {moveProps};\n }, [end, move]);\n}\n"]}
1
+ {"version":3,"file":"useMove.js","sourceRoot":"../../../src","sources":["hooks/useMove.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {useEventHandler} from './useEventHandler';\n\ntype PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';\n\ninterface EventBase {\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n}\n\ninterface BaseMoveEvent extends EventBase {\n pointerType: PointerType;\n}\n\nexport interface MoveStartEvent extends BaseMoveEvent {\n type: 'movestart';\n}\n\nexport interface MoveMoveEvent extends BaseMoveEvent {\n type: 'move';\n deltaX: number;\n deltaY: number;\n}\n\nexport interface MoveEndEvent extends BaseMoveEvent {\n type: 'moveend';\n}\n\ninterface MoveEvents {\n onMoveStart?: (e: MoveStartEvent) => void;\n onMove?: (e: MoveMoveEvent) => void;\n onMoveEnd?: (e: MoveEndEvent) => void;\n}\n\nexport function useMove(props: MoveEvents) {\n const {onMoveStart, onMove, onMoveEnd} = props;\n\n const state = React.useRef<{\n isMoving: boolean;\n lastPosition: null | {pageX: number; pageY: number};\n id: null | number;\n }>({\n isMoving: false,\n lastPosition: null,\n id: null,\n });\n\n const move = useEventHandler(\n (originalEvent: EventBase, deltaX: number, deltaY: number, pointerType: PointerType) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.isMoving) {\n state.current.isMoving = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n onMove?.({\n type: 'move',\n pointerType,\n deltaX,\n deltaY,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n },\n );\n\n const end = useEventHandler((originalEvent: EventBase, pointerType: PointerType) => {\n if (state.current.isMoving) {\n state.current.isMoving = false;\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n });\n\n return React.useMemo(() => {\n const moveProps: React.DOMAttributes<HTMLElement> = {};\n\n if (typeof PointerEvent === 'undefined') {\n moveProps.onMouseDown = (e) => {\n if (e.button === 0) {\n state.current.isMoving = false;\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handleMouseMove = (ev: MouseEvent) => {\n if (ev.buttons === 0) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n 'mouse',\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handleMouseUp = (ev: MouseEvent) => {\n if (ev.button === 0) {\n end(ev, 'mouse');\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n };\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n };\n\n moveProps.onTouchStart = (e) => {\n if (e.touches.length === 0 || state.current.id !== null) {\n return;\n }\n\n const {pageX, pageY, identifier} = e.touches[0];\n state.current.id = identifier;\n state.current.lastPosition = {pageX, pageY};\n e.preventDefault();\n\n const handleTouchMove = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n const {pageX, pageY} = e.changedTouches[touch];\n move(\n ev,\n pageX - (state.current.lastPosition?.pageX || 0),\n pageY - (state.current.lastPosition?.pageY || 0),\n 'touch',\n );\n state.current.lastPosition = {pageX, pageY};\n }\n };\n const handleTouchEnd = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n end(ev, 'touch');\n state.current.id = null;\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('touchend', handleTouchEnd);\n window.removeEventListener('touchcancel', handleTouchEnd);\n }\n };\n window.addEventListener('touchmove', handleTouchMove);\n window.addEventListener('touchend', handleTouchEnd);\n window.addEventListener('touchcancel', handleTouchEnd);\n };\n } else {\n moveProps.onPointerDown = (e) => {\n if (e.button === 0 && state.current.id === null) {\n e.preventDefault();\n state.current.isMoving = false;\n state.current.id = e.pointerId;\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handlePointerMove = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n (ev.pointerType || 'mouse') as PointerType,\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handlePointerUp = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n end(ev, (ev.pointerType || 'mouse') as PointerType);\n state.current.id = null;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n window.removeEventListener('pointercancel', handlePointerUp);\n }\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n window.addEventListener('pointercancel', handlePointerUp);\n }\n };\n }\n\n const handleKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n state.current.isMoving = false;\n move(e, deltaX, deltaY, 'keyboard');\n end(e, 'keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft': {\n e.preventDefault();\n handleKeyboardMove(e, -1, 0);\n break;\n }\n case 'ArrowRight': {\n e.preventDefault();\n handleKeyboardMove(e, 1, 0);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n handleKeyboardMove(e, 0, -1);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n handleKeyboardMove(e, 0, 1);\n break;\n }\n }\n };\n\n return {moveProps};\n }, [end, move]);\n}\n"]}
@@ -6,7 +6,7 @@ const react_1 = tslib_1.__importDefault(require("react"));
6
6
  /* FIXME: use the same hook from @gravity-ui/uikit */
7
7
  function useResizeObserver({ ref, onResize, box, }) {
8
8
  react_1.default.useEffect(() => {
9
- const element = ref === null || ref === void 0 ? void 0 : ref.current;
9
+ const element = ref?.current;
10
10
  if (!element) {
11
11
  return undefined;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":";;AASA,8CA8BC;;AAvCD,0DAA0B;AAQ1B,qDAAqD;AACrD,SAAgB,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,GAAG,EAAE;gBACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC;QACN,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import React from 'react';\n\ninterface UseResizeObserverProps<T> {\n ref: React.RefObject<T | null | undefined> | undefined;\n onResize: () => void;\n box?: ResizeObserverBoxOptions;\n}\n\n/* FIXME: use the same hook from @gravity-ui/uikit */\nexport function useResizeObserver<T extends Element>({\n ref,\n onResize,\n box,\n}: UseResizeObserverProps<T>) {\n React.useEffect(() => {\n const element = ref?.current;\n if (!element) {\n return undefined;\n }\n\n if (typeof window.ResizeObserver === 'undefined') {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }\n\n const observer = new ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n onResize();\n });\n\n observer.observe(element, {box});\n return () => {\n observer.disconnect();\n };\n }, [ref, onResize, box]);\n}\n"]}
1
+ {"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":";;AASA,8CA8BC;;AAvCD,0DAA0B;AAQ1B,qDAAqD;AACrD,SAAgB,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,GAAG,EAAE;gBACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC;QACN,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import React from 'react';\n\ninterface UseResizeObserverProps<T> {\n ref: React.RefObject<T | null | undefined> | undefined;\n onResize: () => void;\n box?: ResizeObserverBoxOptions;\n}\n\n/* FIXME: use the same hook from @gravity-ui/uikit */\nexport function useResizeObserver<T extends Element>({\n ref,\n onResize,\n box,\n}: UseResizeObserverProps<T>) {\n React.useEffect(() => {\n const element = ref?.current;\n if (!element) {\n return undefined;\n }\n\n if (typeof window.ResizeObserver === 'undefined') {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }\n\n const observer = new ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n onResize();\n });\n\n observer.observe(element, {box});\n return () => {\n observer.disconnect();\n };\n }, [ref, onResize, box]);\n}\n"]}
@@ -1 +1 @@
1
- {"type":"commonjs","version":"3.4.2","sideEffects":["*.css","*.scss"]}
1
+ {"type":"commonjs","version":"4.0.0","sideEffects":["*.css","*.scss"]}
@@ -0,0 +1,131 @@
1
+ # @gravity-ui/date-components documentation
2
+
3
+ Documentation for the **installed** version of `@gravity-ui/date-components`.
4
+ Your training data may be outdated — these files are the source of truth.
5
+
6
+ Paths are relative to this file (`node_modules/@gravity-ui/date-components/dist/docs/`).
7
+
8
+ ## For AI agents
9
+
10
+ React date and time controls for Gravity UI apps — date/time pickers, calendars, and absolute/relative range selectors built on `@gravity-ui/date-utils`.
11
+
12
+ ### When to use
13
+
14
+ - A single date or date-time input: `DatePicker`, `DateField`.
15
+ - Calendars for month/day selection: `Calendar`, `CalendarView`.
16
+ - Date ranges: `RangeDatePicker`, `RangeCalendar`, `RangeDateField`.
17
+ - Relative and mixed absolute/relative ranges (e.g. "last 7 days"): `RelativeDatePicker`, `RelativeRangeDatePicker`, `RelativeDateField`.
18
+
19
+ ### When not to use
20
+
21
+ - Plain text or number inputs, buttons, or other generic controls — use [`@gravity-ui/uikit`](https://github.com/gravity-ui/uikit).
22
+ - Low-level date math, parsing, formatting, or timezone handling without UI — use [`@gravity-ui/date-utils`](https://github.com/gravity-ui/date-utils) directly.
23
+
24
+ ### Common pitfalls
25
+
26
+ - **Values are `DateTime` objects, not JS `Date`.** Components work with `dateTime()` from [`@gravity-ui/date-utils`](https://github.com/gravity-ui/date-utils); pass and read `DateTime`, not native `Date` or ISO strings.
27
+ - **Requires uikit setup.** Render inside `ThemeProvider` and import `@gravity-ui/uikit/styles/styles.css`; `@gravity-ui/uikit` and `@gravity-ui/date-utils` are required peer dependencies.
28
+ - **Locale is loaded, not just set.** Set language via `ThemeProvider` `lang`, but load the locale data first with `settings.loadLocale('ru')` from `@gravity-ui/date-utils`, or dates render in the default locale.
29
+ - **Component-specific translations use `addLanguageKeysets`.** For languages beyond `en`/`ru`, register keysets via `addLanguageKeysets` from `@gravity-ui/uikit/i18n` using the `Keysets`/`PartialKeysets` types exported here.
30
+
31
+ ## Install
32
+
33
+ ```shell
34
+ npm install react react-dom @gravity-ui/uikit @gravity-ui/date-components @gravity-ui/date-utils
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ ```jsx
40
+ import {createRoot} from 'react-dom/client';
41
+ import {DatePicker} from '@gravity-ui/date-components';
42
+ import {ThemeProvider} from '@gravity-ui/uikit';
43
+
44
+ import '@gravity-ui/uikit/styles/styles.css';
45
+
46
+ function App() {
47
+ return (
48
+ <ThemeProvider>
49
+ <h1>DatePicker</h1>
50
+ <form>
51
+ <label htmlFor="date-picker">Date: </label>
52
+ <DatePicker id="date-picker" name="date" />
53
+ </form>
54
+ </ThemeProvider>
55
+ );
56
+ }
57
+
58
+ const root = createRoot(document.getElementById('root'));
59
+ root.render(<App />);
60
+ ```
61
+
62
+ ### Localization
63
+
64
+ ```jsx
65
+ import {settings} from '@gravity-ui/date-utils';
66
+
67
+ // Load date locales that will be used in an application.
68
+ await settings.loadLocale('ru');
69
+
70
+ function App() {
71
+ return (
72
+ // Set the language to use with components.
73
+ <ThemeProvider lang="ru">
74
+ <h1>DatePicker</h1>
75
+ <form>
76
+ <label htmlFor="date-picker">Дата: </label>
77
+ <DatePicker id="date-picker" name="date" />
78
+ </form>
79
+ </ThemeProvider>
80
+ );
81
+ }
82
+ ```
83
+
84
+ If the app supports language switching, preload all supported locales when the app first loads, or load the locales before switching the language:
85
+
86
+ ```jsx
87
+ // Preload locales
88
+ await Promise.all([settings.loadLocale('ru'), settings.loadLocale('nl')]);
89
+
90
+ const root = createRoot(document.getElementById('root'));
91
+ root.render(<App />);
92
+
93
+ // or load locales on demand.
94
+
95
+ function App() {
96
+ const [lang, setLang] = React.useState('en');
97
+
98
+ const handleLangChange = (newLang) => {
99
+ settings.loadLocale(newLang).then(() => {
100
+ setLang(newLang);
101
+ });
102
+ };
103
+
104
+ return <ThemeProvider lang={lang}>...</ThemeProvider>;
105
+ }
106
+ ```
107
+
108
+ The components have translations into English and Russian. To add translations into other languages, use `addLanguageKeysets` from `@gravity-ui/uikit`:
109
+
110
+ ```ts
111
+ import {addLanguageKeysets} from '@gravity-ui/uikit/i18n';
112
+ import type {Keysets, PartialKeysets} from '@gravity-ui/date-components';
113
+
114
+ // Use the Keyset type to specify translations for all available components
115
+ addLanguageKeysets<Keysets>(lang, {...});
116
+
117
+ // or use the PartialKeysets type to specify only the ones you need
118
+ addLanguageKeysets<PartialKeysets>(lang, {...});
119
+
120
+ // To specify translations for some components
121
+ addLanguageKeysets<Pick<Keysets, 'g-date-calendar' | 'g-date-date-field' | 'g-date-date-picker'>>(lang, {...});
122
+ ```
123
+
124
+ ## Components
125
+
126
+ - [Calendar](./components/Calendar.md) — Calendar is a flexible, user-friendly calendar component for React applications. It allows users to view, select, and manage dates with ease. Ideal for event scheduling, booking systems, and any application where date selection is essential. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
127
+ - [DateField](./components/DateField.md) — DateField component is a versatile and convenient input field specifically designed for date entry in React applications. With an intuitive interface and easy integration, it's perfect for any form that requires date or time input, such as event schedulers, booking systems, or data-driven reports. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
128
+ - [DatePicker](./components/DatePicker.md) — DatePicker is a sophisticated, lightweight, and fully customizable component designed to provide intuitive date picking functionality in your React applications. Built with user experience and ease of integration in mind, it fits seamlessly within forms, modals, or any UI element requiring date input. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
129
+ - [RangeCalendar](./components/RangeCalendar.md) — RangeCalendar is a powerful, flexible, and user-friendly UI component designed for selecting a range of dates. Built with React, it combines the functionality of a calendar and a date range picker, making it an ideal choice for applications that require users to input a start and end date. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
130
+ - [RelativeDateField](./components/RelativeDateField.md) — RelativeDateField component is used only for entering relative dates. It can't be used as "normal" DateField.
131
+ - [RelativeDatePicker](./components/RelativeDatePicker.md) — RelativeDatePicker is almost the same component as DatePicker but it has ability to use relative dates.