@gravity-ui/date-components 3.4.2 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/components/Calendar/Calendar.d.ts +6 -2
  3. package/dist/cjs/components/Calendar/Calendar.js +1 -1
  4. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/dist/cjs/components/CalendarView/Calendar.css +3 -0
  6. package/dist/cjs/components/CalendarView/Calendar.css.map +1 -1
  7. package/dist/cjs/components/CalendarView/CalendarView.d.ts +2 -1
  8. package/dist/cjs/components/CalendarView/CalendarView.js +8 -8
  9. package/dist/cjs/components/CalendarView/CalendarView.js.map +1 -1
  10. package/dist/cjs/components/CalendarView/hooks/types.d.ts +5 -3
  11. package/dist/cjs/components/CalendarView/hooks/types.js.map +1 -1
  12. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  13. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  14. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  15. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  16. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +7 -1
  17. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  18. package/dist/cjs/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  19. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js +74 -30
  20. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  21. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +16 -9
  22. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  23. package/dist/cjs/components/DateField/DateField.d.ts +1 -1
  24. package/dist/cjs/components/DateField/DateField.js +5 -17
  25. package/dist/cjs/components/DateField/DateField.js.map +1 -1
  26. package/dist/cjs/components/DateField/IncompleteDate.d.ts +28 -0
  27. package/dist/cjs/components/DateField/IncompleteDate.js +116 -0
  28. package/dist/cjs/components/DateField/IncompleteDate.js.map +1 -0
  29. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  30. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +18 -249
  31. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  32. package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  33. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +250 -54
  34. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  35. package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  36. package/dist/cjs/components/DateField/hooks/useDateFieldState.js +84 -118
  37. package/dist/cjs/components/DateField/hooks/useDateFieldState.js.map +1 -1
  38. package/dist/cjs/components/DateField/hooks/useFocusManager.d.ts +29 -0
  39. package/dist/cjs/components/DateField/hooks/useFocusManager.js +116 -0
  40. package/dist/cjs/components/DateField/hooks/useFocusManager.js.map +1 -0
  41. package/dist/cjs/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  42. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js +236 -0
  43. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  44. package/dist/cjs/components/DateField/i18n/ru.json +1 -1
  45. package/dist/cjs/components/DateField/index.d.ts +2 -1
  46. package/dist/cjs/components/DateField/index.js +1 -1
  47. package/dist/cjs/components/DateField/index.js.map +1 -1
  48. package/dist/cjs/components/DateField/types.d.ts +2 -22
  49. package/dist/cjs/components/DateField/types.js.map +1 -1
  50. package/dist/cjs/components/DateField/utils.d.ts +21 -34
  51. package/dist/cjs/components/DateField/utils.js +180 -132
  52. package/dist/cjs/components/DateField/utils.js.map +1 -1
  53. package/dist/cjs/components/DatePicker/DatePicker.d.ts +3 -3
  54. package/dist/cjs/components/DatePicker/DatePicker.js +3 -4
  55. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  56. package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +1 -1
  57. package/dist/cjs/components/DatePicker/MobileCalendar.js +3 -5
  58. package/dist/cjs/components/DatePicker/MobileCalendar.js.map +1 -1
  59. package/dist/cjs/components/DatePicker/StubButton.d.ts +1 -1
  60. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  61. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  62. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  63. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  64. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +30 -17
  65. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  66. package/dist/cjs/components/HiddenInput/HiddenInput.d.ts +2 -5
  67. package/dist/cjs/components/HiddenInput/HiddenInput.js +2 -4
  68. package/dist/cjs/components/HiddenInput/HiddenInput.js.map +1 -1
  69. package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  70. package/dist/cjs/components/RangeCalendar/RangeCalendar.js +2 -3
  71. package/dist/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
  72. package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +1 -1
  73. package/dist/cjs/components/RangeDateField/RangeDateField.js +6 -19
  74. package/dist/cjs/components/RangeDateField/RangeDateField.js.map +1 -1
  75. package/dist/cjs/components/RangeDateField/index.d.ts +0 -1
  76. package/dist/cjs/components/RangeDateField/index.js +0 -1
  77. package/dist/cjs/components/RangeDateField/index.js.map +1 -1
  78. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  79. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +4 -5
  80. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  81. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  82. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +3 -4
  83. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  84. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  85. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js +4 -5
  86. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  87. package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  88. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  89. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  90. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  91. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  92. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  93. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  94. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -21
  95. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  96. package/dist/cjs/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  97. package/dist/cjs/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  98. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  99. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  100. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  101. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +0 -3
  102. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  103. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  104. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  105. package/dist/cjs/components/RangeDateSelection/utils/span.d.ts +2 -1
  106. package/dist/cjs/components/RangeDateSelection/utils/span.js.map +1 -1
  107. package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  108. package/dist/cjs/components/RelativeDateField/RelativeDateField.js +3 -40
  109. package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
  110. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  111. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  112. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  113. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  114. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  115. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  116. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  117. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  118. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  119. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  120. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -21
  121. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  122. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  123. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  124. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  125. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  126. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  127. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  128. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  129. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  130. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  131. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  132. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  133. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  134. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  135. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  136. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -16
  137. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  138. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
  139. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +34 -7
  140. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  141. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  142. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  143. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  144. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  145. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +9 -12
  146. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  147. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  148. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  149. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  150. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +27 -16
  151. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  152. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  153. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  154. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  155. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  156. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  157. package/dist/cjs/components/RelativeRangeDatePicker/types.d.ts +3 -1
  158. package/dist/cjs/components/RelativeRangeDatePicker/types.js.map +1 -1
  159. package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  160. package/dist/cjs/components/RelativeRangeDatePicker/utils.js +32 -9
  161. package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
  162. package/dist/cjs/components/utils/constants.d.ts +2 -0
  163. package/dist/cjs/components/utils/constants.js +7 -1
  164. package/dist/cjs/components/utils/constants.js.map +1 -1
  165. package/dist/cjs/components/utils/dates.d.ts +6 -1
  166. package/dist/cjs/components/utils/dates.js +6 -1
  167. package/dist/cjs/components/utils/dates.js.map +1 -1
  168. package/dist/cjs/components/utils/filterDOMProps.js +1 -1
  169. package/dist/cjs/components/utils/filterDOMProps.js.map +1 -1
  170. package/dist/cjs/components/utils/mergeProps.js +1 -1
  171. package/dist/cjs/components/utils/mergeProps.js.map +1 -1
  172. package/dist/cjs/components/utils/validation/datePicker.js +1 -1
  173. package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
  174. package/dist/cjs/components/utils/validation/i18n/ru.json +2 -2
  175. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  176. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +6 -1
  177. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  178. package/dist/cjs/hooks/useEventHandler.js +1 -2
  179. package/dist/cjs/hooks/useEventHandler.js.map +1 -1
  180. package/dist/cjs/hooks/useMove.d.ts +2 -2
  181. package/dist/cjs/hooks/useMove.js +6 -9
  182. package/dist/cjs/hooks/useMove.js.map +1 -1
  183. package/dist/cjs/hooks/useResizeObserver.js +1 -1
  184. package/dist/cjs/hooks/useResizeObserver.js.map +1 -1
  185. package/dist/cjs/package.json +1 -1
  186. package/dist/docs/INDEX.md +131 -0
  187. package/dist/docs/components/Calendar.md +125 -0
  188. package/dist/docs/components/DateField.md +206 -0
  189. package/dist/docs/components/DatePicker.md +194 -0
  190. package/dist/docs/components/RangeCalendar.md +125 -0
  191. package/dist/docs/components/RelativeDateField.md +73 -0
  192. package/dist/docs/components/RelativeDatePicker.md +59 -0
  193. package/dist/esm/components/Calendar/Calendar.d.ts +6 -2
  194. package/dist/esm/components/Calendar/Calendar.js +1 -1
  195. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  196. package/dist/esm/components/CalendarView/Calendar.css +3 -0
  197. package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
  198. package/dist/esm/components/CalendarView/CalendarView.d.ts +2 -1
  199. package/dist/esm/components/CalendarView/CalendarView.js +8 -8
  200. package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
  201. package/dist/esm/components/CalendarView/hooks/types.d.ts +5 -3
  202. package/dist/esm/components/CalendarView/hooks/types.js.map +1 -1
  203. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  204. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  205. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  206. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  207. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +7 -1
  208. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  209. package/dist/esm/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  210. package/dist/esm/components/CalendarView/hooks/useCalendarState.js +74 -30
  211. package/dist/esm/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  212. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +16 -10
  213. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  214. package/dist/esm/components/DateField/DateField.d.ts +1 -1
  215. package/dist/esm/components/DateField/DateField.js +6 -18
  216. package/dist/esm/components/DateField/DateField.js.map +1 -1
  217. package/dist/esm/components/DateField/IncompleteDate.d.ts +28 -0
  218. package/dist/esm/components/DateField/IncompleteDate.js +112 -0
  219. package/dist/esm/components/DateField/IncompleteDate.js.map +1 -0
  220. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  221. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +17 -248
  222. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  223. package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  224. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +250 -54
  225. package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  226. package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  227. package/dist/esm/components/DateField/hooks/useDateFieldState.js +85 -119
  228. package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
  229. package/dist/esm/components/DateField/hooks/useFocusManager.d.ts +29 -0
  230. package/dist/esm/components/DateField/hooks/useFocusManager.js +112 -0
  231. package/dist/esm/components/DateField/hooks/useFocusManager.js.map +1 -0
  232. package/dist/esm/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  233. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js +232 -0
  234. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  235. package/dist/esm/components/DateField/i18n/ru.json +1 -1
  236. package/dist/esm/components/DateField/index.d.ts +2 -1
  237. package/dist/esm/components/DateField/index.js +1 -1
  238. package/dist/esm/components/DateField/index.js.map +1 -1
  239. package/dist/esm/components/DateField/types.d.ts +2 -22
  240. package/dist/esm/components/DateField/types.js.map +1 -1
  241. package/dist/esm/components/DateField/utils.d.ts +21 -34
  242. package/dist/esm/components/DateField/utils.js +179 -125
  243. package/dist/esm/components/DateField/utils.js.map +1 -1
  244. package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -3
  245. package/dist/esm/components/DatePicker/DatePicker.js +3 -5
  246. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  247. package/dist/esm/components/DatePicker/MobileCalendar.d.ts +1 -1
  248. package/dist/esm/components/DatePicker/MobileCalendar.js +3 -5
  249. package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
  250. package/dist/esm/components/DatePicker/StubButton.d.ts +1 -1
  251. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  252. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  253. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  254. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  255. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +30 -18
  256. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  257. package/dist/esm/components/HiddenInput/HiddenInput.d.ts +2 -5
  258. package/dist/esm/components/HiddenInput/HiddenInput.js +3 -4
  259. package/dist/esm/components/HiddenInput/HiddenInput.js.map +1 -1
  260. package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  261. package/dist/esm/components/RangeCalendar/RangeCalendar.js +2 -3
  262. package/dist/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
  263. package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
  264. package/dist/esm/components/RangeDateField/RangeDateField.js +7 -20
  265. package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
  266. package/dist/esm/components/RangeDateField/index.d.ts +0 -1
  267. package/dist/esm/components/RangeDateField/index.js +0 -1
  268. package/dist/esm/components/RangeDateField/index.js.map +1 -1
  269. package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  270. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +4 -6
  271. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  272. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  273. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +2 -3
  274. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  275. package/dist/esm/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  276. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +4 -5
  277. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  278. package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  279. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  280. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  281. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  282. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  283. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  284. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  285. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -22
  286. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  287. package/dist/esm/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  288. package/dist/esm/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  289. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  290. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  291. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  292. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +1 -2
  293. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  294. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  295. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  296. package/dist/esm/components/RangeDateSelection/utils/span.d.ts +2 -1
  297. package/dist/esm/components/RangeDateSelection/utils/span.js.map +1 -1
  298. package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  299. package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -40
  300. package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
  301. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  302. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  303. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  304. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  305. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  306. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  307. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  308. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  309. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  310. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  311. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -22
  312. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  313. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  314. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  315. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  316. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  317. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  318. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  319. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  320. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  321. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  322. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  323. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  324. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  325. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  326. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  327. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -17
  328. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  329. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
  330. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -7
  331. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  332. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  333. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  334. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  335. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  336. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +8 -10
  337. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  338. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  339. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  340. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  341. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +26 -15
  342. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  343. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  344. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  345. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  346. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  347. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  348. package/dist/esm/components/RelativeRangeDatePicker/types.d.ts +3 -1
  349. package/dist/esm/components/RelativeRangeDatePicker/types.js.map +1 -1
  350. package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  351. package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
  352. package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
  353. package/dist/esm/components/utils/constants.d.ts +2 -0
  354. package/dist/esm/components/utils/constants.js +6 -0
  355. package/dist/esm/components/utils/constants.js.map +1 -1
  356. package/dist/esm/components/utils/dates.d.ts +6 -1
  357. package/dist/esm/components/utils/dates.js +5 -1
  358. package/dist/esm/components/utils/dates.js.map +1 -1
  359. package/dist/esm/components/utils/filterDOMProps.js +1 -1
  360. package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
  361. package/dist/esm/components/utils/mergeProps.js +1 -1
  362. package/dist/esm/components/utils/mergeProps.js.map +1 -1
  363. package/dist/esm/components/utils/validation/datePicker.js +1 -1
  364. package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
  365. package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
  366. package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  367. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
  368. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  369. package/dist/esm/hooks/useEventHandler.js +1 -2
  370. package/dist/esm/hooks/useEventHandler.js.map +1 -1
  371. package/dist/esm/hooks/useMove.d.ts +2 -2
  372. package/dist/esm/hooks/useMove.js +6 -9
  373. package/dist/esm/hooks/useMove.js.map +1 -1
  374. package/dist/esm/hooks/useResizeObserver.js +1 -1
  375. package/dist/esm/hooks/useResizeObserver.js.map +1 -1
  376. package/dist/esm/package.json +1 -1
  377. package/package.json +34 -27
  378. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
  379. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  380. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  381. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
  382. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  383. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  384. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
  385. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  386. package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
  387. package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
  388. package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
  389. package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  390. package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
  391. package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
  392. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
  393. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  394. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  395. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
  396. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  397. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  398. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
  399. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  400. package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
  401. package/dist/esm/components/RangeDateField/utils/index.js +0 -4
  402. package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
  403. package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  404. package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
  405. package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
@@ -5,4 +5,10 @@ export const DAY = 24 * HOUR;
5
5
  export const WEEK = 7 * DAY;
6
6
  export const MONTH = 30 * DAY;
7
7
  export const YEAR = 365 * DAY;
8
+ const platform = typeof window !== 'undefined' && window.navigator
9
+ ? // @ts-expect-error
10
+ window.navigator['userAgentData']?.platform || window.navigator.platform
11
+ : '';
12
+ export const isMac = /^Mac/i.test(platform);
13
+ export const CtrlCmd = isMac ? 'metaKey' : 'ctrlKey';
8
14
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,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,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,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;AAEb,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,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 {};
@@ -3,7 +3,11 @@ export function isWeekend(date) {
3
3
  return [0, 6].includes(date.day());
4
4
  }
5
5
  export function createPlaceholderValue({ placeholderValue, timeZone }) {
6
- return placeholderValue !== null && placeholderValue !== void 0 ? placeholderValue : dateTime({ timeZone }).startOf('day');
6
+ return placeholderValue ?? dateTime({ timeZone }).startOf('day');
7
+ }
8
+ export function createPlaceholderRangeValue({ placeholderValue, timeZone }) {
9
+ const date = createPlaceholderValue({ placeholderValue, timeZone });
10
+ return { start: date.startOf('day'), end: date.endOf('day') };
7
11
  }
8
12
  export function isInvalid(value, minValue, maxValue) {
9
13
  if (!value) {
@@ -1 +1 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAGhD,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,MAAM,UAAU,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,QAAQ,CAAC,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":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAGhD,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,MAAM,UAAU,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,IAAI,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,QAAQ,CAAC,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"]}
@@ -14,7 +14,7 @@ export function filterDOMProps(props, options = {}) {
14
14
  if (Object.prototype.hasOwnProperty.call(props, prop) &&
15
15
  (DOMPropNames.has(prop) ||
16
16
  (labelable && labelablePropNames.has(prop)) ||
17
- (propNames === null || propNames === void 0 ? void 0 : propNames.has(prop)) ||
17
+ propNames?.has(prop) ||
18
18
  propRe.test(prop))) {
19
19
  // @ts-expect-error
20
20
  filteredProps[prop] = props[prop];
@@ -1 +1 @@
1
- {"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":"AAEA,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,MAAM,UAAU,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":"AAEA,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,MAAM,UAAU,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"]}
@@ -1,5 +1,5 @@
1
1
  export function mergeProps(...args) {
2
- const result = Object.assign({}, args[0]);
2
+ const result = { ...args[0] };
3
3
  for (let i = 1; i < args.length; i++) {
4
4
  const props = args[i];
5
5
  if (!props) {
@@ -1 +1 @@
1
- {"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,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,MAAM,UAAU,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"]}
@@ -2,7 +2,7 @@ import { i18n } from "./i18n/index.js";
2
2
  export function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value', t = i18n) {
3
3
  const rangeOverflow = value && maxValue && maxValue.isBefore(value);
4
4
  const rangeUnderflow = value && minValue && value.isBefore(minValue);
5
- const isUnavailable = (value && (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(value))) || false;
5
+ const isUnavailable = (value && isDateUnavailable?.(value)) || false;
6
6
  const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;
7
7
  const errors = [];
8
8
  if (isInvalid) {
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,IAAI;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":"AAIA,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,IAAI;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 {};
@@ -3,7 +3,12 @@ import { getValidationResult } from "./datePicker.js";
3
3
  import { i18n } from "./i18n/index.js";
4
4
  export function getRangeValidationResult(value, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone, t = i18n) {
5
5
  if (!value) {
6
- return { isInvalid: false, errors: [] };
6
+ return {
7
+ isInvalid: false,
8
+ errors: [],
9
+ startValidationResult: { isInvalid: false, errors: [] },
10
+ endValidationResult: { isInvalid: false, errors: [] },
11
+ };
7
12
  }
8
13
  const startDate = value.start ? dateTimeParse(value.start.value, { timeZone }) : null;
9
14
  const endDate = value.end ? 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":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAMrD,OAAO,EAAC,mBAAmB,EAAC,wBAAqB;AACjD,OAAO,EAAC,IAAI,EAAC,wBAAe;AAE5B,MAAM,UAAU,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,IAAI;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,aAAa,CAAC,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,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,mBAAmB,CAC7C,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,mBAAmB,CAC3C,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":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAMrD,OAAO,EAAC,mBAAmB,EAAC,wBAAqB;AAEjD,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,IAAI;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,aAAa,CAAC,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,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,mBAAmB,CAC7C,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,mBAAmB,CAC3C,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"]}
@@ -12,8 +12,7 @@ export function useEventHandler(handler) {
12
12
  }, [handler]);
13
13
  // @ts-expect-error
14
14
  return React.useCallback((...args) => {
15
- var _a;
16
- return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref, ...args);
15
+ return ref.current?.(...args);
17
16
  }, []);
18
17
  }
19
18
  //# sourceMappingURL=useEventHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,KAAK,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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,KAAK,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;
@@ -13,7 +13,7 @@ export function useMove(props) {
13
13
  }
14
14
  if (!state.current.isMoving) {
15
15
  state.current.isMoving = true;
16
- onMoveStart === null || onMoveStart === void 0 ? void 0 : onMoveStart({
16
+ onMoveStart?.({
17
17
  type: 'movestart',
18
18
  pointerType,
19
19
  shiftKey: originalEvent.shiftKey,
@@ -22,7 +22,7 @@ export function useMove(props) {
22
22
  altKey: originalEvent.altKey,
23
23
  });
24
24
  }
25
- onMove === null || onMove === void 0 ? void 0 : onMove({
25
+ onMove?.({
26
26
  type: 'move',
27
27
  pointerType,
28
28
  deltaX,
@@ -36,7 +36,7 @@ export function useMove(props) {
36
36
  const end = useEventHandler((originalEvent, pointerType) => {
37
37
  if (state.current.isMoving) {
38
38
  state.current.isMoving = false;
39
- onMoveEnd === null || onMoveEnd === void 0 ? void 0 : onMoveEnd({
39
+ onMoveEnd?.({
40
40
  type: 'moveend',
41
41
  pointerType,
42
42
  shiftKey: originalEvent.shiftKey,
@@ -55,9 +55,8 @@ export function useMove(props) {
55
55
  e.preventDefault();
56
56
  state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
57
57
  const handleMouseMove = (ev) => {
58
- var _a, _b;
59
58
  if (ev.buttons === 0) {
60
- 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');
59
+ move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), 'mouse');
61
60
  state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
62
61
  }
63
62
  };
@@ -81,11 +80,10 @@ export function useMove(props) {
81
80
  state.current.lastPosition = { pageX, pageY };
82
81
  e.preventDefault();
83
82
  const handleTouchMove = (ev) => {
84
- var _a, _b;
85
83
  const touch = [...ev.changedTouches].findIndex((el) => el.identifier === state.current.id);
86
84
  if (touch !== -1) {
87
85
  const { pageX, pageY } = e.changedTouches[touch];
88
- 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');
86
+ move(ev, pageX - (state.current.lastPosition?.pageX || 0), pageY - (state.current.lastPosition?.pageY || 0), 'touch');
89
87
  state.current.lastPosition = { pageX, pageY };
90
88
  }
91
89
  };
@@ -112,9 +110,8 @@ export function useMove(props) {
112
110
  state.current.id = e.pointerId;
113
111
  state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
114
112
  const handlePointerMove = (ev) => {
115
- var _a, _b;
116
113
  if (ev.pointerId === state.current.id) {
117
- 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'));
114
+ move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), (ev.pointerType || 'mouse'));
118
115
  state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
119
116
  }
120
117
  };
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,eAAe,EAAC,6BAA0B;AAmClD,MAAM,UAAU,OAAO,CAAC,KAAiB;IACrC,MAAM,EAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAE/C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAIvB;QACC,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;QAClB,EAAE,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,eAAe,CACxB,CAAC,aAAwB,EAAE,MAAc,EAAE,MAAc,EAAE,WAAwB,EAAE,EAAE;QACnF,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC9B,WAAW,EAAE,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,WAAW;gBACX,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;aAC/B,CAAC,CAAC;QACP,CAAC;QACD,MAAM,EAAE,CAAC;YACL,IAAI,EAAE,MAAM;YACZ,WAAW;YACX,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;SAC/B,CAAC,CAAC;IACP,CAAC,CACJ,CAAC;IAEF,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,aAAwB,EAAE,WAAwB,EAAE,EAAE;QAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC/B,SAAS,EAAE,CAAC;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW;gBACX,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;aAC/B,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtB,MAAM,SAAS,GAAqC,EAAE,CAAC;QAEvD,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACtC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAC,CAAC;oBAE9D,MAAM,eAAe,GAAG,CAAC,EAAc,EAAE,EAAE;wBACvC,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;4BACnB,IAAI,CACA,EAAE,EACF,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,EACnD,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,EACnD,OAAO,CACV,CAAC;4BACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;wBACpE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,aAAa,GAAG,CAAC,EAAc,EAAE,EAAE;wBACrC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAClB,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;4BACjB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;4BACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;wBACzD,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACtD,CAAC;YACL,CAAC,CAAC;YAEF,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBACtD,OAAO;gBACX,CAAC;gBAED,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC;gBAC9B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;gBAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;gBAEnB,MAAM,eAAe,GAAG,CAAC,EAAc,EAAE,EAAE;oBACvC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,SAAS,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;oBACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACf,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC/C,IAAI,CACA,EAAE,EACF,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,EAChD,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,EAChD,OAAO,CACV,CAAC;wBACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;oBAChD,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,cAAc,GAAG,CAAC,EAAc,EAAE,EAAE;oBACtC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,SAAS,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;oBACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACf,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;wBACjB,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;wBACzD,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;wBACvD,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;oBAC9D,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBACtD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACpD,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAC3D,CAAC,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC/B,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;oBAC/B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAC,CAAC;oBAE9D,MAAM,iBAAiB,GAAG,CAAC,EAAgB,EAAE,EAAE;wBAC3C,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;4BACpC,IAAI,CACA,EAAE,EACF,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,EACnD,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,EACnD,CAAC,EAAE,CAAC,WAAW,IAAI,OAAO,CAAgB,CAC7C,CAAC;4BACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;wBACpE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,eAAe,GAAG,CAAC,EAAgB,EAAE,EAAE;wBACzC,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;4BACpC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,OAAO,CAAgB,CAAC,CAAC;4BACpD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;4BACxB,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;4BAC7D,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;4BACzD,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;wBACjE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;oBAC1D,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBACtD,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC,CAAC;QACN,CAAC;QAED,MAAM,kBAAkB,GAAG,CAAC,CAAY,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;YACxE,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACpC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;YACxB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;gBACZ,KAAK,WAAW,CAAC,CAAC,CAAC;oBACf,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,MAAM;gBACV,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACb,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;gBACD,KAAK,WAAW,CAAC,CAAC,CAAC;oBACf,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,EAAC,SAAS,EAAC,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACpB,CAAC","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"]}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  /* FIXME: use the same hook from @gravity-ui/uikit */
3
3
  export function useResizeObserver({ ref, onResize, box, }) {
4
4
  React.useEffect(() => {
5
- const element = ref === null || ref === void 0 ? void 0 : ref.current;
5
+ const element = ref?.current;
6
6
  if (!element) {
7
7
  return undefined;
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,KAAK,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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,KAAK,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":"module","version":"3.4.2","sideEffects":["*.css","*.scss"]}
1
+ {"type":"module","version":"4.1.0","sideEffects":["*.css","*.scss"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/date-components",
3
- "version": "3.4.2",
3
+ "version": "4.1.0",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -62,7 +62,8 @@
62
62
  "build": "gulp",
63
63
  "start": "storybook dev -p 7070",
64
64
  "build-storybook": "storybook build -c .storybook -o storybook-static",
65
- "prepublishOnly": "npm run build"
65
+ "prepublishOnly": "npm run build",
66
+ "knip": "knip"
66
67
  },
67
68
  "dependencies": {
68
69
  "@bem-react/classname": "^1.6.0",
@@ -70,47 +71,50 @@
70
71
  "tslib": "^2.6.2"
71
72
  },
72
73
  "devDependencies": {
73
- "@commitlint/cli": "^20.2.0",
74
- "@commitlint/config-conventional": "^20.2.0",
75
- "@gravity-ui/eslint-config": "^4.2.0",
74
+ "@commitlint/cli": "^21.2.1",
75
+ "@commitlint/config-conventional": "^21.2.0",
76
+ "@gravity-ui/eslint-config": "^4.3.1",
76
77
  "@gravity-ui/gulp-utils": "^1.0.3",
77
78
  "@gravity-ui/prettier-config": "^1.1.0",
79
+ "@gravity-ui/readme-validator": "^1.3.0",
78
80
  "@gravity-ui/stylelint-config": "^5.0.0",
79
81
  "@gravity-ui/tsconfig": "^1.0.0",
80
- "@storybook/addon-a11y": "^10.2.7",
81
- "@storybook/addon-docs": "^10.2.7",
82
- "@storybook/addon-vitest": "^10.2.7",
83
- "@storybook/react-vite": "^10.2.7",
82
+ "@storybook/addon-a11y": "^10.5.5",
83
+ "@storybook/addon-docs": "^10.5.5",
84
+ "@storybook/addon-vitest": "^10.5.5",
85
+ "@storybook/react-vite": "^10.5.5",
84
86
  "@types/node": "^22",
85
- "@types/react": "^18.3.27",
87
+ "@types/react": "^18.3.31",
86
88
  "@types/react-dom": "^18.3.7",
87
- "@vitejs/plugin-react": "^5.1.2",
88
- "@vitest/browser-playwright": "^4.0.16",
89
- "@vitest/coverage-v8": "^4.0.16",
90
- "@vitest/eslint-plugin": "^1.6.4",
91
- "@vitest/ui": "^4.0.16",
92
- "eslint": "^9.39.2",
89
+ "@vitejs/plugin-react": "^6.0.5",
90
+ "@vitest/browser-playwright": "^4.1.10",
91
+ "@vitest/coverage-v8": "^4.1.10",
92
+ "@vitest/eslint-plugin": "^1.6.24",
93
+ "@vitest/ui": "^4.1.10",
94
+ "eslint": "^9.39.5",
93
95
  "eslint-plugin-react-compiler": "19.1.0-rc.2",
94
- "eslint-plugin-storybook": "^10.2.7",
96
+ "eslint-plugin-storybook": "^10.5.5",
95
97
  "globals": "^16.5.0",
96
98
  "gulp": "^5.0.1",
97
99
  "gulp-cli": "^3.1.0",
98
100
  "gulp-sass": "^6.0.1",
99
101
  "gulp-sourcemaps": "^3.0.0",
100
102
  "husky": "^9.1.7",
101
- "nano-staged": "^0.9.0",
102
- "npm-run-all": "^4.1.5",
103
- "playwright": "^1.57.0",
104
- "prettier": "^3.7.4",
103
+ "knip": "^6.31.0",
104
+ "nano-staged": "^1.0.2",
105
+ "npm-run-all2": "^9.0.3",
106
+ "playwright": "^1.62.1",
107
+ "prettier": "^3.9.6",
105
108
  "react": "^18.3.1",
106
109
  "react-dom": "^18.3.1",
107
- "sass": "^1.97.1",
108
- "storybook": "10.2.7",
110
+ "sass": "^1.102.0",
111
+ "storybook": "10.5.5",
109
112
  "stylelint": "^16.26.1",
110
- "stylelint-use-logical": "^2.1.2",
111
- "typescript": "^5.9.3",
112
- "vitest": "^4.0.16",
113
- "vitest-browser-react": "^2.0.2"
113
+ "stylelint-use-logical": "^2.1.3",
114
+ "typescript": "^6.0.3",
115
+ "vite": "^8.2.0",
116
+ "vitest": "^4.1.10",
117
+ "vitest-browser-react": "^2.2.0"
114
118
  },
115
119
  "peerDependencies": {
116
120
  "@gravity-ui/date-utils": "^2.6.0",
@@ -134,5 +138,8 @@
134
138
  "*.{md,json,yml,yaml}": [
135
139
  "prettier --write"
136
140
  ]
141
+ },
142
+ "overrides": {
143
+ "typescript": "$typescript"
137
144
  }
138
145
  }