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