@gravity-ui/date-components 1.5.0 → 2.0.1

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 (265) hide show
  1. package/dist/cjs/components/Calendar/Calendar.d.ts +6 -5
  2. package/dist/cjs/components/Calendar/Calendar.js +4 -4
  3. package/dist/cjs/components/Calendar/index.d.ts +6 -6
  4. package/dist/cjs/components/Calendar/index.js +5 -5
  5. package/dist/cjs/components/{CalendarBase → CalendarView}/Calendar.css +9 -6
  6. package/dist/cjs/components/{CalendarBase/CalendarBase.d.ts → CalendarView/CalendarView.d.ts} +2 -2
  7. package/dist/cjs/components/{CalendarBase/CalendarBase.js → CalendarView/CalendarView.js} +4 -3
  8. package/dist/{esm/components/CalendarBase → cjs/components/CalendarView}/hooks/types.d.ts +37 -31
  9. package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.js +1 -2
  10. package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.d.ts +2 -2
  11. package/dist/{esm/components/CalendarBase → cjs/components/CalendarView}/hooks/useCalendarState.d.ts +1 -1
  12. package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarState.js +45 -23
  13. package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.d.ts +8 -0
  14. package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useRangeCalendarState.js +25 -14
  15. package/dist/cjs/components/DateField/DateField.d.ts +1 -4
  16. package/dist/cjs/components/DateField/DateField.js +3 -1
  17. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +97 -0
  18. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +316 -0
  19. package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +6 -3
  20. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +14 -12
  21. package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +2 -65
  22. package/dist/cjs/components/DateField/hooks/useDateFieldState.js +98 -410
  23. package/dist/cjs/components/DateField/index.d.ts +1 -0
  24. package/dist/cjs/components/DateField/index.js +1 -0
  25. package/dist/cjs/components/DateField/utils.d.ts +10 -1
  26. package/dist/cjs/components/DateField/utils.js +114 -2
  27. package/dist/cjs/components/DatePicker/DatePicker.d.ts +4 -4
  28. package/dist/cjs/components/DatePicker/DatePicker.js +6 -6
  29. package/dist/cjs/components/DatePicker/MobileCalendar.css +6 -6
  30. package/dist/cjs/components/DatePicker/MobileCalendar.js +17 -12
  31. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +5 -16
  32. package/dist/cjs/components/DatePicker/hooks/useDatePickerState.d.ts +5 -4
  33. package/dist/cjs/components/DatePicker/hooks/useDatePickerState.js +71 -56
  34. package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +3 -3
  35. package/dist/cjs/components/RangeCalendar/RangeCalendar.js +4 -4
  36. package/dist/cjs/components/RangeDateField/RangeDateField.css +4 -0
  37. package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +12 -0
  38. package/dist/cjs/components/RangeDateField/RangeDateField.js +25 -0
  39. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.d.ts +9 -0
  40. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +227 -0
  41. package/dist/cjs/components/RangeDateField/index.d.ts +2 -0
  42. package/dist/cjs/components/RangeDateField/index.js +5 -0
  43. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +5 -0
  44. package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +9 -0
  45. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +5 -0
  46. package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +42 -0
  47. package/dist/cjs/components/RangeDateField/utils/index.d.ts +3 -0
  48. package/dist/cjs/components/RangeDateField/utils/index.js +6 -0
  49. package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +3 -0
  50. package/dist/cjs/components/RangeDateField/utils/isValidRange.js +8 -0
  51. package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +2 -2
  52. package/dist/cjs/components/RelativeDateField/RelativeDateField.js +5 -2
  53. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +5 -11
  54. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +3 -1
  55. package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +5 -4
  56. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.css +3 -0
  57. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +2 -2
  58. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +13 -2
  59. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +35 -27
  60. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.d.ts +2 -2
  61. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +12 -16
  62. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css +56 -0
  63. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +27 -0
  64. package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +90 -0
  65. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css +32 -0
  66. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +14 -0
  67. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +43 -0
  68. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/en.json +8 -0
  69. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.d.ts +1 -0
  70. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.js +9 -0
  71. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/ru.json +8 -0
  72. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +16 -0
  73. package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +104 -0
  74. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.css +26 -0
  75. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +18 -0
  76. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +67 -0
  77. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.css +14 -0
  78. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.d.ts +7 -0
  79. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.js +90 -0
  80. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +9 -0
  81. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js +186 -0
  82. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/en.json +40 -0
  83. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/index.d.ts +1 -0
  84. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/index.js +9 -0
  85. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/ru.json +40 -0
  86. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +16 -0
  87. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +85 -0
  88. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.css +3 -0
  89. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +9 -0
  90. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +62 -0
  91. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/en.json +4 -0
  92. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/index.d.ts +1 -0
  93. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/index.js +9 -0
  94. package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/ru.json +4 -0
  95. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +26 -0
  96. package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +58 -0
  97. package/dist/cjs/components/RelativeRangeDatePicker/i18n/en.json +8 -0
  98. package/dist/cjs/components/RelativeRangeDatePicker/i18n/index.d.ts +1 -0
  99. package/dist/cjs/components/RelativeRangeDatePicker/i18n/index.js +9 -0
  100. package/dist/cjs/components/RelativeRangeDatePicker/i18n/ru.json +8 -0
  101. package/dist/cjs/components/RelativeRangeDatePicker/index.d.ts +4 -0
  102. package/dist/cjs/components/RelativeRangeDatePicker/index.js +8 -0
  103. package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +15 -0
  104. package/dist/cjs/components/RelativeRangeDatePicker/utils.js +53 -0
  105. package/dist/cjs/components/index.d.ts +3 -0
  106. package/dist/cjs/components/index.js +2 -0
  107. package/dist/cjs/components/types/datePicker.d.ts +5 -2
  108. package/dist/cjs/components/types/events.d.ts +4 -4
  109. package/dist/cjs/components/types/inputs.d.ts +10 -9
  110. package/dist/cjs/components/utils/dates.d.ts +1 -2
  111. package/dist/cjs/components/utils/useDefaultTimeZone.d.ts +2 -0
  112. package/dist/cjs/components/utils/useDefaultTimeZone.js +15 -0
  113. package/dist/cjs/components/utils/validation/datePicker.d.ts +6 -0
  114. package/dist/cjs/components/utils/validation/datePicker.js +30 -0
  115. package/dist/cjs/components/utils/validation/i18n/en.json +6 -0
  116. package/dist/cjs/components/utils/validation/i18n/index.d.ts +1 -0
  117. package/dist/cjs/components/utils/validation/i18n/index.js +9 -0
  118. package/dist/cjs/components/utils/validation/i18n/ru.json +6 -0
  119. package/dist/esm/components/Calendar/Calendar.d.ts +6 -5
  120. package/dist/esm/components/Calendar/Calendar.js +4 -4
  121. package/dist/esm/components/Calendar/index.d.ts +6 -6
  122. package/dist/esm/components/Calendar/index.js +5 -5
  123. package/dist/esm/components/{CalendarBase → CalendarView}/Calendar.css +9 -6
  124. package/dist/esm/components/{CalendarBase/CalendarBase.d.ts → CalendarView/CalendarView.d.ts} +2 -2
  125. package/dist/esm/components/{CalendarBase/CalendarBase.js → CalendarView/CalendarView.js} +3 -2
  126. package/dist/{cjs/components/CalendarBase → esm/components/CalendarView}/hooks/types.d.ts +37 -31
  127. package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.js +1 -2
  128. package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.d.ts +2 -2
  129. package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.js +0 -1
  130. package/dist/{cjs/components/CalendarBase → esm/components/CalendarView}/hooks/useCalendarState.d.ts +1 -1
  131. package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarState.js +46 -24
  132. package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.d.ts +8 -0
  133. package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useRangeCalendarState.js +24 -13
  134. package/dist/esm/components/DateField/DateField.d.ts +1 -4
  135. package/dist/esm/components/DateField/DateField.js +4 -2
  136. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +97 -0
  137. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +311 -0
  138. package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +6 -3
  139. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +14 -12
  140. package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +2 -65
  141. package/dist/esm/components/DateField/hooks/useDateFieldState.js +97 -409
  142. package/dist/esm/components/DateField/index.d.ts +1 -0
  143. package/dist/esm/components/DateField/index.js +1 -0
  144. package/dist/esm/components/DateField/utils.d.ts +10 -1
  145. package/dist/esm/components/DateField/utils.js +105 -2
  146. package/dist/esm/components/DatePicker/DatePicker.d.ts +4 -4
  147. package/dist/esm/components/DatePicker/DatePicker.js +6 -6
  148. package/dist/esm/components/DatePicker/MobileCalendar.css +6 -6
  149. package/dist/esm/components/DatePicker/MobileCalendar.js +17 -12
  150. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +5 -16
  151. package/dist/esm/components/DatePicker/hooks/useDatePickerState.d.ts +5 -4
  152. package/dist/esm/components/DatePicker/hooks/useDatePickerState.js +71 -56
  153. package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +3 -3
  154. package/dist/esm/components/RangeCalendar/RangeCalendar.js +4 -4
  155. package/dist/esm/components/RangeDateField/RangeDateField.css +4 -0
  156. package/dist/esm/components/RangeDateField/RangeDateField.d.ts +12 -0
  157. package/dist/esm/components/RangeDateField/RangeDateField.js +21 -0
  158. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.d.ts +9 -0
  159. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +222 -0
  160. package/dist/esm/components/RangeDateField/index.d.ts +2 -0
  161. package/dist/esm/components/RangeDateField/index.js +2 -0
  162. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +5 -0
  163. package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +5 -0
  164. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +5 -0
  165. package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +38 -0
  166. package/dist/esm/components/RangeDateField/utils/index.d.ts +3 -0
  167. package/dist/esm/components/RangeDateField/utils/index.js +3 -0
  168. package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +3 -0
  169. package/dist/esm/components/RangeDateField/utils/isValidRange.js +4 -0
  170. package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +2 -2
  171. package/dist/esm/components/RelativeDateField/RelativeDateField.js +5 -2
  172. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +5 -11
  173. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +3 -1
  174. package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +5 -4
  175. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.css +3 -0
  176. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +2 -2
  177. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +13 -2
  178. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +35 -27
  179. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.d.ts +2 -2
  180. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +12 -16
  181. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css +56 -0
  182. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +27 -0
  183. package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +85 -0
  184. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css +32 -0
  185. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +14 -0
  186. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +39 -0
  187. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/en.json +8 -0
  188. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.d.ts +1 -0
  189. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.js +5 -0
  190. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/ru.json +8 -0
  191. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +16 -0
  192. package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +99 -0
  193. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.css +26 -0
  194. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +18 -0
  195. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +62 -0
  196. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.css +14 -0
  197. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.d.ts +7 -0
  198. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.js +85 -0
  199. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +9 -0
  200. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js +183 -0
  201. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/en.json +40 -0
  202. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/index.d.ts +1 -0
  203. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/index.js +5 -0
  204. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/ru.json +40 -0
  205. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +16 -0
  206. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +78 -0
  207. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.css +3 -0
  208. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +9 -0
  209. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +58 -0
  210. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/en.json +4 -0
  211. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/index.d.ts +1 -0
  212. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/index.js +5 -0
  213. package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/ru.json +4 -0
  214. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +26 -0
  215. package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +53 -0
  216. package/dist/esm/components/RelativeRangeDatePicker/i18n/en.json +8 -0
  217. package/dist/esm/components/RelativeRangeDatePicker/i18n/index.d.ts +1 -0
  218. package/dist/esm/components/RelativeRangeDatePicker/i18n/index.js +5 -0
  219. package/dist/esm/components/RelativeRangeDatePicker/i18n/ru.json +8 -0
  220. package/dist/esm/components/RelativeRangeDatePicker/index.d.ts +4 -0
  221. package/dist/esm/components/RelativeRangeDatePicker/index.js +3 -0
  222. package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +15 -0
  223. package/dist/esm/components/RelativeRangeDatePicker/utils.js +46 -0
  224. package/dist/esm/components/index.d.ts +3 -0
  225. package/dist/esm/components/index.js +2 -0
  226. package/dist/esm/components/types/datePicker.d.ts +5 -2
  227. package/dist/esm/components/types/events.d.ts +4 -4
  228. package/dist/esm/components/types/inputs.d.ts +10 -9
  229. package/dist/esm/components/utils/dates.d.ts +1 -2
  230. package/dist/esm/components/utils/useDefaultTimeZone.d.ts +2 -0
  231. package/dist/esm/components/utils/useDefaultTimeZone.js +10 -0
  232. package/dist/esm/components/utils/validation/datePicker.d.ts +6 -0
  233. package/dist/esm/components/utils/validation/datePicker.js +26 -0
  234. package/dist/esm/components/utils/validation/i18n/en.json +6 -0
  235. package/dist/esm/components/utils/validation/i18n/index.d.ts +1 -0
  236. package/dist/esm/components/utils/validation/i18n/index.js +5 -0
  237. package/dist/esm/components/utils/validation/i18n/ru.json +6 -0
  238. package/package.json +27 -27
  239. package/dist/cjs/components/CalendarBase/hooks/useRangeCalendarState.d.ts +0 -7
  240. package/dist/cjs/components/hooks/useControlledState.d.ts +0 -1
  241. package/dist/cjs/components/hooks/useControlledState.js +0 -28
  242. package/dist/esm/components/CalendarBase/hooks/useRangeCalendarState.d.ts +0 -7
  243. package/dist/esm/components/hooks/useControlledState.d.ts +0 -1
  244. package/dist/esm/components/hooks/useControlledState.js +0 -23
  245. /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/types.js +0 -0
  246. /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.d.ts +0 -0
  247. /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.js +0 -0
  248. /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.d.ts +0 -0
  249. /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.js +0 -0
  250. /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/en.json +0 -0
  251. /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/index.d.ts +0 -0
  252. /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/index.js +0 -0
  253. /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/ru.json +0 -0
  254. /package/dist/cjs/components/{CalendarBase → CalendarView}/utils.d.ts +0 -0
  255. /package/dist/cjs/components/{CalendarBase → CalendarView}/utils.js +0 -0
  256. /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/types.js +0 -0
  257. /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.d.ts +0 -0
  258. /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.d.ts +0 -0
  259. /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.js +0 -0
  260. /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/en.json +0 -0
  261. /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/index.d.ts +0 -0
  262. /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/index.js +0 -0
  263. /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/ru.json +0 -0
  264. /package/dist/esm/components/{CalendarBase → CalendarView}/utils.d.ts +0 -0
  265. /package/dist/esm/components/{CalendarBase → CalendarView}/utils.js +0 -0
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRelativeRangeDatePickerState = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const date_utils_1 = require("@gravity-ui/date-utils");
7
+ const uikit_1 = require("@gravity-ui/uikit");
8
+ const datePicker_1 = require("../../utils/validation/datePicker");
9
+ const i18n_1 = require("../i18n");
10
+ function useRelativeRangeDatePickerState(props) {
11
+ var _a, _b;
12
+ const [value, setValue] = (0, uikit_1.useControlledState)(props.value, (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null);
13
+ const [timeZone, setTimeZone] = (0, uikit_1.useControlledState)(props.timeZone, (_b = props.defaultTimeZone) !== null && _b !== void 0 ? _b : 'default', props.onUpdateTimeZone);
14
+ const validation = react_1.default.useMemo(() => getRangeValidationResult(value, props.allowNullableValues, props.minValue, props.maxValue, props.isDateUnavailable, timeZone), [
15
+ value,
16
+ props.allowNullableValues,
17
+ props.isDateUnavailable,
18
+ props.maxValue,
19
+ props.minValue,
20
+ timeZone,
21
+ ]);
22
+ return Object.assign({ value,
23
+ timeZone,
24
+ setValue(v, tz) {
25
+ var _a;
26
+ setValue(v);
27
+ setTimeZone(tz);
28
+ if (value !== v || (value && timeZone !== tz)) {
29
+ (_a = props.onUpdate) === null || _a === void 0 ? void 0 : _a.call(props, v, tz);
30
+ }
31
+ } }, validation);
32
+ }
33
+ exports.useRelativeRangeDatePickerState = useRelativeRangeDatePickerState;
34
+ function getRangeValidationResult(value, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone) {
35
+ if (!value) {
36
+ return { isInvalid: false, errors: [] };
37
+ }
38
+ const startDate = value.start ? (0, date_utils_1.dateTimeParse)(value.start.value, { timeZone }) : null;
39
+ const endDate = value.end ? (0, date_utils_1.dateTimeParse)(value.end.value, { timeZone, roundUp: true }) : null;
40
+ const startValidationResult = (0, datePicker_1.getValidationResult)(startDate, minValue, maxValue, isDateUnavailable, timeZone, (0, i18n_1.i18n)('"From"'));
41
+ if (!startDate && !allowNullableValues) {
42
+ startValidationResult.isInvalid = true;
43
+ startValidationResult.errors.push((0, i18n_1.i18n)('"From" is required.'));
44
+ }
45
+ const endValidationResult = (0, datePicker_1.getValidationResult)(endDate, minValue, maxValue, isDateUnavailable, timeZone, (0, i18n_1.i18n)('"To"'));
46
+ if (!endDate && !allowNullableValues) {
47
+ endValidationResult.isInvalid = true;
48
+ endValidationResult.errors.push((0, i18n_1.i18n)('"To" is required.'));
49
+ }
50
+ if (startDate && endDate && endDate.isBefore(startDate)) {
51
+ startValidationResult.isInvalid = true;
52
+ startValidationResult.errors.push((0, i18n_1.i18n)(`"From" can't be after "To".`));
53
+ }
54
+ return {
55
+ isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,
56
+ errors: startValidationResult.errors.concat(endValidationResult.errors),
57
+ };
58
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "\"From\"": "\"From\"",
3
+ "\"From\" is required.": "\"From\" is required.",
4
+ "\"To\"": "\"To\"",
5
+ "\"To\" is required.": "\"To\" is required.",
6
+ "\"From\" can't be after \"To\".": "\"From\" can't be after \"To\".",
7
+ "to": "to"
8
+ }
@@ -0,0 +1 @@
1
+ export declare const i18n: (key: "\"From\"" | "\"From\" is required." | "\"To\"" | "\"To\" is required." | "\"From\" can't be after \"To\"." | "to", params?: import("@gravity-ui/i18n").Params | undefined) => string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.i18n = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const i18n_1 = require("@gravity-ui/uikit/i18n");
6
+ const cn_1 = require("../../../utils/cn");
7
+ const en_json_1 = tslib_1.__importDefault(require("./en.json"));
8
+ const ru_json_1 = tslib_1.__importDefault(require("./ru.json"));
9
+ exports.i18n = (0, i18n_1.addComponentKeysets)({ en: en_json_1.default, ru: ru_json_1.default }, `${cn_1.NAMESPACE}relative-range-date-picker`);
@@ -0,0 +1,8 @@
1
+ {
2
+ "\"From\"": "«От»",
3
+ "\"From\" is required.": "«От» обязательно.",
4
+ "\"To\"": "«До»",
5
+ "\"To\" is required.": "«До» обязательно.",
6
+ "\"From\" can't be after \"To\".": "«От» не может быть позже чем «До».",
7
+ "to": "до"
8
+ }
@@ -0,0 +1,4 @@
1
+ export * from './RelativeRangeDatePicker';
2
+ export { PickerDialog as RelativeRangeDatePickerDialog } from './components/PickerDialog/PickerDialog';
3
+ export type { PickerDialogProps as RelativeRangeDatePickerDialogProps } from './components/PickerDialog/PickerDialog';
4
+ export * from './hooks/useRelativeRangeDatePickerState';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RelativeRangeDatePickerDialog = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./RelativeRangeDatePicker"), exports);
6
+ var PickerDialog_1 = require("./components/PickerDialog/PickerDialog");
7
+ Object.defineProperty(exports, "RelativeRangeDatePickerDialog", { enumerable: true, get: function () { return PickerDialog_1.PickerDialog; } });
8
+ tslib_1.__exportStar(require("./hooks/useRelativeRangeDatePickerState"), exports);
@@ -0,0 +1,15 @@
1
+ import type { Value } from '../RelativeDatePicker';
2
+ import type { RangeValue } from '../types';
3
+ import type { Preset } from './components/Presets/defaultPresets';
4
+ export declare function resolveTimeZone(timeZone: string): string;
5
+ export declare function normalizeTimeZone(timeZone: string): string;
6
+ export declare function getTimeZoneOffset(timeZone: string): string;
7
+ interface GetDefaultTitleArgs {
8
+ value: RangeValue<Value | null> | null;
9
+ timeZone: string;
10
+ alwaysShowAsAbsolute?: boolean;
11
+ format?: string;
12
+ presets?: Preset[];
13
+ }
14
+ export declare function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format, presets, }: GetDefaultTitleArgs): string;
15
+ export {};
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultTitle = exports.getTimeZoneOffset = exports.normalizeTimeZone = exports.resolveTimeZone = void 0;
4
+ const date_utils_1 = require("@gravity-ui/date-utils");
5
+ const utils_1 = require("./components/Presets/utils");
6
+ function resolveTimeZone(timeZone) {
7
+ if (timeZone === 'default' || timeZone === 'system') {
8
+ return (0, date_utils_1.dateTime)({ timeZone }).timeZone();
9
+ }
10
+ return timeZone;
11
+ }
12
+ exports.resolveTimeZone = resolveTimeZone;
13
+ function normalizeTimeZone(timeZone) {
14
+ const lowered = timeZone.toLowerCase();
15
+ if (lowered === 'default' || lowered === 'system') {
16
+ return lowered;
17
+ }
18
+ return resolveTimeZone(timeZone);
19
+ }
20
+ exports.normalizeTimeZone = normalizeTimeZone;
21
+ function getTimeZoneOffset(timeZone) {
22
+ return `UTC ${(0, date_utils_1.dateTime)({ timeZone }).format('Z')}`;
23
+ }
24
+ exports.getTimeZoneOffset = getTimeZoneOffset;
25
+ function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format = 'L', presets, }) {
26
+ var _a, _b, _c, _d, _e, _f;
27
+ if (!value) {
28
+ return '';
29
+ }
30
+ const tz = timeZone === 'system' ? '' : ` (${getTimeZoneOffset(timeZone)})`;
31
+ let from = '';
32
+ if (value.start) {
33
+ from =
34
+ value.start.type === 'relative' && !alwaysShowAsAbsolute
35
+ ? value.start.value
36
+ : (_b = (_a = (0, date_utils_1.dateTimeParse)(value.start.value, { timeZone })) === null || _a === void 0 ? void 0 : _a.format(format)) !== null && _b !== void 0 ? _b : '';
37
+ }
38
+ let to = '';
39
+ if (value.end) {
40
+ to =
41
+ value.end.type === 'relative' && !alwaysShowAsAbsolute
42
+ ? value.end.value
43
+ : (_d = (_c = (0, date_utils_1.dateTimeParse)(value.end.value, { timeZone, roundUp: true })) === null || _c === void 0 ? void 0 : _c.format(format)) !== null && _d !== void 0 ? _d : '';
44
+ }
45
+ if (!alwaysShowAsAbsolute &&
46
+ ((_e = value.start) === null || _e === void 0 ? void 0 : _e.type) === 'relative' &&
47
+ ((_f = value.end) === null || _f === void 0 ? void 0 : _f.type) === 'relative') {
48
+ return `${(0, utils_1.getPresetTitle)(value.start.value, value.end.value, presets)}${tz}`;
49
+ }
50
+ const delimiter = ' — ';
51
+ return `${from}${delimiter}${to}${tz}`;
52
+ }
53
+ exports.getDefaultTitle = getDefaultTitle;
@@ -4,3 +4,6 @@ export * from './DateField';
4
4
  export * from './DatePicker';
5
5
  export * from './RelativeDateField';
6
6
  export * from './RelativeDatePicker';
7
+ export * from './RangeDateField';
8
+ export * from './RelativeRangeDatePicker';
9
+ export type { RangeValue } from './types';
@@ -7,3 +7,5 @@ tslib_1.__exportStar(require("./DateField"), exports);
7
7
  tslib_1.__exportStar(require("./DatePicker"), exports);
8
8
  tslib_1.__exportStar(require("./RelativeDateField"), exports);
9
9
  tslib_1.__exportStar(require("./RelativeDatePicker"), exports);
10
+ tslib_1.__exportStar(require("./RangeDateField"), exports);
11
+ tslib_1.__exportStar(require("./RelativeRangeDatePicker"), exports);
@@ -1,6 +1,6 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
2
  import type { InputBase, Validation, ValueBase } from './inputs';
3
- export interface DateFieldBase<T = DateTime> extends ValueBase<T, T | null>, InputBase, Validation {
3
+ export interface DateFieldBase<T = DateTime> extends ValueBase<T | null>, InputBase, Validation {
4
4
  /** The minimum allowed date that a user may select. */
5
5
  minValue?: DateTime;
6
6
  /** The maximum allowed date that a user may select. */
@@ -11,6 +11,9 @@ export interface DateFieldBase<T = DateTime> extends ValueBase<T, T | null>, Inp
11
11
  format?: string;
12
12
  /** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */
13
13
  placeholderValue?: DateTime;
14
- /** */
14
+ /**
15
+ * Which timezone use to show values. Example: 'default', 'system', 'Europe/Amsterdam'.
16
+ * @default The timezone of the `value` or `defaultValue` or `placeholderValue`, 'default' otherwise.
17
+ */
15
18
  timeZone?: string;
16
19
  }
@@ -1,15 +1,15 @@
1
1
  /// <reference types="react" />
2
2
  export interface KeyboardEvents {
3
3
  /** Handler that is called when a key is pressed. */
4
- onKeyDown?: (e: React.KeyboardEvent) => void;
4
+ onKeyDown?(e: React.KeyboardEvent): void;
5
5
  /** Handler that is called when a key is released. */
6
- onKeyUp?: (e: React.KeyboardEvent) => void;
6
+ onKeyUp?(e: React.KeyboardEvent): void;
7
7
  }
8
8
  export interface FocusEvents<Target = Element> {
9
9
  /** Handler that is called when the element receives focus. */
10
- onFocus?: (e: React.FocusEvent<Target>) => void;
10
+ onFocus?(e: React.FocusEvent<Target>): void;
11
11
  /** Handler that is called when the element loses focus. */
12
- onBlur?: (e: React.FocusEvent<Target>) => void;
12
+ onBlur?(e: React.FocusEvent<Target>): void;
13
13
  }
14
14
  export interface FocusableProps<Target = Element> extends FocusEvents<Target> {
15
15
  /** Whether the element should receive focus on render. */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { TextInputProps as TextInputBaseProps, TextInputPin, TextInputSize, TextInputView } from '@gravity-ui/uikit';
3
2
  export type ValidationState = 'invalid';
4
3
  export interface AccessibilityProps {
@@ -13,22 +12,24 @@ export interface AccessibilityProps {
13
12
  }
14
13
  export interface ValueBase<T, C = T> {
15
14
  /** The current value (controlled). */
16
- value?: T | null;
15
+ value?: T;
17
16
  /** The default value (uncontrolled). */
18
17
  defaultValue?: T;
19
18
  /** Handler that is called when the value changes. */
20
19
  onUpdate?: (value: C) => void;
21
20
  }
22
- export interface Validation {
23
- /** Whether the input should display its "invalid" visual styling */
24
- validationState?: ValidationState;
25
- /** An error message for the field */
26
- errorMessage?: React.ReactNode;
21
+ export interface Validation extends Pick<TextInputBaseProps, 'validationState' | 'errorMessage' | 'errorPlacement'> {
27
22
  }
28
23
  export interface DomProps {
29
24
  /** The element's unique identifier. */
30
25
  id?: string;
31
26
  }
27
+ export interface InputDOMProps {
28
+ /**
29
+ * The name of the input element, used when submitting an HTML form.
30
+ */
31
+ name?: string;
32
+ }
32
33
  export interface InputBase {
33
34
  /**
34
35
  * Whether the field is disabled.
@@ -65,11 +66,11 @@ export interface TextInputExtendProps {
65
66
  /**
66
67
  * User`s node rendered before label and input
67
68
  */
68
- leftContent?: TextInputBaseProps['leftContent'];
69
+ startContent?: TextInputBaseProps['startContent'];
69
70
  /**
70
71
  * User`s node rendered after input and clear button
71
72
  */
72
- rightContent?: TextInputBaseProps['rightContent'];
73
+ endContent?: TextInputBaseProps['endContent'];
73
74
  }
74
75
  export interface RangeValue<T> {
75
76
  /** The start value of the range. */
@@ -1,9 +1,8 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
- interface PlaceholderValueOptions {
2
+ export interface PlaceholderValueOptions {
3
3
  placeholderValue?: DateTime;
4
4
  timeZone?: string;
5
5
  }
6
6
  export declare function createPlaceholderValue({ placeholderValue, timeZone }: PlaceholderValueOptions): DateTime;
7
7
  export declare function isInvalid(value: DateTime | null | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined): boolean;
8
8
  export declare function mergeDateTime(date: DateTime, time: DateTime): DateTime;
9
- export {};
@@ -0,0 +1,2 @@
1
+ import type { DateTime } from '@gravity-ui/date-utils';
2
+ export declare function useDefaultTimeZone(date: DateTime | null | undefined): string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useDefaultTimeZone = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ function useDefaultTimeZone(date) {
7
+ const defaultTimeZone = date ? date.timeZone() : 'default';
8
+ const [lastValue, setLastValue] = react_1.default.useState(defaultTimeZone);
9
+ if (date && defaultTimeZone !== lastValue) {
10
+ setLastValue(defaultTimeZone);
11
+ }
12
+ const timeZone = date ? defaultTimeZone : lastValue;
13
+ return timeZone;
14
+ }
15
+ exports.useDefaultTimeZone = useDefaultTimeZone;
@@ -0,0 +1,6 @@
1
+ import type { DateTime } from '@gravity-ui/date-utils';
2
+ export interface ValidationResult {
3
+ isInvalid: boolean;
4
+ errors: string[];
5
+ }
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;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getValidationResult = void 0;
4
+ const i18n_1 = require("./i18n");
5
+ function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value') {
6
+ const rangeOverflow = value && maxValue && maxValue.isBefore(value);
7
+ const rangeUnderflow = value && minValue && value.isBefore(minValue);
8
+ const isUnavailable = (value && (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(value))) || false;
9
+ const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;
10
+ const errors = [];
11
+ if (isInvalid) {
12
+ if (rangeUnderflow) {
13
+ errors.push((0, i18n_1.i18n)('Value must be {minValue} or later.', {
14
+ minValue: minValue.timeZone(timeZone).format(),
15
+ value: valueTitle,
16
+ }));
17
+ }
18
+ if (rangeOverflow) {
19
+ errors.push((0, i18n_1.i18n)('Value must be {maxValue} or earlier.', {
20
+ maxValue: maxValue.timeZone(timeZone).format(),
21
+ value: valueTitle,
22
+ }));
23
+ }
24
+ if (isUnavailable) {
25
+ errors.push((0, i18n_1.i18n)('Selected date unavailable.'));
26
+ }
27
+ }
28
+ return { isInvalid, errors };
29
+ }
30
+ exports.getValidationResult = getValidationResult;
@@ -0,0 +1,6 @@
1
+ {
2
+ "Value must be {minValue} or later.": "{{value}} must be {{minValue}} or later.",
3
+ "Value must be {maxValue} or earlier.": "{{value}} must be {{maxValue}} or earlier.",
4
+ "Selected date unavailable.": "Selected date unavailable.",
5
+ "Value is required.": "{{value}} is required."
6
+ }
@@ -0,0 +1 @@
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 | undefined) => string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.i18n = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const i18n_1 = require("@gravity-ui/uikit/i18n");
6
+ const cn_1 = require("../../../../utils/cn");
7
+ const en_json_1 = tslib_1.__importDefault(require("./en.json"));
8
+ const ru_json_1 = tslib_1.__importDefault(require("./ru.json"));
9
+ exports.i18n = (0, i18n_1.addComponentKeysets)({ en: en_json_1.default, ru: ru_json_1.default }, `${cn_1.NAMESPACE}validation`);
@@ -0,0 +1,6 @@
1
+ {
2
+ "Value must be {minValue} or later.": "{value} должно ровняться {minValue} или быть позже.",
3
+ "Value must be {maxValue} or earlier.": "{value} должно ровняться {maxValue} или быть раньше.",
4
+ "Selected date unavailable.": "Выбранная дата недоступна.",
5
+ "Value is required.": "{value} обязательно."
6
+ }
@@ -1,13 +1,14 @@
1
1
  import React from 'react';
2
- import type { CalendarInstance, CalendarSize } from '../CalendarBase/CalendarBase';
3
- import type { CalendarStateOptions } from '../CalendarBase/hooks/useCalendarState';
2
+ import type { DateTime } from '@gravity-ui/date-utils';
3
+ import type { CalendarInstance, CalendarSize } from '../CalendarView/CalendarView';
4
+ import type { CalendarStateOptions } from '../CalendarView/hooks/useCalendarState';
4
5
  import type { AccessibilityProps, DomProps, FocusEvents, StyleProps } from '../types';
5
- import '../CalendarBase/Calendar.css';
6
- export interface CalendarProps extends CalendarStateOptions, DomProps, StyleProps, FocusEvents, AccessibilityProps {
6
+ import '../CalendarView/Calendar.css';
7
+ export interface CalendarProps<T = DateTime> extends CalendarStateOptions<T>, DomProps, StyleProps, FocusEvents, AccessibilityProps {
7
8
  /**
8
9
  * The size of the element.
9
10
  * @default m
10
11
  */
11
12
  size?: CalendarSize;
12
13
  }
13
- export declare const Calendar: React.ForwardRefExoticComponent<CalendarProps & React.RefAttributes<CalendarInstance>>;
14
+ export declare const Calendar: React.ForwardRefExoticComponent<CalendarProps<DateTime> & React.RefAttributes<CalendarInstance>>;
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- import { CalendarBase } from '../CalendarBase/CalendarBase';
4
- import { useCalendarState } from '../CalendarBase/hooks/useCalendarState';
5
- import '../CalendarBase/Calendar.css';
3
+ import { CalendarView } from '../CalendarView/CalendarView';
4
+ import { useCalendarState } from '../CalendarView/hooks/useCalendarState';
5
+ import '../CalendarView/Calendar.css';
6
6
  export const Calendar = React.forwardRef(function Calendar(props, ref) {
7
7
  const state = useCalendarState(props);
8
- return _jsx(CalendarBase, Object.assign({ ref: ref }, props, { state: state }));
8
+ return _jsx(CalendarView, Object.assign({ ref: ref }, props, { state: state }));
9
9
  });
@@ -1,8 +1,8 @@
1
1
  export * from './Calendar';
2
2
  export * from '../RangeCalendar/RangeCalendar';
3
- export type { CalendarInstance } from '../CalendarBase/CalendarBase';
4
- export * from '../CalendarBase/hooks/useCalendarState';
5
- export * from '../CalendarBase/hooks/useRangeCalendarState';
6
- export * from '../CalendarBase/hooks/useCalendarProps';
7
- export * from '../CalendarBase/hooks/useCalendarGridProps';
8
- export * from '../CalendarBase/hooks/useCalendarCellProps';
3
+ export type { CalendarInstance } from '../CalendarView/CalendarView';
4
+ export * from '../CalendarView/hooks/useCalendarState';
5
+ export * from '../CalendarView/hooks/useRangeCalendarState';
6
+ export * from '../CalendarView/hooks/useCalendarProps';
7
+ export * from '../CalendarView/hooks/useCalendarGridProps';
8
+ export * from '../CalendarView/hooks/useCalendarCellProps';
@@ -1,7 +1,7 @@
1
1
  export * from './Calendar';
2
2
  export * from '../RangeCalendar/RangeCalendar';
3
- export * from '../CalendarBase/hooks/useCalendarState';
4
- export * from '../CalendarBase/hooks/useRangeCalendarState';
5
- export * from '../CalendarBase/hooks/useCalendarProps';
6
- export * from '../CalendarBase/hooks/useCalendarGridProps';
7
- export * from '../CalendarBase/hooks/useCalendarCellProps';
3
+ export * from '../CalendarView/hooks/useCalendarState';
4
+ export * from '../CalendarView/hooks/useRangeCalendarState';
5
+ export * from '../CalendarView/hooks/useCalendarProps';
6
+ export * from '../CalendarView/hooks/useCalendarGridProps';
7
+ export * from '../CalendarView/hooks/useCalendarCellProps';
@@ -30,7 +30,10 @@
30
30
  color: var(--g-color-text-secondary);
31
31
  }
32
32
  .g-date-calendar__controls {
33
- margin-left: auto;
33
+ margin-inline-start: auto;
34
+ }
35
+ .g-date-calendar__control-icon {
36
+ transform: scaleX(var(--g-flow-direction));
34
37
  }
35
38
  .g-date-calendar__grid {
36
39
  position: relative;
@@ -41,8 +44,8 @@
41
44
  }
42
45
  .g-date-calendar__content {
43
46
  position: absolute;
44
- top: 0;
45
- left: 0;
47
+ inset-block-start: 0;
48
+ inset-inline-start: 0;
46
49
  display: grid;
47
50
  grid-template-rows: var(--_--calendar-day-size) 1fr;
48
51
  box-sizing: border-box;
@@ -111,14 +114,14 @@
111
114
  animation: calendar-forward 0.25s ease forwards;
112
115
  }
113
116
  .g-date-calendar__content_animation_forward.g-date-calendar__current-state {
114
- left: -100%;
117
+ inset-inline-start: calc(var(--g-flow-direction) * -100%);
115
118
  }
116
119
  .g-date-calendar__content_animation_backward {
117
120
  transform: translateX(0);
118
121
  animation: calendar-backward 0.25s ease forwards;
119
122
  }
120
123
  .g-date-calendar__content_animation_backward.g-date-calendar__current-state {
121
- left: 100%;
124
+ inset-inline-start: calc(var(--g-flow-direction) * 100%);
122
125
  }
123
126
  .g-date-calendar__content_animation_zoom-in {
124
127
  transform: scale();
@@ -206,7 +209,7 @@
206
209
  }
207
210
  .g-date-calendar__button_current::before {
208
211
  position: absolute;
209
- top: 50%;
212
+ inset-block-start: 50%;
210
213
  display: block;
211
214
  width: 4px;
212
215
  height: 4px;
@@ -7,7 +7,7 @@ export type CalendarSize = 'm' | 'l' | 'xl';
7
7
  export interface CalendarInstance {
8
8
  focus: () => void;
9
9
  }
10
- export interface CalendarBaseProps extends DomProps, StyleProps, FocusEvents, AccessibilityProps {
10
+ export interface CalendarViewProps extends DomProps, StyleProps, FocusEvents, AccessibilityProps {
11
11
  state: CalendarState | RangeCalendarState;
12
12
  /**
13
13
  * The size of the element.
@@ -15,4 +15,4 @@ export interface CalendarBaseProps extends DomProps, StyleProps, FocusEvents, Ac
15
15
  */
16
16
  size?: CalendarSize;
17
17
  }
18
- export declare const CalendarBase: React.ForwardRefExoticComponent<CalendarBaseProps & React.RefAttributes<CalendarInstance>>;
18
+ export declare const CalendarView: React.ForwardRefExoticComponent<CalendarViewProps & React.RefAttributes<CalendarInstance>>;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
+ import { ChevronLeft, ChevronRight } from '@gravity-ui/icons';
3
4
  import { ArrowToggle, Button } from '@gravity-ui/uikit';
4
5
  import { block } from '../../utils/cn';
5
6
  import { useCalendarCellProps } from './hooks/useCalendarCellProps';
@@ -8,7 +9,7 @@ import { useCalendarProps } from './hooks/useCalendarProps';
8
9
  import { calendarLayouts, getDaysInPeriod, getWeekDays } from './utils';
9
10
  import './Calendar.css';
10
11
  const b = block('calendar');
11
- export const CalendarBase = React.forwardRef(function Calendar(props, ref) {
12
+ export const CalendarView = React.forwardRef(function Calendar(props, ref) {
12
13
  const { state } = props;
13
14
  const { calendarProps, modeButtonProps, nextButtonProps, previousButtonProps } = useCalendarProps(props, state);
14
15
  React.useImperativeHandle(ref, () => ({
@@ -20,7 +21,7 @@ export const CalendarBase = React.forwardRef(function Calendar(props, ref) {
20
21
  state.availableModes.length ? (_jsx("span", { className: b('mode-label', b(`years-label`)), children: modeButtonProps.children }, "label")) : ([
21
22
  _jsx("span", { className: b('mode-label'), children: modeButtonProps.children }, "label"),
22
23
  _jsx(Button.Icon, { children: _jsx(ArrowToggle, { direction: "bottom" }) }, "icon"),
23
- ]) })), _jsxs("div", { className: b('controls'), children: [_jsx(Button, Object.assign({}, previousButtonProps, { view: "flat", size: props.size, children: _jsx(Button.Icon, { children: _jsx(ArrowToggle, { direction: "left" }) }) })), _jsx(Button, Object.assign({}, nextButtonProps, { view: "flat", size: props.size, children: _jsx(Button.Icon, { children: _jsx(ArrowToggle, { direction: "right" }) }) }))] })] }), _jsx(CalendarGrid, { state: state })] })));
24
+ ]) })), _jsxs("div", { className: b('controls'), children: [_jsx(Button, Object.assign({}, previousButtonProps, { view: "flat", size: props.size, children: _jsx(Button.Icon, { children: _jsx(ChevronLeft, { className: b('control-icon') }) }) })), _jsx(Button, Object.assign({}, nextButtonProps, { view: "flat", size: props.size, children: _jsx(Button.Icon, { children: _jsx(ChevronRight, { className: b('control-icon') }) }) }))] })] }), _jsx(CalendarGrid, { state: state })] })));
24
25
  });
25
26
  function CalendarGrid({ state }) {
26
27
  const [prevState, setPrevState] = React.useState(() => (Object.assign(Object.assign({}, state), { isFocused: false })));