@gravity-ui/date-components 3.4.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/components/Calendar/Calendar.d.ts +6 -2
  3. package/dist/cjs/components/Calendar/Calendar.js +1 -1
  4. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/dist/cjs/components/CalendarView/Calendar.css +3 -0
  6. package/dist/cjs/components/CalendarView/Calendar.css.map +1 -1
  7. package/dist/cjs/components/CalendarView/CalendarView.d.ts +2 -1
  8. package/dist/cjs/components/CalendarView/CalendarView.js +8 -8
  9. package/dist/cjs/components/CalendarView/CalendarView.js.map +1 -1
  10. package/dist/cjs/components/CalendarView/hooks/types.d.ts +5 -3
  11. package/dist/cjs/components/CalendarView/hooks/types.js.map +1 -1
  12. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  13. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  14. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  15. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  16. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +7 -1
  17. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  18. package/dist/cjs/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  19. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js +74 -30
  20. package/dist/cjs/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  21. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +16 -9
  22. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  23. package/dist/cjs/components/DateField/DateField.d.ts +1 -1
  24. package/dist/cjs/components/DateField/DateField.js +5 -17
  25. package/dist/cjs/components/DateField/DateField.js.map +1 -1
  26. package/dist/cjs/components/DateField/IncompleteDate.d.ts +28 -0
  27. package/dist/cjs/components/DateField/IncompleteDate.js +116 -0
  28. package/dist/cjs/components/DateField/IncompleteDate.js.map +1 -0
  29. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  30. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +18 -249
  31. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  32. package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  33. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +250 -54
  34. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  35. package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  36. package/dist/cjs/components/DateField/hooks/useDateFieldState.js +84 -118
  37. package/dist/cjs/components/DateField/hooks/useDateFieldState.js.map +1 -1
  38. package/dist/cjs/components/DateField/hooks/useFocusManager.d.ts +29 -0
  39. package/dist/cjs/components/DateField/hooks/useFocusManager.js +116 -0
  40. package/dist/cjs/components/DateField/hooks/useFocusManager.js.map +1 -0
  41. package/dist/cjs/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  42. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js +236 -0
  43. package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  44. package/dist/cjs/components/DateField/i18n/ru.json +1 -1
  45. package/dist/cjs/components/DateField/index.d.ts +2 -1
  46. package/dist/cjs/components/DateField/index.js +1 -1
  47. package/dist/cjs/components/DateField/index.js.map +1 -1
  48. package/dist/cjs/components/DateField/types.d.ts +2 -22
  49. package/dist/cjs/components/DateField/types.js.map +1 -1
  50. package/dist/cjs/components/DateField/utils.d.ts +21 -34
  51. package/dist/cjs/components/DateField/utils.js +180 -132
  52. package/dist/cjs/components/DateField/utils.js.map +1 -1
  53. package/dist/cjs/components/DatePicker/DatePicker.d.ts +3 -3
  54. package/dist/cjs/components/DatePicker/DatePicker.js +3 -4
  55. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  56. package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +1 -1
  57. package/dist/cjs/components/DatePicker/MobileCalendar.js +3 -5
  58. package/dist/cjs/components/DatePicker/MobileCalendar.js.map +1 -1
  59. package/dist/cjs/components/DatePicker/StubButton.d.ts +1 -1
  60. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  61. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  62. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  63. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  64. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +30 -17
  65. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  66. package/dist/cjs/components/HiddenInput/HiddenInput.d.ts +2 -5
  67. package/dist/cjs/components/HiddenInput/HiddenInput.js +2 -4
  68. package/dist/cjs/components/HiddenInput/HiddenInput.js.map +1 -1
  69. package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  70. package/dist/cjs/components/RangeCalendar/RangeCalendar.js +2 -3
  71. package/dist/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
  72. package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +1 -1
  73. package/dist/cjs/components/RangeDateField/RangeDateField.js +6 -19
  74. package/dist/cjs/components/RangeDateField/RangeDateField.js.map +1 -1
  75. package/dist/cjs/components/RangeDateField/index.d.ts +0 -1
  76. package/dist/cjs/components/RangeDateField/index.js +0 -1
  77. package/dist/cjs/components/RangeDateField/index.js.map +1 -1
  78. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  79. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +4 -5
  80. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  81. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  82. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +3 -4
  83. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  84. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  85. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js +4 -5
  86. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  87. package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  88. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  89. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  90. package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  91. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  92. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  93. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  94. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -21
  95. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  96. package/dist/cjs/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  97. package/dist/cjs/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  98. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  99. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  100. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  101. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +0 -3
  102. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  103. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  104. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  105. package/dist/cjs/components/RangeDateSelection/utils/span.d.ts +2 -1
  106. package/dist/cjs/components/RangeDateSelection/utils/span.js.map +1 -1
  107. package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  108. package/dist/cjs/components/RelativeDateField/RelativeDateField.js +3 -40
  109. package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
  110. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  111. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  112. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  113. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  114. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  115. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  116. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  117. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  118. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  119. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  120. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -21
  121. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  122. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  123. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  124. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  125. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  126. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  127. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  128. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  129. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  130. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  131. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  132. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  133. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  134. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  135. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  136. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -16
  137. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  138. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +2 -1
  139. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -7
  140. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  141. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  142. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  143. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  144. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  145. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +9 -12
  146. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  147. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  148. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  149. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  150. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +27 -16
  151. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  152. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  153. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  154. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  155. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  156. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  157. package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  158. package/dist/cjs/components/RelativeRangeDatePicker/utils.js +32 -9
  159. package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
  160. package/dist/cjs/components/utils/constants.d.ts +2 -0
  161. package/dist/cjs/components/utils/constants.js +7 -1
  162. package/dist/cjs/components/utils/constants.js.map +1 -1
  163. package/dist/cjs/components/utils/dates.d.ts +6 -1
  164. package/dist/cjs/components/utils/dates.js +6 -1
  165. package/dist/cjs/components/utils/dates.js.map +1 -1
  166. package/dist/cjs/components/utils/filterDOMProps.js +1 -1
  167. package/dist/cjs/components/utils/filterDOMProps.js.map +1 -1
  168. package/dist/cjs/components/utils/mergeProps.js +1 -1
  169. package/dist/cjs/components/utils/mergeProps.js.map +1 -1
  170. package/dist/cjs/components/utils/validation/datePicker.js +1 -1
  171. package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
  172. package/dist/cjs/components/utils/validation/i18n/ru.json +2 -2
  173. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  174. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +6 -1
  175. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  176. package/dist/cjs/hooks/useEventHandler.js +1 -2
  177. package/dist/cjs/hooks/useEventHandler.js.map +1 -1
  178. package/dist/cjs/hooks/useMove.d.ts +2 -2
  179. package/dist/cjs/hooks/useMove.js +6 -9
  180. package/dist/cjs/hooks/useMove.js.map +1 -1
  181. package/dist/cjs/hooks/useResizeObserver.js +1 -1
  182. package/dist/cjs/hooks/useResizeObserver.js.map +1 -1
  183. package/dist/cjs/package.json +1 -1
  184. package/dist/docs/INDEX.md +131 -0
  185. package/dist/docs/components/Calendar.md +125 -0
  186. package/dist/docs/components/DateField.md +206 -0
  187. package/dist/docs/components/DatePicker.md +194 -0
  188. package/dist/docs/components/RangeCalendar.md +125 -0
  189. package/dist/docs/components/RelativeDateField.md +73 -0
  190. package/dist/docs/components/RelativeDatePicker.md +59 -0
  191. package/dist/esm/components/Calendar/Calendar.d.ts +6 -2
  192. package/dist/esm/components/Calendar/Calendar.js +1 -1
  193. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  194. package/dist/esm/components/CalendarView/Calendar.css +3 -0
  195. package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
  196. package/dist/esm/components/CalendarView/CalendarView.d.ts +2 -1
  197. package/dist/esm/components/CalendarView/CalendarView.js +8 -8
  198. package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
  199. package/dist/esm/components/CalendarView/hooks/types.d.ts +5 -3
  200. package/dist/esm/components/CalendarView/hooks/types.js.map +1 -1
  201. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
  202. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  203. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
  204. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  205. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +7 -1
  206. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  207. package/dist/esm/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
  208. package/dist/esm/components/CalendarView/hooks/useCalendarState.js +74 -30
  209. package/dist/esm/components/CalendarView/hooks/useCalendarState.js.map +1 -1
  210. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +16 -10
  211. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  212. package/dist/esm/components/DateField/DateField.d.ts +1 -1
  213. package/dist/esm/components/DateField/DateField.js +6 -18
  214. package/dist/esm/components/DateField/DateField.js.map +1 -1
  215. package/dist/esm/components/DateField/IncompleteDate.d.ts +28 -0
  216. package/dist/esm/components/DateField/IncompleteDate.js +112 -0
  217. package/dist/esm/components/DateField/IncompleteDate.js.map +1 -0
  218. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
  219. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +17 -248
  220. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
  221. package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
  222. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +250 -54
  223. package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  224. package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +20 -2
  225. package/dist/esm/components/DateField/hooks/useDateFieldState.js +85 -119
  226. package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
  227. package/dist/esm/components/DateField/hooks/useFocusManager.d.ts +29 -0
  228. package/dist/esm/components/DateField/hooks/useFocusManager.js +112 -0
  229. package/dist/esm/components/DateField/hooks/useFocusManager.js.map +1 -0
  230. package/dist/esm/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
  231. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js +232 -0
  232. package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
  233. package/dist/esm/components/DateField/i18n/ru.json +1 -1
  234. package/dist/esm/components/DateField/index.d.ts +2 -1
  235. package/dist/esm/components/DateField/index.js +1 -1
  236. package/dist/esm/components/DateField/index.js.map +1 -1
  237. package/dist/esm/components/DateField/types.d.ts +2 -22
  238. package/dist/esm/components/DateField/types.js.map +1 -1
  239. package/dist/esm/components/DateField/utils.d.ts +21 -34
  240. package/dist/esm/components/DateField/utils.js +179 -125
  241. package/dist/esm/components/DateField/utils.js.map +1 -1
  242. package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -3
  243. package/dist/esm/components/DatePicker/DatePicker.js +3 -5
  244. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  245. package/dist/esm/components/DatePicker/MobileCalendar.d.ts +1 -1
  246. package/dist/esm/components/DatePicker/MobileCalendar.js +3 -5
  247. package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
  248. package/dist/esm/components/DatePicker/StubButton.d.ts +1 -1
  249. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
  250. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
  251. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
  252. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
  253. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +30 -18
  254. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  255. package/dist/esm/components/HiddenInput/HiddenInput.d.ts +2 -5
  256. package/dist/esm/components/HiddenInput/HiddenInput.js +3 -4
  257. package/dist/esm/components/HiddenInput/HiddenInput.js.map +1 -1
  258. package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +2 -2
  259. package/dist/esm/components/RangeCalendar/RangeCalendar.js +2 -3
  260. package/dist/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
  261. package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
  262. package/dist/esm/components/RangeDateField/RangeDateField.js +7 -20
  263. package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
  264. package/dist/esm/components/RangeDateField/index.d.ts +0 -1
  265. package/dist/esm/components/RangeDateField/index.js +0 -1
  266. package/dist/esm/components/RangeDateField/index.js.map +1 -1
  267. package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
  268. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +4 -6
  269. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
  270. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
  271. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +2 -3
  272. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
  273. package/dist/esm/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
  274. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +4 -5
  275. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  276. package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
  277. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
  278. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
  279. package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
  280. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
  281. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
  282. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
  283. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -22
  284. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  285. package/dist/esm/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
  286. package/dist/esm/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
  287. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
  288. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
  289. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
  290. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +1 -2
  291. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  292. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
  293. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  294. package/dist/esm/components/RangeDateSelection/utils/span.d.ts +2 -1
  295. package/dist/esm/components/RangeDateSelection/utils/span.js.map +1 -1
  296. package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +1 -1
  297. package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -40
  298. package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
  299. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
  300. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
  301. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
  302. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
  303. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
  304. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
  305. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
  306. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
  307. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
  308. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
  309. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -22
  310. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  311. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
  312. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
  313. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
  314. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
  315. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  316. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
  317. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  318. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
  319. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
  320. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  321. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
  322. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
  323. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
  324. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
  325. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -17
  326. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  327. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +2 -1
  328. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +32 -7
  329. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  330. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
  331. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
  332. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  333. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
  334. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +8 -10
  335. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  336. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
  337. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  338. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
  339. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +26 -15
  340. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  341. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
  342. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
  343. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  344. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
  345. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  346. package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +2 -2
  347. package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
  348. package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
  349. package/dist/esm/components/utils/constants.d.ts +2 -0
  350. package/dist/esm/components/utils/constants.js +6 -0
  351. package/dist/esm/components/utils/constants.js.map +1 -1
  352. package/dist/esm/components/utils/dates.d.ts +6 -1
  353. package/dist/esm/components/utils/dates.js +5 -1
  354. package/dist/esm/components/utils/dates.js.map +1 -1
  355. package/dist/esm/components/utils/filterDOMProps.js +1 -1
  356. package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
  357. package/dist/esm/components/utils/mergeProps.js +1 -1
  358. package/dist/esm/components/utils/mergeProps.js.map +1 -1
  359. package/dist/esm/components/utils/validation/datePicker.js +1 -1
  360. package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
  361. package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
  362. package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
  363. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
  364. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
  365. package/dist/esm/hooks/useEventHandler.js +1 -2
  366. package/dist/esm/hooks/useEventHandler.js.map +1 -1
  367. package/dist/esm/hooks/useMove.d.ts +2 -2
  368. package/dist/esm/hooks/useMove.js +6 -9
  369. package/dist/esm/hooks/useMove.js.map +1 -1
  370. package/dist/esm/hooks/useResizeObserver.js +1 -1
  371. package/dist/esm/hooks/useResizeObserver.js.map +1 -1
  372. package/dist/esm/package.json +1 -1
  373. package/package.json +34 -27
  374. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
  375. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  376. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  377. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
  378. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  379. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  380. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
  381. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  382. package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
  383. package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
  384. package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
  385. package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  386. package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
  387. package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
  388. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
  389. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
  390. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
  391. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
  392. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
  393. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
  394. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
  395. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
  396. package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
  397. package/dist/esm/components/RangeDateField/utils/index.js +0 -4
  398. package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
  399. package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
  400. package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
  401. package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
@@ -11,9 +11,7 @@ const getButtonSizeForInput_1 = require("../../utils/getButtonSizeForInput.js");
11
11
  const mergeProps_1 = require("../../utils/mergeProps.js");
12
12
  const i18n_1 = require("../i18n/index.js");
13
13
  const utils_1 = require("../utils/index.js");
14
- function useDatePickerProps(state, _a) {
15
- var { onFocus, onBlur } = _a, props = tslib_1.__rest(_a, ["onFocus", "onBlur"]);
16
- const [isActive, setActive] = react_1.default.useState(false);
14
+ function useDatePickerProps(state, { onFocus, onBlur, ...props }) {
17
15
  const [focusedDate, setFocusedDate] = react_1.default.useState((0, date_utils_1.isDateTime)(state.dateFieldState.displayValue)
18
16
  ? state.dateFieldState.displayValue
19
17
  : state.dateFieldState.displayValue.start);
@@ -35,17 +33,18 @@ function useDatePickerProps(state, _a) {
35
33
  setFocusedDate(state.dateFieldState.displayValue.end);
36
34
  }
37
35
  }
36
+ const { inputProps } = (0, DateField_1.useDateFieldProps)(state.dateFieldState, props);
38
37
  const { focusWithinProps } = (0, uikit_1.useFocusWithin)({
39
38
  onFocusWithin: onFocus,
40
39
  onBlurWithin: onBlur,
41
40
  onFocusWithinChange(isFocusWithin) {
42
- setActive(isFocusWithin);
41
+ state.dateFieldState.setActive(isFocusWithin);
43
42
  if (!isFocusWithin) {
44
43
  state.setOpen(false, 'FocusOut');
44
+ state.dateFieldState.confirmPlaceholder();
45
45
  }
46
46
  },
47
47
  });
48
- const { inputProps } = (0, DateField_1.useDateFieldProps)(state.dateFieldState, props);
49
48
  const inputRef = react_1.default.useRef(null);
50
49
  const handleRef = (0, uikit_1.useForkRef)(inputRef, inputProps.controlRef);
51
50
  const calendarRef = react_1.default.useRef(null);
@@ -53,8 +52,7 @@ function useDatePickerProps(state, _a) {
53
52
  const groupRef = react_1.default.useRef(null);
54
53
  function focusInput() {
55
54
  setTimeout(() => {
56
- var _a;
57
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true });
55
+ inputRef.current?.focus({ preventScroll: true });
58
56
  });
59
57
  }
60
58
  const onlyTime = state.formatInfo.hasTime && !state.formatInfo.hasDate;
@@ -63,16 +61,33 @@ function useDatePickerProps(state, _a) {
63
61
  const DOMProps = (0, filterDOMProps_1.filterDOMProps)(props);
64
62
  delete DOMProps.id;
65
63
  return {
66
- groupProps: Object.assign(Object.assign(Object.assign(Object.assign({}, DOMProps), { ref: groupRef, tabIndex: -1, role: 'group' }), focusWithinProps), { style: props.style, 'aria-disabled': state.disabled || undefined, onKeyDown: (e) => {
67
- if (!onlyTime && e.altKey && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
64
+ groupProps: {
65
+ ...DOMProps,
66
+ ref: groupRef,
67
+ tabIndex: -1,
68
+ role: 'group',
69
+ ...focusWithinProps,
70
+ style: props.style,
71
+ 'aria-disabled': state.disabled || undefined,
72
+ onKeyDown: (e) => {
73
+ const isTargetInsideGroup = e.currentTarget.contains(e.target);
74
+ if (state.isOpen && e.key === 'Escape' && isTargetInsideGroup) {
75
+ e.preventDefault();
76
+ e.stopPropagation();
77
+ state.setOpen(false, 'EscapeKeyDown');
78
+ return;
79
+ }
80
+ if (!onlyTime &&
81
+ e.altKey &&
82
+ (e.key === 'ArrowDown' || e.key === 'ArrowUp') &&
83
+ isTargetInsideGroup) {
68
84
  e.preventDefault();
69
85
  e.stopPropagation();
70
86
  state.setOpen(true, 'ShortcutKeyDown');
71
87
  }
72
- } }),
73
- fieldProps: (0, mergeProps_1.mergeProps)(inputProps, state.dateFieldState.isEmpty && !isActive && props.placeholder
74
- ? { value: '' }
75
- : undefined, {
88
+ },
89
+ },
90
+ fieldProps: (0, mergeProps_1.mergeProps)(inputProps, {
76
91
  controlRef: handleRef,
77
92
  controlProps: { role: 'combobox', 'aria-expanded': state.isOpen },
78
93
  }),
@@ -85,24 +100,22 @@ function useDatePickerProps(state, _a) {
85
100
  'aria-expanded': state.isOpen,
86
101
  view: 'flat-secondary',
87
102
  onClick: () => {
88
- setActive(true);
89
103
  state.setOpen(!state.isOpen, 'TriggerButtonClick');
90
104
  },
91
105
  },
92
106
  popupProps: {
93
107
  open: state.isOpen,
94
108
  onOpenChange: (open, e, reason) => {
95
- var _a, _b;
96
109
  if (!open) {
97
110
  if (reason === 'escape-key') {
98
111
  state.setOpen(false, 'EscapeKeyDown');
99
112
  focusInput();
100
113
  }
101
114
  else if (reason === 'outside-press') {
102
- if (!(e === null || e === void 0 ? void 0 : e.target) || !((_a = calendarButtonRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target))) {
115
+ if (!e?.target || !calendarButtonRef.current?.contains(e.target)) {
103
116
  state.setOpen(false, 'ClickOutside');
104
117
  }
105
- if ((e === null || e === void 0 ? void 0 : e.target) && ((_b = groupRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target))) {
118
+ if (e?.target && groupRef.current?.contains(e.target)) {
106
119
  focusInput();
107
120
  }
108
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useDatePickerProps.js","sourceRoot":"../../../../../src","sources":["components/DatePicker/hooks/useDatePickerProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {isDateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useFocusWithin, useForkRef} from '@gravity-ui/uikit';\nimport type {ButtonButtonProps, PopupProps, TextInputProps} from '@gravity-ui/uikit';\n\nimport type {CalendarInstance, CalendarProps} from '../../Calendar';\nimport {useDateFieldProps} from '../../DateField';\nimport type {DateFieldProps} from '../../DateField';\nimport type {RangeValue} from '../../types';\nimport {filterDOMProps} from '../../utils/filterDOMProps';\nimport {getButtonSizeForInput} from '../../utils/getButtonSizeForInput';\nimport {mergeProps} from '../../utils/mergeProps';\nimport type {DatePickerProps} from '../DatePicker';\nimport {i18n} from '../i18n';\nimport {getCalendarModes, getDateTimeValue} from '../utils';\n\nimport type {DatePickerState} from './useDatePickerState';\n\ninterface InnerDatePickerProps<T = DateTime> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupProps: React.HTMLAttributes<unknown> & {ref: React.Ref<any>};\n fieldProps: TextInputProps;\n calendarButtonProps: ButtonButtonProps & {ref: React.Ref<HTMLButtonElement>};\n popupProps: PopupProps;\n calendarProps: CalendarProps<T> & {ref: React.Ref<CalendarInstance>};\n timeInputProps: DateFieldProps<T>;\n}\n\nexport function useDatePickerProps<T extends DateTime | RangeValue<DateTime>>(\n state: DatePickerState<T>,\n {onFocus, onBlur, ...props}: DatePickerProps<T>,\n): InnerDatePickerProps<T> {\n const [isActive, setActive] = React.useState(false);\n\n const [focusedDate, setFocusedDate] = React.useState(\n isDateTime(state.dateFieldState.displayValue)\n ? state.dateFieldState.displayValue\n : state.dateFieldState.displayValue.start,\n );\n const [prevDateValue, setPrevDateValue] = React.useState(state.dateFieldState.displayValue);\n\n if (isDateTime(prevDateValue)) {\n if (\n isDateTime(state.dateFieldState.displayValue) &&\n !state.dateFieldState.displayValue.isSame(prevDateValue, 'day')\n ) {\n setPrevDateValue(state.dateFieldState.displayValue);\n setFocusedDate(state.dateFieldState.displayValue);\n }\n } else if (!isDateTime(state.dateFieldState.displayValue)) {\n if (!state.dateFieldState.displayValue.start.isSame(prevDateValue.start, 'day')) {\n setPrevDateValue(state.dateFieldState.displayValue);\n setFocusedDate(state.dateFieldState.displayValue.start);\n } else if (!state.dateFieldState.displayValue.end.isSame(prevDateValue.end, 'day')) {\n setPrevDateValue(state.dateFieldState.displayValue);\n setFocusedDate(state.dateFieldState.displayValue.end);\n }\n }\n\n const {focusWithinProps} = useFocusWithin({\n onFocusWithin: onFocus,\n onBlurWithin: onBlur,\n onFocusWithinChange(isFocusWithin) {\n setActive(isFocusWithin);\n if (!isFocusWithin) {\n state.setOpen(false, 'FocusOut');\n }\n },\n });\n\n const {inputProps} = useDateFieldProps(state.dateFieldState, props);\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleRef = useForkRef(inputRef, inputProps.controlRef);\n\n const calendarRef = React.useRef<CalendarInstance>(null);\n const calendarButtonRef = React.useRef<HTMLButtonElement>(null);\n const groupRef = React.useRef<HTMLElement>(null);\n\n function focusInput() {\n setTimeout(() => {\n inputRef.current?.focus({preventScroll: true});\n });\n }\n\n const onlyTime = state.formatInfo.hasTime && !state.formatInfo.hasDate;\n const calendarModes = getCalendarModes(state.formatInfo);\n\n const {t} = i18n.useTranslation();\n\n const DOMProps = filterDOMProps(props);\n delete DOMProps.id;\n\n return {\n groupProps: {\n ...DOMProps,\n ref: groupRef,\n tabIndex: -1,\n role: 'group',\n ...focusWithinProps,\n style: props.style,\n 'aria-disabled': state.disabled || undefined,\n onKeyDown: (e) => {\n if (!onlyTime && e.altKey && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {\n e.preventDefault();\n e.stopPropagation();\n state.setOpen(true, 'ShortcutKeyDown');\n }\n },\n },\n fieldProps: mergeProps(\n inputProps,\n state.dateFieldState.isEmpty && !isActive && props.placeholder\n ? {value: ''}\n : undefined,\n {\n controlRef: handleRef,\n controlProps: {role: 'combobox', 'aria-expanded': state.isOpen},\n },\n ),\n calendarButtonProps: {\n ref: calendarButtonRef,\n size: getButtonSizeForInput(props.size),\n disabled: state.disabled,\n 'aria-label': t('Calendar'),\n 'aria-haspopup': 'dialog',\n 'aria-expanded': state.isOpen,\n view: 'flat-secondary',\n onClick: () => {\n setActive(true);\n state.setOpen(!state.isOpen, 'TriggerButtonClick');\n },\n },\n popupProps: {\n open: state.isOpen,\n onOpenChange: (open, e, reason) => {\n if (!open) {\n if (reason === 'escape-key') {\n state.setOpen(false, 'EscapeKeyDown');\n focusInput();\n } else if (reason === 'outside-press') {\n if (!e?.target || !calendarButtonRef.current?.contains(e.target as Node)) {\n state.setOpen(false, 'ClickOutside');\n }\n\n if (e?.target && groupRef.current?.contains(e.target as Node)) {\n focusInput();\n }\n }\n }\n },\n onTransitionOutComplete: () => {\n setFocusedDate(\n isDateTime(state.dateFieldState.displayValue)\n ? state.dateFieldState.displayValue\n : state.dateFieldState.displayValue.start,\n );\n },\n modal: !props.disableFocusTrap,\n returnFocus: !props.disableFocusTrap,\n disablePortal: props.disablePortal,\n placement: props.popupPlacement,\n offset: props.popupOffset,\n className: props.popupClassName,\n style: props.popupStyle,\n },\n calendarProps: {\n ref: calendarRef,\n autoFocus: true,\n size: props.size === 's' ? 'm' : props.size,\n disabled: props.disabled,\n readOnly: props.readOnly,\n onUpdate: (d) => {\n state.setDateValue(d);\n if (!state.formatInfo.hasTime) {\n focusInput();\n }\n },\n value: state.dateFieldState.displayValue,\n minValue: props.minValue,\n maxValue: props.maxValue,\n isDateUnavailable: props.isDateUnavailable,\n timeZone: state.timeZone,\n focusedValue: focusedDate,\n onFocusUpdate: setFocusedDate,\n modes: calendarModes,\n },\n timeInputProps: {\n value: state.timeValue,\n placeholderValue: getDateTimeValue(state.dateFieldState.displayValue),\n onUpdate: state.setTimeValue,\n format: state.timeFormat,\n readOnly: state.readOnly,\n disabled: state.disabled,\n timeZone: state.timeZone,\n hasClear: props.hasClear,\n size: props.size,\n },\n };\n}\n"]}
1
+ {"version":3,"file":"useDatePickerProps.js","sourceRoot":"../../../../../src","sources":["components/DatePicker/hooks/useDatePickerProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {isDateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useFocusWithin, useForkRef} from '@gravity-ui/uikit';\nimport type {ButtonButtonProps, PopupProps, TextInputProps} from '@gravity-ui/uikit';\n\nimport type {CalendarCommonProps, CalendarInstance} from '../../Calendar';\nimport {useDateFieldProps} from '../../DateField';\nimport type {DateFieldProps} from '../../DateField';\nimport type {RangeValue} from '../../types';\nimport {filterDOMProps} from '../../utils/filterDOMProps';\nimport {getButtonSizeForInput} from '../../utils/getButtonSizeForInput';\nimport {mergeProps} from '../../utils/mergeProps';\nimport type {DatePickerProps} from '../DatePicker';\nimport {i18n} from '../i18n';\nimport {getCalendarModes, getDateTimeValue} from '../utils';\n\nimport type {DatePickerState} from './useDatePickerState';\n\ninterface InnerDatePickerProps<T = DateTime> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupProps: React.HTMLAttributes<unknown> & {ref: React.Ref<any>};\n fieldProps: TextInputProps;\n calendarButtonProps: ButtonButtonProps & {ref: React.Ref<HTMLButtonElement>};\n popupProps: PopupProps;\n calendarProps: CalendarCommonProps<T> & {ref: React.Ref<CalendarInstance>};\n timeInputProps: DateFieldProps<T>;\n}\n\nexport function useDatePickerProps<T extends DateTime | RangeValue<DateTime>>(\n state: DatePickerState<T>,\n {onFocus, onBlur, ...props}: DatePickerProps<T>,\n): InnerDatePickerProps<T> {\n const [focusedDate, setFocusedDate] = React.useState(\n isDateTime(state.dateFieldState.displayValue)\n ? state.dateFieldState.displayValue\n : state.dateFieldState.displayValue.start,\n );\n const [prevDateValue, setPrevDateValue] = React.useState(state.dateFieldState.displayValue);\n\n if (isDateTime(prevDateValue)) {\n if (\n isDateTime(state.dateFieldState.displayValue) &&\n !state.dateFieldState.displayValue.isSame(prevDateValue, 'day')\n ) {\n setPrevDateValue(state.dateFieldState.displayValue);\n setFocusedDate(state.dateFieldState.displayValue);\n }\n } else if (!isDateTime(state.dateFieldState.displayValue)) {\n if (!state.dateFieldState.displayValue.start.isSame(prevDateValue.start, 'day')) {\n setPrevDateValue(state.dateFieldState.displayValue);\n setFocusedDate(state.dateFieldState.displayValue.start);\n } else if (!state.dateFieldState.displayValue.end.isSame(prevDateValue.end, 'day')) {\n setPrevDateValue(state.dateFieldState.displayValue);\n setFocusedDate(state.dateFieldState.displayValue.end);\n }\n }\n\n const {inputProps} = useDateFieldProps(state.dateFieldState, props);\n\n const {focusWithinProps} = useFocusWithin({\n onFocusWithin: onFocus,\n onBlurWithin: onBlur,\n onFocusWithinChange(isFocusWithin) {\n state.dateFieldState.setActive(isFocusWithin);\n if (!isFocusWithin) {\n state.setOpen(false, 'FocusOut');\n state.dateFieldState.confirmPlaceholder();\n }\n },\n });\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleRef = useForkRef(inputRef, inputProps.controlRef);\n\n const calendarRef = React.useRef<CalendarInstance>(null);\n const calendarButtonRef = React.useRef<HTMLButtonElement>(null);\n const groupRef = React.useRef<HTMLElement>(null);\n\n function focusInput() {\n setTimeout(() => {\n inputRef.current?.focus({preventScroll: true});\n });\n }\n\n const onlyTime = state.formatInfo.hasTime && !state.formatInfo.hasDate;\n const calendarModes = getCalendarModes(state.formatInfo);\n\n const {t} = i18n.useTranslation();\n\n const DOMProps = filterDOMProps(props);\n delete DOMProps.id;\n\n return {\n groupProps: {\n ...DOMProps,\n ref: groupRef,\n tabIndex: -1,\n role: 'group',\n ...focusWithinProps,\n style: props.style,\n 'aria-disabled': state.disabled || undefined,\n onKeyDown: (e) => {\n const isTargetInsideGroup = (e.currentTarget as HTMLElement).contains(\n e.target as Node,\n );\n\n if (state.isOpen && e.key === 'Escape' && isTargetInsideGroup) {\n e.preventDefault();\n e.stopPropagation();\n state.setOpen(false, 'EscapeKeyDown');\n return;\n }\n\n if (\n !onlyTime &&\n e.altKey &&\n (e.key === 'ArrowDown' || e.key === 'ArrowUp') &&\n isTargetInsideGroup\n ) {\n e.preventDefault();\n e.stopPropagation();\n state.setOpen(true, 'ShortcutKeyDown');\n }\n },\n },\n fieldProps: mergeProps(inputProps, {\n controlRef: handleRef,\n controlProps: {role: 'combobox', 'aria-expanded': state.isOpen},\n }),\n calendarButtonProps: {\n ref: calendarButtonRef,\n size: getButtonSizeForInput(props.size),\n disabled: state.disabled,\n 'aria-label': t('Calendar'),\n 'aria-haspopup': 'dialog',\n 'aria-expanded': state.isOpen,\n view: 'flat-secondary',\n onClick: () => {\n state.setOpen(!state.isOpen, 'TriggerButtonClick');\n },\n },\n popupProps: {\n open: state.isOpen,\n onOpenChange: (open, e, reason) => {\n if (!open) {\n if (reason === 'escape-key') {\n state.setOpen(false, 'EscapeKeyDown');\n focusInput();\n } else if (reason === 'outside-press') {\n if (!e?.target || !calendarButtonRef.current?.contains(e.target as Node)) {\n state.setOpen(false, 'ClickOutside');\n }\n\n if (e?.target && groupRef.current?.contains(e.target as Node)) {\n focusInput();\n }\n }\n }\n },\n onTransitionOutComplete: () => {\n setFocusedDate(\n isDateTime(state.dateFieldState.displayValue)\n ? state.dateFieldState.displayValue\n : state.dateFieldState.displayValue.start,\n );\n },\n modal: !props.disableFocusTrap,\n returnFocus: !props.disableFocusTrap,\n disablePortal: props.disablePortal,\n placement: props.popupPlacement,\n offset: props.popupOffset,\n className: props.popupClassName,\n style: props.popupStyle,\n },\n calendarProps: {\n ref: calendarRef,\n autoFocus: true,\n size: props.size === 's' ? 'm' : props.size,\n disabled: props.disabled,\n readOnly: props.readOnly,\n onUpdate: (d) => {\n state.setDateValue(d);\n if (!state.formatInfo.hasTime) {\n focusInput();\n }\n },\n value: state.dateFieldState.displayValue,\n minValue: props.minValue,\n maxValue: props.maxValue,\n isDateUnavailable: props.isDateUnavailable,\n timeZone: state.timeZone,\n focusedValue: focusedDate,\n onFocusUpdate: setFocusedDate,\n modes: calendarModes,\n },\n timeInputProps: {\n value: state.timeValue,\n placeholderValue: getDateTimeValue(state.dateFieldState.displayValue),\n onUpdate: state.setTimeValue,\n format: state.timeFormat,\n readOnly: state.readOnly,\n disabled: state.disabled,\n timeZone: state.timeZone,\n hasClear: props.hasClear,\n size: props.size,\n },\n };\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  interface HiddenInputProps<T> {
2
3
  value: T;
3
4
  onReset?: (value: T) => void;
@@ -6,9 +7,5 @@ interface HiddenInputProps<T> {
6
7
  disabled?: boolean;
7
8
  form?: string;
8
9
  }
9
- export declare function HiddenInput<T>({ name, value, onReset, form, disabled, toStringValue, }: HiddenInputProps<T>): import("react/jsx-runtime").JSX.Element | null;
10
- export declare function useFormResetHandler<T>({ initialValue, onReset, }: {
11
- initialValue: T;
12
- onReset?: (value: T) => void;
13
- }): (node: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null) => void;
10
+ export declare function HiddenInput<T>({ name, value, onReset, form, disabled, toStringValue, }: HiddenInputProps<T>): React.JSX.Element | null;
14
11
  export {};
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HiddenInput = HiddenInput;
4
- exports.useFormResetHandler = useFormResetHandler;
5
4
  const tslib_1 = require("tslib");
6
5
  const jsx_runtime_1 = require("react/jsx-runtime");
7
6
  const react_1 = tslib_1.__importDefault(require("react"));
@@ -10,7 +9,7 @@ function HiddenInput({ name, value, onReset, form, disabled, toStringValue, }) {
10
9
  if (!name) {
11
10
  return null;
12
11
  }
13
- const v = toStringValue ? toStringValue(value) : `${value !== null && value !== void 0 ? value : ''}`;
12
+ const v = toStringValue ? toStringValue(value) : `${value ?? ''}`;
14
13
  return (0, jsx_runtime_1.jsx)("input", { ref: ref, type: "hidden", name: name, value: v, disabled: disabled, form: form });
15
14
  }
16
15
  function useFormResetHandler({ initialValue, onReset, }) {
@@ -29,8 +28,7 @@ function useFormResetHandler({ initialValue, onReset, }) {
29
28
  };
30
29
  }, [formElement, onReset]);
31
30
  const ref = react_1.default.useCallback((node) => {
32
- var _a;
33
- setFormElement((_a = node === null || node === void 0 ? void 0 : node.form) !== null && _a !== void 0 ? _a : null);
31
+ setFormElement(node?.form ?? null);
34
32
  }, []);
35
33
  return ref;
36
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HiddenInput.js","sourceRoot":"../../../../src","sources":["components/HiddenInput/HiddenInput.tsx"],"names":[],"mappings":";;AAUA,kCAgBC;AAED,kDAkCC;;;AA9DD,0DAA0B;AAU1B,SAAgB,WAAW,CAAI,EAC3B,IAAI,EACJ,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,aAAa,GACK;IAClB,MAAM,GAAG,GAAG,mBAAmB,CAAI,EAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;IAEnE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,EAAE,CAAC;IAClE,OAAO,kCAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;AACnG,CAAC;AAED,SAAgB,mBAAmB,CAAI,EACnC,YAAY,EACZ,OAAO,GAIV;IACG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAEnF,MAAM,UAAU,GAAG,eAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE9C,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,EAAE;YACrB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE;YACR,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3B,MAAM,GAAG,GAAG,eAAK,CAAC,WAAW,CACzB,CAAC,IAAuE,EAAE,EAAE;;QACxE,cAAc,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mCAAI,IAAI,CAAC,CAAC;IACvC,CAAC,EACD,EAAE,CACL,CAAC;IAEF,OAAO,GAAG,CAAC;AACf,CAAC","sourcesContent":["import React from 'react';\n\ninterface HiddenInputProps<T> {\n value: T;\n onReset?: (value: T) => void;\n toStringValue?: (value: T) => string;\n name?: string;\n disabled?: boolean;\n form?: string;\n}\nexport function HiddenInput<T>({\n name,\n value,\n onReset,\n form,\n disabled,\n toStringValue,\n}: HiddenInputProps<T>) {\n const ref = useFormResetHandler<T>({initialValue: value, onReset});\n\n if (!name) {\n return null;\n }\n\n const v = toStringValue ? toStringValue(value) : `${value ?? ''}`;\n return <input ref={ref} type=\"hidden\" name={name} value={v} disabled={disabled} form={form} />;\n}\n\nexport function useFormResetHandler<T>({\n initialValue,\n onReset,\n}: {\n initialValue: T;\n onReset?: (value: T) => void;\n}) {\n const [formElement, setFormElement] = React.useState<HTMLFormElement | null>(null);\n\n const resetValue = React.useRef(initialValue);\n\n React.useEffect(() => {\n if (!formElement || !onReset) {\n return undefined;\n }\n\n const handleReset = () => {\n onReset(resetValue.current);\n };\n\n formElement.addEventListener('reset', handleReset);\n return () => {\n formElement.removeEventListener('reset', handleReset);\n };\n }, [formElement, onReset]);\n\n const ref = React.useCallback(\n (node: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null) => {\n setFormElement(node?.form ?? null);\n },\n [],\n );\n\n return ref;\n}\n"]}
1
+ {"version":3,"file":"HiddenInput.js","sourceRoot":"../../../../src","sources":["components/HiddenInput/HiddenInput.tsx"],"names":[],"mappings":";;AAUA,kCAgBC;;;AA1BD,0DAA0B;AAU1B,SAAgB,WAAW,CAAI,EAC3B,IAAI,EACJ,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,aAAa,GACK;IAClB,MAAM,GAAG,GAAG,mBAAmB,CAAI,EAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;IAEnE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC;IAClE,OAAO,kCAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;AACnG,CAAC;AAED,SAAS,mBAAmB,CAAI,EAC5B,YAAY,EACZ,OAAO,GAIV;IACG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAEnF,MAAM,UAAU,GAAG,eAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE9C,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,EAAE;YACrB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE;YACR,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3B,MAAM,GAAG,GAAG,eAAK,CAAC,WAAW,CACzB,CAAC,IAAuE,EAAE,EAAE;QACxE,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACvC,CAAC,EACD,EAAE,CACL,CAAC;IAEF,OAAO,GAAG,CAAC;AACf,CAAC","sourcesContent":["import React from 'react';\n\ninterface HiddenInputProps<T> {\n value: T;\n onReset?: (value: T) => void;\n toStringValue?: (value: T) => string;\n name?: string;\n disabled?: boolean;\n form?: string;\n}\nexport function HiddenInput<T>({\n name,\n value,\n onReset,\n form,\n disabled,\n toStringValue,\n}: HiddenInputProps<T>) {\n const ref = useFormResetHandler<T>({initialValue: value, onReset});\n\n if (!name) {\n return null;\n }\n\n const v = toStringValue ? toStringValue(value) : `${value ?? ''}`;\n return <input ref={ref} type=\"hidden\" name={name} value={v} disabled={disabled} form={form} />;\n}\n\nfunction useFormResetHandler<T>({\n initialValue,\n onReset,\n}: {\n initialValue: T;\n onReset?: (value: T) => void;\n}) {\n const [formElement, setFormElement] = React.useState<HTMLFormElement | null>(null);\n\n const resetValue = React.useRef(initialValue);\n\n React.useEffect(() => {\n if (!formElement || !onReset) {\n return undefined;\n }\n\n const handleReset = () => {\n onReset(resetValue.current);\n };\n\n formElement.addEventListener('reset', handleReset);\n return () => {\n formElement.removeEventListener('reset', handleReset);\n };\n }, [formElement, onReset]);\n\n const ref = React.useCallback(\n (node: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null) => {\n setFormElement(node?.form ?? null);\n },\n [],\n );\n\n return ref;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { DateTime } from '@gravity-ui/date-utils';
3
- import type { CalendarProps } from "../Calendar/Calendar.js";
3
+ import type { CalendarCommonProps } from "../Calendar/Calendar.js";
4
4
  import type { CalendarInstance } from "../CalendarView/CalendarView.js";
5
5
  import type { RangeValue } from "../types/index.js";
6
6
  import "../CalendarView/Calendar.css";
7
- export type RangeCalendarProps = CalendarProps<RangeValue<DateTime>>;
7
+ export type RangeCalendarProps = CalendarCommonProps<RangeValue<DateTime>>;
8
8
  export declare const RangeCalendar: React.ForwardRefExoticComponent<RangeCalendarProps & React.RefAttributes<CalendarInstance>>;
@@ -11,12 +11,11 @@ require("../CalendarView/Calendar.css");
11
11
  exports.RangeCalendar = react_1.default.forwardRef(function Calendar(props, ref) {
12
12
  const state = (0, useRangeCalendarState_1.useRangeCalendarState)(props);
13
13
  const handleBlur = (e) => {
14
- var _a;
15
14
  if (state.anchorDate) {
16
15
  state.selectFocusedDate();
17
16
  }
18
- (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);
17
+ props.onBlur?.(e);
19
18
  };
20
- return (0, jsx_runtime_1.jsx)(CalendarView_1.CalendarView, Object.assign({ ref: ref }, props, { state: state, onBlur: handleBlur }));
19
+ return (0, jsx_runtime_1.jsx)(CalendarView_1.CalendarView, { ref: ref, ...props, state: state, onBlur: handleBlur });
21
20
  });
22
21
  //# sourceMappingURL=RangeCalendar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangeCalendar.js","sourceRoot":"../../../../src","sources":["components/RangeCalendar/RangeCalendar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,0DAA0B;AAK1B,kEAA0D;AAE1D,0FAAkF;AAGlF,wCAAuC;AAI1B,QAAA,aAAa,GAAG,eAAK,CAAC,UAAU,CACzC,SAAS,QAAQ,CAAC,KAAyB,EAAE,GAAG;IAC5C,MAAM,KAAK,GAAG,IAAA,6CAAqB,EAAC,KAAK,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,CAAC,CAAmB,EAAE,EAAE;;QACvC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC9B,CAAC;QACD,MAAA,KAAK,CAAC,MAAM,sDAAG,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC;IACF,OAAO,uBAAC,2BAAY,kBAAC,GAAG,EAAE,GAAG,IAAM,KAAK,IAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;AACnF,CAAC,CACJ,CAAC","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {CalendarProps} from '../Calendar/Calendar';\nimport {CalendarView} from '../CalendarView/CalendarView';\nimport type {CalendarInstance} from '../CalendarView/CalendarView';\nimport {useRangeCalendarState} from '../CalendarView/hooks/useRangeCalendarState';\nimport type {RangeValue} from '../types';\n\nimport '../CalendarView/Calendar.scss';\n\nexport type RangeCalendarProps = CalendarProps<RangeValue<DateTime>>;\n\nexport const RangeCalendar = React.forwardRef<CalendarInstance, RangeCalendarProps>(\n function Calendar(props: RangeCalendarProps, ref) {\n const state = useRangeCalendarState(props);\n\n const handleBlur = (e: React.FocusEvent) => {\n if (state.anchorDate) {\n state.selectFocusedDate();\n }\n props.onBlur?.(e);\n };\n return <CalendarView ref={ref} {...props} state={state} onBlur={handleBlur} />;\n },\n);\n"]}
1
+ {"version":3,"file":"RangeCalendar.js","sourceRoot":"../../../../src","sources":["components/RangeCalendar/RangeCalendar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,0DAA0B;AAK1B,kEAA0D;AAE1D,0FAAkF;AAGlF,wCAAuC;AAI1B,QAAA,aAAa,GAAG,eAAK,CAAC,UAAU,CACzC,SAAS,QAAQ,CAAC,KAAyB,EAAE,GAAG;IAC5C,MAAM,KAAK,GAAG,IAAA,6CAAqB,EAAC,KAAK,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,CAAC,CAAmB,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC;IACF,OAAO,uBAAC,2BAAY,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAI,CAAC;AACnF,CAAC,CACJ,CAAC","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {CalendarCommonProps} from '../Calendar/Calendar';\nimport {CalendarView} from '../CalendarView/CalendarView';\nimport type {CalendarInstance} from '../CalendarView/CalendarView';\nimport {useRangeCalendarState} from '../CalendarView/hooks/useRangeCalendarState';\nimport type {RangeValue} from '../types';\n\nimport '../CalendarView/Calendar.scss';\n\nexport type RangeCalendarProps = CalendarCommonProps<RangeValue<DateTime>>;\n\nexport const RangeCalendar = React.forwardRef<CalendarInstance, RangeCalendarProps>(\n function Calendar(props: RangeCalendarProps, ref) {\n const state = useRangeCalendarState(props);\n\n const handleBlur = (e: React.FocusEvent) => {\n if (state.anchorDate) {\n state.selectFocusedDate();\n }\n props.onBlur?.(e);\n };\n return <CalendarView ref={ref} {...props} state={state} onBlur={handleBlur} />;\n },\n);\n"]}
@@ -9,4 +9,4 @@ export type RangeDateFieldProps = DateFieldProps<RangeValue<DateTime>> & {
9
9
  */
10
10
  delimiter?: string;
11
11
  };
12
- export declare function RangeDateField({ className, ...props }: RangeDateFieldProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function RangeDateField({ className, ...props }: RangeDateFieldProps): import("react").JSX.Element;
@@ -2,32 +2,19 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.RangeDateField = RangeDateField;
5
- const tslib_1 = require("tslib");
6
5
  const jsx_runtime_1 = require("react/jsx-runtime");
7
- const react_1 = tslib_1.__importDefault(require("react"));
8
6
  const uikit_1 = require("@gravity-ui/uikit");
9
7
  const cn_1 = require("../../utils/cn.js");
10
8
  const useDateFieldProps_1 = require("../DateField/hooks/useDateFieldProps.js");
9
+ const useRangeDateFieldState_1 = require("../DateField/hooks/useRangeDateFieldState.js");
11
10
  const HiddenInput_1 = require("../HiddenInput/HiddenInput.js");
12
- const filterDOMProps_1 = require("../utils/filterDOMProps.js");
13
- const useRangeDateFieldState_1 = require("./hooks/useRangeDateFieldState.js");
14
11
  require("./RangeDateField.css");
15
12
  const b = (0, cn_1.block)('range-date-field');
16
- function RangeDateField(_a) {
17
- var _b, _c;
18
- var { className } = _a, props = tslib_1.__rest(_a, ["className"]);
13
+ function RangeDateField({ className, ...props }) {
19
14
  const state = (0, useRangeDateFieldState_1.useRangeDateFieldState)(props);
20
- const { inputProps } = (0, useDateFieldProps_1.useDateFieldProps)(state, props);
21
- const [isActive, setActive] = react_1.default.useState(false);
22
- const { focusWithinProps } = (0, uikit_1.useFocusWithin)({
23
- onFocusWithinChange(isFocusWithin) {
24
- setActive(isFocusWithin);
25
- },
26
- });
27
- const DOMProps = (0, filterDOMProps_1.filterDOMProps)(props);
28
- delete DOMProps.id;
29
- return ((0, jsx_runtime_1.jsxs)("div", Object.assign({}, DOMProps, { className: b(null, className), style: props.style }, focusWithinProps, { children: [(0, jsx_runtime_1.jsx)(uikit_1.TextInput, Object.assign({}, inputProps, { value: state.isEmpty && !isActive && props.placeholder ? '' : inputProps.value })), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, onReset: (v) => {
30
- state.setDate(v);
31
- }, value: (_b = state.value) !== null && _b !== void 0 ? _b : null, toStringValue: (v) => (v ? v.start.toISOString() : ''), disabled: state.disabled }), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, value: (_c = state.value) !== null && _c !== void 0 ? _c : null, toStringValue: (v) => (v ? v.end.toISOString() : ''), disabled: state.disabled })] })));
15
+ const { groupProps, inputProps } = (0, useDateFieldProps_1.useDateFieldProps)(state, props);
16
+ return ((0, jsx_runtime_1.jsxs)("div", { ...groupProps, className: b(null, className), style: props.style, children: [(0, jsx_runtime_1.jsx)(uikit_1.TextInput, { ...inputProps }), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, onReset: (v) => {
17
+ state.setValue(v);
18
+ }, value: state.value ?? null, toStringValue: (v) => (v ? v.start.toISOString() : ''), disabled: state.disabled }), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, value: state.value ?? null, toStringValue: (v) => (v ? v.end.toISOString() : ''), disabled: state.disabled })] }));
32
19
  }
33
20
  //# sourceMappingURL=RangeDateField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangeDateField.js","sourceRoot":"../../../../src","sources":["components/RangeDateField/RangeDateField.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AA4Bb,wCAwCC;;;AAlED,0DAA0B;AAG1B,6CAA4D;AAE5D,0CAAqC;AACrC,+EAAuE;AAEvE,+DAAuD;AAEvD,+DAAuD;AAEvD,8EAAsE;AAEtE,gCAA+B;AAE/B,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,kBAAkB,CAAC,CAAC;AAUpC,SAAgB,cAAc,CAAC,EAA0C;;QAA1C,EAAC,SAAS,OAAgC,EAA3B,KAAK,sBAApB,aAAqB,CAAD;IAC/C,MAAM,KAAK,GAAG,IAAA,+CAAsB,EAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,EAAC,UAAU,EAAC,GAAG,IAAA,qCAAiB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAErD,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,EAAC,gBAAgB,EAAC,GAAG,IAAA,sBAAc,EAAC;QACtC,mBAAmB,CAAC,aAAa;YAC7B,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,EAAE,CAAC;IAEnB,OAAO,CACH,iDAAS,QAAQ,IAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAM,gBAAgB,eACtF,uBAAC,iBAAS,oBACF,UAAU,IACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAChF,EACF,uBAAC,yBAAW,IACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACX,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,EACD,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,mCAAI,IAAI,EAC1B,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACtD,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAC1B,EACF,uBAAC,yBAAW,IACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,mCAAI,IAAI,EAC1B,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAC1B,KACA,CACT,CAAC;AACN,CAAC","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {TextInput, useFocusWithin} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {useDateFieldProps} from '../DateField/hooks/useDateFieldProps';\nimport type {DateFieldProps} from '../DateField/hooks/useDateFieldProps';\nimport {HiddenInput} from '../HiddenInput/HiddenInput';\nimport type {RangeValue} from '../types';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {useRangeDateFieldState} from './hooks/useRangeDateFieldState';\n\nimport './RangeDateField.scss';\n\nconst b = block('range-date-field');\n\nexport type RangeDateFieldProps = DateFieldProps<RangeValue<DateTime>> & {\n /**\n * Delimiter separating the start and end parts of the range.\n * @default ' — '\n */\n delimiter?: string;\n};\n\nexport function RangeDateField({className, ...props}: RangeDateFieldProps) {\n const state = useRangeDateFieldState(props);\n\n const {inputProps} = useDateFieldProps(state, props);\n\n const [isActive, setActive] = React.useState(false);\n const {focusWithinProps} = useFocusWithin({\n onFocusWithinChange(isFocusWithin) {\n setActive(isFocusWithin);\n },\n });\n\n const DOMProps = filterDOMProps(props);\n delete DOMProps.id;\n\n return (\n <div {...DOMProps} className={b(null, className)} style={props.style} {...focusWithinProps}>\n <TextInput\n {...inputProps}\n value={state.isEmpty && !isActive && props.placeholder ? '' : inputProps.value}\n />\n <HiddenInput\n name={props.name}\n form={props.form}\n onReset={(v) => {\n state.setDate(v);\n }}\n value={state.value ?? null}\n toStringValue={(v) => (v ? v.start.toISOString() : '')}\n disabled={state.disabled}\n />\n <HiddenInput\n name={props.name}\n form={props.form}\n value={state.value ?? null}\n toStringValue={(v) => (v ? v.end.toISOString() : '')}\n disabled={state.disabled}\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"RangeDateField.js","sourceRoot":"../../../../src","sources":["components/RangeDateField/RangeDateField.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAwBb,wCA2BC;;AAhDD,6CAA4C;AAE5C,0CAAqC;AACrC,+EAAuE;AAEvE,yFAAiF;AACjF,+DAAuD;AAGvD,gCAA+B;AAE/B,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,kBAAkB,CAAC,CAAC;AAUpC,SAAgB,cAAc,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAsB;IACrE,MAAM,KAAK,GAAG,IAAA,+CAAsB,EAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,EAAC,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,qCAAiB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEjE,OAAO,CACH,oCAAS,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,aAClE,uBAAC,iBAAS,OAAK,UAAU,GAAI,EAC7B,uBAAC,yBAAW,IACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACX,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAC1B,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACtD,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAC1B,EACF,uBAAC,yBAAW,IACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAC1B,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAC1B,IACA,CACT,CAAC;AACN,CAAC","sourcesContent":["'use client';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {TextInput} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {useDateFieldProps} from '../DateField/hooks/useDateFieldProps';\nimport type {DateFieldProps} from '../DateField/hooks/useDateFieldProps';\nimport {useRangeDateFieldState} from '../DateField/hooks/useRangeDateFieldState';\nimport {HiddenInput} from '../HiddenInput/HiddenInput';\nimport type {RangeValue} from '../types';\n\nimport './RangeDateField.scss';\n\nconst b = block('range-date-field');\n\nexport type RangeDateFieldProps = DateFieldProps<RangeValue<DateTime>> & {\n /**\n * Delimiter separating the start and end parts of the range.\n * @default ' — '\n */\n delimiter?: string;\n};\n\nexport function RangeDateField({className, ...props}: RangeDateFieldProps) {\n const state = useRangeDateFieldState(props);\n\n const {groupProps, inputProps} = useDateFieldProps(state, props);\n\n return (\n <div {...groupProps} className={b(null, className)} style={props.style}>\n <TextInput {...inputProps} />\n <HiddenInput\n name={props.name}\n form={props.form}\n onReset={(v) => {\n state.setValue(v);\n }}\n value={state.value ?? null}\n toStringValue={(v) => (v ? v.start.toISOString() : '')}\n disabled={state.disabled}\n />\n <HiddenInput\n name={props.name}\n form={props.form}\n value={state.value ?? null}\n toStringValue={(v) => (v ? v.end.toISOString() : '')}\n disabled={state.disabled}\n />\n </div>\n );\n}\n"]}
@@ -1,2 +1 @@
1
1
  export * from "./RangeDateField.js";
2
- export * from "./hooks/useRangeDateFieldState.js";
@@ -2,5 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./RangeDateField.js"), exports);
5
- tslib_1.__exportStar(require("./hooks/useRangeDateFieldState.js"), exports);
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["components/RangeDateField/index.ts"],"names":[],"mappings":";;;AAAA,8DAAiC;AAEjC,4EAA+C","sourcesContent":["export * from './RangeDateField';\n\nexport * from './hooks/useRangeDateFieldState';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["components/RangeDateField/index.ts"],"names":[],"mappings":";;;AAAA,8DAAiC","sourcesContent":["export * from './RangeDateField';\n"]}
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import type { DateTime } from '@gravity-ui/date-utils';
2
3
  import type { DatePickerProps } from "../DatePicker/index.js";
3
4
  import type { RangeValue } from "../types/index.js";
4
5
  import "./RangeDatePicker.css";
5
6
  export type RangeDatePickerProps = DatePickerProps<RangeValue<DateTime>>;
6
- export declare function RangeDatePicker({ className, ...props }: RangeDatePickerProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function RangeDatePicker({ className, ...props }: RangeDatePickerProps): React.JSX.Element;
@@ -16,14 +16,13 @@ const RangeDateField_1 = require("../RangeDateField/index.js");
16
16
  const useRangeDatePickerState_1 = require("./hooks/useRangeDatePickerState.js");
17
17
  require("./RangeDatePicker.css");
18
18
  const b = (0, cn_1.block)('range-date-picker');
19
- function RangeDatePicker(_a) {
20
- var { className } = _a, props = tslib_1.__rest(_a, ["className"]);
19
+ function RangeDatePicker({ className, ...props }) {
21
20
  const [anchor, setAnchor] = react_1.default.useState(null);
22
21
  const state = (0, useRangeDatePickerState_1.useRangeDatePickerState)(props);
23
22
  const { groupProps, fieldProps, calendarButtonProps, popupProps, calendarProps, timeInputProps } = (0, DatePicker_1.useDatePickerProps)(state, props);
24
23
  const isOnlyTime = state.formatInfo.hasTime && !state.formatInfo.hasDate;
25
- return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: b(null, className) }, groupProps, { children: [!isOnlyTime && ((0, jsx_runtime_1.jsx)("div", { ref: setAnchor, className: b('popup-anchor'), children: (0, jsx_runtime_1.jsx)(uikit_1.Popup, Object.assign({ anchorElement: anchor }, popupProps, { children: (0, jsx_runtime_1.jsxs)("div", { className: b('popup-content'), children: [typeof props.children === 'function' ? (props.children(Object.assign(Object.assign({}, calendarProps), { value: state.value }))) : ((0, jsx_runtime_1.jsx)(Calendar_1.RangeCalendar, Object.assign({}, calendarProps, { value: state.value }))), state.formatInfo.hasTime && ((0, jsx_runtime_1.jsx)("div", { className: b('time-field-wrapper'), children: (0, jsx_runtime_1.jsx)(RangeDateField_1.RangeDateField, Object.assign({}, timeInputProps)) }))] }) })) })), (0, jsx_runtime_1.jsx)(uikit_1.TextInput, Object.assign({}, fieldProps, { className: b('field'), endContent: (0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [!isOnlyTime && ((0, jsx_runtime_1.jsx)(uikit_1.Button, Object.assign({}, calendarButtonProps, { children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icons_1.Calendar }) }))), isOnlyTime && ((0, jsx_runtime_1.jsx)(StubButton_1.StubButton, { size: calendarButtonProps.size, icon: icons_1.Clock }))] }) })), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, onReset: (v) => {
26
- state.dateFieldState.setDate(v);
27
- }, value: state.value, toStringValue: (v) => (v ? v.start.toISOString() : ''), disabled: state.disabled }), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, value: state.value, toStringValue: (v) => (v ? v.end.toISOString() : ''), disabled: state.disabled })] })));
24
+ return ((0, jsx_runtime_1.jsxs)("div", { className: b(null, className), ...groupProps, children: [!isOnlyTime && ((0, jsx_runtime_1.jsx)("div", { ref: setAnchor, className: b('popup-anchor'), children: (0, jsx_runtime_1.jsx)(uikit_1.Popup, { anchorElement: anchor, ...popupProps, children: (0, jsx_runtime_1.jsxs)("div", { className: b('popup-content'), children: [typeof props.children === 'function' ? (props.children({ ...calendarProps, value: state.value })) : ((0, jsx_runtime_1.jsx)(Calendar_1.RangeCalendar, { ...calendarProps, value: state.value })), state.formatInfo.hasTime && ((0, jsx_runtime_1.jsx)("div", { className: b('time-field-wrapper'), children: (0, jsx_runtime_1.jsx)(RangeDateField_1.RangeDateField, { ...timeInputProps }) }))] }) }) })), (0, jsx_runtime_1.jsx)(uikit_1.TextInput, { ...fieldProps, className: b('field'), endContent: (0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [!isOnlyTime && ((0, jsx_runtime_1.jsx)(uikit_1.Button, { ...calendarButtonProps, children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icons_1.Calendar }) })), isOnlyTime && ((0, jsx_runtime_1.jsx)(StubButton_1.StubButton, { size: calendarButtonProps.size, icon: icons_1.Clock }))] }) }), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, onReset: (v) => {
25
+ state.dateFieldState.setValue(v);
26
+ }, value: state.value, toStringValue: (v) => (v ? v.start.toISOString() : ''), disabled: state.disabled }), (0, jsx_runtime_1.jsx)(HiddenInput_1.HiddenInput, { name: props.name, form: props.form, value: state.value, toStringValue: (v) => (v ? v.end.toISOString() : ''), disabled: state.disabled })] }));
28
27
  }
29
28
  //# sourceMappingURL=RangeDatePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangeDatePicker.js","sourceRoot":"../../../../src","sources":["components/RangeDatePicker/RangeDatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {Calendar as CalendarIcon, Clock as ClockIcon} from '@gravity-ui/icons';\nimport {Button, Icon, Popup, TextInput} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {RangeCalendar} from '../Calendar';\nimport {useDatePickerProps} from '../DatePicker';\nimport type {DatePickerProps} from '../DatePicker';\nimport {StubButton} from '../DatePicker/StubButton';\nimport {HiddenInput} from '../HiddenInput/HiddenInput';\nimport {RangeDateField} from '../RangeDateField';\nimport type {RangeValue} from '../types';\n\nimport {useRangeDatePickerState} from './hooks/useRangeDatePickerState';\n\nimport './RangeDatePicker.scss';\n\nconst b = block('range-date-picker');\n\nexport type RangeDatePickerProps = DatePickerProps<RangeValue<DateTime>>;\n\nexport function RangeDatePicker({className, ...props}: RangeDatePickerProps) {\n const [anchor, setAnchor] = React.useState<HTMLDivElement | null>(null);\n\n const state = useRangeDatePickerState(props);\n\n const {groupProps, fieldProps, calendarButtonProps, popupProps, calendarProps, timeInputProps} =\n useDatePickerProps(state, props);\n\n const isOnlyTime = state.formatInfo.hasTime && !state.formatInfo.hasDate;\n\n return (\n <div className={b(null, className)} {...groupProps}>\n {!isOnlyTime && (\n <div ref={setAnchor} className={b('popup-anchor')}>\n <Popup anchorElement={anchor} {...popupProps}>\n <div className={b('popup-content')}>\n {typeof props.children === 'function' ? (\n props.children({...calendarProps, value: state.value})\n ) : (\n <RangeCalendar {...calendarProps} value={state.value} />\n )}\n {state.formatInfo.hasTime && (\n <div className={b('time-field-wrapper')}>\n <RangeDateField {...timeInputProps} />\n </div>\n )}\n </div>\n </Popup>\n </div>\n )}\n <TextInput\n {...fieldProps}\n className={b('field')}\n endContent={\n <React.Fragment>\n {!isOnlyTime && (\n <Button {...calendarButtonProps}>\n <Icon data={CalendarIcon} />\n </Button>\n )}\n {isOnlyTime && (\n <StubButton size={calendarButtonProps.size} icon={ClockIcon} />\n )}\n </React.Fragment>\n }\n />\n <HiddenInput\n name={props.name}\n form={props.form}\n onReset={(v) => {\n state.dateFieldState.setDate(v);\n }}\n value={state.value}\n toStringValue={(v) => (v ? v.start.toISOString() : '')}\n disabled={state.disabled}\n />\n <HiddenInput\n name={props.name}\n form={props.form}\n value={state.value}\n toStringValue={(v) => (v ? v.end.toISOString() : '')}\n disabled={state.disabled}\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"RangeDatePicker.js","sourceRoot":"../../../../src","sources":["components/RangeDatePicker/RangeDatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {Calendar as CalendarIcon, Clock as ClockIcon} from '@gravity-ui/icons';\nimport {Button, Icon, Popup, TextInput} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport {RangeCalendar} from '../Calendar';\nimport {useDatePickerProps} from '../DatePicker';\nimport type {DatePickerProps} from '../DatePicker';\nimport {StubButton} from '../DatePicker/StubButton';\nimport {HiddenInput} from '../HiddenInput/HiddenInput';\nimport {RangeDateField} from '../RangeDateField';\nimport type {RangeValue} from '../types';\n\nimport {useRangeDatePickerState} from './hooks/useRangeDatePickerState';\n\nimport './RangeDatePicker.scss';\n\nconst b = block('range-date-picker');\n\nexport type RangeDatePickerProps = DatePickerProps<RangeValue<DateTime>>;\n\nexport function RangeDatePicker({className, ...props}: RangeDatePickerProps) {\n const [anchor, setAnchor] = React.useState<HTMLDivElement | null>(null);\n\n const state = useRangeDatePickerState(props);\n\n const {groupProps, fieldProps, calendarButtonProps, popupProps, calendarProps, timeInputProps} =\n useDatePickerProps(state, props);\n\n const isOnlyTime = state.formatInfo.hasTime && !state.formatInfo.hasDate;\n\n return (\n <div className={b(null, className)} {...groupProps}>\n {!isOnlyTime && (\n <div ref={setAnchor} className={b('popup-anchor')}>\n <Popup anchorElement={anchor} {...popupProps}>\n <div className={b('popup-content')}>\n {typeof props.children === 'function' ? (\n props.children({...calendarProps, value: state.value})\n ) : (\n <RangeCalendar {...calendarProps} value={state.value} />\n )}\n {state.formatInfo.hasTime && (\n <div className={b('time-field-wrapper')}>\n <RangeDateField {...timeInputProps} />\n </div>\n )}\n </div>\n </Popup>\n </div>\n )}\n <TextInput\n {...fieldProps}\n className={b('field')}\n endContent={\n <React.Fragment>\n {!isOnlyTime && (\n <Button {...calendarButtonProps}>\n <Icon data={CalendarIcon} />\n </Button>\n )}\n {isOnlyTime && (\n <StubButton size={calendarButtonProps.size} icon={ClockIcon} />\n )}\n </React.Fragment>\n }\n />\n <HiddenInput\n name={props.name}\n form={props.form}\n onReset={(v) => {\n state.dateFieldState.setValue(v);\n }}\n value={state.value}\n toStringValue={(v) => (v ? v.start.toISOString() : '')}\n disabled={state.disabled}\n />\n <HiddenInput\n name={props.name}\n form={props.form}\n value={state.value}\n toStringValue={(v) => (v ? v.end.toISOString() : '')}\n disabled={state.disabled}\n />\n </div>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
+ import type { RangeDateFieldStateOptions } from "../../DateField/index.js";
2
3
  import type { DatePickerState } from "../../DatePicker/index.js";
3
- import type { RangeDateFieldStateOptions } from "../../RangeDateField/index.js";
4
4
  import type { RangeValue } from "../../types/index.js";
5
5
  export type RangeDatePickerState = DatePickerState<RangeValue<DateTime>>;
6
6
  export type RangeDatePickerStateOptions = RangeDateFieldStateOptions;
@@ -1,22 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useRangeDatePickerState = void 0;
4
+ const DateField_1 = require("../../DateField/index.js");
4
5
  const utils_1 = require("../../DateField/utils.js");
5
6
  const datePickerStateFactory_1 = require("../../DatePicker/hooks/datePickerStateFactory.js");
6
7
  const utils_2 = require("../../DatePicker/utils/index.js");
7
- const RangeDateField_1 = require("../../RangeDateField/index.js");
8
- const utils_3 = require("../../RangeDateField/utils/index.js");
9
8
  const dates_1 = require("../../utils/dates.js");
10
9
  exports.useRangeDatePickerState = (0, datePickerStateFactory_1.datePickerStateFactory)({
11
10
  getPlaceholderTime,
12
11
  mergeDateTime: mergeRangeDateTime,
13
12
  setTimezone,
14
13
  getDateTime: utils_2.getDateTimeValue,
15
- useDateFieldState: RangeDateField_1.useRangeDateFieldState,
14
+ useDateFieldState: DateField_1.useRangeDateFieldState,
16
15
  adjustDateToFormat: adjustRangeToFormat,
17
16
  });
18
17
  function getPlaceholderTime(placeholderValue, timeZone) {
19
- return (0, utils_3.createPlaceholderRangeValue)({ placeholderValue, timeZone });
18
+ return (0, dates_1.createPlaceholderRangeValue)({ placeholderValue, timeZone });
20
19
  }
21
20
  function mergeRangeDateTime(date, time) {
22
21
  const start = (0, dates_1.mergeDateTime)(date.start, time.start);
@@ -1 +1 @@
1
- {"version":3,"file":"useRangeDatePickerState.js","sourceRoot":"../../../../../src","sources":["components/RangeDatePicker/hooks/useRangeDatePickerState.ts"],"names":[],"mappings":";;;AAGA,oDAAyD;AAEzD,6FAAqF;AACrF,2DAAwD;AACxD,kEAA4D;AAE5D,+DAAuE;AAEvE,gDAAgD;AAMnC,QAAA,uBAAuB,GAAG,IAAA,+CAAsB,EAAC;IAC1D,kBAAkB;IAClB,aAAa,EAAE,kBAAkB;IACjC,WAAW;IACX,WAAW,EAAE,wBAAgB;IAC7B,iBAAiB,EAAE,uCAAsB;IACzC,kBAAkB,EAAE,mBAAmB;CAC1C,CAAC,CAAC;AAEH,SAAS,kBAAkB,CACvB,gBAAsC,EACtC,QAAiB;IAEjB,OAAO,IAAA,mCAA2B,EAAC,EAAC,gBAAgB,EAAE,QAAQ,EAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,kBAAkB,CACvB,IAA0B,EAC1B,IAA0B;IAE1B,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,IAA0B,EAAE,QAAgB;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B,EAAE,YAAwB;IAC7E,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACxB,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {FormatInfo} from '../../DateField/types';\nimport {adjustDateToFormat} from '../../DateField/utils';\nimport type {DatePickerState} from '../../DatePicker';\nimport {datePickerStateFactory} from '../../DatePicker/hooks/datePickerStateFactory';\nimport {getDateTimeValue} from '../../DatePicker/utils';\nimport {useRangeDateFieldState} from '../../RangeDateField';\nimport type {RangeDateFieldStateOptions} from '../../RangeDateField';\nimport {createPlaceholderRangeValue} from '../../RangeDateField/utils';\nimport type {RangeValue} from '../../types';\nimport {mergeDateTime} from '../../utils/dates';\n\nexport type RangeDatePickerState = DatePickerState<RangeValue<DateTime>>;\n\nexport type RangeDatePickerStateOptions = RangeDateFieldStateOptions;\n\nexport const useRangeDatePickerState = datePickerStateFactory({\n getPlaceholderTime,\n mergeDateTime: mergeRangeDateTime,\n setTimezone,\n getDateTime: getDateTimeValue,\n useDateFieldState: useRangeDateFieldState,\n adjustDateToFormat: adjustRangeToFormat,\n});\n\nfunction getPlaceholderTime(\n placeholderValue: DateTime | undefined,\n timeZone?: string,\n): RangeValue<DateTime> {\n return createPlaceholderRangeValue({placeholderValue, timeZone});\n}\n\nfunction mergeRangeDateTime(\n date: RangeValue<DateTime>,\n time: RangeValue<DateTime>,\n): RangeValue<DateTime> {\n const start = mergeDateTime(date.start, time.start);\n const end = mergeDateTime(date.end, time.end);\n return {start, end};\n}\n\nfunction setTimezone(date: RangeValue<DateTime>, timeZone: string): RangeValue<DateTime> {\n const start = date.start.timeZone(timeZone);\n const end = date.end.timeZone(timeZone);\n return {start, end};\n}\n\nfunction adjustRangeToFormat(date: RangeValue<DateTime>, sectionsInfo: FormatInfo) {\n const start = adjustDateToFormat(date.start, sectionsInfo, 'startOf');\n const end = adjustDateToFormat(date.end, sectionsInfo, 'endOf');\n return {start, end};\n}\n"]}
1
+ {"version":3,"file":"useRangeDatePickerState.js","sourceRoot":"../../../../../src","sources":["components/RangeDatePicker/hooks/useRangeDatePickerState.ts"],"names":[],"mappings":";;;AAEA,wDAAuD;AAGvD,oDAAyD;AAEzD,6FAAqF;AACrF,2DAAwD;AAExD,gDAA6E;AAMhE,QAAA,uBAAuB,GAAG,IAAA,+CAAsB,EAAC;IAC1D,kBAAkB;IAClB,aAAa,EAAE,kBAAkB;IACjC,WAAW;IACX,WAAW,EAAE,wBAAgB;IAC7B,iBAAiB,EAAE,kCAAsB;IACzC,kBAAkB,EAAE,mBAAmB;CAC1C,CAAC,CAAC;AAEH,SAAS,kBAAkB,CACvB,gBAAsC,EACtC,QAAiB;IAEjB,OAAO,IAAA,mCAA2B,EAAC,EAAC,gBAAgB,EAAE,QAAQ,EAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,kBAAkB,CACvB,IAA0B,EAC1B,IAA0B;IAE1B,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,IAA0B,EAAE,QAAgB;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B,EAAE,YAAwB;IAC7E,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACxB,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport {useRangeDateFieldState} from '../../DateField';\nimport type {RangeDateFieldStateOptions} from '../../DateField';\nimport type {FormatInfo} from '../../DateField/types';\nimport {adjustDateToFormat} from '../../DateField/utils';\nimport type {DatePickerState} from '../../DatePicker';\nimport {datePickerStateFactory} from '../../DatePicker/hooks/datePickerStateFactory';\nimport {getDateTimeValue} from '../../DatePicker/utils';\nimport type {RangeValue} from '../../types';\nimport {createPlaceholderRangeValue, mergeDateTime} from '../../utils/dates';\n\nexport type RangeDatePickerState = DatePickerState<RangeValue<DateTime>>;\n\nexport type RangeDatePickerStateOptions = RangeDateFieldStateOptions;\n\nexport const useRangeDatePickerState = datePickerStateFactory({\n getPlaceholderTime,\n mergeDateTime: mergeRangeDateTime,\n setTimezone,\n getDateTime: getDateTimeValue,\n useDateFieldState: useRangeDateFieldState,\n adjustDateToFormat: adjustRangeToFormat,\n});\n\nfunction getPlaceholderTime(\n placeholderValue: DateTime | undefined,\n timeZone?: string,\n): RangeValue<DateTime> {\n return createPlaceholderRangeValue({placeholderValue, timeZone});\n}\n\nfunction mergeRangeDateTime(\n date: RangeValue<DateTime>,\n time: RangeValue<DateTime>,\n): RangeValue<DateTime> {\n const start = mergeDateTime(date.start, time.start);\n const end = mergeDateTime(date.end, time.end);\n return {start, end};\n}\n\nfunction setTimezone(date: RangeValue<DateTime>, timeZone: string): RangeValue<DateTime> {\n const start = date.start.timeZone(timeZone);\n const end = date.end.timeZone(timeZone);\n return {start, end};\n}\n\nfunction adjustRangeToFormat(date: RangeValue<DateTime>, sectionsInfo: FormatInfo) {\n const start = adjustDateToFormat(date.start, sectionsInfo, 'startOf');\n const end = adjustDateToFormat(date.end, sectionsInfo, 'endOf');\n return {start, end};\n}\n"]}
@@ -21,4 +21,4 @@ export interface RangeDateSelectionProps extends RangeDateSelectionOptions, DomP
21
21
  dimensions: ViewportDimensions;
22
22
  }) => React.ReactNode;
23
23
  }
24
- export declare function RangeDateSelection(props: RangeDateSelectionProps): import("react/jsx-runtime").JSX.Element;
24
+ export declare function RangeDateSelection(props: RangeDateSelectionProps): React.JSX.Element;
@@ -16,7 +16,6 @@ const i18n_1 = require("./i18n/index.js");
16
16
  require("./RangeDateSelection.css");
17
17
  const b = (0, cn_1.block)('range-date-selection');
18
18
  function RangeDateSelection(props) {
19
- var _a, _b;
20
19
  const state = (0, useRangeDateSelectionState_1.useRangeDateSelectionState)(props);
21
20
  const [isDraggingRuler, setDraggingRuler] = react_1.default.useState(false);
22
21
  const handleRulerMoveStart = () => {
@@ -33,10 +32,10 @@ function RangeDateSelection(props) {
33
32
  state.endDragging();
34
33
  };
35
34
  let id = react_1.default.useId();
36
- id = (_a = props.id) !== null && _a !== void 0 ? _a : id;
35
+ id = props.id ?? id;
37
36
  const { t } = i18n_1.i18n.useTranslation();
38
- return ((0, jsx_runtime_1.jsxs)("div", Object.assign({}, (0, filterDOMProps_1.filterDOMProps)(props, { labelable: true }), { id: id, className: b(null, props.className), style: props.style, dir: "ltr" // TODO: RTL support
39
- , children: [(0, jsx_runtime_1.jsx)(Ruler_1.DateTimeRuler, Object.assign({ className: b('ruler', { dragging: isDraggingRuler }) }, state.viewportInterval, { onMoveStart: handleRulerMoveStart, onMove: props.draggableRuler ? handleRulerMove : undefined, onMoveEnd: handleRulerMoveEnd, dragDisabled: state.isDragging, displayNow: props.displayNow, minValue: props.minValue, maxValue: props.maxValue, formatTime: props.formatTime, timeZone: state.timeZone, renderAdditionalRulerContent: props.renderAdditionalRulerContent, children: (0, jsx_runtime_1.jsx)(SelectionControl_1.SelectionControl, { className: b('selection'), state: state, "aria-labelledby": id }) })), props.hasScaleButtons ? ((0, jsx_runtime_1.jsxs)("div", { className: b('buttons', { position: (_b = props.scaleButtonsPosition) !== null && _b !== void 0 ? _b : 'start' }), children: [(0, jsx_runtime_1.jsx)(uikit_1.Button, { view: "flat-secondary", size: "xs", onClick: () => {
37
+ return ((0, jsx_runtime_1.jsxs)("div", { ...(0, filterDOMProps_1.filterDOMProps)(props, { labelable: true }), id: id, className: b(null, props.className), style: props.style, dir: "ltr" // TODO: RTL support
38
+ , children: [(0, jsx_runtime_1.jsx)(Ruler_1.DateTimeRuler, { className: b('ruler', { dragging: isDraggingRuler }), ...state.viewportInterval, onMoveStart: handleRulerMoveStart, onMove: props.draggableRuler ? handleRulerMove : undefined, onMoveEnd: handleRulerMoveEnd, dragDisabled: state.isDragging, displayNow: props.displayNow, minValue: props.minValue, maxValue: props.maxValue, formatTime: props.formatTime, timeZone: state.timeZone, renderAdditionalRulerContent: props.renderAdditionalRulerContent, children: (0, jsx_runtime_1.jsx)(SelectionControl_1.SelectionControl, { className: b('selection'), state: state, "aria-labelledby": id }) }), props.hasScaleButtons ? ((0, jsx_runtime_1.jsxs)("div", { className: b('buttons', { position: props.scaleButtonsPosition ?? 'start' }), children: [(0, jsx_runtime_1.jsx)(uikit_1.Button, { view: "flat-secondary", size: "xs", onClick: () => {
40
39
  state.startDragging();
41
40
  state.scale(0.5);
42
41
  state.endDragging();
@@ -44,6 +43,6 @@ function RangeDateSelection(props) {
44
43
  state.startDragging();
45
44
  state.scale(1.5);
46
45
  state.endDragging();
47
- }, "aria-label": t('Increase range'), children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icons_1.Plus }) })] })) : null] })));
46
+ }, "aria-label": t('Increase range'), children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icons_1.Plus }) })] })) : null] }));
48
47
  }
49
48
  //# sourceMappingURL=RangeDateSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangeDateSelection.js","sourceRoot":"../../../../src","sources":["components/RangeDateSelection/RangeDateSelection.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {Minus, Plus} from '@gravity-ui/icons';\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport type {AccessibilityProps, DomProps, StyleProps} from '../types';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {DateTimeRuler} from './components/Ruler/Ruler';\nimport type {ViewportDimensions, ViewportInterval} from './components/Ruler/Ruler';\nimport {SelectionControl} from './components/SelectionControl/SelectionControl';\nimport {useRangeDateSelectionState} from './hooks/useRangeDateSelectionState';\nimport type {RangeDateSelectionOptions} from './hooks/useRangeDateSelectionState';\nimport {i18n} from './i18n';\n\nimport './RangeDateSelection.scss';\n\nconst b = block('range-date-selection');\n\nexport interface RangeDateSelectionProps\n extends RangeDateSelectionOptions, DomProps, StyleProps, AccessibilityProps {\n /** Formats time ticks */\n formatTime?: (time: DateTime) => string;\n /** Displays now line */\n displayNow?: boolean;\n /** Enables dragging ruler */\n draggableRuler?: boolean;\n /** Displays buttons to scale selection */\n hasScaleButtons?: boolean;\n /** Position of scale buttons */\n scaleButtonsPosition?: 'start' | 'end';\n /** Renders additional svg content in the ruler */\n renderAdditionalRulerContent?: (props: {\n interval: ViewportInterval;\n dimensions: ViewportDimensions;\n }) => React.ReactNode;\n}\n\nexport function RangeDateSelection(props: RangeDateSelectionProps) {\n const state = useRangeDateSelectionState(props);\n\n const [isDraggingRuler, setDraggingRuler] = React.useState(false);\n\n const handleRulerMoveStart = () => {\n state.setDraggingValue(state.value);\n setDraggingRuler(true);\n };\n const handleRulerMove = (d: number) => {\n const intervalWidth = state.viewportInterval.end.diff(state.viewportInterval.start);\n const delta = -Math.floor((d * intervalWidth) / 100);\n state.move(delta);\n };\n const handleRulerMoveEnd = () => {\n setDraggingRuler(false);\n state.endDragging();\n };\n\n let id = React.useId();\n id = props.id ?? id;\n\n const {t} = i18n.useTranslation();\n\n return (\n <div\n {...filterDOMProps(props, {labelable: true})}\n id={id}\n className={b(null, props.className)}\n style={props.style}\n dir=\"ltr\" // TODO: RTL support\n >\n <DateTimeRuler\n className={b('ruler', {dragging: isDraggingRuler})}\n {...state.viewportInterval}\n onMoveStart={handleRulerMoveStart}\n onMove={props.draggableRuler ? handleRulerMove : undefined}\n onMoveEnd={handleRulerMoveEnd}\n dragDisabled={state.isDragging}\n displayNow={props.displayNow}\n minValue={props.minValue}\n maxValue={props.maxValue}\n formatTime={props.formatTime}\n timeZone={state.timeZone}\n renderAdditionalRulerContent={props.renderAdditionalRulerContent}\n >\n <SelectionControl className={b('selection')} state={state} aria-labelledby={id} />\n </DateTimeRuler>\n {props.hasScaleButtons ? (\n <div className={b('buttons', {position: props.scaleButtonsPosition ?? 'start'})}>\n <Button\n view=\"flat-secondary\"\n size=\"xs\"\n onClick={() => {\n state.startDragging();\n state.scale(0.5);\n state.endDragging();\n }}\n aria-label={t('Decrease range')}\n >\n <Icon data={Minus} />\n </Button>\n <Button\n view=\"flat-secondary\"\n size=\"xs\"\n onClick={() => {\n state.startDragging();\n state.scale(1.5);\n state.endDragging();\n }}\n aria-label={t('Increase range')}\n >\n <Icon data={Plus} />\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"RangeDateSelection.js","sourceRoot":"../../../../src","sources":["components/RangeDateSelection/RangeDateSelection.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {Minus, Plus} from '@gravity-ui/icons';\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport {block} from '../../utils/cn';\nimport type {AccessibilityProps, DomProps, StyleProps} from '../types';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {DateTimeRuler} from './components/Ruler/Ruler';\nimport type {ViewportDimensions, ViewportInterval} from './components/Ruler/Ruler';\nimport {SelectionControl} from './components/SelectionControl/SelectionControl';\nimport {useRangeDateSelectionState} from './hooks/useRangeDateSelectionState';\nimport type {RangeDateSelectionOptions} from './hooks/useRangeDateSelectionState';\nimport {i18n} from './i18n';\n\nimport './RangeDateSelection.scss';\n\nconst b = block('range-date-selection');\n\nexport interface RangeDateSelectionProps\n extends RangeDateSelectionOptions, DomProps, StyleProps, AccessibilityProps {\n /** Formats time ticks */\n formatTime?: (time: DateTime) => string;\n /** Displays now line */\n displayNow?: boolean;\n /** Enables dragging ruler */\n draggableRuler?: boolean;\n /** Displays buttons to scale selection */\n hasScaleButtons?: boolean;\n /** Position of scale buttons */\n scaleButtonsPosition?: 'start' | 'end';\n /** Renders additional svg content in the ruler */\n renderAdditionalRulerContent?: (props: {\n interval: ViewportInterval;\n dimensions: ViewportDimensions;\n }) => React.ReactNode;\n}\n\nexport function RangeDateSelection(props: RangeDateSelectionProps) {\n const state = useRangeDateSelectionState(props);\n\n const [isDraggingRuler, setDraggingRuler] = React.useState(false);\n\n const handleRulerMoveStart = () => {\n state.setDraggingValue(state.value);\n setDraggingRuler(true);\n };\n const handleRulerMove = (d: number) => {\n const intervalWidth = state.viewportInterval.end.diff(state.viewportInterval.start);\n const delta = -Math.floor((d * intervalWidth) / 100);\n state.move(delta);\n };\n const handleRulerMoveEnd = () => {\n setDraggingRuler(false);\n state.endDragging();\n };\n\n let id = React.useId();\n id = props.id ?? id;\n\n const {t} = i18n.useTranslation();\n\n return (\n <div\n {...filterDOMProps(props, {labelable: true})}\n id={id}\n className={b(null, props.className)}\n style={props.style}\n dir=\"ltr\" // TODO: RTL support\n >\n <DateTimeRuler\n className={b('ruler', {dragging: isDraggingRuler})}\n {...state.viewportInterval}\n onMoveStart={handleRulerMoveStart}\n onMove={props.draggableRuler ? handleRulerMove : undefined}\n onMoveEnd={handleRulerMoveEnd}\n dragDisabled={state.isDragging}\n displayNow={props.displayNow}\n minValue={props.minValue}\n maxValue={props.maxValue}\n formatTime={props.formatTime}\n timeZone={state.timeZone}\n renderAdditionalRulerContent={props.renderAdditionalRulerContent}\n >\n <SelectionControl className={b('selection')} state={state} aria-labelledby={id} />\n </DateTimeRuler>\n {props.hasScaleButtons ? (\n <div className={b('buttons', {position: props.scaleButtonsPosition ?? 'start'})}>\n <Button\n view=\"flat-secondary\"\n size=\"xs\"\n onClick={() => {\n state.startDragging();\n state.scale(0.5);\n state.endDragging();\n }}\n aria-label={t('Decrease range')}\n >\n <Icon data={Minus} />\n </Button>\n <Button\n view=\"flat-secondary\"\n size=\"xs\"\n onClick={() => {\n state.startDragging();\n state.scale(1.5);\n state.endDragging();\n }}\n aria-label={t('Increase range')}\n >\n <Icon data={Plus} />\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
@@ -1,2 +1,3 @@
1
+ import React from 'react';
1
2
  import "./NowLine.css";
2
- export declare function NowLine(): import("react/jsx-runtime").JSX.Element | null;
3
+ export declare function NowLine(): React.JSX.Element | null;