@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
@@ -4,63 +4,49 @@ exports.useDateFieldState = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
6
  const date_utils_1 = require("@gravity-ui/date-utils");
7
- const useControlledState_1 = require("../../hooks/useControlledState");
7
+ const uikit_1 = require("@gravity-ui/uikit");
8
8
  const dates_1 = require("../../utils/dates");
9
+ const useDefaultTimeZone_1 = require("../../utils/useDefaultTimeZone");
9
10
  const utils_1 = require("../utils");
10
- const EDITABLE_SEGMENTS = {
11
- year: true,
12
- month: true,
13
- day: true,
14
- hour: true,
15
- minute: true,
16
- second: true,
17
- dayPeriod: true,
18
- weekday: true,
19
- };
20
- const PAGE_STEP = {
21
- year: 5,
22
- month: 2,
23
- weekday: 3,
24
- day: 7,
25
- hour: 2,
26
- minute: 15,
27
- second: 15,
28
- };
11
+ const useBaseDateFieldState_1 = require("./useBaseDateFieldState");
29
12
  function useDateFieldState(props) {
30
- var _a;
31
- const [value, setDate] = (0, useControlledState_1.useControlledState)(props.value, props.defaultValue, props.onUpdate);
13
+ var _a, _b;
14
+ const [value, setDate] = (0, uikit_1.useControlledState)(props.value, (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null, props.onUpdate);
15
+ const inputTimeZone = (0, useDefaultTimeZone_1.useDefaultTimeZone)(props.value || props.defaultValue || props.placeholderValue);
16
+ const timeZone = props.timeZone || inputTimeZone;
17
+ const handleUpdateDate = (v) => {
18
+ setDate(v ? v.timeZone(inputTimeZone) : v);
19
+ };
32
20
  const [placeholderDate, setPlaceholderDate] = react_1.default.useState(() => {
33
21
  return (0, dates_1.createPlaceholderValue)({
34
22
  placeholderValue: props.placeholderValue,
35
- timeZone: props.timeZone,
23
+ timeZone,
36
24
  });
37
25
  });
38
26
  const format = props.format || 'L';
39
- const sections = useFormatSections(format);
27
+ const sections = (0, utils_1.useFormatSections)(format);
40
28
  const allSegments = react_1.default.useMemo(() => sections
41
- .filter((seg) => EDITABLE_SEGMENTS[seg.type])
42
- .reduce((p, seg) => {
43
- p[seg.type] = true;
44
- return p;
45
- }, {}), [sections]);
46
- const validSegmentsState = react_1.default.useState(() => props.value || props.defaultValue ? Object.assign({}, allSegments) : {});
29
+ .filter((seg) => utils_1.EDITABLE_SEGMENTS[seg.type])
30
+ .reduce((p, seg) => (Object.assign(Object.assign({}, p), { [seg.type]: true })), {}), [sections]);
31
+ const validSegmentsState = react_1.default.useState(() => value ? Object.assign({}, allSegments) : {});
47
32
  let validSegments = validSegmentsState[0];
48
33
  const setValidSegments = validSegmentsState[1];
49
- if (value && Object.keys(validSegments).length < Object.keys(allSegments).length) {
34
+ if (value && !(0, utils_1.isAllSegmentsValid)(allSegments, validSegments)) {
50
35
  setValidSegments(Object.assign({}, allSegments));
51
36
  }
52
37
  if (!value &&
53
- Object.keys(validSegments).length > 0 &&
38
+ (0, utils_1.isAllSegmentsValid)(allSegments, validSegments) &&
54
39
  Object.keys(validSegments).length === Object.keys(allSegments).length) {
55
40
  validSegments = {};
56
41
  setValidSegments(validSegments);
57
- setPlaceholderDate((0, dates_1.createPlaceholderValue)({ timeZone: props.timeZone }));
42
+ setPlaceholderDate((0, dates_1.createPlaceholderValue)({
43
+ placeholderValue: props.placeholderValue,
44
+ timeZone,
45
+ }));
58
46
  }
59
- const displayValue = value &&
60
- (0, date_utils_1.isValid)(value) &&
61
- Object.keys(validSegments).length >= Object.keys(allSegments).length
62
- ? value
63
- : placeholderDate;
47
+ const displayValue = value && (0, date_utils_1.isValid)(value) && (0, utils_1.isAllSegmentsValid)(allSegments, validSegments)
48
+ ? value.timeZone(timeZone)
49
+ : placeholderDate.timeZone(timeZone);
64
50
  const sectionsState = useSectionsState(sections, displayValue, validSegments);
65
51
  const [selectedSections, setSelectedSections] = react_1.default.useState(-1);
66
52
  const selectedSectionIndexes = react_1.default.useMemo(() => {
@@ -86,14 +72,14 @@ function useDateFieldState(props) {
86
72
  if (props.disabled || props.readOnly) {
87
73
  return;
88
74
  }
89
- if (Object.keys(validSegments).length >= Object.keys(allSegments).length) {
75
+ if ((0, utils_1.isAllSegmentsValid)(allSegments, validSegments)) {
90
76
  if (!value || !newValue.isSame(value)) {
91
- setDate(newValue);
77
+ handleUpdateDate(newValue);
92
78
  }
93
79
  }
94
80
  else {
95
81
  if (value) {
96
- setDate(null);
82
+ handleUpdateDate(null);
97
83
  }
98
84
  setPlaceholderDate(newValue);
99
85
  }
@@ -108,404 +94,106 @@ function useDateFieldState(props) {
108
94
  }
109
95
  setValidSegments(Object.assign({}, validSegments));
110
96
  }
111
- function setSection(section, amount) {
112
- markValid(section.type);
113
- setValue((0, utils_1.setSegment)(section, displayValue, amount));
97
+ function setSection(sectionIndex, amount) {
98
+ const section = sectionsState.editableSections[sectionIndex];
99
+ if (section) {
100
+ markValid(section.type);
101
+ setValue((0, utils_1.setSegment)(section, displayValue, amount));
102
+ }
114
103
  }
115
104
  function adjustSection(sectionIndex, amount) {
116
105
  const section = sectionsState.editableSections[sectionIndex];
117
- if (validSegments[section.type]) {
118
- setValue((0, utils_1.addSegment)(section, displayValue, amount));
119
- }
120
- else {
121
- markValid(section.type);
122
- if (Object.keys(validSegments).length >= Object.keys(allSegments).length) {
123
- setValue(displayValue);
106
+ if (section) {
107
+ if (validSegments[section.type]) {
108
+ setValue((0, utils_1.addSegment)(section, displayValue, amount));
109
+ }
110
+ else {
111
+ markValid(section.type);
112
+ if (Object.keys(validSegments).length >= Object.keys(allSegments).length) {
113
+ setValue(displayValue);
114
+ }
124
115
  }
125
116
  }
126
117
  }
127
- const enteredKeys = react_1.default.useRef('');
118
+ function flushValidSection(sectionIndex) {
119
+ const section = sectionsState.editableSections[sectionIndex];
120
+ if (section) {
121
+ delete validSegments[section.type];
122
+ }
123
+ setValidSegments(Object.assign({}, validSegments));
124
+ }
125
+ function flushAllValidSections() {
126
+ validSegments = {};
127
+ setValidSegments({});
128
+ }
129
+ function getSectionValue(_sectionIndex) {
130
+ return displayValue;
131
+ }
132
+ function setSectionValue(_sectionIndex, currentValue) {
133
+ setValue(currentValue);
134
+ }
135
+ function createPlaceholder() {
136
+ return (0, dates_1.createPlaceholderValue)({
137
+ placeholderValue: props.placeholderValue,
138
+ timeZone,
139
+ }).timeZone(timeZone);
140
+ }
141
+ function setValueFromString(str) {
142
+ const date = (0, utils_1.parseDateFromString)(str, props.format || 'L', timeZone);
143
+ if ((0, date_utils_1.isValid)(date)) {
144
+ handleUpdateDate(date);
145
+ return true;
146
+ }
147
+ return false;
148
+ }
128
149
  const validationState = props.validationState ||
129
150
  ((0, dates_1.isInvalid)(value, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
130
- (value && ((_a = props.isDateUnavailable) === null || _a === void 0 ? void 0 : _a.call(props, value)) ? 'invalid' : undefined);
131
- return {
132
- value: value !== null && value !== void 0 ? value : null,
133
- isEmpty: Object.keys(validSegments).length === 0,
151
+ (value && ((_b = props.isDateUnavailable) === null || _b === void 0 ? void 0 : _b.call(props, value)) ? 'invalid' : undefined);
152
+ return (0, useBaseDateFieldState_1.useBaseDateFieldState)({
153
+ value,
134
154
  displayValue,
135
- setValue,
136
- // use ltr direction context to get predictable navigation inside input
137
- text: '\u2066' + sectionsState.editableSections.map((s) => s.textValue).join('') + '\u2069',
155
+ placeholderValue: props.placeholderValue,
156
+ timeZone,
157
+ validationState,
158
+ editableSections: sectionsState.editableSections,
138
159
  readOnly: props.readOnly,
139
160
  disabled: props.disabled,
140
- sections: sectionsState.editableSections,
141
161
  selectedSectionIndexes,
142
- validationState,
143
- setSelectedSections(position) {
144
- enteredKeys.current = '';
145
- setSelectedSections(position);
146
- },
147
- focusSectionInPosition(position) {
148
- const nextSectionIndex = this.sections.findIndex((s) => s.end >= position);
149
- const index = nextSectionIndex === -1 ? 0 : nextSectionIndex;
150
- const nextSection = this.sections[index];
151
- if (nextSection) {
152
- this.setSelectedSections(EDITABLE_SEGMENTS[nextSection.type] ? index : nextSection.nextEditableSection);
153
- }
154
- },
155
- focusNextSection() {
156
- var _a, _b;
157
- const currentIndex = selectedSections === 'all' ? 0 : selectedSections;
158
- const newIndex = (_b = (_a = this.sections[currentIndex]) === null || _a === void 0 ? void 0 : _a.nextEditableSection) !== null && _b !== void 0 ? _b : -1;
159
- if (newIndex !== -1) {
160
- this.setSelectedSections(newIndex);
161
- }
162
- },
163
- focusPreviousSection() {
164
- var _a, _b;
165
- const currentIndex = selectedSections === 'all' ? 0 : selectedSections;
166
- const newIndex = (_b = (_a = this.sections[currentIndex]) === null || _a === void 0 ? void 0 : _a.previousEditableSection) !== null && _b !== void 0 ? _b : -1;
167
- if (newIndex !== -1) {
168
- this.setSelectedSections(newIndex);
169
- }
170
- },
171
- focusFirstSection() {
172
- var _a, _b;
173
- const newIndex = (_b = (_a = this.sections[0]) === null || _a === void 0 ? void 0 : _a.previousEditableSection) !== null && _b !== void 0 ? _b : -1;
174
- if (newIndex !== -1) {
175
- setSelectedSections(newIndex);
176
- }
177
- },
178
- focusLastSection() {
179
- var _a, _b;
180
- const newIndex = (_b = (_a = this.sections[this.sections.length - 1]) === null || _a === void 0 ? void 0 : _a.nextEditableSection) !== null && _b !== void 0 ? _b : -1;
181
- if (newIndex !== -1) {
182
- this.setSelectedSections(newIndex);
183
- }
184
- },
185
- increment() {
186
- if (this.readOnly || this.disabled) {
187
- return;
188
- }
189
- enteredKeys.current = '';
190
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
191
- if (sectionIndex !== -1) {
192
- adjustSection(sectionIndex, 1);
193
- }
194
- },
195
- decrement() {
196
- if (this.readOnly || this.disabled) {
197
- return;
198
- }
199
- enteredKeys.current = '';
200
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
201
- if (sectionIndex !== -1) {
202
- adjustSection(sectionIndex, -1);
203
- }
204
- },
205
- incrementPage() {
206
- if (this.readOnly || this.disabled) {
207
- return;
208
- }
209
- enteredKeys.current = '';
210
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
211
- if (sectionIndex !== -1) {
212
- adjustSection(sectionIndex, PAGE_STEP[this.sections[sectionIndex].type] || 1);
213
- }
214
- },
215
- decrementPage() {
216
- if (this.readOnly || this.disabled) {
217
- return;
218
- }
219
- enteredKeys.current = '';
220
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
221
- if (sectionIndex !== -1) {
222
- adjustSection(sectionIndex, -(PAGE_STEP[this.sections[sectionIndex].type] || 1));
223
- }
224
- },
225
- incrementToMax() {
226
- if (this.readOnly || this.disabled) {
227
- return;
228
- }
229
- enteredKeys.current = '';
230
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
231
- if (sectionIndex !== -1) {
232
- const section = this.sections[sectionIndex];
233
- if (typeof section.maxValue === 'number') {
234
- setSection(section, section.maxValue);
235
- }
236
- }
237
- },
238
- decrementToMin() {
239
- if (this.readOnly || this.disabled) {
240
- return;
241
- }
242
- enteredKeys.current = '';
243
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
244
- if (sectionIndex !== -1) {
245
- const section = this.sections[sectionIndex];
246
- if (typeof section.minValue === 'number') {
247
- setSection(section, section.minValue);
248
- }
249
- }
250
- },
251
- clearSection() {
252
- if (this.readOnly || this.disabled) {
253
- return;
254
- }
255
- enteredKeys.current = '';
256
- if (selectedSections === 'all') {
257
- this.clearAll();
258
- return;
259
- }
260
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
261
- if (sectionIndex === -1) {
262
- return;
263
- }
264
- const section = this.sections[sectionIndex];
265
- delete validSegments[section.type];
266
- setValidSegments(Object.assign({}, validSegments));
267
- const placeholder = (0, dates_1.createPlaceholderValue)({
268
- placeholderValue: props.placeholderValue,
269
- timeZone: props.timeZone,
270
- });
271
- let currentValue = displayValue;
272
- // Reset day period to default without changing the hour.
273
- if (section.type === 'dayPeriod') {
274
- const isPM = displayValue.hour() >= 12;
275
- const shouldBePM = placeholder.hour() >= 12;
276
- if (isPM && !shouldBePM) {
277
- currentValue = displayValue.set('hour', displayValue.hour() - 12);
278
- }
279
- else if (!isPM && shouldBePM) {
280
- currentValue = displayValue.set('hour', displayValue.hour() + 12);
281
- }
282
- }
283
- else {
284
- const type = (0, utils_1.getDurationUnitFromSectionType)(section.type);
285
- currentValue = displayValue.set(type, placeholder[type]());
286
- }
287
- setValue(currentValue);
288
- },
289
- clearAll() {
290
- if (this.readOnly || this.disabled) {
291
- return;
292
- }
293
- enteredKeys.current = '';
294
- validSegments = {};
295
- setValidSegments({});
296
- if (value !== null) {
297
- setDate(null);
298
- }
299
- setValue((0, dates_1.createPlaceholderValue)({
300
- placeholderValue: props.placeholderValue,
301
- timeZone: props.timeZone,
302
- }));
303
- },
304
- onInput(key) {
305
- if (this.readOnly || this.disabled) {
306
- return;
307
- }
308
- const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);
309
- if (sectionIndex === -1) {
310
- return;
311
- }
312
- const section = this.sections[sectionIndex];
313
- let newValue = enteredKeys.current + key;
314
- const onInputNumber = (numberValue) => {
315
- var _a, _b, _c;
316
- let sectionValue = section.type === 'month' ? numberValue - 1 : numberValue;
317
- const allowsZero = section.minValue === 0;
318
- if (section.type === 'hour' &&
319
- (section.minValue === 12 || section.maxValue === 11)) {
320
- if (numberValue > 12) {
321
- sectionValue = Number(key);
322
- }
323
- if (section.minValue === 12 && sectionValue > 1) {
324
- sectionValue += 12;
325
- }
326
- }
327
- else if (sectionValue > ((_a = section.maxValue) !== null && _a !== void 0 ? _a : 0)) {
328
- sectionValue = Number(key) - (section.type === 'month' ? 1 : 0);
329
- newValue = key;
330
- if (sectionValue > ((_b = section.maxValue) !== null && _b !== void 0 ? _b : 0)) {
331
- enteredKeys.current = '';
332
- return;
333
- }
334
- }
335
- const shouldSetValue = sectionValue > 0 || (sectionValue === 0 && allowsZero);
336
- if (shouldSetValue) {
337
- setSection(section, sectionValue);
338
- }
339
- if (Number(numberValue + '0') > ((_c = section.maxValue) !== null && _c !== void 0 ? _c : 0) ||
340
- newValue.length >= String(section.maxValue).length) {
341
- enteredKeys.current = '';
342
- if (shouldSetValue) {
343
- this.focusNextSection();
344
- }
345
- }
346
- else {
347
- enteredKeys.current = newValue;
348
- }
349
- };
350
- const onInputString = (stringValue) => {
351
- var _a;
352
- const options = (_a = section.options) !== null && _a !== void 0 ? _a : [];
353
- let sectionValue = stringValue.toLocaleUpperCase();
354
- let foundOptions = options.filter((v) => v.startsWith(sectionValue));
355
- if (foundOptions.length === 0) {
356
- if (stringValue !== key) {
357
- sectionValue = key.toLocaleUpperCase();
358
- foundOptions = options.filter((v) => v.startsWith(sectionValue));
359
- }
360
- if (foundOptions.length === 0) {
361
- enteredKeys.current = '';
362
- return;
363
- }
364
- }
365
- const foundValue = foundOptions[0];
366
- const index = options.indexOf(foundValue);
367
- if (section.type === 'dayPeriod') {
368
- setSection(section, index === 1 ? 12 : 0);
369
- }
370
- else {
371
- setSection(section, index);
372
- }
373
- if (foundOptions.length > 1) {
374
- enteredKeys.current = newValue;
375
- }
376
- else {
377
- enteredKeys.current = '';
378
- this.focusNextSection();
379
- }
380
- };
381
- switch (section.type) {
382
- case 'day':
383
- case 'hour':
384
- case 'minute':
385
- case 'second':
386
- case 'year': {
387
- if (!Number.isInteger(Number(newValue))) {
388
- return;
389
- }
390
- const numberValue = Number(newValue);
391
- onInputNumber(numberValue);
392
- break;
393
- }
394
- case 'dayPeriod': {
395
- onInputString(newValue);
396
- break;
397
- }
398
- case 'weekday':
399
- case 'month': {
400
- if (Number.isInteger(Number(newValue))) {
401
- const numberValue = Number(newValue);
402
- onInputNumber(numberValue);
403
- }
404
- else {
405
- onInputString(newValue);
406
- }
407
- break;
408
- }
409
- }
410
- },
411
- setValueFromString(str) {
412
- enteredKeys.current = '';
413
- let date = parseDate({ input: str, format, timeZone: props.timeZone });
414
- if ((0, date_utils_1.isValid)(date)) {
415
- if (props.timeZone && !isDateStringWithTimeZone(str)) {
416
- const time = parseDate({ input: str, format });
417
- date = (0, dates_1.mergeDateTime)(date, time);
418
- }
419
- setDate(date);
420
- return true;
421
- }
422
- return false;
423
- },
424
- };
162
+ selectedSections,
163
+ isEmpty: Object.keys(validSegments).length === 0,
164
+ flushAllValidSections,
165
+ flushValidSection,
166
+ setSelectedSections,
167
+ setValue,
168
+ setDate: handleUpdateDate,
169
+ adjustSection,
170
+ setSection,
171
+ getSectionValue,
172
+ setSectionValue,
173
+ createPlaceholder,
174
+ setValueFromString,
175
+ });
425
176
  }
426
177
  exports.useDateFieldState = useDateFieldState;
427
- function parseDate(options) {
428
- let date = (0, date_utils_1.dateTime)(options);
429
- if (!(0, date_utils_1.isValid)(date)) {
430
- date = (0, date_utils_1.dateTime)(Object.assign(Object.assign({}, options), { format: undefined }));
431
- }
432
- return date;
433
- }
434
- function isDateStringWithTimeZone(str) {
435
- return /z$/i.test(str) || /[+-]\d\d:\d\d$/.test(str);
436
- }
437
- function getCurrentEditableSectionIndex(sections, selectedSections) {
438
- const currentIndex = selectedSections === 'all' || selectedSections === -1 ? 0 : selectedSections;
439
- const section = sections[currentIndex];
440
- if (section && !EDITABLE_SEGMENTS[section.type]) {
441
- return section.nextEditableSection;
442
- }
443
- return section ? currentIndex : -1;
444
- }
445
- function useFormatSections(format) {
446
- const usedFormat = format;
447
- const [sections, setSections] = react_1.default.useState(() => (0, utils_1.splitFormatIntoSections)(usedFormat));
448
- const [previousFormat, setFormat] = react_1.default.useState(usedFormat);
449
- if (usedFormat !== previousFormat) {
450
- setFormat(usedFormat);
451
- setSections((0, utils_1.splitFormatIntoSections)(usedFormat));
452
- }
453
- return sections;
454
- }
455
178
  function useSectionsState(sections, value, validSegments) {
456
179
  const [state, setState] = react_1.default.useState(() => {
457
180
  return {
458
181
  value,
459
182
  sections,
460
183
  validSegments,
461
- editableSections: getEditableSections(sections, value, validSegments),
184
+ editableSections: (0, utils_1.getEditableSections)(sections, value, validSegments),
462
185
  };
463
186
  });
464
187
  if (sections !== state.sections ||
465
188
  validSegments !== state.validSegments ||
466
- !value.isSame(state.value)) {
189
+ !value.isSame(state.value) ||
190
+ value.timeZone() !== state.value.timeZone()) {
467
191
  setState({
468
192
  value,
469
193
  sections,
470
194
  validSegments,
471
- editableSections: getEditableSections(sections, value, validSegments),
195
+ editableSections: (0, utils_1.getEditableSections)(sections, value, validSegments),
472
196
  });
473
197
  }
474
198
  return state;
475
199
  }
476
- function getEditableSections(sections, value, validSegments) {
477
- let position = 1;
478
- const newSections = [];
479
- let previousEditableSection = -1;
480
- for (let i = 0; i < sections.length; i++) {
481
- const section = sections[i];
482
- const isEditable = EDITABLE_SEGMENTS[section.type];
483
- let renderedValue = section.placeholder;
484
- if ((isEditable && validSegments[section.type]) || section.type === 'timeZoneName') {
485
- renderedValue = value.format(section.format);
486
- if (section.contentType === 'digit' &&
487
- renderedValue.length < section.placeholder.length) {
488
- renderedValue = renderedValue.padStart(section.placeholder.length, '0');
489
- }
490
- }
491
- // use bidirectional context to allow the browser autodetect text direction
492
- renderedValue = '\u2068' + renderedValue + '\u2069';
493
- const sectionLength = renderedValue.length;
494
- const newSection = Object.assign(Object.assign(Object.assign({}, section), { value: (0, utils_1.getSectionValue)(section, value), textValue: renderedValue, start: position, end: position + sectionLength, modified: false, previousEditableSection, nextEditableSection: previousEditableSection }), (0, utils_1.getSectionLimits)(section, value));
495
- newSections.push(newSection);
496
- if (isEditable) {
497
- for (let j = Math.max(0, previousEditableSection); j <= i; j++) {
498
- const prevSection = newSections[j];
499
- if (prevSection) {
500
- prevSection.nextEditableSection = i;
501
- if (prevSection.previousEditableSection === -1) {
502
- prevSection.previousEditableSection = i;
503
- }
504
- }
505
- }
506
- previousEditableSection = i;
507
- }
508
- position += sectionLength;
509
- }
510
- return newSections;
511
- }
@@ -1,3 +1,4 @@
1
1
  export * from './DateField';
2
2
  export * from './hooks/useDateFieldState';
3
3
  export * from './hooks/useDateFieldProps';
4
+ export * from './hooks/useBaseDateFieldState';
@@ -4,3 +4,4 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./DateField"), exports);
5
5
  tslib_1.__exportStar(require("./hooks/useDateFieldState"), exports);
6
6
  tslib_1.__exportStar(require("./hooks/useDateFieldProps"), exports);
7
+ tslib_1.__exportStar(require("./hooks/useBaseDateFieldState"), exports);
@@ -1,5 +1,6 @@
1
1
  import type { DateTime } from '@gravity-ui/date-utils';
2
2
  import type { DateFieldSection, DateFieldSectionType, DateFieldSectionWithoutPosition } from './types';
3
+ export declare const EDITABLE_SEGMENTS: Partial<Record<DateFieldSectionType, boolean>>;
3
4
  export declare function expandFormat(format: string): string;
4
5
  export declare function getSectionLimits(section: DateFieldSectionWithoutPosition, date: DateTime): {
5
6
  minValue: number;
@@ -9,8 +10,16 @@ export declare function getSectionLimits(section: DateFieldSectionWithoutPositio
9
10
  maxValue?: undefined;
10
11
  };
11
12
  export declare function getSectionValue(sections: DateFieldSectionWithoutPosition, date: DateTime): number | undefined;
12
- export declare function getDurationUnitFromSectionType(type: DateFieldSectionType): "year" | "month" | "day" | "date" | "hour" | "minute" | "second";
13
+ export declare function getDurationUnitFromSectionType(type: DateFieldSectionType): "year" | "month" | "day" | "hour" | "minute" | "second" | "date";
13
14
  export declare function addSegment(section: DateFieldSection, date: DateTime, amount: number): DateTime;
14
15
  export declare function setSegment(section: DateFieldSection, date: DateTime, amount: number): DateTime;
15
16
  export declare function splitFormatIntoSections(format: string): DateFieldSectionWithoutPosition[];
16
17
  export declare function cleanString(dirtyString: string): string;
18
+ export declare function getEditableSections(sections: DateFieldSectionWithoutPosition[], value: DateTime, validSegments: typeof EDITABLE_SEGMENTS): DateFieldSection[];
19
+ export declare function isEditableSection(section: DateFieldSectionWithoutPosition): boolean;
20
+ export declare function toEditableSection(section: DateFieldSectionWithoutPosition, value: DateTime, validSegments: typeof EDITABLE_SEGMENTS, position: number, previousEditableSection: number): DateFieldSection;
21
+ export declare function getCurrentEditableSectionIndex(sections: DateFieldSection[], selectedSections: 'all' | number): number;
22
+ export declare function formatSections(sections: DateFieldSection[]): string;
23
+ export declare function parseDateFromString(str: string, format: string, timeZone?: string): DateTime;
24
+ export declare function isAllSegmentsValid(allSegments: typeof EDITABLE_SEGMENTS, validSegments: typeof EDITABLE_SEGMENTS): boolean;
25
+ export declare function useFormatSections(format: string): DateFieldSectionWithoutPosition[];