@gravity-ui/date-components 3.2.3 → 3.3.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 (236) hide show
  1. package/README.md +89 -1
  2. package/dist/cjs/components/CalendarView/Calendar.css.map +1 -1
  3. package/dist/cjs/components/CalendarView/CalendarView.js +4 -2
  4. package/dist/cjs/components/CalendarView/CalendarView.js.map +1 -1
  5. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js +12 -10
  6. package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  7. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js +2 -1
  8. package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  9. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +19 -10
  10. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  11. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +2 -2
  12. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  13. package/dist/cjs/components/CalendarView/i18n/index.d.ts +8 -0
  14. package/dist/cjs/components/DateField/DateField.css.map +1 -1
  15. package/dist/cjs/components/DateField/DateField.js +4 -1
  16. package/dist/cjs/components/DateField/DateField.js.map +1 -1
  17. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +0 -1
  18. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  19. package/dist/cjs/components/DateField/i18n/index.d.ts +8 -0
  20. package/dist/cjs/components/DateField/utils.d.ts +5 -1
  21. package/dist/cjs/components/DateField/utils.js +26 -24
  22. package/dist/cjs/components/DateField/utils.js.map +1 -1
  23. package/dist/cjs/components/DatePicker/DatePicker.css.map +1 -1
  24. package/dist/cjs/components/DatePicker/MobileCalendar.css.map +1 -1
  25. package/dist/cjs/components/DatePicker/StubButton.css.map +1 -1
  26. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +18 -11
  27. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  28. package/dist/cjs/components/DatePicker/i18n/index.d.ts +8 -0
  29. package/dist/cjs/components/RangeDateField/RangeDateField.css.map +1 -1
  30. package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +1 -1
  31. package/dist/cjs/components/RangeDateField/RangeDateField.js +4 -1
  32. package/dist/cjs/components/RangeDateField/RangeDateField.js.map +1 -1
  33. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +5 -7
  34. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +1 -1
  35. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.css.map +1 -1
  36. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.css.map +1 -1
  37. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js +3 -2
  38. package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  39. package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.css.map +1 -1
  40. package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.css.map +1 -1
  41. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.css +2 -2
  42. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.css.map +1 -1
  43. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +4 -3
  44. package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  45. package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.css.map +1 -1
  46. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +21 -21
  47. package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  48. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.d.ts +0 -2
  49. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +1 -1
  50. package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  51. package/dist/cjs/components/RangeDateSelection/i18n/index.d.ts +8 -0
  52. package/dist/cjs/components/RelativeDateField/RelativeDateField.css.map +1 -1
  53. package/dist/cjs/components/RelativeDateField/RelativeDateField.js +4 -1
  54. package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
  55. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.css.map +1 -1
  56. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +7 -3
  57. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  58. package/dist/cjs/components/RelativeDatePicker/i18n/index.d.ts +8 -0
  59. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css.map +1 -1
  60. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +4 -1
  61. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  62. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  63. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js +18 -3
  64. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  65. package/dist/cjs/components/RelativeRangeDatePicker/components/Control/i18n/index.d.ts +8 -0
  66. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css.map +1 -1
  67. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.css.map +1 -1
  68. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +11 -19
  69. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  70. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css.map +1 -1
  71. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +4 -3
  72. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  73. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.d.ts +10 -2
  74. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +6 -3
  75. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  76. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.css.map +1 -1
  77. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +4 -2
  78. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  79. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +5 -1
  80. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js +31 -75
  81. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  82. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/index.d.ts +8 -0
  83. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +5 -2
  84. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +5 -5
  85. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  86. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.css.map +1 -1
  87. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -8
  88. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  89. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/index.d.ts +8 -0
  90. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +0 -11
  91. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +5 -32
  92. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  93. package/dist/cjs/components/RelativeRangeDatePicker/i18n/en.json +0 -3
  94. package/dist/cjs/components/RelativeRangeDatePicker/i18n/index.d.ts +10 -2
  95. package/dist/cjs/components/RelativeRangeDatePicker/i18n/ru.json +0 -3
  96. package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +5 -2
  97. package/dist/cjs/components/RelativeRangeDatePicker/utils.js +5 -4
  98. package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
  99. package/dist/cjs/components/types/helpers.d.ts +1 -0
  100. package/dist/cjs/components/types/helpers.js +3 -0
  101. package/dist/cjs/components/types/helpers.js.map +1 -0
  102. package/dist/cjs/components/types/index.d.ts +1 -0
  103. package/dist/cjs/components/types/index.js.map +1 -1
  104. package/dist/cjs/components/types/inputs.d.ts +2 -2
  105. package/dist/cjs/components/types/inputs.js.map +1 -1
  106. package/dist/cjs/components/utils/dates.d.ts +1 -1
  107. package/dist/cjs/components/utils/dates.js +2 -2
  108. package/dist/cjs/components/utils/dates.js.map +1 -1
  109. package/dist/cjs/components/utils/validation/datePicker.d.ts +3 -1
  110. package/dist/cjs/components/utils/validation/datePicker.js +4 -4
  111. package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
  112. package/dist/cjs/components/utils/validation/i18n/en.json +6 -1
  113. package/dist/cjs/components/utils/validation/i18n/index.d.ts +10 -2
  114. package/dist/cjs/components/utils/validation/i18n/ru.json +7 -1
  115. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +15 -0
  116. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +34 -0
  117. package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -0
  118. package/dist/cjs/package.json +1 -1
  119. package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
  120. package/dist/esm/components/CalendarView/CalendarView.js +5 -3
  121. package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
  122. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +12 -10
  123. package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
  124. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +3 -2
  125. package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
  126. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +20 -11
  127. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
  128. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +2 -2
  129. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
  130. package/dist/esm/components/CalendarView/i18n/index.d.ts +8 -0
  131. package/dist/esm/components/DateField/DateField.css.map +1 -1
  132. package/dist/esm/components/DateField/DateField.js +4 -1
  133. package/dist/esm/components/DateField/DateField.js.map +1 -1
  134. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +0 -1
  135. package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
  136. package/dist/esm/components/DateField/i18n/index.d.ts +8 -0
  137. package/dist/esm/components/DateField/utils.d.ts +5 -1
  138. package/dist/esm/components/DateField/utils.js +26 -24
  139. package/dist/esm/components/DateField/utils.js.map +1 -1
  140. package/dist/esm/components/DatePicker/DatePicker.css.map +1 -1
  141. package/dist/esm/components/DatePicker/MobileCalendar.css.map +1 -1
  142. package/dist/esm/components/DatePicker/StubButton.css.map +1 -1
  143. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +18 -11
  144. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
  145. package/dist/esm/components/DatePicker/i18n/index.d.ts +8 -0
  146. package/dist/esm/components/RangeDateField/RangeDateField.css.map +1 -1
  147. package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
  148. package/dist/esm/components/RangeDateField/RangeDateField.js +4 -1
  149. package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
  150. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +6 -8
  151. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +1 -1
  152. package/dist/esm/components/RangeDatePicker/RangeDatePicker.css.map +1 -1
  153. package/dist/esm/components/RangeDateSelection/RangeDateSelection.css.map +1 -1
  154. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +3 -2
  155. package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
  156. package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.css.map +1 -1
  157. package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.css.map +1 -1
  158. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.css +2 -2
  159. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.css.map +1 -1
  160. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +4 -3
  161. package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
  162. package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.css.map +1 -1
  163. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +21 -21
  164. package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
  165. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.d.ts +0 -2
  166. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +1 -1
  167. package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
  168. package/dist/esm/components/RangeDateSelection/i18n/index.d.ts +8 -0
  169. package/dist/esm/components/RelativeDateField/RelativeDateField.css.map +1 -1
  170. package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -1
  171. package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
  172. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.css.map +1 -1
  173. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +7 -3
  174. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
  175. package/dist/esm/components/RelativeDatePicker/i18n/index.d.ts +8 -0
  176. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css.map +1 -1
  177. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +4 -1
  178. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
  179. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
  180. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +18 -3
  181. package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
  182. package/dist/esm/components/RelativeRangeDatePicker/components/Control/i18n/index.d.ts +8 -0
  183. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css.map +1 -1
  184. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.css.map +1 -1
  185. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +11 -19
  186. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
  187. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css.map +1 -1
  188. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +4 -3
  189. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
  190. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.d.ts +10 -2
  191. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +5 -2
  192. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
  193. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.css.map +1 -1
  194. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +4 -2
  195. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
  196. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +5 -1
  197. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js +30 -75
  198. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
  199. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/index.d.ts +8 -0
  200. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +5 -2
  201. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +5 -5
  202. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
  203. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.css.map +1 -1
  204. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -8
  205. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
  206. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/index.d.ts +8 -0
  207. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +0 -11
  208. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +5 -31
  209. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
  210. package/dist/esm/components/RelativeRangeDatePicker/i18n/en.json +0 -3
  211. package/dist/esm/components/RelativeRangeDatePicker/i18n/index.d.ts +10 -2
  212. package/dist/esm/components/RelativeRangeDatePicker/i18n/ru.json +0 -3
  213. package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +5 -2
  214. package/dist/esm/components/RelativeRangeDatePicker/utils.js +5 -4
  215. package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
  216. package/dist/esm/components/types/helpers.d.ts +1 -0
  217. package/dist/esm/components/types/helpers.js +2 -0
  218. package/dist/esm/components/types/helpers.js.map +1 -0
  219. package/dist/esm/components/types/index.d.ts +1 -0
  220. package/dist/esm/components/types/index.js.map +1 -1
  221. package/dist/esm/components/types/inputs.d.ts +2 -2
  222. package/dist/esm/components/types/inputs.js.map +1 -1
  223. package/dist/esm/components/utils/dates.d.ts +1 -1
  224. package/dist/esm/components/utils/dates.js +2 -2
  225. package/dist/esm/components/utils/dates.js.map +1 -1
  226. package/dist/esm/components/utils/validation/datePicker.d.ts +3 -1
  227. package/dist/esm/components/utils/validation/datePicker.js +4 -4
  228. package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
  229. package/dist/esm/components/utils/validation/i18n/en.json +6 -1
  230. package/dist/esm/components/utils/validation/i18n/index.d.ts +10 -2
  231. package/dist/esm/components/utils/validation/i18n/ru.json +7 -1
  232. package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +15 -0
  233. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +31 -0
  234. package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -0
  235. package/dist/esm/package.json +1 -1
  236. package/package.json +50 -52
@@ -20,7 +20,7 @@ const countUnit = {
20
20
  M: 'Last {count} month',
21
21
  y: 'Last {count} year',
22
22
  };
23
- export function getPresetTitle(start, end, presets = allPresets) {
23
+ export function getPresetTitle(start, end, presets = allPresets, t = i18n) {
24
24
  const startText = start.replace(/\s+/g, '');
25
25
  const endText = end.replace(/\s+/g, '');
26
26
  for (const preset of presets) {
@@ -34,7 +34,7 @@ export function getPresetTitle(start, end, presets = allPresets) {
34
34
  const [, count, unit] = match;
35
35
  if (isDateUnit(unit)) {
36
36
  const template = Number(count) === 1 ? oneUnit[unit] : countUnit[unit];
37
- return i18n(template, { count });
37
+ return t(template, { count });
38
38
  }
39
39
  }
40
40
  }
@@ -59,11 +59,11 @@ export function filterPresets(presets, minValue) {
59
59
  return true;
60
60
  });
61
61
  }
62
- export function getDefaultPresetTabs({ withTime, minValue, }) {
62
+ export function getDefaultPresetTabs({ withTime, minValue, t = i18n, }) {
63
63
  const tabs = [];
64
64
  const mainTab = {
65
65
  id: 'main',
66
- title: i18n('Main'),
66
+ title: t('Main'),
67
67
  presets: [],
68
68
  };
69
69
  const mainPresets = DEFAULT_DATE_PRESETS;
@@ -76,7 +76,7 @@ export function getDefaultPresetTabs({ withTime, minValue, }) {
76
76
  }
77
77
  const otherTab = {
78
78
  id: 'other',
79
- title: i18n('Other'),
79
+ title: t('Other'),
80
80
  presets: filterPresets(DEFAULT_OTHERS_PRESETS, minValue),
81
81
  };
82
82
  if (otherTab.presets.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Presets/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport {\n DEFAULT_DATE_PRESETS,\n DEFAULT_OTHERS_PRESETS,\n DEFAULT_TIME_PRESETS,\n allPresets,\n} from './defaultPresets';\nimport type {Preset} from './defaultPresets';\nimport {i18n} from './i18n';\n\nconst lastRe = /^now-(\\d+)([smhdwMy])$/;\n\nconst oneUnit = {\n s: 'Last second',\n m: 'Last minute',\n h: 'Last hour',\n d: 'Last day',\n w: 'Last week',\n M: 'Last month',\n y: 'Last year',\n} as const;\n\nconst countUnit = {\n s: 'Last {count} second',\n m: 'Last {count} minute',\n h: 'Last {count} hour',\n d: 'Last {count} day',\n w: 'Last {count} week',\n M: 'Last {count} month',\n y: 'Last {count} year',\n} as const;\n\nexport function getPresetTitle(start: string, end: string, presets: Preset[] = allPresets) {\n const startText = start.replace(/\\s+/g, '');\n const endText = end.replace(/\\s+/g, '');\n\n for (const preset of presets) {\n if (preset.from === startText && preset.to === endText) {\n return preset.title;\n }\n }\n\n if (end === 'now') {\n const match = lastRe.exec(startText);\n if (match) {\n const [, count, unit] = match;\n if (isDateUnit(unit)) {\n const template = Number(count) === 1 ? oneUnit[unit] : countUnit[unit];\n return i18n(template, {count});\n }\n }\n }\n\n return startText + ' — ' + endText;\n}\n\nfunction isDateUnit(value: string): value is 's' | 'm' | 'h' | 'd' | 'w' | 'M' | 'y' {\n return ['s', 'm', 'h', 'd', 'w', 'M', 'y'].includes(value);\n}\n\nexport function filterPresets(presets: Preset[], minValue?: DateTime) {\n return presets.filter((preset) => {\n const from = dateTimeParse(preset.from);\n const to = dateTimeParse(preset.to, {roundUp: true});\n\n if (!from || !to) {\n return false;\n }\n\n if (to.isBefore(from)) {\n return false;\n }\n\n if (minValue && from.isBefore(minValue)) {\n return false;\n }\n\n return true;\n });\n}\n\nexport interface PresetTab {\n id: string;\n title: string;\n presets: Preset[];\n}\n\nexport function getDefaultPresetTabs({\n withTime,\n minValue,\n}: {\n minValue?: DateTime;\n withTime?: boolean;\n}) {\n const tabs: PresetTab[] = [];\n\n const mainTab: PresetTab = {\n id: 'main',\n title: i18n('Main'),\n presets: [],\n };\n const mainPresets = DEFAULT_DATE_PRESETS;\n if (withTime) {\n mainPresets.unshift(...DEFAULT_TIME_PRESETS);\n }\n mainTab.presets = filterPresets(mainPresets, minValue);\n\n if (mainTab.presets.length > 0) {\n tabs.push(mainTab);\n }\n\n const otherTab: PresetTab = {\n id: 'other',\n title: i18n('Other'),\n presets: filterPresets(DEFAULT_OTHERS_PRESETS, minValue),\n };\n\n if (otherTab.presets.length > 0) {\n tabs.push(otherTab);\n }\n\n return tabs;\n}\n\nexport function filterPresetTabs(tabs: PresetTab[], {minValue}: {minValue?: DateTime} = {}) {\n return tabs.reduce<PresetTab[]>((acc, tab) => {\n const presets = filterPresets(tab.presets, minValue);\n if (presets.length) {\n acc.push({\n ...tab,\n presets,\n });\n }\n return acc;\n }, []);\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Presets/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {ExtractFunctionType} from '../../../types';\n\nimport {\n DEFAULT_DATE_PRESETS,\n DEFAULT_OTHERS_PRESETS,\n DEFAULT_TIME_PRESETS,\n allPresets,\n} from './defaultPresets';\nimport type {Preset} from './defaultPresets';\nimport {i18n} from './i18n';\n\nconst lastRe = /^now-(\\d+)([smhdwMy])$/;\n\nconst oneUnit = {\n s: 'Last second',\n m: 'Last minute',\n h: 'Last hour',\n d: 'Last day',\n w: 'Last week',\n M: 'Last month',\n y: 'Last year',\n} as const;\n\nconst countUnit = {\n s: 'Last {count} second',\n m: 'Last {count} minute',\n h: 'Last {count} hour',\n d: 'Last {count} day',\n w: 'Last {count} week',\n M: 'Last {count} month',\n y: 'Last {count} year',\n} as const;\n\nexport function getPresetTitle(\n start: string,\n end: string,\n presets: Preset[] = allPresets,\n t: ExtractFunctionType<typeof i18n> = i18n,\n) {\n const startText = start.replace(/\\s+/g, '');\n const endText = end.replace(/\\s+/g, '');\n\n for (const preset of presets) {\n if (preset.from === startText && preset.to === endText) {\n return preset.title;\n }\n }\n\n if (end === 'now') {\n const match = lastRe.exec(startText);\n if (match) {\n const [, count, unit] = match;\n if (isDateUnit(unit)) {\n const template = Number(count) === 1 ? oneUnit[unit] : countUnit[unit];\n return t(template, {count});\n }\n }\n }\n\n return startText + ' — ' + endText;\n}\n\nfunction isDateUnit(value: string): value is 's' | 'm' | 'h' | 'd' | 'w' | 'M' | 'y' {\n return ['s', 'm', 'h', 'd', 'w', 'M', 'y'].includes(value);\n}\n\nexport function filterPresets(presets: Preset[], minValue?: DateTime) {\n return presets.filter((preset) => {\n const from = dateTimeParse(preset.from);\n const to = dateTimeParse(preset.to, {roundUp: true});\n\n if (!from || !to) {\n return false;\n }\n\n if (to.isBefore(from)) {\n return false;\n }\n\n if (minValue && from.isBefore(minValue)) {\n return false;\n }\n\n return true;\n });\n}\n\nexport interface PresetTab {\n id: string;\n title: string;\n presets: Preset[];\n}\n\nexport function getDefaultPresetTabs({\n withTime,\n minValue,\n t = i18n,\n}: {\n minValue?: DateTime;\n withTime?: boolean;\n t?: (key: 'Main' | 'Other') => string;\n}) {\n const tabs: PresetTab[] = [];\n\n const mainTab: PresetTab = {\n id: 'main',\n title: t('Main'),\n presets: [],\n };\n const mainPresets = DEFAULT_DATE_PRESETS;\n if (withTime) {\n mainPresets.unshift(...DEFAULT_TIME_PRESETS);\n }\n mainTab.presets = filterPresets(mainPresets, minValue);\n\n if (mainTab.presets.length > 0) {\n tabs.push(mainTab);\n }\n\n const otherTab: PresetTab = {\n id: 'other',\n title: t('Other'),\n presets: filterPresets(DEFAULT_OTHERS_PRESETS, minValue),\n };\n\n if (otherTab.presets.length > 0) {\n tabs.push(otherTab);\n }\n\n return tabs;\n}\n\nexport function filterPresetTabs(tabs: PresetTab[], {minValue}: {minValue?: DateTime} = {}) {\n return tabs.reduce<PresetTab[]>((acc, tab) => {\n const presets = filterPresets(tab.presets, minValue);\n if (presets.length) {\n acc.push({\n ...tab,\n presets,\n });\n }\n return acc;\n }, []);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["components/RelativeRangeDatePicker/components/variables';%0A%0A$block:%20'.%23%7Bvariables.$ns%7Drelative-range-date-picker-zones';%0A%0A%23%7B$block%7D%20%7B%0A%20%20%20%20&__control%20%7B%0A%20%20%20%20%20%20%20%20--g-button-background-color-hover:%20transparent;%0A%20%20%20%20%7D%0A%7D%0A"],"names":[],"mappings":"AAKI;EACI","sourcesContent":["@use '../../../variables';\n\n$block: '.#{variables.$ns}relative-range-date-picker-zones';\n\n#{$block} {\n &__control {\n --g-button-background-color-hover: transparent;\n }\n}\n"],"file":"Zones.css"}
1
+ {"version":3,"sources":["components/RelativeRangeDatePicker/components/Zones/Zones.scss"],"names":[],"mappings":"AAKI;EACI","sourcesContent":["@use '../../../variables';\n\n$block: '.#{variables.$ns}relative-range-date-picker-zones';\n\n#{$block} {\n &__control {\n --g-button-background-color-hover: transparent;\n }\n}\n"],"file":"Zones.css"}
@@ -26,31 +26,26 @@ zones.unshift({
26
26
  });
27
27
  zones.unshift({
28
28
  value: 'system',
29
- get content() {
30
- return i18n('system');
31
- },
32
29
  });
33
30
  zones.unshift({
34
31
  value: 'default',
35
- get content() {
36
- return i18n('default');
37
- },
38
32
  });
39
33
  const b = block('relative-range-date-picker-zones');
40
34
  export function Zones(props) {
41
35
  const timeZone = normalizeTimeZone(props.value);
42
36
  const size = props.isMobile ? 'xl' : props.size;
37
+ const { t } = i18n.useTranslation();
43
38
  return (_jsx(Select, { disabled: props.disabled, value: [timeZone], options: zones, size: size, onUpdate: (v) => {
44
39
  const tz = v[0];
45
40
  if (tz) {
46
41
  props.onUpdate(tz);
47
42
  }
48
43
  }, width: "max", renderControl: (controlProps) => {
49
- const value = timeZone === 'system' || timeZone === 'default' ? i18n(timeZone) : timeZone;
44
+ const value = timeZone === 'system' || timeZone === 'default' ? t(timeZone) : timeZone;
50
45
  return (_jsxs(Button, { ref: controlProps.ref, onClick: controlProps.triggerProps.onClick, view: "flat-secondary", width: "max", pin: "clear-clear", size: size, disabled: props.disabled, "aria-haspopup": "listbox", "aria-expanded": controlProps.open, onKeyDown: controlProps.triggerProps.onKeyDown, className: b('control'), children: [`${value} (${getTimeZoneOffset(timeZone)})`, _jsx(Icon, { className: b('control-icon'), data: ChevronRight, size: props.isMobile ? 20 : 16 })] }));
51
46
  }, renderOption: ({ value, content }) => {
52
47
  const v = content !== null && content !== void 0 ? content : value;
53
- return (_jsxs("span", { className: b('item'), children: [_jsxs("span", { className: b('item-title'), title: value, children: [v, "\u00A0"] }), _jsx(Text, { color: "secondary", children: getTimeZoneOffset(value) })] }));
48
+ return (_jsxs("span", { className: b('item'), children: [_jsxs("span", { className: b('item-title'), title: value, children: [value === 'system' || value === 'default' ? t(value) : v, "\u00A0"] }), _jsx(Text, { color: "secondary", children: getTimeZoneOffset(value) })] }));
54
49
  }, filterable: true }));
55
50
  }
56
51
  //# sourceMappingURL=Zones.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Zones.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Zones/Zones.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {getTimeZonesList} from '@gravity-ui/date-utils';\nimport {ChevronRight} from '@gravity-ui/icons';\nimport {Button, Icon, Select, Text} from '@gravity-ui/uikit';\nimport type {SelectOption, SelectOptionGroup} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {getTimeZoneOffset, normalizeTimeZone} from '../../utils';\n\nimport {i18n} from './i18n';\n\nimport './Zones.scss';\n\nconst groups: Record<string, {label: string; options: SelectOption[]}> = {};\n\nconst zones = getTimeZonesList().reduce<(SelectOption | SelectOptionGroup)[]>((opts, value) => {\n const [groupName] = value.split('/');\n if (groupName) {\n let group = groups[groupName];\n if (!group) {\n group = {label: groupName, options: []};\n groups[groupName] = group;\n opts.push(group);\n }\n group.options.push({value});\n }\n return opts;\n}, []);\n\nzones.unshift({\n value: 'UTC',\n});\n\nzones.unshift({\n value: 'system',\n get content() {\n return i18n('system');\n },\n});\n\nzones.unshift({\n value: 'default',\n get content() {\n return i18n('default');\n },\n});\n\nconst b = block('relative-range-date-picker-zones');\n\nexport interface ZonesProps {\n value: string;\n onUpdate: (timeZone: string) => void;\n size?: 's' | 'm' | 'l' | 'xl';\n isMobile?: boolean;\n disabled?: boolean;\n}\n\nexport function Zones(props: ZonesProps) {\n const timeZone = normalizeTimeZone(props.value);\n const size = props.isMobile ? 'xl' : props.size;\n return (\n <Select\n disabled={props.disabled}\n value={[timeZone]}\n options={zones}\n size={size}\n onUpdate={(v) => {\n const tz = v[0];\n if (tz) {\n props.onUpdate(tz);\n }\n }}\n width=\"max\"\n renderControl={(controlProps) => {\n const value =\n timeZone === 'system' || timeZone === 'default' ? i18n(timeZone) : timeZone;\n return (\n <Button\n ref={controlProps.ref as React.Ref<HTMLButtonElement>}\n onClick={controlProps.triggerProps.onClick}\n view=\"flat-secondary\"\n width=\"max\"\n pin=\"clear-clear\"\n size={size}\n disabled={props.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={controlProps.open}\n onKeyDown={controlProps.triggerProps.onKeyDown}\n className={b('control')}\n >\n {`${value} (${getTimeZoneOffset(timeZone)})`}\n <Icon\n className={b('control-icon')}\n data={ChevronRight}\n size={props.isMobile ? 20 : 16}\n />\n </Button>\n );\n }}\n renderOption={({value, content}) => {\n const v = content ?? value;\n return (\n <span className={b('item')}>\n <span className={b('item-title')} title={value}>\n {v}&nbsp;\n </span>\n <Text color=\"secondary\">{getTimeZoneOffset(value)}</Text>\n </span>\n );\n }}\n filterable\n />\n );\n}\n"]}
1
+ {"version":3,"file":"Zones.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Zones/Zones.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {getTimeZonesList} from '@gravity-ui/date-utils';\nimport {ChevronRight} from '@gravity-ui/icons';\nimport {Button, Icon, Select, Text} from '@gravity-ui/uikit';\nimport type {SelectOption, SelectOptionGroup} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {getTimeZoneOffset, normalizeTimeZone} from '../../utils';\n\nimport {i18n} from './i18n';\n\nimport './Zones.scss';\n\nconst groups: Record<string, {label: string; options: SelectOption[]}> = {};\n\nconst zones = getTimeZonesList().reduce<(SelectOption | SelectOptionGroup)[]>((opts, value) => {\n const [groupName] = value.split('/');\n if (groupName) {\n let group = groups[groupName];\n if (!group) {\n group = {label: groupName, options: []};\n groups[groupName] = group;\n opts.push(group);\n }\n group.options.push({value});\n }\n return opts;\n}, []);\n\nzones.unshift({\n value: 'UTC',\n});\n\nzones.unshift({\n value: 'system',\n});\n\nzones.unshift({\n value: 'default',\n});\n\nconst b = block('relative-range-date-picker-zones');\n\nexport interface ZonesProps {\n value: string;\n onUpdate: (timeZone: string) => void;\n size?: 's' | 'm' | 'l' | 'xl';\n isMobile?: boolean;\n disabled?: boolean;\n}\n\nexport function Zones(props: ZonesProps) {\n const timeZone = normalizeTimeZone(props.value);\n const size = props.isMobile ? 'xl' : props.size;\n const {t} = i18n.useTranslation();\n return (\n <Select\n disabled={props.disabled}\n value={[timeZone]}\n options={zones}\n size={size}\n onUpdate={(v) => {\n const tz = v[0];\n if (tz) {\n props.onUpdate(tz);\n }\n }}\n width=\"max\"\n renderControl={(controlProps) => {\n const value =\n timeZone === 'system' || timeZone === 'default' ? t(timeZone) : timeZone;\n return (\n <Button\n ref={controlProps.ref as React.Ref<HTMLButtonElement>}\n onClick={controlProps.triggerProps.onClick}\n view=\"flat-secondary\"\n width=\"max\"\n pin=\"clear-clear\"\n size={size}\n disabled={props.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={controlProps.open}\n onKeyDown={controlProps.triggerProps.onKeyDown}\n className={b('control')}\n >\n {`${value} (${getTimeZoneOffset(timeZone)})`}\n <Icon\n className={b('control-icon')}\n data={ChevronRight}\n size={props.isMobile ? 20 : 16}\n />\n </Button>\n );\n }}\n renderOption={({value, content}) => {\n const v = content ?? value;\n return (\n <span className={b('item')}>\n <span className={b('item-title')} title={value}>\n {value === 'system' || value === 'default' ? t(value) : v}&nbsp;\n </span>\n <Text color=\"secondary\">{getTimeZoneOffset(value)}</Text>\n </span>\n );\n }}\n filterable\n />\n );\n}\n"]}
@@ -1,4 +1,12 @@
1
1
  export declare const i18n: ((key: "default" | "system", params?: import("@gravity-ui/i18n").Params) => string) & {
2
+ Translation: import("react").ComponentType<{
3
+ children: (props: {
4
+ t: (key: "default" | "system", params?: import("@gravity-ui/i18n").Params) => string;
5
+ }) => React.ReactNode;
6
+ }>;
7
+ useTranslation: () => {
8
+ t: (key: "default" | "system", params?: import("@gravity-ui/i18n").Params) => string;
9
+ };
2
10
  keysetData: {
3
11
  "g-date-relative-range-date-picker-zones": Record<"default" | "system", import("@gravity-ui/i18n").KeyData>;
4
12
  };
@@ -25,14 +25,3 @@ export interface RelativeRangeDatePickerStateOptions {
25
25
  allowNullableValues?: boolean;
26
26
  }
27
27
  export declare function useRelativeRangeDatePickerState(props: RelativeRangeDatePickerStateOptions): RelativeRangeDatePickerState;
28
- export declare function getRangeValidationResult(value: RelativeRangeDatePickerValue | null, allowNullableValues: boolean | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined, timeZone: string): {
29
- isInvalid: boolean;
30
- errors: never[];
31
- startValidationResult?: undefined;
32
- endValidationResult?: undefined;
33
- } | {
34
- isInvalid: boolean;
35
- startValidationResult: import("../../utils/validation/datePicker.js").ValidationResult;
36
- endValidationResult: import("../../utils/validation/datePicker.js").ValidationResult;
37
- errors: string[];
38
- };
@@ -1,19 +1,20 @@
1
1
  import React from 'react';
2
- import { dateTimeParse } from '@gravity-ui/date-utils';
3
2
  import { useControlledState } from '@gravity-ui/uikit';
4
- import { getValidationResult } from "../../utils/validation/datePicker.js";
5
- import { i18n } from "../i18n/index.js";
3
+ import { i18n } from "../../utils/validation/i18n/index.js";
4
+ import { getRangeValidationResult } from "../../utils/validation/relativeRangeDatePicker.js";
6
5
  export function useRelativeRangeDatePickerState(props) {
7
6
  var _a, _b;
8
7
  const [value, setValue] = useControlledState(props.value, (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null);
9
8
  const [timeZone, setTimeZone] = useControlledState(props.timeZone, (_b = props.defaultTimeZone) !== null && _b !== void 0 ? _b : 'default', props.onUpdateTimeZone);
10
- const validation = React.useMemo(() => getRangeValidationResult(value, props.allowNullableValues, props.minValue, props.maxValue, props.isDateUnavailable, timeZone), [
9
+ const { t } = i18n.useTranslation();
10
+ const validation = React.useMemo(() => getRangeValidationResult(value, props.allowNullableValues, props.minValue, props.maxValue, props.isDateUnavailable, timeZone, t), [
11
11
  value,
12
12
  props.allowNullableValues,
13
13
  props.isDateUnavailable,
14
14
  props.maxValue,
15
15
  props.minValue,
16
16
  timeZone,
17
+ t,
17
18
  ]);
18
19
  return Object.assign({ value,
19
20
  timeZone,
@@ -26,31 +27,4 @@ export function useRelativeRangeDatePickerState(props) {
26
27
  }
27
28
  } }, validation);
28
29
  }
29
- export function getRangeValidationResult(value, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone) {
30
- if (!value) {
31
- return { isInvalid: false, errors: [] };
32
- }
33
- const startDate = value.start ? dateTimeParse(value.start.value, { timeZone }) : null;
34
- const endDate = value.end ? dateTimeParse(value.end.value, { timeZone, roundUp: true }) : null;
35
- const startValidationResult = getValidationResult(startDate, minValue, maxValue, isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined, timeZone, i18n('"From"'));
36
- if (!startDate && !allowNullableValues) {
37
- startValidationResult.isInvalid = true;
38
- startValidationResult.errors.push(i18n('"From" is required.'));
39
- }
40
- const endValidationResult = getValidationResult(endDate, minValue, maxValue, isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined, timeZone, i18n('"To"'));
41
- if (!endDate && !allowNullableValues) {
42
- endValidationResult.isInvalid = true;
43
- endValidationResult.errors.push(i18n('"To" is required.'));
44
- }
45
- if (startDate && endDate && endDate.isBefore(startDate)) {
46
- startValidationResult.isInvalid = true;
47
- startValidationResult.errors.push(i18n(`"From" can't be after "To".`));
48
- }
49
- return {
50
- isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,
51
- startValidationResult,
52
- endValidationResult,
53
- errors: startValidationResult.errors.concat(endValidationResult.errors),
54
- };
55
- }
56
30
  //# sourceMappingURL=useRelativeRangeDatePickerState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRelativeRangeDatePickerState.js","sourceRoot":"../../../../../src","sources":["components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAAC,mBAAmB,EAAC,6CAA0C;AACtE,OAAO,EAAC,IAAI,EAAC,yBAAgB;AA4B7B,MAAM,UAAU,+BAA+B,CAC3C,KAA0C;;IAE1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAA,KAAK,CAAC,YAAY,mCAAI,IAAI,CAAC,CAAC;IAEtF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,kBAAkB,CAC9C,KAAK,CAAC,QAAQ,EACd,MAAA,KAAK,CAAC,eAAe,mCAAI,SAAS,EAClC,KAAK,CAAC,gBAAgB,CACzB,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC5B,GAAG,EAAE,CACD,wBAAwB,CACpB,KAAK,EACL,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,iBAAiB,EACvB,QAAQ,CACX,EACL;QACI,KAAK;QACL,KAAK,CAAC,mBAAmB;QACzB,KAAK,CAAC,iBAAiB;QACvB,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,QAAQ;QACd,QAAQ;KACX,CACJ,CAAC;IAEF,uBACI,KAAK;QACL,QAAQ;QACR,QAAQ,CAAC,CAAC,EAAE,EAAE;;YACV,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,WAAW,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC5C,MAAA,KAAK,CAAC,QAAQ,sDAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC,IACE,UAAU,EACf;AACN,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB;IAEhB,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,mBAAmB,CAC7C,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,EACR,IAAI,CAAC,QAAQ,CAAC,CACjB,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrC,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,mBAAmB,GAAG,mBAAmB,CAC3C,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACxE,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,CACf,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACrC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACH,SAAS,EAAE,qBAAqB,CAAC,SAAS,IAAI,mBAAmB,CAAC,SAAS;QAC3E,qBAAqB;QACrB,mBAAmB;QACnB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;KAC1E,CAAC;AACN,CAAC","sourcesContent":["import React from 'react';\n\nimport {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState} from '@gravity-ui/uikit';\n\nimport type {Value} from '../../RelativeDatePicker';\nimport type {RangeValue} from '../../types';\nimport {getValidationResult} from '../../utils/validation/datePicker';\nimport {i18n} from '../i18n';\n\nexport type RelativeRangeDatePickerValue = RangeValue<Value | null>;\n\nexport interface RelativeRangeDatePickerState {\n value: RelativeRangeDatePickerValue | null;\n timeZone: string;\n setValue: (value: RelativeRangeDatePickerValue | null, timeZone: string) => void;\n isInvalid: boolean;\n errors: string[];\n}\n\nexport interface RelativeRangeDatePickerStateOptions {\n value?: RelativeRangeDatePickerValue | null;\n defaultValue?: RelativeRangeDatePickerValue;\n onUpdate?: (value: RelativeRangeDatePickerValue | null, timeZone: string) => void;\n timeZone?: string;\n defaultTimeZone?: string;\n onUpdateTimeZone?: (timeZone: string) => void;\n /** The minimum allowed date that a user may select. */\n minValue?: DateTime;\n /** The maximum allowed date that a user may select. */\n maxValue?: DateTime;\n /** Callback that is called for each date of the calendar. If it returns true, then the date is unavailable. */\n isDateUnavailable?: (date: DateTime, endpoint: 'start' | 'end') => boolean;\n allowNullableValues?: boolean;\n}\n\nexport function useRelativeRangeDatePickerState(\n props: RelativeRangeDatePickerStateOptions,\n): RelativeRangeDatePickerState {\n const [value, setValue] = useControlledState(props.value, props.defaultValue ?? null);\n\n const [timeZone, setTimeZone] = useControlledState(\n props.timeZone,\n props.defaultTimeZone ?? 'default',\n props.onUpdateTimeZone,\n );\n\n const validation = React.useMemo(\n () =>\n getRangeValidationResult(\n value,\n props.allowNullableValues,\n props.minValue,\n props.maxValue,\n props.isDateUnavailable,\n timeZone,\n ),\n [\n value,\n props.allowNullableValues,\n props.isDateUnavailable,\n props.maxValue,\n props.minValue,\n timeZone,\n ],\n );\n\n return {\n value,\n timeZone,\n setValue(v, tz) {\n setValue(v);\n setTimeZone(tz);\n if (value !== v || (value && timeZone !== tz)) {\n props.onUpdate?.(v, tz);\n }\n },\n ...validation,\n };\n}\n\nexport function getRangeValidationResult(\n value: RelativeRangeDatePickerValue | null,\n allowNullableValues: boolean | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined,\n timeZone: string,\n) {\n if (!value) {\n return {isInvalid: false, errors: []};\n }\n\n const startDate = value.start ? dateTimeParse(value.start.value, {timeZone}) : null;\n const endDate = value.end ? dateTimeParse(value.end.value, {timeZone, roundUp: true}) : null;\n\n const startValidationResult = getValidationResult(\n startDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined,\n timeZone,\n i18n('\"From\"'),\n );\n\n if (!startDate && !allowNullableValues) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(i18n('\"From\" is required.'));\n }\n\n const endValidationResult = getValidationResult(\n endDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined,\n timeZone,\n i18n('\"To\"'),\n );\n\n if (!endDate && !allowNullableValues) {\n endValidationResult.isInvalid = true;\n endValidationResult.errors.push(i18n('\"To\" is required.'));\n }\n\n if (startDate && endDate && endDate.isBefore(startDate)) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(i18n(`\"From\" can't be after \"To\".`));\n }\n\n return {\n isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,\n startValidationResult,\n endValidationResult,\n errors: startValidationResult.errors.concat(endValidationResult.errors),\n };\n}\n"]}
1
+ {"version":3,"file":"useRelativeRangeDatePickerState.js","sourceRoot":"../../../../../src","sources":["components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAAC,IAAI,EAAC,6CAAoC;AACjD,OAAO,EAAC,wBAAwB,EAAC,0DAAuD;AA4BxF,MAAM,UAAU,+BAA+B,CAC3C,KAA0C;;IAE1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAA,KAAK,CAAC,YAAY,mCAAI,IAAI,CAAC,CAAC;IAEtF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,kBAAkB,CAC9C,KAAK,CAAC,QAAQ,EACd,MAAA,KAAK,CAAC,eAAe,mCAAI,SAAS,EAClC,KAAK,CAAC,gBAAgB,CACzB,CAAC;IAEF,MAAM,EAAC,CAAC,EAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC5B,GAAG,EAAE,CACD,wBAAwB,CACpB,KAAK,EACL,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,iBAAiB,EACvB,QAAQ,EACR,CAAC,CACJ,EACL;QACI,KAAK;QACL,KAAK,CAAC,mBAAmB;QACzB,KAAK,CAAC,iBAAiB;QACvB,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,QAAQ;QACd,QAAQ;QACR,CAAC;KACJ,CACJ,CAAC;IAEF,uBACI,KAAK;QACL,QAAQ;QACR,QAAQ,CAAC,CAAC,EAAE,EAAE;;YACV,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,WAAW,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC5C,MAAA,KAAK,CAAC,QAAQ,sDAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC,IACE,UAAU,EACf;AACN,CAAC","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState} from '@gravity-ui/uikit';\n\nimport type {Value} from '../../RelativeDatePicker';\nimport type {RangeValue} from '../../types';\nimport {i18n} from '../../utils/validation/i18n';\nimport {getRangeValidationResult} from '../../utils/validation/relativeRangeDatePicker';\n\nexport type RelativeRangeDatePickerValue = RangeValue<Value | null>;\n\nexport interface RelativeRangeDatePickerState {\n value: RelativeRangeDatePickerValue | null;\n timeZone: string;\n setValue: (value: RelativeRangeDatePickerValue | null, timeZone: string) => void;\n isInvalid: boolean;\n errors: string[];\n}\n\nexport interface RelativeRangeDatePickerStateOptions {\n value?: RelativeRangeDatePickerValue | null;\n defaultValue?: RelativeRangeDatePickerValue;\n onUpdate?: (value: RelativeRangeDatePickerValue | null, timeZone: string) => void;\n timeZone?: string;\n defaultTimeZone?: string;\n onUpdateTimeZone?: (timeZone: string) => void;\n /** The minimum allowed date that a user may select. */\n minValue?: DateTime;\n /** The maximum allowed date that a user may select. */\n maxValue?: DateTime;\n /** Callback that is called for each date of the calendar. If it returns true, then the date is unavailable. */\n isDateUnavailable?: (date: DateTime, endpoint: 'start' | 'end') => boolean;\n allowNullableValues?: boolean;\n}\n\nexport function useRelativeRangeDatePickerState(\n props: RelativeRangeDatePickerStateOptions,\n): RelativeRangeDatePickerState {\n const [value, setValue] = useControlledState(props.value, props.defaultValue ?? null);\n\n const [timeZone, setTimeZone] = useControlledState(\n props.timeZone,\n props.defaultTimeZone ?? 'default',\n props.onUpdateTimeZone,\n );\n\n const {t} = i18n.useTranslation();\n const validation = React.useMemo(\n () =>\n getRangeValidationResult(\n value,\n props.allowNullableValues,\n props.minValue,\n props.maxValue,\n props.isDateUnavailable,\n timeZone,\n t,\n ),\n [\n value,\n props.allowNullableValues,\n props.isDateUnavailable,\n props.maxValue,\n props.minValue,\n timeZone,\n t,\n ],\n );\n\n return {\n value,\n timeZone,\n setValue(v, tz) {\n setValue(v);\n setTimeZone(tz);\n if (value !== v || (value && timeZone !== tz)) {\n props.onUpdate?.(v, tz);\n }\n },\n ...validation,\n };\n}\n"]}
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "\"From\"": "\"From\"",
3
- "\"From\" is required.": "\"From\" is required.",
4
3
  "\"To\"": "\"To\"",
5
- "\"To\" is required.": "\"To\" is required.",
6
- "\"From\" can't be after \"To\".": "\"From\" can't be after \"To\".",
7
4
  "to": "to"
8
5
  }
@@ -1,5 +1,13 @@
1
- export declare const i18n: ((key: "to" | "\"From\"" | "\"From\" is required." | "\"To\"" | "\"To\" is required." | "\"From\" can't be after \"To\".", params?: import("@gravity-ui/i18n").Params) => string) & {
1
+ export declare const i18n: ((key: "to" | "\"From\"" | "\"To\"", params?: import("@gravity-ui/i18n").Params) => string) & {
2
+ Translation: import("react").ComponentType<{
3
+ children: (props: {
4
+ t: (key: "to" | "\"From\"" | "\"To\"", params?: import("@gravity-ui/i18n").Params) => string;
5
+ }) => React.ReactNode;
6
+ }>;
7
+ useTranslation: () => {
8
+ t: (key: "to" | "\"From\"" | "\"To\"", params?: import("@gravity-ui/i18n").Params) => string;
9
+ };
2
10
  keysetData: {
3
- "g-date-relative-range-date-picker": Record<"to" | "\"From\"" | "\"From\" is required." | "\"To\"" | "\"To\" is required." | "\"From\" can't be after \"To\".", import("@gravity-ui/i18n").KeyData>;
11
+ "g-date-relative-range-date-picker": Record<"to" | "\"From\"" | "\"To\"", import("@gravity-ui/i18n").KeyData>;
4
12
  };
5
13
  };
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "\"From\"": "«От»",
3
- "\"From\" is required.": "«От» обязательно.",
4
3
  "\"To\"": "«До»",
5
- "\"To\" is required.": "«До» обязательно.",
6
- "\"From\" can't be after \"To\".": "«От» не может быть позже чем «До».",
7
4
  "to": "до"
8
5
  }
@@ -1,6 +1,7 @@
1
1
  import type { Value } from "../RelativeDatePicker/index.js";
2
- import type { RangeValue } from "../types/index.js";
2
+ import type { ExtractFunctionType, RangeValue } from "../types/index.js";
3
3
  import type { Preset } from "./components/Presets/defaultPresets.js";
4
+ import { i18n } from "./components/Presets/i18n/index.js";
4
5
  export declare function resolveTimeZone(timeZone: string): string;
5
6
  export declare function normalizeTimeZone(timeZone: string): string;
6
7
  export declare function getTimeZoneOffset(timeZone: string): string;
@@ -10,6 +11,8 @@ interface GetDefaultTitleArgs {
10
11
  alwaysShowAsAbsolute?: boolean;
11
12
  format?: string;
12
13
  presets?: Preset[];
14
+ presetsTranslations?: ExtractFunctionType<typeof i18n>;
15
+ lang?: string;
13
16
  }
14
- export declare function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format, presets, }: GetDefaultTitleArgs): string;
17
+ export declare function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format, presets, presetsTranslations, lang, }: GetDefaultTitleArgs): string;
15
18
  export {};
@@ -1,4 +1,5 @@
1
1
  import { dateTime, dateTimeParse } from '@gravity-ui/date-utils';
2
+ import { i18n } from "./components/Presets/i18n/index.js";
2
3
  import { getPresetTitle } from "./components/Presets/utils.js";
3
4
  export function resolveTimeZone(timeZone) {
4
5
  if (timeZone === 'default' || timeZone === 'system') {
@@ -16,7 +17,7 @@ export function normalizeTimeZone(timeZone) {
16
17
  export function getTimeZoneOffset(timeZone) {
17
18
  return `UTC ${dateTime({ timeZone }).format('Z')}`;
18
19
  }
19
- export function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format = 'L', presets, }) {
20
+ export function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format = 'L', presets, presetsTranslations = i18n, lang = 'en', }) {
20
21
  var _a, _b, _c, _d, _e, _f;
21
22
  if (!value) {
22
23
  return '';
@@ -27,19 +28,19 @@ export function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format
27
28
  from =
28
29
  value.start.type === 'relative' && !alwaysShowAsAbsolute
29
30
  ? value.start.value
30
- : (_b = (_a = dateTimeParse(value.start.value, { timeZone })) === null || _a === void 0 ? void 0 : _a.format(format)) !== null && _b !== void 0 ? _b : '';
31
+ : ((_b = (_a = dateTimeParse(value.start.value, { timeZone, lang })) === null || _a === void 0 ? void 0 : _a.format(format)) !== null && _b !== void 0 ? _b : '');
31
32
  }
32
33
  let to = '';
33
34
  if (value.end) {
34
35
  to =
35
36
  value.end.type === 'relative' && !alwaysShowAsAbsolute
36
37
  ? value.end.value
37
- : (_d = (_c = dateTimeParse(value.end.value, { timeZone, roundUp: true })) === null || _c === void 0 ? void 0 : _c.format(format)) !== null && _d !== void 0 ? _d : '';
38
+ : ((_d = (_c = dateTimeParse(value.end.value, { timeZone, roundUp: true, lang })) === null || _c === void 0 ? void 0 : _c.format(format)) !== null && _d !== void 0 ? _d : '');
38
39
  }
39
40
  if (!alwaysShowAsAbsolute &&
40
41
  ((_e = value.start) === null || _e === void 0 ? void 0 : _e.type) === 'relative' &&
41
42
  ((_f = value.end) === null || _f === void 0 ? void 0 : _f.type) === 'relative') {
42
- return `${getPresetTitle(value.start.value, value.end.value, presets)}`;
43
+ return `${getPresetTitle(value.start.value, value.end.value, presets, presetsTranslations)}`;
43
44
  }
44
45
  const delimiter = ' — ';
45
46
  return `${from}${delimiter}${to}${tz}`;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAM/D,OAAO,EAAC,cAAc,EAAC,sCAAmC;AAE1D,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC5C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,OAAO,OAAO,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACrD,CAAC;AASD,MAAM,UAAU,eAAe,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,oBAAoB,EACpB,MAAM,GAAG,GAAG,EACZ,OAAO,GACW;;IAClB,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;IAE7E,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI;YACA,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,oBAAoB;gBACpD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;gBACnB,CAAC,CAAC,MAAA,MAAA,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,0CAAE,MAAM,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACZ,EAAE;YACE,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,oBAAoB;gBAClD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;gBACjB,CAAC,CAAC,MAAA,MAAA,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,0CAAE,MAAM,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;IAC9F,CAAC;IAED,IACI,CAAC,oBAAoB;QACrB,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,IAAI,MAAK,UAAU;QAChC,CAAA,MAAA,KAAK,CAAC,GAAG,0CAAE,IAAI,MAAK,UAAU,EAChC,CAAC;QACC,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC;IAExB,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AAC3C,CAAC","sourcesContent":["import {dateTime, dateTimeParse} from '@gravity-ui/date-utils';\n\nimport type {Value} from '../RelativeDatePicker';\nimport type {RangeValue} from '../types';\n\nimport type {Preset} from './components/Presets/defaultPresets';\nimport {getPresetTitle} from './components/Presets/utils';\n\nexport function resolveTimeZone(timeZone: string) {\n if (timeZone === 'default' || timeZone === 'system') {\n return dateTime({timeZone}).timeZone();\n }\n\n return timeZone;\n}\n\nexport function normalizeTimeZone(timeZone: string) {\n const lowered = timeZone.toLowerCase();\n if (lowered === 'default' || lowered === 'system') {\n return lowered;\n }\n\n return resolveTimeZone(timeZone);\n}\n\nexport function getTimeZoneOffset(timeZone: string) {\n return `UTC ${dateTime({timeZone}).format('Z')}`;\n}\n\ninterface GetDefaultTitleArgs {\n value: RangeValue<Value | null> | null;\n timeZone: string;\n alwaysShowAsAbsolute?: boolean;\n format?: string;\n presets?: Preset[];\n}\nexport function getDefaultTitle({\n value,\n timeZone,\n alwaysShowAsAbsolute,\n format = 'L',\n presets,\n}: GetDefaultTitleArgs) {\n if (!value) {\n return '';\n }\n\n const tz = timeZone === 'default' ? '' : ` (${getTimeZoneOffset(timeZone)})`;\n\n let from = '';\n if (value.start) {\n from =\n value.start.type === 'relative' && !alwaysShowAsAbsolute\n ? value.start.value\n : dateTimeParse(value.start.value, {timeZone})?.format(format) ?? '';\n }\n let to = '';\n if (value.end) {\n to =\n value.end.type === 'relative' && !alwaysShowAsAbsolute\n ? value.end.value\n : dateTimeParse(value.end.value, {timeZone, roundUp: true})?.format(format) ?? '';\n }\n\n if (\n !alwaysShowAsAbsolute &&\n value.start?.type === 'relative' &&\n value.end?.type === 'relative'\n ) {\n return `${getPresetTitle(value.start.value, value.end.value, presets)}`;\n }\n\n const delimiter = ' — ';\n\n return `${from}${delimiter}${to}${tz}`;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {dateTime, dateTimeParse} from '@gravity-ui/date-utils';\n\nimport type {Value} from '../RelativeDatePicker';\nimport type {ExtractFunctionType, RangeValue} from '../types';\n\nimport type {Preset} from './components/Presets/defaultPresets';\nimport {i18n} from './components/Presets/i18n';\nimport {getPresetTitle} from './components/Presets/utils';\n\nexport function resolveTimeZone(timeZone: string) {\n if (timeZone === 'default' || timeZone === 'system') {\n return dateTime({timeZone}).timeZone();\n }\n\n return timeZone;\n}\n\nexport function normalizeTimeZone(timeZone: string) {\n const lowered = timeZone.toLowerCase();\n if (lowered === 'default' || lowered === 'system') {\n return lowered;\n }\n\n return resolveTimeZone(timeZone);\n}\n\nexport function getTimeZoneOffset(timeZone: string) {\n return `UTC ${dateTime({timeZone}).format('Z')}`;\n}\n\ninterface GetDefaultTitleArgs {\n value: RangeValue<Value | null> | null;\n timeZone: string;\n alwaysShowAsAbsolute?: boolean;\n format?: string;\n presets?: Preset[];\n presetsTranslations?: ExtractFunctionType<typeof i18n>;\n lang?: string;\n}\nexport function getDefaultTitle({\n value,\n timeZone,\n alwaysShowAsAbsolute,\n format = 'L',\n presets,\n presetsTranslations = i18n,\n lang = 'en',\n}: GetDefaultTitleArgs) {\n if (!value) {\n return '';\n }\n\n const tz = timeZone === 'default' ? '' : ` (${getTimeZoneOffset(timeZone)})`;\n\n let from = '';\n if (value.start) {\n from =\n value.start.type === 'relative' && !alwaysShowAsAbsolute\n ? value.start.value\n : (dateTimeParse(value.start.value, {timeZone, lang})?.format(format) ?? '');\n }\n let to = '';\n if (value.end) {\n to =\n value.end.type === 'relative' && !alwaysShowAsAbsolute\n ? value.end.value\n : (dateTimeParse(value.end.value, {timeZone, roundUp: true, lang})?.format(\n format,\n ) ?? '');\n }\n\n if (\n !alwaysShowAsAbsolute &&\n value.start?.type === 'relative' &&\n value.end?.type === 'relative'\n ) {\n return `${getPresetTitle(value.start.value, value.end.value, presets, presetsTranslations)}`;\n }\n\n const delimiter = ' — ';\n\n return `${from}${delimiter}${to}${tz}`;\n}\n"]}
@@ -0,0 +1 @@
1
+ export type ExtractFunctionType<T> = T extends (...args: infer A) => infer R ? (...args: A) => R : never;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"../../../../src","sources":["components/types/helpers.ts"],"names":[],"mappings":"","sourcesContent":["export type ExtractFunctionType<T> = T extends (...args: infer A) => infer R\n ? (...args: A) => R\n : never;\n"]}
@@ -2,3 +2,4 @@ export type * from "./datePicker.js";
2
2
  export type * from "./inputs.js";
3
3
  export type * from "./style.js";
4
4
  export type * from "./events.js";
5
+ export type * from "./helpers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["components/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export type * from './datePicker';\nexport type * from './inputs';\nexport type * from './style';\nexport type * from './events';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["components/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export type * from './datePicker';\nexport type * from './inputs';\nexport type * from './style';\nexport type * from './events';\nexport type * from './helpers';\n"]}
@@ -30,8 +30,8 @@ export interface InputDOMProps {
30
30
  */
31
31
  name?: string;
32
32
  /**
33
- * The id of a <form> in the same document. If this attribute is not set,
34
- * the <input> is associated with its ancestor <form> element, if any.
33
+ * The id of a form element in the same document. If this attribute is not set,
34
+ * the input element is associated with its ancestor form element, if any.
35
35
  */
36
36
  form?: string;
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inputs.js","sourceRoot":"../../../../src","sources":["components/types/inputs.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n TextInputProps as TextInputBaseProps,\n TextInputPin,\n TextInputSize,\n TextInputView,\n} from '@gravity-ui/uikit';\n\nexport type ValidationState = 'invalid';\n\nexport interface AccessibilityProps {\n /** Defines a string value that labels the current element. */\n 'aria-label'?: string;\n /** Identifies the element (or elements) that labels the current element. */\n 'aria-labelledby'?: string;\n /** Identifies the element (or elements) that describes the object. */\n 'aria-describedby'?: string;\n /** Identifies the element (or elements) that provide a detailed, extended description for the object. */\n 'aria-details'?: string;\n}\n\nexport interface ValueBase<T, C = T> {\n /** The current value (controlled). */\n value?: T;\n /** The default value (uncontrolled). */\n defaultValue?: T;\n /** Handler that is called when the value changes. */\n onUpdate?: (value: C) => void;\n}\n\nexport interface Validation\n extends Pick<TextInputBaseProps, 'validationState' | 'errorMessage' | 'errorPlacement'> {}\n\nexport interface DomProps {\n /** The element's unique identifier. */\n id?: string;\n}\n\nexport interface InputDOMProps {\n /**\n * The name of the input element, used when submitting an HTML form.\n */\n name?: string;\n /**\n * The id of a <form> in the same document. If this attribute is not set,\n * the <input> is associated with its ancestor <form> element, if any.\n */\n form?: string;\n}\nexport interface InputBase {\n /**\n * Whether the field is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the calendar value is immutable.\n * @default false\n */\n readOnly?: boolean;\n}\n\nexport interface TextInputProps {\n /** The size of the element */\n size?: TextInputSize;\n /**\n * Corner rounding\n * @default 'round-round'\n */\n pin?: TextInputPin;\n /** Control view */\n view?: TextInputView;\n /** Inner field label */\n label?: TextInputBaseProps['label'];\n /** Text that appears in the field when it has no value set */\n placeholder?: string;\n /**\n * Show clear button\n * @default false\n */\n hasClear?: boolean;\n}\n\nexport interface TextInputExtendProps {\n /**\n * User`s node rendered before label and input\n */\n startContent?: TextInputBaseProps['startContent'];\n /**\n * User`s node rendered after input and clear button\n */\n endContent?: TextInputBaseProps['endContent'];\n}\n\nexport interface RangeValue<T> {\n /** The start value of the range. */\n start: T;\n /** The end value of the range. */\n end: T;\n}\n"]}
1
+ {"version":3,"file":"inputs.js","sourceRoot":"../../../../src","sources":["components/types/inputs.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n TextInputProps as TextInputBaseProps,\n TextInputPin,\n TextInputSize,\n TextInputView,\n} from '@gravity-ui/uikit';\n\nexport type ValidationState = 'invalid';\n\nexport interface AccessibilityProps {\n /** Defines a string value that labels the current element. */\n 'aria-label'?: string;\n /** Identifies the element (or elements) that labels the current element. */\n 'aria-labelledby'?: string;\n /** Identifies the element (or elements) that describes the object. */\n 'aria-describedby'?: string;\n /** Identifies the element (or elements) that provide a detailed, extended description for the object. */\n 'aria-details'?: string;\n}\n\nexport interface ValueBase<T, C = T> {\n /** The current value (controlled). */\n value?: T;\n /** The default value (uncontrolled). */\n defaultValue?: T;\n /** Handler that is called when the value changes. */\n onUpdate?: (value: C) => void;\n}\n\nexport interface Validation\n extends Pick<TextInputBaseProps, 'validationState' | 'errorMessage' | 'errorPlacement'> {}\n\nexport interface DomProps {\n /** The element's unique identifier. */\n id?: string;\n}\n\nexport interface InputDOMProps {\n /**\n * The name of the input element, used when submitting an HTML form.\n */\n name?: string;\n /**\n * The id of a form element in the same document. If this attribute is not set,\n * the input element is associated with its ancestor form element, if any.\n */\n form?: string;\n}\nexport interface InputBase {\n /**\n * Whether the field is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the calendar value is immutable.\n * @default false\n */\n readOnly?: boolean;\n}\n\nexport interface TextInputProps {\n /** The size of the element */\n size?: TextInputSize;\n /**\n * Corner rounding\n * @default 'round-round'\n */\n pin?: TextInputPin;\n /** Control view */\n view?: TextInputView;\n /** Inner field label */\n label?: TextInputBaseProps['label'];\n /** Text that appears in the field when it has no value set */\n placeholder?: string;\n /**\n * Show clear button\n * @default false\n */\n hasClear?: boolean;\n}\n\nexport interface TextInputExtendProps {\n /**\n * User`s node rendered before label and input\n */\n startContent?: TextInputBaseProps['startContent'];\n /**\n * User`s node rendered after input and clear button\n */\n endContent?: TextInputBaseProps['endContent'];\n}\n\nexport interface RangeValue<T> {\n /** The start value of the range. */\n start: T;\n /** The end value of the range. */\n end: T;\n}\n"]}
@@ -8,4 +8,4 @@ export declare function createPlaceholderValue({ placeholderValue, timeZone }: P
8
8
  export declare function isInvalid(value: DateTime | null | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined): boolean;
9
9
  export declare function constrainValue(value: DateTime, minValue: DateTime | undefined, maxValue: DateTime | undefined): DateTime;
10
10
  export declare function mergeDateTime(date: DateTime, time: DateTime): DateTime;
11
- export declare function formatDateTime(date: DateTime, format: string, timezone: string): string;
11
+ export declare function formatDateTime(date: DateTime, format: string, timezone: string, lang: string): string;
@@ -32,7 +32,7 @@ export function mergeDateTime(date, time) {
32
32
  .set('minutes', time.minute())
33
33
  .set('seconds', time.second());
34
34
  }
35
- export function formatDateTime(date, format, timezone) {
36
- return dateTime({ input: date, timeZone: timezone }).format(format);
35
+ export function formatDateTime(date, format, timezone, lang) {
36
+ return dateTime({ input: date, timeZone: timezone, lang }).format(format);
37
37
  }
38
38
  //# sourceMappingURL=dates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAGhD,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,MAAM,UAAU,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,SAAS,CACrB,KAAkC,EAClC,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,KAAe,EACf,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,IAAc;IACxD,OAAO,IAAI;SACN,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB;IAC3E,OAAO,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC","sourcesContent":["import {dateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nexport function isWeekend(date: DateTime) {\n return [0, 6].includes(date.day());\n}\n\nexport interface PlaceholderValueOptions {\n placeholderValue?: DateTime;\n timeZone?: string;\n}\nexport function createPlaceholderValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n return placeholderValue ?? dateTime({timeZone}).startOf('day');\n}\n\nexport function isInvalid(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (!value) {\n return false;\n }\n\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n\n return false;\n}\n\nexport function constrainValue(\n value: DateTime,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n\n return value;\n}\n\nexport function mergeDateTime(date: DateTime, time: DateTime) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n\nexport function formatDateTime(date: DateTime, format: string, timezone: string) {\n return dateTime({input: date, timeZone: timezone}).format(format);\n}\n"]}
1
+ {"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAGhD,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,MAAM,UAAU,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,SAAS,CACrB,KAAkC,EAClC,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,KAAe,EACf,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,IAAc;IACxD,OAAO,IAAI;SACN,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import {dateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nexport function isWeekend(date: DateTime) {\n return [0, 6].includes(date.day());\n}\n\nexport interface PlaceholderValueOptions {\n placeholderValue?: DateTime;\n timeZone?: string;\n}\nexport function createPlaceholderValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n return placeholderValue ?? dateTime({timeZone}).startOf('day');\n}\n\nexport function isInvalid(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (!value) {\n return false;\n }\n\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n\n return false;\n}\n\nexport function constrainValue(\n value: DateTime,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n\n return value;\n}\n\nexport function mergeDateTime(date: DateTime, time: DateTime) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n\nexport function formatDateTime(date: DateTime, format: string, timezone: string, lang: string) {\n return dateTime({input: date, timeZone: timezone, lang}).format(format);\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
+ import type { ExtractFunctionType } from "../../types/index.js";
3
+ import { i18n } from "./i18n/index.js";
2
4
  export interface ValidationResult {
3
5
  isInvalid: boolean;
4
6
  errors: string[];
5
7
  }
6
- export declare function getValidationResult(value: DateTime | null | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime) => boolean) | undefined, timeZone: string, valueTitle?: string): ValidationResult;
8
+ export declare function getValidationResult(value: DateTime | null | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime) => boolean) | undefined, timeZone: string, valueTitle?: string, t?: ExtractFunctionType<typeof i18n>): ValidationResult;
@@ -1,5 +1,5 @@
1
1
  import { i18n } from "./i18n/index.js";
2
- export function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value') {
2
+ export function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value', t = i18n) {
3
3
  const rangeOverflow = value && maxValue && maxValue.isBefore(value);
4
4
  const rangeUnderflow = value && minValue && value.isBefore(minValue);
5
5
  const isUnavailable = (value && (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(value))) || false;
@@ -7,19 +7,19 @@ export function getValidationResult(value, minValue, maxValue, isDateUnavailable
7
7
  const errors = [];
8
8
  if (isInvalid) {
9
9
  if (rangeUnderflow && minValue) {
10
- errors.push(i18n('Value must be {minValue} or later.', {
10
+ errors.push(t('Value must be {minValue} or later.', {
11
11
  minValue: minValue.timeZone(timeZone).format(),
12
12
  value: valueTitle,
13
13
  }));
14
14
  }
15
15
  if (rangeOverflow && maxValue) {
16
- errors.push(i18n('Value must be {maxValue} or earlier.', {
16
+ errors.push(t('Value must be {maxValue} or earlier.', {
17
17
  maxValue: maxValue.timeZone(timeZone).format(),
18
18
  value: valueTitle,
19
19
  }));
20
20
  }
21
21
  if (isUnavailable) {
22
- errors.push(i18n('Selected date unavailable.'));
22
+ errors.push(t('Selected date unavailable.'));
23
23
  }
24
24
  }
25
25
  return { isInvalid, errors };
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO;IAEpB,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,KAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,KAAK,CAAC,CAAA,CAAC,IAAI,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,oCAAoC,EAAE;gBACvC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,sCAAsC,EAAE;gBACzC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC;AAC/B,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport {i18n} from './i18n';\n\nexport interface ValidationResult {\n isInvalid: boolean;\n errors: string[];\n}\n\nexport function getValidationResult(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime) => boolean) | undefined,\n timeZone: string,\n valueTitle = 'Value',\n): ValidationResult {\n const rangeOverflow = value && maxValue && maxValue.isBefore(value);\n const rangeUnderflow = value && minValue && value.isBefore(minValue);\n const isUnavailable = (value && isDateUnavailable?.(value)) || false;\n const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;\n const errors = [];\n\n if (isInvalid) {\n if (rangeUnderflow && minValue) {\n errors.push(\n i18n('Value must be {minValue} or later.', {\n minValue: minValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (rangeOverflow && maxValue) {\n errors.push(\n i18n('Value must be {maxValue} or earlier.', {\n maxValue: maxValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (isUnavailable) {\n errors.push(i18n('Selected date unavailable.'));\n }\n }\n\n return {isInvalid, errors};\n}\n"]}
1
+ {"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,IAAI;IAE1C,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,KAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,KAAK,CAAC,CAAA,CAAC,IAAI,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,oCAAoC,EAAE;gBACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,sCAAsC,EAAE;gBACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC;AAC/B,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {ExtractFunctionType} from '../../types';\n\nimport {i18n} from './i18n';\n\nexport interface ValidationResult {\n isInvalid: boolean;\n errors: string[];\n}\n\nexport function getValidationResult(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime) => boolean) | undefined,\n timeZone: string,\n valueTitle = 'Value',\n t: ExtractFunctionType<typeof i18n> = i18n,\n): ValidationResult {\n const rangeOverflow = value && maxValue && maxValue.isBefore(value);\n const rangeUnderflow = value && minValue && value.isBefore(minValue);\n const isUnavailable = (value && isDateUnavailable?.(value)) || false;\n const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;\n const errors = [];\n\n if (isInvalid) {\n if (rangeUnderflow && minValue) {\n errors.push(\n t('Value must be {minValue} or later.', {\n minValue: minValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (rangeOverflow && maxValue) {\n errors.push(\n t('Value must be {maxValue} or earlier.', {\n maxValue: maxValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (isUnavailable) {\n errors.push(t('Selected date unavailable.'));\n }\n }\n\n return {isInvalid, errors};\n}\n"]}
@@ -2,5 +2,10 @@
2
2
  "Value must be {minValue} or later.": "{{value}} must be {{minValue}} or later.",
3
3
  "Value must be {maxValue} or earlier.": "{{value}} must be {{maxValue}} or earlier.",
4
4
  "Selected date unavailable.": "Selected date unavailable.",
5
- "Value is required.": "{{value}} is required."
5
+ "Value is required.": "{{value}} is required.",
6
+ "\"From\"": "\"From\"",
7
+ "\"To\"": "\"To\"",
8
+ "\"From\" is required.": "\"From\" is required.",
9
+ "\"To\" is required.": "\"To\" is required.",
10
+ "\"From\" can't be after \"To\".": "\"From\" can't be after \"To\"."
6
11
  }
@@ -1,5 +1,13 @@
1
- export declare const i18n: ((key: "Selected date unavailable." | "Value must be {minValue} or later." | "Value must be {maxValue} or earlier." | "Value is required.", params?: import("@gravity-ui/i18n").Params) => string) & {
1
+ export declare const i18n: ((key: "Selected date unavailable." | "\"From\"" | "\"To\"" | "\"From\" is required." | "\"To\" is required." | "\"From\" can't be after \"To\"." | "Value must be {minValue} or later." | "Value must be {maxValue} or earlier." | "Value is required.", params?: import("@gravity-ui/i18n").Params) => string) & {
2
+ Translation: import("react").ComponentType<{
3
+ children: (props: {
4
+ t: (key: "Selected date unavailable." | "\"From\"" | "\"To\"" | "\"From\" is required." | "\"To\" is required." | "\"From\" can't be after \"To\"." | "Value must be {minValue} or later." | "Value must be {maxValue} or earlier." | "Value is required.", params?: import("@gravity-ui/i18n").Params) => string;
5
+ }) => React.ReactNode;
6
+ }>;
7
+ useTranslation: () => {
8
+ t: (key: "Selected date unavailable." | "\"From\"" | "\"To\"" | "\"From\" is required." | "\"To\" is required." | "\"From\" can't be after \"To\"." | "Value must be {minValue} or later." | "Value must be {maxValue} or earlier." | "Value is required.", params?: import("@gravity-ui/i18n").Params) => string;
9
+ };
2
10
  keysetData: {
3
- "g-date-validation": Record<"Selected date unavailable." | "Value must be {minValue} or later." | "Value must be {maxValue} or earlier." | "Value is required.", import("@gravity-ui/i18n").KeyData>;
11
+ "g-date-validation": Record<"Selected date unavailable." | "\"From\"" | "\"To\"" | "\"From\" is required." | "\"To\" is required." | "\"From\" can't be after \"To\"." | "Value must be {minValue} or later." | "Value must be {maxValue} or earlier." | "Value is required.", import("@gravity-ui/i18n").KeyData>;
4
12
  };
5
13
  };
@@ -2,5 +2,11 @@
2
2
  "Value must be {minValue} or later.": "{{value}} должно ровняться {{minValue}} или быть позже.",
3
3
  "Value must be {maxValue} or earlier.": "{{value}} должно ровняться {{maxValue}} или быть раньше.",
4
4
  "Selected date unavailable.": "Выбранная дата недоступна.",
5
- "Value is required.": "{{value}} обязательно."
5
+ "Value is required.": "{{value}} обязательно.",
6
+ "\"From\"": "«От»",
7
+ "\"To\"": "«До»",
8
+ "\"From\" is required.": "«От» обязательно.",
9
+ "\"To\"": "«До»",
10
+ "\"To\" is required.": "«До» обязательно.",
11
+ "\"From\" can't be after \"To\".": "«От» не может быть позже чем «До»."
6
12
  }