intelicoreact 0.0.2 → 0.0.6

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 (208) hide show
  1. package/.eslintignore +10 -0
  2. package/.eslintrc.json +93 -0
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +145 -0
  4. package/dist/Atomic/FormElements/Calendar/Calendar.scss +543 -0
  5. package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +33 -0
  6. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +3 -5
  7. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +2 -5
  8. package/dist/Atomic/FormElements/DateTime/DateTime.stories.js +1 -3
  9. package/dist/Atomic/FormElements/DoubleString/DoubleString.stories.js +0 -2
  10. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +19 -19
  11. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +8 -3
  12. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +20 -7
  13. package/dist/Atomic/FormElements/Header/Header.js +9 -11
  14. package/dist/Atomic/FormElements/Header/Header.scss +16 -5
  15. package/dist/Atomic/FormElements/Header/Header.stories.js +0 -2
  16. package/dist/Atomic/FormElements/Input/Input.js +94 -102
  17. package/dist/Atomic/FormElements/Input/Input.scss +26 -19
  18. package/dist/Atomic/FormElements/Input/Input.stories.js +42 -27
  19. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +89 -0
  20. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +46 -0
  21. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +238 -0
  22. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +468 -0
  23. package/dist/Atomic/FormElements/InputDateRange/components/InputDateRange.js +248 -0
  24. package/dist/Atomic/FormElements/InputDateRange/components/InputDateRange.scss +598 -0
  25. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +147 -0
  26. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +38 -0
  27. package/dist/Atomic/FormElements/InputDateRange/index.js +248 -0
  28. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +30 -7
  29. package/dist/Atomic/FormElements/InputsRow/InputsRow.scss +1 -3
  30. package/dist/Atomic/FormElements/InputsRow/InputsRow.stories.js +0 -2
  31. package/dist/Atomic/FormElements/Label/Label.js +5 -14
  32. package/dist/Atomic/FormElements/Label/Label.scss +3 -3
  33. package/dist/Atomic/FormElements/Label/Label.stories.js +5 -6
  34. package/dist/Atomic/FormElements/Modal/Modal.js +5 -7
  35. package/dist/Atomic/FormElements/Modal/Modal.scss +61 -7
  36. package/dist/Atomic/FormElements/Modal/Modal.stories.js +64 -18
  37. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +3 -5
  38. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.scss +1 -3
  39. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +0 -2
  40. package/dist/Atomic/FormElements/NavLine/NavLine.js +2 -2
  41. package/dist/Atomic/FormElements/NavLine/NavLine.scss +4 -6
  42. package/dist/Atomic/FormElements/NavLine/NavLine.stories.js +21 -13
  43. package/dist/Atomic/FormElements/RadioInput/RadioInput.scss +1 -1
  44. package/dist/Atomic/FormElements/RadioInput/RadioInput.stories.js +0 -2
  45. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +162 -0
  46. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +101 -0
  47. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +81 -0
  48. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +0 -2
  49. package/dist/Atomic/FormElements/Switcher/Switcher.js +1 -1
  50. package/dist/Atomic/FormElements/Switcher/Switcher.scss +1 -1
  51. package/dist/Atomic/FormElements/Switcher/Switcher.stories.js +0 -2
  52. package/dist/Atomic/FormElements/Table/Partials/TdCell.js +1 -1
  53. package/dist/Atomic/FormElements/Table/Partials/TdHeader.js +2 -2
  54. package/dist/Atomic/FormElements/Table/TdTypes/TdActions.js +5 -5
  55. package/dist/Atomic/FormElements/Table/TdTypes/TdPriority.js +3 -3
  56. package/dist/Atomic/FormElements/Table/TdTypes/TdTypes.scss +4 -6
  57. package/dist/Atomic/FormElements/Table/TdTypes/TdWeight.js +2 -2
  58. package/dist/Atomic/FormElements/Tag/Tag.js +2 -2
  59. package/dist/Atomic/FormElements/Tag/Tag.scss +1 -1
  60. package/dist/Atomic/FormElements/Tag/Tag.stories.js +0 -2
  61. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +3 -3
  62. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +1 -1
  63. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +0 -2
  64. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +1 -1
  65. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +0 -2
  66. package/dist/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  67. package/dist/Atomic/FormElements/Textarea/Textarea.stories.js +0 -2
  68. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +1 -1
  69. package/dist/Atomic/FormElements/TimeRange/TimeRange.stories.js +0 -2
  70. package/dist/Atomic/{FormElements/MainMenu → MainMenu}/MainMenu.js +5 -5
  71. package/dist/Atomic/{FormElements/MainMenu → MainMenu}/MainMenu.scss +2 -2
  72. package/dist/Atomic/{FormElements/MainMenu → MainMenu}/MainMenu.stories.js +11 -11
  73. package/dist/Atomic/UI/Accordion/Accordion.js +2 -2
  74. package/dist/Atomic/UI/Accordion/Accordion.stories.js +4 -4
  75. package/dist/Atomic/UI/Accordion/AccordionItem.js +3 -3
  76. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +3 -3
  77. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +4 -3
  78. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.scss +3 -5
  79. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +1 -3
  80. package/dist/Atomic/UI/Alert/Alert.js +7 -4
  81. package/dist/Atomic/UI/Alert/Alert.scss +7 -0
  82. package/dist/Atomic/UI/Alert/Alert.stories.js +1 -3
  83. package/dist/Atomic/UI/Arrow/Arrow.js +80 -0
  84. package/dist/Atomic/UI/Arrow/Arrow.scss +22 -0
  85. package/dist/Atomic/UI/Arrow/Arrow.stories.js +46 -0
  86. package/dist/Atomic/UI/Button/Button.js +10 -19
  87. package/dist/Atomic/UI/Button/Button.scss +69 -41
  88. package/dist/Atomic/UI/Button/Button.stories.js +9 -25
  89. package/dist/Atomic/UI/Calendar/Calendar.js +145 -0
  90. package/dist/Atomic/UI/Calendar/Calendar.scss +544 -0
  91. package/dist/Atomic/UI/Calendar/Calendar.stories.js +37 -0
  92. package/dist/Atomic/UI/Header/partials/default_ava.png +0 -0
  93. package/dist/Atomic/{FormElements → UI}/Hint/Hint.js +8 -13
  94. package/{src/Atomic/FormElements → dist/Atomic/UI}/Hint/Hint.scss +8 -12
  95. package/dist/Atomic/{FormElements → UI}/Hint/Hint.stories.js +3 -4
  96. package/dist/Atomic/UI/Price/Price.js +33 -0
  97. package/dist/Atomic/UI/Price/Price.stories.js +42 -0
  98. package/dist/Atomic/{FormElements → UI}/Status/Status.js +4 -6
  99. package/dist/Atomic/{FormElements → UI}/Status/Status.scss +0 -0
  100. package/dist/Atomic/{FormElements → UI}/Status/Status.stories.js +4 -3
  101. package/dist/Functions/useClickOutside.js +25 -0
  102. package/dist/Functions/utils.js +10 -2
  103. package/dist/Molecular/FormElements/FormElement.js +40 -0
  104. package/dist/Molecular/FormElements/FormElement.scss +8 -0
  105. package/dist/Molecular/FormElements/FormElement.stories.js +73 -0
  106. package/dist/scss/main.scss +2 -2
  107. package/package.json +10 -6
  108. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +3 -5
  109. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +3 -5
  110. package/src/Atomic/FormElements/DateTime/DateTime.stories.js +1 -3
  111. package/src/Atomic/FormElements/DoubleString/DoubleString.stories.js +0 -2
  112. package/src/Atomic/FormElements/Dropdown/Dropdown.js +12 -8
  113. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +8 -3
  114. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +15 -7
  115. package/src/Atomic/FormElements/Header/Header.js +9 -10
  116. package/src/Atomic/FormElements/Header/Header.scss +16 -5
  117. package/src/Atomic/FormElements/Header/Header.stories.js +0 -2
  118. package/src/Atomic/FormElements/Input/Input.js +79 -73
  119. package/src/Atomic/FormElements/Input/Input.scss +26 -19
  120. package/src/Atomic/FormElements/Input/Input.stories.js +28 -29
  121. package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +43 -0
  122. package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +27 -0
  123. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +142 -0
  124. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +394 -0
  125. package/src/Atomic/FormElements/InputDateRange/components/InputDateRange.js +230 -0
  126. package/src/Atomic/FormElements/InputDateRange/components/InputDateRange.scss +598 -0
  127. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +109 -0
  128. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +22 -0
  129. package/src/Atomic/FormElements/InputDateRange/index.js +157 -0
  130. package/src/Atomic/FormElements/InputsRow/InputsRow.js +28 -5
  131. package/src/Atomic/FormElements/InputsRow/InputsRow.scss +1 -3
  132. package/src/Atomic/FormElements/InputsRow/InputsRow.stories.js +0 -2
  133. package/src/Atomic/FormElements/Label/Label.js +4 -9
  134. package/src/Atomic/FormElements/Label/Label.scss +3 -3
  135. package/src/Atomic/FormElements/Label/Label.stories.js +6 -6
  136. package/src/Atomic/FormElements/Modal/Modal.js +5 -8
  137. package/src/Atomic/FormElements/Modal/Modal.scss +61 -7
  138. package/src/Atomic/FormElements/Modal/Modal.stories.js +60 -15
  139. package/src/Atomic/FormElements/MultiSelect/MultiSelect.js +3 -5
  140. package/src/Atomic/FormElements/MultiSelect/MultiSelect.scss +1 -3
  141. package/src/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +1 -2
  142. package/src/Atomic/FormElements/NavLine/NavLine.js +4 -4
  143. package/src/Atomic/FormElements/NavLine/NavLine.scss +4 -6
  144. package/src/Atomic/FormElements/NavLine/NavLine.stories.js +24 -14
  145. package/src/Atomic/FormElements/RadioInput/RadioInput.scss +1 -1
  146. package/src/Atomic/FormElements/RadioInput/RadioInput.stories.js +0 -2
  147. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +143 -0
  148. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +101 -0
  149. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +54 -0
  150. package/src/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +0 -1
  151. package/src/Atomic/FormElements/Switcher/Switcher.js +1 -1
  152. package/src/Atomic/FormElements/Switcher/Switcher.scss +1 -1
  153. package/src/Atomic/FormElements/Switcher/Switcher.stories.js +0 -2
  154. package/src/Atomic/FormElements/Table/Partials/TdCell.js +1 -1
  155. package/src/Atomic/FormElements/Table/Partials/TdHeader.js +1 -1
  156. package/src/Atomic/FormElements/Table/TdTypes/TdActions.js +5 -5
  157. package/src/Atomic/FormElements/Table/TdTypes/TdPriority.js +3 -3
  158. package/src/Atomic/FormElements/Table/TdTypes/TdTypes.scss +4 -6
  159. package/src/Atomic/FormElements/Table/TdTypes/TdWeight.js +2 -2
  160. package/src/Atomic/FormElements/Tag/Tag.js +2 -2
  161. package/src/Atomic/FormElements/Tag/Tag.scss +1 -1
  162. package/src/Atomic/FormElements/Tag/Tag.stories.js +0 -2
  163. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.js +3 -3
  164. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +1 -1
  165. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +0 -2
  166. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +1 -1
  167. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +0 -2
  168. package/src/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  169. package/src/Atomic/FormElements/Textarea/Textarea.stories.js +0 -2
  170. package/src/Atomic/FormElements/TimeRange/TimeRange.js +1 -1
  171. package/src/Atomic/FormElements/TimeRange/TimeRange.stories.js +0 -2
  172. package/src/Atomic/{FormElements/MainMenu → MainMenu}/MainMenu.js +5 -5
  173. package/src/Atomic/{FormElements/MainMenu → MainMenu}/MainMenu.scss +2 -2
  174. package/src/Atomic/{FormElements/MainMenu → MainMenu}/MainMenu.stories.js +11 -11
  175. package/src/Atomic/UI/Accordion/Accordion.js +2 -2
  176. package/src/Atomic/UI/Accordion/Accordion.stories.js +4 -4
  177. package/src/Atomic/UI/Accordion/AccordionItem.js +3 -3
  178. package/src/Atomic/UI/AdvancedTag/AdvTag.js +3 -3
  179. package/src/Atomic/UI/AdvancedTag/AdvancedTags.js +3 -3
  180. package/src/Atomic/UI/AdvancedTag/AdvancedTags.scss +3 -5
  181. package/src/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +1 -3
  182. package/src/Atomic/UI/Alert/Alert.js +9 -6
  183. package/src/Atomic/UI/Alert/Alert.scss +7 -0
  184. package/src/Atomic/UI/Alert/Alert.stories.js +1 -3
  185. package/src/Atomic/UI/Arrow/Arrow.js +41 -0
  186. package/src/Atomic/UI/Arrow/Arrow.scss +22 -0
  187. package/src/Atomic/UI/Arrow/Arrow.stories.js +32 -0
  188. package/src/Atomic/UI/Button/Button.js +6 -10
  189. package/src/Atomic/UI/Button/Button.scss +69 -41
  190. package/src/Atomic/UI/Button/Button.stories.js +9 -25
  191. package/src/Atomic/UI/Calendar/Calendar.js +109 -0
  192. package/src/Atomic/UI/Calendar/Calendar.scss +544 -0
  193. package/src/Atomic/UI/Calendar/Calendar.stories.js +23 -0
  194. package/src/Atomic/UI/Header/partials/default_ava.png +0 -0
  195. package/src/Atomic/{FormElements → UI}/Hint/Hint.js +6 -9
  196. package/{dist/Atomic/FormElements → src/Atomic/UI}/Hint/Hint.scss +8 -12
  197. package/src/Atomic/{FormElements → UI}/Hint/Hint.stories.js +3 -3
  198. package/src/Atomic/UI/Price/Price.js +20 -0
  199. package/src/Atomic/UI/Price/Price.stories.js +30 -0
  200. package/src/Atomic/{FormElements → UI}/Status/Status.js +2 -4
  201. package/src/Atomic/{FormElements → UI}/Status/Status.scss +0 -0
  202. package/src/Atomic/{FormElements → UI}/Status/Status.stories.js +4 -3
  203. package/src/Functions/useClickOutside.js +15 -0
  204. package/src/Functions/utils.js +6 -0
  205. package/src/Molecular/FormElements/FormElement.js +18 -0
  206. package/src/Molecular/FormElements/FormElement.scss +8 -0
  207. package/src/Molecular/FormElements/FormElement.stories.js +59 -0
  208. package/src/scss/main.scss +2 -2
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
19
+
20
+ var _classnames = _interopRequireDefault(require("classnames"));
21
+
22
+ var _Dropdown = _interopRequireDefault(require("../../Dropdown/Dropdown"));
23
+
24
+ var _Input = _interopRequireDefault(require("../../Input/Input"));
25
+
26
+ var _Button = _interopRequireDefault(require("../../../UI/Button/Button"));
27
+
28
+ var _RangeCalendar = _interopRequireDefault(require("../../RangeCalendar/RangeCalendar"));
29
+
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ // eslint-disable-next-line no-unused-vars
35
+ // import Switcher from '../../Switcher/Switcher';
36
+ var padTime = function padTime(time) {
37
+ return "".concat(time.toString().padStart(2, '0'), ":00");
38
+ };
39
+
40
+ var handleDateInputOnChange = function handleDateInputOnChange(value) {
41
+ var replace = function replace(val) {
42
+ return val.replace(/[^0-9\/]/g, '');
43
+ };
44
+
45
+ var input = replace(value);
46
+ var lastSymbol = input ? input.slice(-1) : '';
47
+ var previousValue = input ? input.slice(0, input.length - 1) : '';
48
+ if (value.length > 10 || lastSymbol === '/') return previousValue;
49
+ return previousValue.length === 2 || previousValue.length === 5 ? previousValue + '/' + lastSymbol : input;
50
+ };
51
+
52
+ var Datepicker = function Datepicker(props) {
53
+ var txt = props.txt,
54
+ className = props.className,
55
+ _props$values = props.values,
56
+ values = _props$values === void 0 ? {} : _props$values,
57
+ onChange = props.onChange,
58
+ onChangeCompare = props.onChangeCompare,
59
+ onCancel = props.onCancel,
60
+ getSelectedMode = props.getSelectedMode,
61
+ onChangeInterval = props.onChangeInterval,
62
+ isCompareHidden = props.isCompareHidden,
63
+ limitRange = props.limitRange;
64
+ var _values$start = values.start,
65
+ start = _values$start === void 0 ? null : _values$start,
66
+ _values$end = values.end,
67
+ end = _values$end === void 0 ? null : _values$end,
68
+ _values$compare = values.compare,
69
+ compare = _values$compare === void 0 ? false : _values$compare;
70
+ var startDateInputRef = (0, _react.useRef)(null);
71
+ var endDateInputRef = (0, _react.useRef)(null);
72
+
73
+ var _useState = (0, _react.useState)(start),
74
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
75
+ startDate = _useState2[0],
76
+ setStartDate = _useState2[1];
77
+
78
+ var _useState3 = (0, _react.useState)(end),
79
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
80
+ endDate = _useState4[0],
81
+ setEndDate = _useState4[1];
82
+
83
+ var dateInterval = getSelectedMode({
84
+ start: startDate,
85
+ end: endDate
86
+ });
87
+
88
+ var _useState5 = (0, _react.useState)(start),
89
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
90
+ startDateInput = _useState6[0],
91
+ setStartDateInput = _useState6[1];
92
+
93
+ var _useState7 = (0, _react.useState)(end),
94
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
95
+ endDateInput = _useState8[0],
96
+ setEndDateInput = _useState8[1];
97
+
98
+ var _useState9 = (0, _react.useState)(start ? (0, _momentTimezone.default)(start).hour() : 0),
99
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
100
+ startHour = _useState10[0],
101
+ setStartHour = _useState10[1];
102
+
103
+ var _useState11 = (0, _react.useState)(end ? (0, _momentTimezone.default)(end).hour() : 0),
104
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
105
+ endHour = _useState12[0],
106
+ setEndHour = _useState12[1]; // eslint-disable-next-line no-unused-vars
107
+
108
+
109
+ var _useState13 = (0, _react.useState)(compare),
110
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
111
+ isCompare = _useState14[0],
112
+ setIsCompare = _useState14[1];
113
+
114
+ var _useState15 = (0, _react.useState)(start ? (0, _momentTimezone.default)(start).toDate() : (0, _momentTimezone.default)().subtract(1, 'month').toDate()),
115
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
116
+ date1 = _useState16[0],
117
+ setDate1 = _useState16[1];
118
+
119
+ var _useState17 = (0, _react.useState)(end ? (0, _momentTimezone.default)(end).toDate() : (0, _momentTimezone.default)().toDate()),
120
+ _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
121
+ date2 = _useState18[0],
122
+ setDate2 = _useState18[1];
123
+
124
+ var _useState19 = (0, _react.useState)(false),
125
+ _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
126
+ isStartFocused = _useState20[0],
127
+ setIsStartFocused = _useState20[1];
128
+
129
+ var _useState21 = (0, _react.useState)(false),
130
+ _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
131
+ isEndFocused = _useState22[0],
132
+ setIsEndFocused = _useState22[1];
133
+
134
+ var _useState23 = (0, _react.useState)(null),
135
+ _useState24 = (0, _slicedToArray2.default)(_useState23, 2),
136
+ hoverStatus = _useState24[0],
137
+ setHoverStatus = _useState24[1];
138
+
139
+ var isNearby = (0, _react.useMemo)(function () {
140
+ return (0, _momentTimezone.default)(date2).subtract(1, 'month').isSame((0, _momentTimezone.default)(date1), 'month');
141
+ }, [date1, date2]);
142
+ var isPreviousPeriodShowed = (0, _react.useMemo)(function () {
143
+ return isCompare && !isCompareHidden && startDate && endDate;
144
+ }, [startDate, endDate, isCompare]);
145
+ var prevEndHour = (0, _react.useRef)(endHour);
146
+
147
+ var getStartHourItems = function getStartHourItems() {
148
+ return (0, _toConsumableArray2.default)(Array(24).keys()).map(function (hour) {
149
+ return {
150
+ label: padTime(hour),
151
+ value: hour,
152
+ disabled: (0, _momentTimezone.default)(startDate).isSame(endDate, 'day') && endHour <= hour
153
+ };
154
+ });
155
+ };
156
+
157
+ var getEndHourItems = function getEndHourItems() {
158
+ return (0, _toConsumableArray2.default)(Array(24).keys()).map(function (hour) {
159
+ return {
160
+ label: padTime(hour + 1),
161
+ value: hour === 23 ? 0 : hour + 1,
162
+ disabled: ((0, _momentTimezone.default)(startDate).isSame(endDate, 'day') || (0, _momentTimezone.default)(startDate).isSame((0, _momentTimezone.default)(endDate).subtract(1, 'days'), 'day') && endHour === 0) && hour < startHour
163
+ };
164
+ });
165
+ };
166
+
167
+ var startPrevDate = (0, _react.useMemo)(function () {
168
+ if (isPreviousPeriodShowed) {
169
+ var intervalHoursCount = (0, _momentTimezone.default)(endDate).diff(startDate, 'hours');
170
+ return (0, _momentTimezone.default)(startDate).subtract(intervalHoursCount, 'hours').toDate();
171
+ } else return null;
172
+ }, [startDate, endDate, isCompare]);
173
+ var endPrevDate = (0, _react.useMemo)(function () {
174
+ if (isPreviousPeriodShowed) {
175
+ return startDate;
176
+ } else return null;
177
+ }, [startDate, endDate, isCompare]);
178
+ var title = (0, _react.useMemo)(function () {
179
+ if (isCompare && !isCompareHidden && startDate && endDate) {
180
+ return "".concat((0, _momentTimezone.default)(startPrevDate).format('ll'), " (").concat((0, _momentTimezone.default)(startPrevDate).format('HH:mm'), ") - ").concat((0, _momentTimezone.default)(endPrevDate).format('ll'), " (").concat((0, _momentTimezone.default)(endPrevDate).format('HH:mm'), ")");
181
+ } else return '';
182
+ }, [startDate, endDate, isCompare]);
183
+
184
+ var subtractDay = function subtractDay(date) {
185
+ return endHour === 0 ? (0, _momentTimezone.default)(date).subtract(1, 'days') : date;
186
+ };
187
+
188
+ var addDay = function addDay(date) {
189
+ return endHour === 0 ? (0, _momentTimezone.default)(date).add(1, 'days') : date;
190
+ };
191
+
192
+ (0, _react.useEffect)(function () {
193
+ if ((0, _momentTimezone.default)(startDate).isSameOrAfter(endDate)) {
194
+ setStartDate((0, _momentTimezone.default)(endDate).subtract(1, 'd').toDate());
195
+ setDate1((0, _momentTimezone.default)(endDate).subtract(1, 'd'));
196
+ }
197
+ }, [startDate]);
198
+ (0, _react.useEffect)(function () {
199
+ if ((0, _momentTimezone.default)(endDate).isSameOrBefore(startDate)) {
200
+ setEndDate((0, _momentTimezone.default)(startDate).add(1, 'd').toDate());
201
+ setDate2((0, _momentTimezone.default)(startDate).add(1, 'd'));
202
+ }
203
+ }, [endDate]);
204
+ (0, _react.useEffect)(function () {
205
+ setStartDateInput(startDate);
206
+ setEndDateInput(endDate);
207
+
208
+ if ((0, _momentTimezone.default)(startDate).isBefore((0, _momentTimezone.default)(endDate), 'month')) {
209
+ setDate1((0, _momentTimezone.default)(startDate));
210
+ setDate2((0, _momentTimezone.default)(endDate));
211
+ }
212
+ }, [startDate, endDate]);
213
+ (0, _react.useEffect)(function () {
214
+ if ((0, _momentTimezone.default)(date1).isSameOrAfter((0, _momentTimezone.default)(date2), 'month')) {
215
+ setDate1((0, _momentTimezone.default)(date2).subtract(1, 'month'));
216
+ }
217
+ }, [date1, date2]);
218
+ (0, _react.useEffect)(function () {
219
+ onChangeInterval(dateInterval);
220
+ }, [dateInterval]);
221
+
222
+ var handleClick = function handleClick(date) {
223
+ prevEndHour.current = 0;
224
+
225
+ if (!startDate || startDate && endDate && !((0, _momentTimezone.default)(startDate).add(1, 'd').isSame(endDate, 'day') && endHour === 0)) {
226
+ setStartDate((0, _momentTimezone.default)(date).startOf('day').toDate());
227
+ setEndDate((0, _momentTimezone.default)(date).add(1, 'd').startOf('day').toDate());
228
+ setStartHour(0);
229
+ setEndHour(0);
230
+ } else if ((0, _momentTimezone.default)(date).isBefore((0, _momentTimezone.default)(startDate), 'day')) {
231
+ setEndDate((0, _momentTimezone.default)(startDate).add(1, 'd').startOf('day').toDate());
232
+ setStartDate((0, _momentTimezone.default)(date).set('hour', parseInt(startHour, 10)).toDate());
233
+ } else if ((0, _momentTimezone.default)(date).isAfter((0, _momentTimezone.default)(startDate), 'day')) {
234
+ setEndDate((0, _momentTimezone.default)(date).add(1, 'd').startOf('day').toDate());
235
+ }
236
+
237
+ setHoverStatus(null);
238
+ };
239
+
240
+ var timerId;
241
+
242
+ var handleHover = function handleHover(date) {
243
+ if (!date) {
244
+ timerId = setTimeout(function () {
245
+ setHoverStatus(null);
246
+ }, 400);
247
+ return;
248
+ }
249
+
250
+ if (timerId) clearTimeout(timerId);
251
+
252
+ if ((0, _momentTimezone.default)(startDate).add(1, 'd').isSame(endDate, 'day') && endHour === 0) {
253
+ if ((0, _momentTimezone.default)(date).isAfter((0, _momentTimezone.default)(startDate), 'day')) setHoverStatus('end');else if ((0, _momentTimezone.default)(date).isBefore((0, _momentTimezone.default)(startDate), 'day')) setHoverStatus('start');else setHoverStatus(null);
254
+ } else {
255
+ setHoverStatus('start');
256
+ }
257
+ };
258
+
259
+ var handleChangeStartHour = function handleChangeStartHour(val) {
260
+ setStartHour(+val);
261
+ setStartDate((0, _momentTimezone.default)(startDate).set('hour', +val).toDate());
262
+ };
263
+
264
+ var handleChangeEndHour = function handleChangeEndHour(val) {
265
+ var newHour = +val;
266
+ setEndHour(newHour);
267
+ var newEndDate;
268
+
269
+ if (prevEndHour.current === 0 && newHour !== 0) {
270
+ newEndDate = (0, _momentTimezone.default)(endDate).subtract(1, 'days');
271
+ } else if (prevEndHour.current !== 0 && newHour === 0) {
272
+ newEndDate = (0, _momentTimezone.default)(endDate).add(1, 'days');
273
+ } else {
274
+ newEndDate = endDate;
275
+ }
276
+
277
+ prevEndHour.current = newHour;
278
+ setEndDate((0, _momentTimezone.default)(newEndDate).set('hour', newHour).toDate());
279
+ };
280
+
281
+ var renderButtons = function renderButtons() {
282
+ var _txt$buttons, _txt$buttons2;
283
+
284
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
285
+ className: "date-picker__button",
286
+ onClick: function onClick() {
287
+ return onCancel();
288
+ },
289
+ variant: "ellipse-cancel"
290
+ }, (txt === null || txt === void 0 ? void 0 : (_txt$buttons = txt.buttons) === null || _txt$buttons === void 0 ? void 0 : _txt$buttons.cancel) || 'cancel'), /*#__PURE__*/_react.default.createElement(_Button.default, {
291
+ className: "date-picker__button",
292
+ variant: "ellipse-apply",
293
+ disabled: !startDate || !endDate,
294
+ onClick: function onClick() {
295
+ return onChange({
296
+ start: startDate,
297
+ end: endDate,
298
+ startPrevDate: startPrevDate,
299
+ endPrevDate: endPrevDate,
300
+ compare: isCompare
301
+ });
302
+ }
303
+ }, (txt === null || txt === void 0 ? void 0 : (_txt$buttons2 = txt.buttons) === null || _txt$buttons2 === void 0 ? void 0 : _txt$buttons2.apply) || 'apply'));
304
+ };
305
+
306
+ var renderPreviousPeriod = function renderPreviousPeriod() {
307
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, txt.labels.previousPeriod, ": ", /*#__PURE__*/_react.default.createElement("span", {
308
+ className: "date-picker__previous-period-interval"
309
+ }, title));
310
+ };
311
+
312
+ var doBlur = function doBlur(type, e) {
313
+ var executor = type === 'start' ? setIsStartFocused : setIsEndFocused;
314
+ e.target.blur();
315
+ executor(false);
316
+ };
317
+
318
+ var handleStartDateFocus = function handleStartDateFocus(e) {
319
+ setIsStartFocused(true);
320
+ setStartDateInput((0, _momentTimezone.default)(startDate).format('L'));
321
+ setTimeout(function () {
322
+ return e.target.select();
323
+ }, 0);
324
+ };
325
+
326
+ var handleStartDateBlur = function handleStartDateBlur(e) {
327
+ var newDate;
328
+
329
+ if ((0, _momentTimezone.default)(startDateInput).isValid()) {
330
+ newDate = (0, _momentTimezone.default)(startDateInput).set('hour', parseInt(startHour, 10)).toDate();
331
+ setStartDate(newDate);
332
+ } else {
333
+ newDate = startDate;
334
+ setStartDateInput(newDate);
335
+ }
336
+
337
+ doBlur('start', e);
338
+ setDate1((0, _momentTimezone.default)(newDate).isSameOrAfter((0, _momentTimezone.default)(date2), 'month') ? (0, _momentTimezone.default)(date2).subtract(1, 'month') : (0, _momentTimezone.default)(newDate));
339
+ };
340
+
341
+ var handleEndDateFocus = function handleEndDateFocus(e) {
342
+ setIsEndFocused(true);
343
+ setEndDateInput((0, _momentTimezone.default)(subtractDay(endDateInput)).format('L'));
344
+ setTimeout(function () {
345
+ return e.target.select();
346
+ }, 0);
347
+ };
348
+
349
+ var handleEndDateBlur = function handleEndDateBlur(e) {
350
+ var newDate;
351
+
352
+ if ((0, _momentTimezone.default)(endDateInput).isValid()) {
353
+ newDate = (0, _momentTimezone.default)(endDateInput).set('hour', parseInt(endHour, 10)).toDate();
354
+ setEndDate(addDay(newDate));
355
+ } else {
356
+ newDate = endDate;
357
+ setEndDateInput(newDate);
358
+ }
359
+
360
+ doBlur('end', e);
361
+ setDate2(newDate);
362
+ setEndDateInput();
363
+ };
364
+
365
+ var handleKeyPressed = function handleKeyPressed(code, e, type) {
366
+ if (code === 13) (type === 'start' ? handleStartDateBlur : handleEndDateBlur)(e);
367
+ if (code === 27) doBlur(type, e);
368
+ };
369
+
370
+ return /*#__PURE__*/_react.default.createElement("div", {
371
+ className: (0, _classnames.default)('date-picker', className)
372
+ }, /*#__PURE__*/_react.default.createElement("div", {
373
+ className: "date-picker__header"
374
+ }, /*#__PURE__*/_react.default.createElement("div", {
375
+ className: "date-picker__inputs-block"
376
+ }, /*#__PURE__*/_react.default.createElement(_Input.default, {
377
+ dataTest: "datepicker_start-date-input",
378
+ className: (0, _classnames.default)('date-picker__date-input', {
379
+ 'date-picker__date-input_active': hoverStatus === 'start'
380
+ }),
381
+ value: isStartFocused ? startDateInput : (0, _momentTimezone.default)(startDate).format('ll'),
382
+ disabled: !startDate,
383
+ onChange: function onChange(value) {
384
+ return setStartDateInput(handleDateInputOnChange(value));
385
+ },
386
+ onFocus: handleStartDateFocus,
387
+ onBlur: handleStartDateBlur,
388
+ onKeyUp: function onKeyUp(code, e) {
389
+ return handleKeyPressed(code, e, 'start');
390
+ },
391
+ ref: startDateInputRef // mask={moment(startDate).format('L').replace(/[0-9]/g, '9')}
392
+
393
+ }), /*#__PURE__*/_react.default.createElement(_Dropdown.default, {
394
+ dataTest: "datepicker_start-hour-select-input",
395
+ className: (0, _classnames.default)('date-picker__hour-select-input'),
396
+ onChange: function onChange(value) {
397
+ return handleChangeStartHour(value);
398
+ },
399
+ value: startHour,
400
+ options: getStartHourItems(),
401
+ disabled: !startDate,
402
+ short: true
403
+ }), /*#__PURE__*/_react.default.createElement("div", {
404
+ className: "date-picker__inputs-separator date-picker__header--gray"
405
+ }, "\u2014"), /*#__PURE__*/_react.default.createElement(_Input.default, {
406
+ dataTest: "datepicker_end-date-input",
407
+ className: (0, _classnames.default)('date-picker__date-input', {
408
+ 'date-picker__date-input_active': hoverStatus === 'end'
409
+ }),
410
+ value: isEndFocused ? endDateInput : (0, _momentTimezone.default)(subtractDay(endDate)).format('ll'),
411
+ disabled: !endDate,
412
+ onChange: function onChange(value) {
413
+ return setEndDateInput(handleDateInputOnChange(value));
414
+ },
415
+ onFocus: handleEndDateFocus,
416
+ onBlur: handleEndDateBlur,
417
+ onKeyUp: function onKeyUp(code, e) {
418
+ return handleKeyPressed(code, e, 'end');
419
+ },
420
+ ref: endDateInputRef
421
+ }), /*#__PURE__*/_react.default.createElement(_Dropdown.default, {
422
+ dataTest: "datepicker_end-hour-select-input",
423
+ className: (0, _classnames.default)('date-picker__hour-select-input'),
424
+ onChange: function onChange(value) {
425
+ return handleChangeEndHour(value);
426
+ },
427
+ value: endHour,
428
+ options: getEndHourItems(),
429
+ disabled: !endDate,
430
+ short: true
431
+ })), isCompare && !isCompareHidden && startDate && endDate && /*#__PURE__*/_react.default.createElement("div", {
432
+ className: "date-picker__previous-period"
433
+ }, renderPreviousPeriod())), /*#__PURE__*/_react.default.createElement("div", {
434
+ className: "date-picker__calendars"
435
+ }, /*#__PURE__*/_react.default.createElement(_RangeCalendar.default, {
436
+ className: "date-picker__calendar",
437
+ date: date1,
438
+ setDate: setDate1,
439
+ allowNext: !isNearby,
440
+ startDate: startDate,
441
+ endDate: endDate,
442
+ startPrevDate: startPrevDate,
443
+ endPrevDate: endPrevDate,
444
+ onClick: handleClick,
445
+ onHover: handleHover,
446
+ limitRange: limitRange
447
+ }), /*#__PURE__*/_react.default.createElement(_RangeCalendar.default, {
448
+ className: "date-picker__calendar",
449
+ date: date2,
450
+ setDate: setDate2,
451
+ allowPrev: !isNearby,
452
+ startDate: startDate,
453
+ endDate: endDate,
454
+ startPrevDate: startPrevDate,
455
+ endPrevDate: endPrevDate,
456
+ onClick: handleClick,
457
+ onHover: handleHover
458
+ })), /*#__PURE__*/_react.default.createElement("div", {
459
+ className: (0, _classnames.default)('date-picker__footer', {
460
+ 'date-picker__footer_once-element': isCompareHidden
461
+ })
462
+ }, /*#__PURE__*/_react.default.createElement("div", {
463
+ className: "date-picker__buttons-block"
464
+ }, renderButtons())));
465
+ };
466
+
467
+ var _default = Datepicker;
468
+ exports.default = _default;