@gravity-ui/date-components 1.6.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,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,3 @@
1
+ export * from './RelativeRangeDatePicker';
2
+ export { PickerDialog as RelativeRangeDatePickerDialog } from './components/PickerDialog/PickerDialog';
3
+ export * from './hooks/useRelativeRangeDatePickerState';
@@ -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,46 @@
1
+ import { dateTime, dateTimeParse } from '@gravity-ui/date-utils';
2
+ import { getPresetTitle } from './components/Presets/utils';
3
+ export function resolveTimeZone(timeZone) {
4
+ if (timeZone === 'default' || timeZone === 'system') {
5
+ return dateTime({ timeZone }).timeZone();
6
+ }
7
+ return timeZone;
8
+ }
9
+ export function normalizeTimeZone(timeZone) {
10
+ const lowered = timeZone.toLowerCase();
11
+ if (lowered === 'default' || lowered === 'system') {
12
+ return lowered;
13
+ }
14
+ return resolveTimeZone(timeZone);
15
+ }
16
+ export function getTimeZoneOffset(timeZone) {
17
+ return `UTC ${dateTime({ timeZone }).format('Z')}`;
18
+ }
19
+ export function getDefaultTitle({ value, timeZone, alwaysShowAsAbsolute, format = 'L', presets, }) {
20
+ var _a, _b, _c, _d, _e, _f;
21
+ if (!value) {
22
+ return '';
23
+ }
24
+ const tz = timeZone === 'system' ? '' : ` (${getTimeZoneOffset(timeZone)})`;
25
+ let from = '';
26
+ if (value.start) {
27
+ from =
28
+ value.start.type === 'relative' && !alwaysShowAsAbsolute
29
+ ? value.start.value
30
+ : (_b = (_a = dateTimeParse(value.start.value, { timeZone })) === null || _a === void 0 ? void 0 : _a.format(format)) !== null && _b !== void 0 ? _b : '';
31
+ }
32
+ let to = '';
33
+ if (value.end) {
34
+ to =
35
+ value.end.type === 'relative' && !alwaysShowAsAbsolute
36
+ ? value.end.value
37
+ : (_d = (_c = dateTimeParse(value.end.value, { timeZone, roundUp: true })) === null || _c === void 0 ? void 0 : _c.format(format)) !== null && _d !== void 0 ? _d : '';
38
+ }
39
+ if (!alwaysShowAsAbsolute &&
40
+ ((_e = value.start) === null || _e === void 0 ? void 0 : _e.type) === 'relative' &&
41
+ ((_f = value.end) === null || _f === void 0 ? void 0 : _f.type) === 'relative') {
42
+ return `${getPresetTitle(value.start.value, value.end.value, presets)}${tz}`;
43
+ }
44
+ const delimiter = ' — ';
45
+ return `${from}${delimiter}${to}${tz}`;
46
+ }
@@ -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';
@@ -4,3 +4,5 @@ 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';
@@ -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,10 @@
1
+ import React from 'react';
2
+ export function useDefaultTimeZone(date) {
3
+ const defaultTimeZone = date ? date.timeZone() : 'default';
4
+ const [lastValue, setLastValue] = React.useState(defaultTimeZone);
5
+ if (date && defaultTimeZone !== lastValue) {
6
+ setLastValue(defaultTimeZone);
7
+ }
8
+ const timeZone = date ? defaultTimeZone : lastValue;
9
+ return timeZone;
10
+ }
@@ -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,26 @@
1
+ import { i18n } from './i18n';
2
+ export function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value') {
3
+ const rangeOverflow = value && maxValue && maxValue.isBefore(value);
4
+ const rangeUnderflow = value && minValue && value.isBefore(minValue);
5
+ const isUnavailable = (value && (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(value))) || false;
6
+ const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;
7
+ const errors = [];
8
+ if (isInvalid) {
9
+ if (rangeUnderflow) {
10
+ errors.push(i18n('Value must be {minValue} or later.', {
11
+ minValue: minValue.timeZone(timeZone).format(),
12
+ value: valueTitle,
13
+ }));
14
+ }
15
+ if (rangeOverflow) {
16
+ errors.push(i18n('Value must be {maxValue} or earlier.', {
17
+ maxValue: maxValue.timeZone(timeZone).format(),
18
+ value: valueTitle,
19
+ }));
20
+ }
21
+ if (isUnavailable) {
22
+ errors.push(i18n('Selected date unavailable.'));
23
+ }
24
+ }
25
+ return { isInvalid, errors };
26
+ }
@@ -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,5 @@
1
+ import { addComponentKeysets } from '@gravity-ui/uikit/i18n';
2
+ import { NAMESPACE } from '../../../../utils/cn';
3
+ import en from './en.json';
4
+ import ru from './ru.json';
5
+ export const i18n = addComponentKeysets({ en, ru }, `${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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/date-components",
3
- "version": "1.6.0",
3
+ "version": "2.0.1",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "main": "dist/cjs/index.js",
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "homepage": "https://github.com/gravity-ui/date-components#readme",
32
32
  "scripts": {
33
- "prepare": "husky install",
33
+ "prepare": "husky",
34
34
  "lint": "run-p lint:*",
35
35
  "lint:js": "eslint --ext .js,.jsx,.ts,.tsx --report-unused-disable-directives .",
36
36
  "lint:styles": "stylelint --report-needless-disables 'src/**/*.scss'",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@bem-react/classname": "^1.6.0",
49
- "@gravity-ui/date-utils": "^1.4.1",
49
+ "@gravity-ui/date-utils": "^2.0.1",
50
50
  "@gravity-ui/icons": "^2.2.0",
51
51
  "tslib": "2.6.2"
52
52
  },
@@ -60,24 +60,23 @@
60
60
  "@gravity-ui/prettier-config": "^1.1.0",
61
61
  "@gravity-ui/stylelint-config": "^4.0.1",
62
62
  "@gravity-ui/tsconfig": "^1.0.0",
63
- "@gravity-ui/uikit": "^5.0.0",
64
- "@storybook/addon-a11y": "^7.6.7",
65
- "@storybook/addon-essentials": "^7.6.7",
66
- "@storybook/addon-viewport": "^7.6.7",
67
- "@storybook/addons": "^7.6.7",
68
- "@storybook/api": "^7.6.7",
69
- "@storybook/blocks": "^7.6.7",
63
+ "@gravity-ui/uikit": "^6.1.1",
64
+ "@storybook/addon-a11y": "^7.6.15",
65
+ "@storybook/addon-essentials": "^7.6.15",
66
+ "@storybook/addon-viewport": "^7.6.15",
67
+ "@storybook/addons": "^7.6.15",
68
+ "@storybook/api": "^7.6.15",
69
+ "@storybook/blocks": "^7.6.15",
70
70
  "@storybook/preset-scss": "^1.0.3",
71
- "@storybook/react": "^7.6.7",
72
- "@storybook/react-webpack5": "^7.6.7",
73
- "@storybook/theming": "^7.6.7",
74
- "@testing-library/jest-dom": "^6.1.6",
75
- "@testing-library/react": "^14.1.2",
71
+ "@storybook/react": "^7.6.15",
72
+ "@storybook/react-webpack5": "^7.6.15",
73
+ "@storybook/theming": "^7.6.15",
74
+ "@testing-library/jest-dom": "^6.4.2",
75
+ "@testing-library/react": "^14.2.1",
76
76
  "@testing-library/user-event": "^14.5.2",
77
- "@types/jest": "^29.5.11",
78
- "@types/react": "^18.2.46",
79
- "@types/react-dom": "^18.2.18",
80
- "cross-env": "^7.0.3",
77
+ "@types/jest": "^29.5.12",
78
+ "@types/react": "^18.2.55",
79
+ "@types/react-dom": "^18.2.19",
81
80
  "eslint": "^8.56.0",
82
81
  "eslint-plugin-testing-library": "^6.2.0",
83
82
  "gulp": "^4.0.2",
@@ -85,27 +84,28 @@
85
84
  "gulp-dart-sass": "^1.1.0",
86
85
  "gulp-replace": "^1.1.4",
87
86
  "gulp-typescript": "^5.0.1",
88
- "husky": "^8.0.3",
87
+ "husky": "^9.0.11",
89
88
  "jest": "^29.5.0",
90
89
  "jest-environment-jsdom": "^29.5.0",
91
90
  "jest-transform-css": "^6.0.1",
92
91
  "nano-staged": "^0.8.0",
93
92
  "npm-run-all": "^4.1.5",
94
- "prettier": "^3.1.1",
93
+ "prettier": "^3.2.5",
95
94
  "react": "^18.2.0",
96
95
  "react-dom": "^18.2.0",
97
96
  "rimraf": "5.0.5",
98
- "sass": "^1.69.7",
97
+ "sass": "^1.70.0",
99
98
  "sass-loader": "^13.3.3",
100
- "storybook": "^7.6.7",
101
- "style-loader": "^3.3.3",
102
- "stylelint": "^15.10.2",
103
- "ts-jest": "^29.1.1",
99
+ "storybook": "^7.6.15",
100
+ "style-loader": "^3.3.4",
101
+ "stylelint": "^15.11.0",
102
+ "stylelint-use-logical": "^2.1.0",
103
+ "ts-jest": "^29.1.2",
104
104
  "ts-node": "^10.9.2",
105
105
  "typescript": "^5.3.3"
106
106
  },
107
107
  "peerDependencies": {
108
- "@gravity-ui/uikit": "^5.0.0",
108
+ "@gravity-ui/uikit": "^6.0.0",
109
109
  "react": "^17.0.0 || ^18.0.0",
110
110
  "react-dom": "^17.0.0 || ^18.0.0"
111
111
  },
@@ -1,7 +0,0 @@
1
- import type { DateTime } from '@gravity-ui/date-utils';
2
- import type { RangeValue, ValueBase } from '../../types';
3
- import type { CalendarStateOptionsBase, RangeCalendarState } from './types';
4
- export interface RangeCalendarStateOptions extends ValueBase<RangeValue<DateTime>>, CalendarStateOptionsBase {
5
- }
6
- export type { RangeCalendarState } from './types';
7
- export declare function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState;
@@ -1 +0,0 @@
1
- export declare function useControlledState<T, C extends T = T>(value: T, defaultValue: T, onUpdate?: (value: C, ...args: any[]) => void): readonly [T, (newValue: C, ...args: any[]) => void];
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useControlledState = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importDefault(require("react"));
6
- function useControlledState(value, defaultValue, onUpdate) {
7
- const [innerValue, setInnerValue] = react_1.default.useState(defaultValue);
8
- const [wasControlled] = react_1.default.useState(value !== undefined);
9
- const isControlled = value !== undefined;
10
- if (wasControlled !== isControlled) {
11
- console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);
12
- }
13
- const currentValueRef = react_1.default.useRef(isControlled ? value : defaultValue);
14
- react_1.default.useEffect(() => {
15
- currentValueRef.current = value;
16
- }, [value]);
17
- const setState = react_1.default.useCallback((newValue, ...args) => {
18
- if (!Object.is(currentValueRef.current, newValue)) {
19
- onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(newValue, ...args);
20
- }
21
- if (!isControlled) {
22
- currentValueRef.current = newValue;
23
- setInnerValue(newValue);
24
- }
25
- }, [isControlled, onUpdate]);
26
- return [isControlled ? value : innerValue, setState];
27
- }
28
- exports.useControlledState = useControlledState;
@@ -1,7 +0,0 @@
1
- import type { DateTime } from '@gravity-ui/date-utils';
2
- import type { RangeValue, ValueBase } from '../../types';
3
- import type { CalendarStateOptionsBase, RangeCalendarState } from './types';
4
- export interface RangeCalendarStateOptions extends ValueBase<RangeValue<DateTime>>, CalendarStateOptionsBase {
5
- }
6
- export type { RangeCalendarState } from './types';
7
- export declare function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState;
@@ -1 +0,0 @@
1
- export declare function useControlledState<T, C extends T = T>(value: T, defaultValue: T, onUpdate?: (value: C, ...args: any[]) => void): readonly [T, (newValue: C, ...args: any[]) => void];
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
- export function useControlledState(value, defaultValue, onUpdate) {
3
- const [innerValue, setInnerValue] = React.useState(defaultValue);
4
- const [wasControlled] = React.useState(value !== undefined);
5
- const isControlled = value !== undefined;
6
- if (wasControlled !== isControlled) {
7
- console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);
8
- }
9
- const currentValueRef = React.useRef(isControlled ? value : defaultValue);
10
- React.useEffect(() => {
11
- currentValueRef.current = value;
12
- }, [value]);
13
- const setState = React.useCallback((newValue, ...args) => {
14
- if (!Object.is(currentValueRef.current, newValue)) {
15
- onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(newValue, ...args);
16
- }
17
- if (!isControlled) {
18
- currentValueRef.current = newValue;
19
- setInnerValue(newValue);
20
- }
21
- }, [isControlled, onUpdate]);
22
- return [isControlled ? value : innerValue, setState];
23
- }