@ozen-ui/kit 0.61.0 → 0.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/__inner__/cjs/components/AutocompleteNext/Autocomplete.css +1 -1
  2. package/__inner__/cjs/components/Calendar/Calendar.js +2 -2
  3. package/__inner__/cjs/components/Calendar/CalendarContext.d.ts +2 -3
  4. package/__inner__/cjs/components/Calendar/components/CalendarGridItem/types.d.ts +2 -2
  5. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/CalendarModeRange.d.ts +2 -2
  6. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +14 -18
  7. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/index.d.ts +0 -1
  8. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/index.js +0 -1
  9. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.d.ts +2 -2
  10. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +10 -18
  11. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/index.d.ts +0 -1
  12. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/index.js +0 -1
  13. package/__inner__/cjs/components/Calendar/components/Calendars/Calendars.d.ts +5 -0
  14. package/__inner__/cjs/components/Calendar/components/Calendars/Calendars.js +45 -0
  15. package/__inner__/cjs/components/Calendar/components/Calendars/index.d.ts +1 -0
  16. package/__inner__/cjs/components/Calendar/components/{CalendarModeSingle/components/CalendarConsumer → Calendars}/index.js +1 -1
  17. package/__inner__/cjs/components/Calendar/components/index.d.ts +1 -0
  18. package/__inner__/cjs/components/Calendar/components/index.js +1 -0
  19. package/__inner__/cjs/components/Calendar/constants.d.ts +1 -1
  20. package/__inner__/cjs/components/Calendar/constants.js +2 -2
  21. package/__inner__/cjs/components/Calendar/types.d.ts +60 -24
  22. package/__inner__/cjs/components/DataList/DataList.css +1 -1
  23. package/__inner__/cjs/components/DatePicker/DatePicker.css +12 -1
  24. package/__inner__/cjs/components/DatePicker/DatePicker.d.ts +2 -3
  25. package/__inner__/cjs/components/DatePicker/DatePicker.js +9 -143
  26. package/__inner__/cjs/components/DatePicker/components/DateInput/DateInput.js +1 -2
  27. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +0 -1
  28. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +1 -3
  29. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.d.ts +2 -0
  30. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +159 -0
  31. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/index.d.ts +1 -0
  32. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/index.js +4 -0
  33. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.d.ts +2 -0
  34. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +247 -0
  35. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/index.d.ts +1 -0
  36. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/index.js +4 -0
  37. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.d.ts +3 -0
  38. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.js +10 -0
  39. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.d.ts +1 -0
  40. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.js +4 -0
  41. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.d.ts +6 -0
  42. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.js +32 -0
  43. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.d.ts +1 -0
  44. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.js +4 -0
  45. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.d.ts +1 -0
  46. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.js +7 -0
  47. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.d.ts +1 -0
  48. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.js +4 -0
  49. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/index.d.ts +3 -0
  50. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/index.js +6 -0
  51. package/__inner__/cjs/components/DatePicker/components/index.d.ts +2 -0
  52. package/__inner__/cjs/components/DatePicker/components/index.js +2 -0
  53. package/__inner__/cjs/components/DatePicker/constants.d.ts +1 -0
  54. package/__inner__/cjs/components/DatePicker/constants.js +2 -1
  55. package/__inner__/cjs/components/DatePicker/types.d.ts +84 -16
  56. package/__inner__/cjs/components/DatePicker/types.js +2 -0
  57. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +1 -2
  58. package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.d.ts +3 -0
  59. package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +16 -0
  60. package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/index.d.ts +1 -0
  61. package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/index.js +4 -0
  62. package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.d.ts +4 -0
  63. package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.js +13 -0
  64. package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/index.d.ts +1 -0
  65. package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/index.js +4 -0
  66. package/__inner__/cjs/components/DatePicker/utils/index.d.ts +4 -0
  67. package/__inner__/cjs/components/DatePicker/utils/index.js +4 -0
  68. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/index.d.ts +1 -0
  69. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/index.js +4 -0
  70. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +1 -0
  71. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.js +15 -0
  72. package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/index.d.ts +1 -0
  73. package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/index.js +4 -0
  74. package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.d.ts +8 -0
  75. package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.js +47 -0
  76. package/__inner__/cjs/components/Menu/Menu.css +1 -1
  77. package/__inner__/cjs/components/Popover/Popover.js +2 -2
  78. package/__inner__/cjs/components/Popover/types.d.ts +2 -0
  79. package/__inner__/cjs/components/Skeleton/Skeleton.css +1 -1
  80. package/__inner__/cjs/hooks/useClickOutside/useClickOutside.d.ts +4 -4
  81. package/__inner__/cjs/hooks/useClickOutside/useClickOutside.js +7 -12
  82. package/__inner__/cjs/utils/date/index.d.ts +1 -0
  83. package/__inner__/cjs/utils/date/index.js +1 -0
  84. package/__inner__/cjs/utils/date/isValidDate/index.d.ts +1 -0
  85. package/__inner__/cjs/{components/Calendar/components/CalendarModeRange/components/CalendarConsumer → utils/date/isValidDate}/index.js +1 -1
  86. package/__inner__/cjs/utils/date/isValidDate/isValidDate.d.ts +1 -0
  87. package/__inner__/cjs/utils/date/isValidDate/isValidDate.js +7 -0
  88. package/__inner__/cjs/utils/date/monthDiff/monthDiff.d.ts +1 -1
  89. package/__inner__/cjs/utils/date/monthDiff/monthDiff.js +3 -0
  90. package/__inner__/esm/components/AutocompleteNext/Autocomplete.css +1 -1
  91. package/__inner__/esm/components/Calendar/Calendar.js +3 -3
  92. package/__inner__/esm/components/Calendar/CalendarContext.d.ts +2 -3
  93. package/__inner__/esm/components/Calendar/components/CalendarGridItem/types.d.ts +2 -2
  94. package/__inner__/esm/components/Calendar/components/CalendarModeRange/CalendarModeRange.d.ts +2 -2
  95. package/__inner__/esm/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +15 -19
  96. package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/index.d.ts +0 -1
  97. package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/index.js +0 -1
  98. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.d.ts +2 -2
  99. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +11 -19
  100. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/index.d.ts +0 -1
  101. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/index.js +0 -1
  102. package/__inner__/esm/components/Calendar/components/Calendars/Calendars.d.ts +5 -0
  103. package/__inner__/esm/components/Calendar/components/Calendars/Calendars.js +41 -0
  104. package/__inner__/esm/components/Calendar/components/Calendars/index.d.ts +1 -0
  105. package/__inner__/esm/components/Calendar/components/Calendars/index.js +1 -0
  106. package/__inner__/esm/components/Calendar/components/index.d.ts +1 -0
  107. package/__inner__/esm/components/Calendar/components/index.js +1 -0
  108. package/__inner__/esm/components/Calendar/constants.d.ts +1 -1
  109. package/__inner__/esm/components/Calendar/constants.js +1 -1
  110. package/__inner__/esm/components/Calendar/types.d.ts +60 -24
  111. package/__inner__/esm/components/DataList/DataList.css +1 -1
  112. package/__inner__/esm/components/DatePicker/DatePicker.css +12 -1
  113. package/__inner__/esm/components/DatePicker/DatePicker.d.ts +2 -3
  114. package/__inner__/esm/components/DatePicker/DatePicker.js +13 -147
  115. package/__inner__/esm/components/DatePicker/components/DateInput/DateInput.js +1 -2
  116. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +0 -1
  117. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +0 -1
  118. package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.d.ts +2 -0
  119. package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +156 -0
  120. package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/index.d.ts +1 -0
  121. package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/index.js +1 -0
  122. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.d.ts +2 -0
  123. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +244 -0
  124. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/index.d.ts +1 -0
  125. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/index.js +1 -0
  126. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.d.ts +3 -0
  127. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.js +6 -0
  128. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.d.ts +1 -0
  129. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.js +1 -0
  130. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.d.ts +6 -0
  131. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.js +28 -0
  132. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.d.ts +1 -0
  133. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.js +1 -0
  134. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.d.ts +1 -0
  135. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.js +3 -0
  136. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.d.ts +1 -0
  137. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.js +1 -0
  138. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/index.d.ts +3 -0
  139. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/index.js +3 -0
  140. package/__inner__/esm/components/DatePicker/components/index.d.ts +2 -0
  141. package/__inner__/esm/components/DatePicker/components/index.js +2 -0
  142. package/__inner__/esm/components/DatePicker/constants.d.ts +1 -0
  143. package/__inner__/esm/components/DatePicker/constants.js +1 -0
  144. package/__inner__/esm/components/DatePicker/types.d.ts +84 -16
  145. package/__inner__/esm/components/DatePicker/types.js +1 -1
  146. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +1 -2
  147. package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.d.ts +3 -0
  148. package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +12 -0
  149. package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/index.d.ts +1 -0
  150. package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/index.js +1 -0
  151. package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.d.ts +4 -0
  152. package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.js +9 -0
  153. package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/index.d.ts +1 -0
  154. package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/index.js +1 -0
  155. package/__inner__/esm/components/DatePicker/utils/index.d.ts +4 -0
  156. package/__inner__/esm/components/DatePicker/utils/index.js +4 -0
  157. package/__inner__/esm/components/DatePicker/utils/isValidDateString/index.d.ts +1 -0
  158. package/__inner__/esm/components/DatePicker/utils/isValidDateString/index.js +1 -0
  159. package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +1 -0
  160. package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.js +11 -0
  161. package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/index.d.ts +1 -0
  162. package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/index.js +1 -0
  163. package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.d.ts +8 -0
  164. package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.js +43 -0
  165. package/__inner__/esm/components/Menu/Menu.css +1 -1
  166. package/__inner__/esm/components/Popover/Popover.js +2 -2
  167. package/__inner__/esm/components/Popover/types.d.ts +2 -0
  168. package/__inner__/esm/components/Skeleton/Skeleton.css +1 -1
  169. package/__inner__/esm/hooks/useClickOutside/useClickOutside.d.ts +4 -4
  170. package/__inner__/esm/hooks/useClickOutside/useClickOutside.js +7 -12
  171. package/__inner__/esm/utils/date/index.d.ts +1 -0
  172. package/__inner__/esm/utils/date/index.js +1 -0
  173. package/__inner__/esm/utils/date/isValidDate/index.d.ts +1 -0
  174. package/__inner__/esm/utils/date/isValidDate/index.js +1 -0
  175. package/__inner__/esm/utils/date/isValidDate/isValidDate.d.ts +1 -0
  176. package/__inner__/esm/utils/date/isValidDate/isValidDate.js +3 -0
  177. package/__inner__/esm/utils/date/monthDiff/monthDiff.d.ts +1 -1
  178. package/__inner__/esm/utils/date/monthDiff/monthDiff.js +3 -0
  179. package/package.json +5 -5
  180. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
  181. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.js +0 -45
  182. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/index.d.ts +0 -1
  183. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
  184. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.js +0 -39
  185. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/index.d.ts +0 -1
  186. package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
  187. package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.js +0 -41
  188. package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/index.d.ts +0 -1
  189. package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/index.js +0 -1
  190. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
  191. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.js +0 -35
  192. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/index.d.ts +0 -1
  193. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/index.js +0 -1
@@ -4,157 +4,23 @@ exports.DatePicker = exports.cnDatePicker = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  require("./DatePicker.css");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
- var useControlled_1 = require("../../hooks/useControlled");
8
7
  var useThemeProps_1 = require("../../hooks/useThemeProps");
9
8
  var classname_1 = require("../../utils/classname");
10
- var getPaperSizeToFormElement_1 = require("../../utils/getPaperSizeToFormElement");
11
- var isKeys_1 = require("../../utils/isKeys");
12
- var Calendar_1 = require("../Calendar");
13
- var Paper_1 = require("../Paper");
14
- var Popover_1 = require("../Popover");
9
+ var getByMap_1 = require("../../utils/getByMap");
15
10
  var components_1 = require("./components");
16
- var utils_1 = require("./components/DateInput/utils");
17
11
  var constants_1 = require("./constants");
18
- var utils_2 = require("./utils");
12
+ var typeMap = {
13
+ date: components_1.DatePickerModeDate,
14
+ 'date-range': components_1.DatePickerModeDateRange,
15
+ };
19
16
  exports.cnDatePicker = (0, classname_1.cn)('DatePicker');
17
+ // eslint-disable-next-line react/display-name
20
18
  exports.DatePicker = (0, react_1.forwardRef)(function (inProps, ref) {
21
19
  var props = (0, useThemeProps_1.useThemeProps)({
22
20
  props: inProps,
23
21
  name: 'DatePicker',
24
22
  });
25
- var _a = props.size, size = _a === void 0 ? constants_1.DATE_PICKER_DEFAULT_SIZE : _a, label = props.label, error = props.error, required = props.required, fullWidth = props.fullWidth, placeholder = props.placeholder, hint = props.hint, valueProp = props.value, defaultValue = props.defaultValue, openProp = props.open, onCloseProp = props.onClose, onOpenProp = props.onOpen, onInputChange = props.onInputChange, clearText = props.clearText, defaultOpen = props.defaultOpen, disabled = props.disabled, minDate = props.minDate, maxDate = props.maxDate, exclude = props.exclude, offsetDate = props.offsetDate, inputProps = props.inputProps, calendarProps = props.calendarProps, popoverProps = props.popoverProps, renderRight = props.renderRight, disableClearButton = props.disableClearButton, onChange = props.onChange, onKeyDown = props.onKeyDown, className = props.className, autoFocus = props.autoFocus, onError = props.onError, other = tslib_1.__rest(props, ["size", "label", "error", "required", "fullWidth", "placeholder", "hint", "value", "defaultValue", "open", "onClose", "onOpen", "onInputChange", "clearText", "defaultOpen", "disabled", "minDate", "maxDate", "exclude", "offsetDate", "inputProps", "calendarProps", "popoverProps", "renderRight", "disableClearButton", "onChange", "onKeyDown", "className", "autoFocus", "onError"]);
26
- var anchorRef = (0, react_1.useRef)(null);
27
- var lastValidDate = (0, react_1.useRef)('');
28
- var _b = tslib_1.__read((0, useControlled_1.useControlled)({
29
- value: undefined,
30
- defaultValue: '',
31
- name: 'DatePicker',
32
- state: 'inputValue',
33
- }), 2), inputValue = _b[0], setInputValue = _b[1];
34
- var _c = tslib_1.__read((0, useControlled_1.useControlled)({
35
- value: openProp,
36
- defaultValue: defaultOpen,
37
- name: 'DatePicker',
38
- state: 'open',
39
- }), 2), open = _c[0], setOpen = _c[1];
40
- var _d = tslib_1.__read((0, useControlled_1.useControlled)({
41
- value: valueProp,
42
- defaultValue: defaultValue,
43
- name: 'DatePicker',
44
- state: 'value',
45
- }), 2), value = _d[0], setValue = _d[1];
46
- /** Соотношение размера календаря к размеру элемента контроля */
47
- var calendarSize = (0, utils_2.getCalendarSizeToFormElement)(size);
48
- /** Вычисление border-radius по размеру компонента */
49
- var radius = (0, getPaperSizeToFormElement_1.getPaperSizeToFormElement)(size);
50
- var callOnChange = function (value) {
51
- var formattedDate = (0, utils_2.formatStringToDate)(value);
52
- setValue(formattedDate);
53
- onChange === null || onChange === void 0 ? void 0 : onChange(formattedDate);
54
- lastValidDate.current = value;
55
- };
56
- var changeInputValue = function (e, value) {
57
- setInputValue(value);
58
- onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(e, value);
59
- if ((0, utils_1.isCompleted)(value) || value === '')
60
- callOnChange(value);
61
- };
62
- /** Эффект — автофокусировка в текстовом поле */
63
- (0, react_1.useEffect)(function () {
64
- var _a;
65
- if (autoFocus)
66
- (_a = anchorRef.current) === null || _a === void 0 ? void 0 : _a.focus();
67
- }, [autoFocus]);
68
- /** Эффект — синхронизируем значение текстового поля со значением в списке */
69
- (0, react_1.useEffect)(function () {
70
- var formattedDate = (0, utils_2.formatDateToString)(value);
71
- if (formattedDate !== inputValue) {
72
- setInputValue(formattedDate);
73
- onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, formattedDate);
74
- lastValidDate.current = formattedDate;
75
- }
76
- }, [value]);
77
- /** Эффект для обработки ошибок */
78
- (0, react_1.useEffect)(function () {
79
- if ((0, utils_2.isInExclude)({ exclude: exclude, value: value })) {
80
- onError === null || onError === void 0 ? void 0 : onError({
81
- type: 'inExclude',
82
- inputValue: inputValue,
83
- value: value,
84
- });
85
- }
86
- if ((0, utils_2.isOutOfRange)({ minDate: minDate, maxDate: maxDate, value: value })) {
87
- onError === null || onError === void 0 ? void 0 : onError({
88
- type: 'outOfRange',
89
- inputValue: inputValue,
90
- value: value,
91
- });
92
- }
93
- }, [value, inputValue, onError, minDate, maxDate, exclude]);
94
- /** Закрытие */
95
- var handleClose = function () {
96
- setOpen(false);
97
- onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
98
- };
99
- /** Открытие */
100
- var handleOpen = function () {
101
- setOpen(true);
102
- onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
103
- };
104
- /** Переключатель открытия и закрытия */
105
- var handleToggle = function () {
106
- if (disabled)
107
- return;
108
- if (open)
109
- handleClose();
110
- else
111
- handleOpen();
112
- };
113
- /** Открытие списка по клику на текстовом поле */
114
- var handleClickOnInput = function (e) {
115
- var _a;
116
- handleToggle();
117
- (_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onClick) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
118
- };
119
- /** Управление элементом контроля через клавиатуру */
120
- var handleKeyDown = function (event) {
121
- if ((0, isKeys_1.isKeys)(event, ['ArrowDown', 'ArrowUp']) && !open) {
122
- event.preventDefault();
123
- handleToggle();
124
- }
125
- onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
126
- };
127
- /** Актуализация значения текстового поля после его покидания */
128
- var handleBlur = function (e) {
129
- var _a;
130
- (_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
131
- if (!inputValue)
132
- return;
133
- if (!(0, utils_1.isCompleted)(inputValue))
134
- changeInputValue(null, lastValidDate.current);
135
- };
136
- /** Очистка поля */
137
- var handleClear = function () {
138
- changeInputValue(null, '');
139
- };
140
- /** Событие ввода значения в текстовом поле */
141
- var handleChangeInput = function (e) {
142
- var value = e.target.value;
143
- changeInputValue(e, value);
144
- };
145
- /** Событие выбора значения из календаря */
146
- var handleChangeCalendar = function (date) {
147
- var formattedDate = (0, utils_2.formatDateToString)(date);
148
- changeInputValue(null, formattedDate);
149
- handleClose();
150
- };
151
- /** Предотвращаем переход фокуса с текстового поля на интерактивные элементы календаря */
152
- var handleMouseDownCalendar = function (e) {
153
- e.preventDefault();
154
- };
155
- return (react_1.default.createElement(react_1.default.Fragment, null,
156
- react_1.default.createElement(components_1.DateInput, tslib_1.__assign({ size: size, hint: hint, error: error, label: label, required: required, disabled: disabled, fullWidth: fullWidth, placeholder: placeholder }, other, { renderRight: react_1.default.createElement(components_1.DatePickerRenderRight, { size: size, open: open, onClear: handleClear, clearText: clearText, hasValue: !!value, renderRight: renderRight, disableClearButton: disableClearButton }), value: inputValue, inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputProps), { onBlur: handleBlur, onClick: handleClickOnInput, onInput: handleChangeInput }), bodyProps: { ref: anchorRef, 'aria-expanded': open }, className: (0, exports.cnDatePicker)({ size: size }, [className]), onKeyDown: handleKeyDown, ref: ref })),
157
- react_1.default.createElement(Popover_1.Popover, tslib_1.__assign({ as: Paper_1.Paper, open: open, offset: [0, 4], radius: radius, anchorRef: anchorRef, onClose: handleClose, placement: "bottom-start", disableReturnFocus: true, disableEnforceFocus: true }, popoverProps),
158
- react_1.default.createElement(Calendar_1.Calendar, tslib_1.__assign({ minDate: minDate, maxDate: maxDate, exclude: exclude, size: calendarSize, offsetDate: offsetDate, onMouseDown: handleMouseDownCalendar }, calendarProps, { value: value || null, onChange: handleChangeCalendar })))));
23
+ var _a = props.size, size = _a === void 0 ? constants_1.DATE_PICKER_DEFAULT_SIZE : _a, _b = props.mode, mode = _b === void 0 ? constants_1.DATE_PICKER_DEFAULT_MODE : _b, other = tslib_1.__rest(props, ["size", "mode"]);
24
+ var Component = (0, getByMap_1.getByMap)(typeMap, mode);
25
+ return react_1.default.createElement(Component, tslib_1.__assign({ size: size }, other, { ref: ref }));
159
26
  });
160
- exports.DatePicker.displayName = 'DatePicker';
@@ -3,12 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DateInput = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var react_1 = tslib_1.__importStar(require("react"));
6
- var icons_1 = require("@ozen-ui/icons");
7
6
  var useMultiRef_1 = require("../../../../hooks/useMultiRef");
8
7
  var Input_1 = require("../../../Input");
9
8
  var utils_1 = require("./utils");
10
9
  exports.DateInput = (0, react_1.forwardRef)(function (_a, ref) {
11
10
  var valueProp = _a.value, defaultValue = _a.defaultValue, other = tslib_1.__rest(_a, ["value", "defaultValue"]);
12
- return (react_1.default.createElement(Input_1.Input, tslib_1.__assign({ renderRight: icons_1.CalendarIcon, value: (0, utils_1.dateInputMask)(valueProp), defaultValue: (0, utils_1.dateInputMask)(defaultValue) }, other, { ref: (0, useMultiRef_1.useMultiRef)([ref]) })));
11
+ return (react_1.default.createElement(Input_1.Input, tslib_1.__assign({ value: (0, utils_1.dateInputMask)(valueProp), defaultValue: (0, utils_1.dateInputMask)(defaultValue) }, other, { ref: (0, useMultiRef_1.useMultiRef)([ref]) })));
13
12
  });
14
13
  exports.DateInput.displayName = 'DateInput';
@@ -1,2 +1 @@
1
- export declare const isCompleted: (value: string) => boolean;
2
1
  export declare const dateInputMask: (value: string | undefined) => string | undefined;
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dateInputMask = exports.isCompleted = void 0;
4
- var isCompleted = function (value) { return value.length === 10; };
5
- exports.isCompleted = isCompleted;
3
+ exports.dateInputMask = void 0;
6
4
  var dateInputMask = function (value) {
7
5
  if (!value) {
8
6
  return value;
@@ -0,0 +1,2 @@
1
+ import type { DatePickerModeComponent } from '../../types';
2
+ export declare const DatePickerModeDate: DatePickerModeComponent<'date'>;
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatePickerModeDate = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var useControlled_1 = require("../../../../hooks/useControlled");
7
+ var useMultiRef_1 = require("../../../../hooks/useMultiRef");
8
+ var isKeys_1 = require("../../../../utils/isKeys");
9
+ var Calendar_1 = require("../../../Calendar");
10
+ var Popover_1 = require("../../../Popover");
11
+ var index_1 = require("../../index");
12
+ var utils_1 = require("../../utils");
13
+ var index_2 = require("../index");
14
+ // eslint-disable-next-line react/display-name
15
+ exports.DatePickerModeDate = (0, react_1.forwardRef)(function (props, ref) {
16
+ var size = props.size, valueProp = props.value, label = props.label, defaultValue = props.defaultValue, openProp = props.open, onCloseProp = props.onClose, onOpenProp = props.onOpen, onInputChange = props.onInputChange, clearText = props.clearText, defaultOpen = props.defaultOpen, disabled = props.disabled, minDate = props.minDate, maxDate = props.maxDate, exclude = props.exclude, inputProps = props.inputProps, renderRight = props.renderRight, className = props.className, _a = props.calendars, calendars = _a === void 0 ? 1 : _a, disableClearButton = props.disableClearButton, onChange = props.onChange, onKeyDown = props.onKeyDown, autoFocus = props.autoFocus, disableCloseOnSelect = props.disableCloseOnSelect, popoverPropsProp = props.popoverProps, calendarPropsProp = props.calendarProps, onError = props.onError, other = tslib_1.__rest(props, ["size", "value", "label", "defaultValue", "open", "onClose", "onOpen", "onInputChange", "clearText", "defaultOpen", "disabled", "minDate", "maxDate", "exclude", "inputProps", "renderRight", "className", "calendars", "disableClearButton", "onChange", "onKeyDown", "autoFocus", "disableCloseOnSelect", "popoverProps", "calendarProps", "onError"]);
17
+ var anchorRef = (0, react_1.useRef)(null);
18
+ var calendarInnerRef = (0, react_1.useRef)(null);
19
+ var calendarRef = (0, useMultiRef_1.useMultiRef)([calendarInnerRef, calendarPropsProp === null || calendarPropsProp === void 0 ? void 0 : calendarPropsProp.ref]);
20
+ var lastValidDate = (0, react_1.useRef)('');
21
+ var _b = tslib_1.__read((0, react_1.useState)(null), 2), offsetDate = _b[0], setOffsetDate = _b[1];
22
+ var _c = tslib_1.__read((0, useControlled_1.useControlled)({
23
+ value: undefined,
24
+ defaultValue: '',
25
+ name: 'DatePicker',
26
+ state: 'inputValue',
27
+ }), 2), inputValue = _c[0], setInputValue = _c[1];
28
+ var _d = tslib_1.__read((0, useControlled_1.useControlled)({
29
+ value: openProp,
30
+ defaultValue: defaultOpen,
31
+ name: 'DatePicker',
32
+ state: 'open',
33
+ }), 2), open = _d[0], setOpen = _d[1];
34
+ var _e = tslib_1.__read((0, useControlled_1.useControlled)({
35
+ value: valueProp,
36
+ defaultValue: defaultValue,
37
+ name: 'DatePicker',
38
+ state: 'value',
39
+ }), 2), value = _e[0], setValue = _e[1];
40
+ var popoverProps = (0, utils_1.getCommonPopoverProps)(tslib_1.__assign(tslib_1.__assign({}, props), { popoverProps: popoverPropsProp }));
41
+ var calendarProps = (0, utils_1.getCommonCalendarProps)(tslib_1.__assign(tslib_1.__assign({}, props), { calendarProps: calendarPropsProp, ref: calendarRef }));
42
+ var onOffsetDateChange = function (date) {
43
+ setOffsetDate(date);
44
+ };
45
+ var callOnChange = function (value) {
46
+ var formattedDate = (0, utils_1.formatStringToDate)(value);
47
+ setValue(formattedDate);
48
+ onChange === null || onChange === void 0 ? void 0 : onChange(formattedDate);
49
+ lastValidDate.current = value;
50
+ };
51
+ var changeInputValue = function (e, value) {
52
+ setInputValue(value);
53
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(e, value);
54
+ if ((0, utils_1.isValidDateString)(value)) {
55
+ callOnChange(value);
56
+ onOffsetDateChange((0, utils_1.formatStringToDate)(value));
57
+ }
58
+ };
59
+ var handleExited = function () {
60
+ var _a;
61
+ onOffsetDateChange(null);
62
+ (_a = popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.onExited) === null || _a === void 0 ? void 0 : _a.call(popoverProps);
63
+ };
64
+ /** Enables calendar keyboard interaction */
65
+ var enableEnforceFocus = (0, utils_1.useCalendarKeyboard)({
66
+ controlRef: anchorRef,
67
+ calendarRef: calendarInnerRef,
68
+ active: open,
69
+ });
70
+ /** Эффект — автофокусировка в текстовом поле */
71
+ (0, react_1.useEffect)(function () {
72
+ var _a;
73
+ if (autoFocus)
74
+ (_a = anchorRef.current) === null || _a === void 0 ? void 0 : _a.focus();
75
+ }, [autoFocus]);
76
+ /** Эффект — синхронизируем значение текстового поля со значением в списке */
77
+ (0, react_1.useEffect)(function () {
78
+ var formattedDate = (0, utils_1.formatDateToString)(value);
79
+ if (formattedDate !== inputValue) {
80
+ setInputValue(formattedDate);
81
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, formattedDate);
82
+ lastValidDate.current = formattedDate;
83
+ }
84
+ }, [value]);
85
+ /** Эффект для обработки ошибок */
86
+ (0, react_1.useEffect)(function () {
87
+ if ((0, utils_1.isInExclude)({ exclude: exclude, value: value })) {
88
+ onError === null || onError === void 0 ? void 0 : onError({
89
+ type: 'inExclude',
90
+ inputValue: inputValue,
91
+ value: value,
92
+ });
93
+ }
94
+ if ((0, utils_1.isOutOfRange)({ minDate: minDate, maxDate: maxDate, value: value })) {
95
+ onError === null || onError === void 0 ? void 0 : onError({
96
+ type: 'outOfRange',
97
+ inputValue: inputValue,
98
+ value: value,
99
+ });
100
+ }
101
+ }, [value, inputValue, onError, minDate, maxDate, exclude]);
102
+ /** Закрытие */
103
+ var handleClose = function () {
104
+ setOpen(false);
105
+ onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
106
+ };
107
+ /** Открытие */
108
+ var handleOpen = function () {
109
+ if (disabled || open)
110
+ return;
111
+ setOpen(true);
112
+ onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
113
+ };
114
+ /** Открытие списка по клику на текстовом поле */
115
+ var handleClickOnInput = function (e) {
116
+ var _a;
117
+ handleOpen();
118
+ (_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onClick) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
119
+ };
120
+ /** Управление элементом контроля через клавиатуру */
121
+ var handleKeyDown = function (event) {
122
+ if ((0, isKeys_1.isKeys)(event, ['ArrowDown', 'ArrowUp'])) {
123
+ event.preventDefault();
124
+ handleOpen();
125
+ }
126
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
127
+ };
128
+ /** Актуализация значения текстового поля после его покидания */
129
+ var handleBlur = function (e) {
130
+ var _a;
131
+ (_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
132
+ if (!inputValue)
133
+ return;
134
+ if (!(0, utils_1.isValidDateString)(inputValue))
135
+ changeInputValue(null, lastValidDate.current);
136
+ };
137
+ /** Очистка поля */
138
+ var handleClear = function () {
139
+ changeInputValue(null, '');
140
+ };
141
+ /** Событие ввода значения в текстовом поле */
142
+ var handleChangeInput = function (e) {
143
+ var _a;
144
+ var value = e.target.value;
145
+ changeInputValue(e, value);
146
+ (_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onChange) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
147
+ };
148
+ /** Событие выбора значения из календаря */
149
+ var handleChangeCalendar = function (date) {
150
+ var formattedDate = (0, utils_1.formatDateToString)(date);
151
+ changeInputValue(null, formattedDate);
152
+ if (!disableCloseOnSelect)
153
+ handleClose();
154
+ };
155
+ return (react_1.default.createElement(react_1.default.Fragment, null,
156
+ react_1.default.createElement(index_2.DateInput, tslib_1.__assign({ size: size, disabled: disabled, label: label }, other, { className: (0, index_1.cnDatePicker)({ mode: 'date' }, className), renderRight: react_1.default.createElement(index_2.DatePickerRenderRight, { size: size, open: open, onClear: handleClear, clearText: clearText, hasValue: !!value, renderRight: renderRight, disableClearButton: disableClearButton }), value: inputValue, inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputProps), { onBlur: handleBlur, onClick: handleClickOnInput, onChange: handleChangeInput }), bodyProps: { ref: anchorRef, 'aria-expanded': open }, onKeyDown: handleKeyDown, ref: ref })),
157
+ react_1.default.createElement(Popover_1.Popover, tslib_1.__assign({ open: open, anchorRef: anchorRef, onClose: handleClose }, popoverProps, { disableEnforceFocus: !enableEnforceFocus, onExited: handleExited }),
158
+ react_1.default.createElement(Calendar_1.Calendar, tslib_1.__assign({ calendars: calendars }, calendarProps, { mode: "single", value: value || null, offsetDate: offsetDate, onOffsetDateChange: onOffsetDateChange, onChange: handleChangeCalendar })))));
159
+ });
@@ -0,0 +1 @@
1
+ export * from './DatePickerModeDate';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DatePickerModeDate"), exports);
@@ -0,0 +1,2 @@
1
+ import type { DatePickerModeComponent } from '../../types';
2
+ export declare const DatePickerModeDateRange: DatePickerModeComponent<'date-range'>;
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatePickerModeDateRange = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var logger_1 = require("@ozen-ui/logger");
7
+ var useBoolean_1 = require("../../../../hooks/useBoolean");
8
+ var useControlled_1 = require("../../../../hooks/useControlled");
9
+ var useMultiRef_1 = require("../../../../hooks/useMultiRef");
10
+ var useMutableRef_1 = require("../../../../hooks/useMutableRef");
11
+ var isKeys_1 = require("../../../../utils/isKeys");
12
+ var Calendar_1 = require("../../../Calendar");
13
+ var FieldHint_1 = require("../../../FieldHint");
14
+ var Popover_1 = require("../../../Popover");
15
+ var Stack_1 = require("../../../Stack");
16
+ var index_1 = require("../../index");
17
+ var utils_1 = require("../../utils");
18
+ var index_2 = require("../index");
19
+ var utils_2 = require("./utils");
20
+ exports.DatePickerModeDateRange =
21
+ // eslint-disable-next-line react/display-name
22
+ (0, react_1.forwardRef)(function (props, ref) {
23
+ var size = props.size, error = props.error, openProp = props.open, label = props.label, onKeyDown = props.onKeyDown, onInputChange = props.onInputChange, renderLeft = props.renderLeft, renderRight = props.renderRight, required = props.required, fullWidth = props.fullWidth, placeholder = props.placeholder, hint = props.hint, disableStroke = props.disableStroke, hintProps = props.hintProps, onChange = props.onChange, labelProps = props.labelProps, popoverPropsProp = props.popoverProps, calendarPropsProp = props.calendarProps, defaultOpen = props.defaultOpen, onCloseProp = props.onClose, defaultValue = props.defaultValue, valueProp = props.value, inputProps = props.inputProps, disabled = props.disabled, className = props.className, _a = props.calendars, calendars = _a === void 0 ? 2 : _a, onError = props.onError, clearText = props.clearText, disableCloseOnSelect = props.disableCloseOnSelect, disableClearButton = props.disableClearButton, onOpenProp = props.onOpen, fieldsProps = props.fieldsProps, other = tslib_1.__rest(props, ["size", "error", "open", "label", "onKeyDown", "onInputChange", "renderLeft", "renderRight", "required", "fullWidth", "placeholder", "hint", "disableStroke", "hintProps", "onChange", "labelProps", "popoverProps", "calendarProps", "defaultOpen", "onClose", "defaultValue", "value", "inputProps", "disabled", "className", "calendars", "onError", "clearText", "disableCloseOnSelect", "disableClearButton", "onOpen", "fieldsProps"]);
24
+ var _b = tslib_1.__read((0, utils_2.getValueForDoubleProp)(label), 2), labelFrom = _b[0], labelTo = _b[1];
25
+ var _c = tslib_1.__read((0, utils_2.getValueForDoubleProp)(renderLeft), 2), renderLeftFrom = _c[0], renderLeftTo = _c[1];
26
+ var _d = tslib_1.__read((0, utils_2.getValueForDoubleProp)(renderRight), 2), renderRightFrom = _d[0], renderRightTo = _d[1];
27
+ var _e = tslib_1.__read((0, utils_2.getValueForDoubleProp)(placeholder), 2), placeholderFrom = _e[0], placeholderTo = _e[1];
28
+ var _f = tslib_1.__read((0, utils_2.getValueForDoubleProp)(inputProps), 2), inputPropsFrom = _f[0], inputPropsTo = _f[1];
29
+ var _g = tslib_1.__read((0, utils_2.getValueForDoubleProp)(labelProps), 2), labelPropsFrom = _g[0], labelPropsTo = _g[1];
30
+ var containerRef = (0, react_1.useRef)(null);
31
+ var anchorRef = (0, react_1.useRef)(null);
32
+ var calendarInnerRef = (0, react_1.useRef)(null);
33
+ var dateInputToRef = (0, react_1.useRef)(null);
34
+ var calendarRef = (0, useMultiRef_1.useMultiRef)([calendarInnerRef, calendarPropsProp === null || calendarPropsProp === void 0 ? void 0 : calendarPropsProp.ref]);
35
+ var fieldsRef = (0, useMultiRef_1.useMultiRef)([anchorRef, fieldsProps === null || fieldsProps === void 0 ? void 0 : fieldsProps.ref]);
36
+ var rootRef = (0, useMultiRef_1.useMultiRef)([ref, containerRef]);
37
+ var _h = tslib_1.__read((0, react_1.useState)(null), 2), offsetDate = _h[0], setOffsetDate = _h[1];
38
+ var _j = tslib_1.__read((0, react_1.useState)(null), 2), calendarPeriod = _j[0], setCalendarPeriod = _j[1];
39
+ var savedCalendarPeriod = (0, useMutableRef_1.useMutableRef)(calendarPeriod);
40
+ var lastValidDate = (0, react_1.useRef)(['', '']);
41
+ var _k = tslib_1.__read((0, useBoolean_1.useBoolean)(false), 2), focusInputFrom = _k[0], setFocusInputFrom = _k[1];
42
+ var _l = tslib_1.__read((0, useBoolean_1.useBoolean)(false), 2), focusInputTo = _l[0], setFocusInputTo = _l[1];
43
+ var _m = tslib_1.__read((0, useControlled_1.useControlled)({
44
+ value: valueProp,
45
+ defaultValue: defaultValue,
46
+ name: 'DatePicker',
47
+ state: 'value',
48
+ }), 2), value = _m[0], setValue = _m[1];
49
+ var _o = tslib_1.__read((0, useControlled_1.useControlled)({
50
+ value: undefined,
51
+ defaultValue: [],
52
+ name: 'DatePicker',
53
+ state: 'inputValue',
54
+ }), 2), inputValue = _o[0], setInputValue = _o[1];
55
+ var _p = tslib_1.__read(value || [], 2), valueFrom = _p[0], valueTo = _p[1];
56
+ var _q = tslib_1.__read(inputValue || [], 2), _r = _q[0], inputValueFrom = _r === void 0 ? '' : _r, _s = _q[1], inputValueTo = _s === void 0 ? '' : _s;
57
+ var _t = tslib_1.__read((0, useControlled_1.useControlled)({
58
+ value: openProp,
59
+ defaultValue: defaultOpen,
60
+ name: 'DatePicker',
61
+ state: 'open',
62
+ }), 2), open = _t[0], setOpen = _t[1];
63
+ var popoverProps = (0, utils_1.getCommonPopoverProps)(tslib_1.__assign(tslib_1.__assign({}, props), { popoverProps: popoverPropsProp }));
64
+ var calendarProps = (0, utils_1.getCommonCalendarProps)(tslib_1.__assign(tslib_1.__assign({}, props), { calendarProps: calendarPropsProp, ref: calendarRef }));
65
+ var onOffsetDateChange = function (date) {
66
+ setOffsetDate(date);
67
+ };
68
+ var onCalendarsChange = (0, react_1.useCallback)(function (date) {
69
+ setCalendarPeriod(date);
70
+ }, []);
71
+ /** Enables calendar keyboard interaction */
72
+ var enableEnforceFocusTo = (0, utils_1.useCalendarKeyboard)({
73
+ controlRef: dateInputToRef,
74
+ calendarRef: calendarInnerRef,
75
+ active: open,
76
+ });
77
+ var disableEnforceFocus = !enableEnforceFocusTo;
78
+ /** Эффект — синхронизируем значение текстового поля со значением в списке */
79
+ (0, react_1.useEffect)(function () {
80
+ var formattedDateFrom = (0, utils_1.formatDateToString)(valueFrom);
81
+ var formattedDateTo = (0, utils_1.formatDateToString)(valueTo);
82
+ if (formattedDateFrom !== inputValueFrom ||
83
+ formattedDateTo !== inputValueTo) {
84
+ setInputValue([formattedDateFrom, formattedDateTo]);
85
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, [formattedDateFrom, formattedDateTo]);
86
+ lastValidDate.current = [formattedDateFrom, formattedDateTo];
87
+ }
88
+ }, [valueFrom, valueTo]);
89
+ /** Error handling */
90
+ (0, react_1.useEffect)(function () {
91
+ if (onError) {
92
+ logger_1.once.error('Обработка ошибок в режиме date-range на данный момент не поддерживается.');
93
+ }
94
+ }, [onError]);
95
+ /** Calendar offset when interacting with inputs */
96
+ (0, react_1.useEffect)(function () {
97
+ if (!(0, utils_1.isValidDateString)(inputValueFrom) ||
98
+ !(0, utils_1.isValidDateString)(inputValueTo) ||
99
+ !savedCalendarPeriod.current)
100
+ return;
101
+ if ((focusInputFrom || focusInputTo) && open && (calendarPeriod === null || calendarPeriod === void 0 ? void 0 : calendarPeriod.length)) {
102
+ var firstDate = (0, utils_1.formatStringToDate)(inputValueFrom);
103
+ var secondDate = (0, utils_1.formatStringToDate)(inputValueTo);
104
+ var offset = (0, utils_2.getOffsetDateInRange)(tslib_1.__assign(tslib_1.__assign({}, (focusInputTo && { type: 'end' })), { calendarPeriod: savedCalendarPeriod.current, value: [firstDate || undefined, secondDate || undefined] }));
105
+ setOffsetDate(offset);
106
+ }
107
+ }, [
108
+ open,
109
+ focusInputTo,
110
+ inputValueTo,
111
+ inputValueFrom,
112
+ focusInputFrom,
113
+ calendarPeriod === null || calendarPeriod === void 0 ? void 0 : calendarPeriod.length,
114
+ ]);
115
+ /** Закрытие */
116
+ var handleClose = function () {
117
+ setOpen(false);
118
+ onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
119
+ };
120
+ /** Открытие */
121
+ var handleOpen = function () {
122
+ if (disabled || open)
123
+ return;
124
+ setOpen(true);
125
+ onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
126
+ };
127
+ var callOnChange = function (value) {
128
+ var _a = tslib_1.__read(value || [], 2), dateFrom = _a[0], dateTo = _a[1];
129
+ var formattedDateFrom = (0, utils_1.formatStringToDate)(dateFrom) || undefined;
130
+ var formattedDateTo = (0, utils_1.formatStringToDate)(dateTo) || undefined;
131
+ if (formattedDateTo &&
132
+ formattedDateFrom &&
133
+ (formattedDateFrom === null || formattedDateFrom === void 0 ? void 0 : formattedDateFrom.getTime()) > (formattedDateTo === null || formattedDateTo === void 0 ? void 0 : formattedDateTo.getTime())) {
134
+ formattedDateTo = undefined;
135
+ }
136
+ var res = [formattedDateFrom, formattedDateTo];
137
+ setValue(res);
138
+ onChange === null || onChange === void 0 ? void 0 : onChange(res);
139
+ lastValidDate.current = value;
140
+ };
141
+ var changeInputValue = function (e, value) {
142
+ setInputValue(value);
143
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(e, value);
144
+ var _a = tslib_1.__read(value || [], 2), valueFrom = _a[0], valueTo = _a[1];
145
+ if ((0, utils_1.isValidDateString)(valueFrom) && (0, utils_1.isValidDateString)(valueTo))
146
+ callOnChange([valueFrom, valueTo]);
147
+ };
148
+ var handleExited = function () {
149
+ var _a;
150
+ onOffsetDateChange(null);
151
+ setCalendarPeriod(null);
152
+ (_a = popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.onExited) === null || _a === void 0 ? void 0 : _a.call(popoverProps);
153
+ };
154
+ /** Событие ввода значения в текстовом поле */
155
+ var handleChangeInputFrom = function (e) {
156
+ var _a;
157
+ var value = e.target.value;
158
+ (_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onChange) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
159
+ changeInputValue(e, [value, inputValueTo]);
160
+ };
161
+ /** Очистка поля */
162
+ var handleClear = function (type) { return function () {
163
+ changeInputValue(null, type === 'from' ? ['', inputValueTo] : [inputValueFrom, '']);
164
+ }; };
165
+ var handleFocusInputFrom = function (e) {
166
+ var _a;
167
+ (_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onFocus) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
168
+ setFocusInputFrom.on();
169
+ };
170
+ var handleFocusInputTo = function (e) {
171
+ var _a;
172
+ (_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onFocus) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
173
+ setFocusInputTo.on();
174
+ };
175
+ var handleBlurInputFrom = function (e) {
176
+ var _a;
177
+ (_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
178
+ setFocusInputFrom.off();
179
+ if (!inputValue)
180
+ return;
181
+ if (!(0, utils_1.isValidDateString)(inputValueFrom)) {
182
+ changeInputValue(null, lastValidDate.current);
183
+ }
184
+ };
185
+ var handleBlurInputTo = function (e) {
186
+ var _a;
187
+ (_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
188
+ setFocusInputTo.off();
189
+ if (!inputValue)
190
+ return;
191
+ if (!(0, utils_1.isValidDateString)(inputValueTo))
192
+ changeInputValue(null, lastValidDate.current);
193
+ };
194
+ /** Событие ввода значения в текстовом поле */
195
+ var handleChangeInputTo = function (e) {
196
+ var _a;
197
+ var value = e.target.value;
198
+ (_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onChange) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
199
+ changeInputValue(e, [inputValueFrom, value]);
200
+ };
201
+ /** Открытие списка по клику на текстовом поле */
202
+ var handleClickOnInputFrom = function (e) {
203
+ var _a;
204
+ handleOpen();
205
+ (_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onClick) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
206
+ };
207
+ /** Открытие списка по клику на текстовом поле */
208
+ var handleClickOnInputTo = function (e) {
209
+ var _a;
210
+ handleOpen();
211
+ (_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onClick) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
212
+ };
213
+ /** Управление элементом контроля через клавиатуру */
214
+ var handleKeyDown = function (event) {
215
+ if ((0, isKeys_1.isKeys)(event, ['ArrowDown', 'ArrowUp'])) {
216
+ event.preventDefault();
217
+ handleOpen();
218
+ }
219
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
220
+ };
221
+ /** Событие выбора значения из календаря */
222
+ var handleChangeCalendar = function (date) {
223
+ var _a = tslib_1.__read(date || [], 2), dateFrom = _a[0], dateTo = _a[1];
224
+ var formattedDate = [
225
+ (0, utils_1.formatDateToString)(dateFrom),
226
+ (0, utils_1.formatDateToString)(dateTo),
227
+ ];
228
+ changeInputValue(null, formattedDate);
229
+ if (!disableCloseOnSelect && dateFrom && dateTo)
230
+ handleClose();
231
+ };
232
+ return (react_1.default.createElement("div", tslib_1.__assign({ className: (0, index_1.cnDatePicker)({
233
+ mode: 'date-range',
234
+ size: size,
235
+ error: error,
236
+ required: required,
237
+ disabled: disabled,
238
+ fullWidth: fullWidth,
239
+ disableStroke: disableStroke,
240
+ }, [className]) }, other, { ref: rootRef }),
241
+ react_1.default.createElement(Stack_1.Stack, tslib_1.__assign({ gap: "l", className: (0, index_1.cnDatePicker)('Fields', [fieldsProps === null || fieldsProps === void 0 ? void 0 : fieldsProps.className]) }, fieldsProps, { ref: fieldsRef }),
242
+ react_1.default.createElement(index_2.DateInput, { size: size, error: error, label: labelFrom, required: required, disabled: disabled, value: inputValueFrom, onKeyDown: handleKeyDown, renderLeft: renderLeftFrom, labelProps: labelPropsFrom, disableStroke: disableStroke, placeholder: placeholderFrom, renderRight: react_1.default.createElement(index_2.DatePickerRenderRight, { size: size, open: open, hasValue: !!valueFrom, clearText: clearText, renderRight: renderRightFrom, onClear: handleClear('from'), disableClearButton: disableClearButton }), inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputPropsFrom), { onBlur: handleBlurInputFrom, onFocus: handleFocusInputFrom, onClick: handleClickOnInputFrom, onChange: handleChangeInputFrom }), "data-testid": "date-input-from", bodyProps: { 'aria-expanded': open } }),
243
+ react_1.default.createElement(index_2.DateInput, { size: size, error: error, label: labelTo, required: required, disabled: disabled, value: inputValueTo, onKeyDown: handleKeyDown, renderLeft: renderLeftTo, labelProps: labelPropsTo, placeholder: placeholderTo, disableStroke: disableStroke, renderRight: react_1.default.createElement(index_2.DatePickerRenderRight, { size: size, open: open, hasValue: !!valueTo, clearText: clearText, renderRight: renderRightTo, onClear: handleClear('to'), disableClearButton: disableClearButton }), inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputPropsTo), { onBlur: handleBlurInputTo, onFocus: handleFocusInputTo, onClick: handleClickOnInputTo, onChange: handleChangeInputTo }), "data-testid": "date-input-to", bodyProps: { ref: dateInputToRef, 'aria-expanded': open } })),
244
+ react_1.default.createElement(FieldHint_1.FieldHint, tslib_1.__assign({ size: size, error: error, disabled: disabled }, hintProps), hint),
245
+ react_1.default.createElement(Popover_1.Popover, tslib_1.__assign({ open: open, anchorRef: anchorRef, onClose: handleClose }, popoverProps, { onExited: handleExited, ignoreClickOutsideRefs: [containerRef], disableEnforceFocus: disableEnforceFocus }),
246
+ react_1.default.createElement(Calendar_1.Calendar, tslib_1.__assign({ calendars: calendars }, calendarProps, { mode: "range", offsetDate: offsetDate, onChange: handleChangeCalendar, value: (0, utils_2.formatDateForCalendar)(value), onCalendarsChange: onCalendarsChange, onOffsetDateChange: onOffsetDateChange })))));
247
+ });
@@ -0,0 +1 @@
1
+ export * from './DatePickerModeDateRange';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DatePickerModeDateRange"), exports);
@@ -0,0 +1,3 @@
1
+ import type { CalendarPropValue } from '../../../../../Calendar';
2
+ import type { DatePickerPropValue } from '../../../../types';
3
+ export declare const formatDateForCalendar: (date?: DatePickerPropValue<"date-range">) => CalendarPropValue<"range">;