intelicoreact 0.0.96 → 0.0.99

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 (160) hide show
  1. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +5 -3
  2. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +2 -1
  3. package/dist/Atomic/FormElements/Input/Input.js +3 -1
  4. package/dist/Atomic/FormElements/Input/Input.stories.js +5 -1
  5. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +4 -4
  6. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +179 -70
  7. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +23 -23
  8. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +87 -12
  9. package/dist/Atomic/FormElements/Spinner/Spinner.js +21 -0
  10. package/{src/Atomic/FormElements/Dropdown/components/DropdownLoader.scss → dist/Atomic/FormElements/Spinner/Spinner.scss} +8 -5
  11. package/dist/Atomic/FormElements/Spinner/Spinner.stories.js +34 -0
  12. package/dist/Functions/inputExecutor.js +7 -1
  13. package/package.json +3 -2
  14. package/.babelrc +0 -12
  15. package/.eslintignore +0 -10
  16. package/.eslintrc.json +0 -93
  17. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +0 -28
  18. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +0 -107
  19. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +0 -26
  20. package/src/Atomic/FormElements/DateTime/DateTime.js +0 -18
  21. package/src/Atomic/FormElements/DateTime/DateTime.scss +0 -12
  22. package/src/Atomic/FormElements/DateTime/DateTime.stories.js +0 -17
  23. package/src/Atomic/FormElements/DoubleString/DoubleString.js +0 -13
  24. package/src/Atomic/FormElements/DoubleString/DoubleString.scss +0 -20
  25. package/src/Atomic/FormElements/DoubleString/DoubleString.stories.js +0 -18
  26. package/src/Atomic/FormElements/Dropdown/Dropdown.js +0 -178
  27. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +0 -192
  28. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +0 -87
  29. package/src/Atomic/FormElements/Dropdown/components/DropdownLoader.js +0 -17
  30. package/src/Atomic/FormElements/Header/Header.js +0 -67
  31. package/src/Atomic/FormElements/Header/Header.scss +0 -93
  32. package/src/Atomic/FormElements/Header/Header.stories.js +0 -30
  33. package/src/Atomic/FormElements/Input/Input.js +0 -186
  34. package/src/Atomic/FormElements/Input/Input.scss +0 -136
  35. package/src/Atomic/FormElements/Input/Input.stories.js +0 -94
  36. package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +0 -104
  37. package/src/Atomic/FormElements/InputCalendar/InputCalendar.scss +0 -23
  38. package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +0 -39
  39. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +0 -254
  40. package/src/Atomic/FormElements/InputDateRange/InputDateRange.scss +0 -624
  41. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +0 -65
  42. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +0 -432
  43. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +0 -126
  44. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +0 -24
  45. package/src/Atomic/FormElements/InputDateRange/dependencies.js +0 -161
  46. package/src/Atomic/FormElements/InputsRow/InputsRow.js +0 -112
  47. package/src/Atomic/FormElements/InputsRow/InputsRow.scss +0 -45
  48. package/src/Atomic/FormElements/InputsRow/InputsRow.stories.js +0 -34
  49. package/src/Atomic/FormElements/Label/Label.js +0 -13
  50. package/src/Atomic/FormElements/Label/Label.scss +0 -20
  51. package/src/Atomic/FormElements/Label/Label.stories.js +0 -23
  52. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.js +0 -315
  53. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +0 -120
  54. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +0 -30
  55. package/src/Atomic/FormElements/Modal/Modal.js +0 -69
  56. package/src/Atomic/FormElements/Modal/Modal.scss +0 -230
  57. package/src/Atomic/FormElements/Modal/Modal.stories.js +0 -116
  58. package/src/Atomic/FormElements/MultiSelect/MultiSelect.js +0 -39
  59. package/src/Atomic/FormElements/MultiSelect/MultiSelect.scss +0 -16
  60. package/src/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +0 -28
  61. package/src/Atomic/FormElements/NavLine/NavLine.js +0 -67
  62. package/src/Atomic/FormElements/NavLine/NavLine.scss +0 -108
  63. package/src/Atomic/FormElements/NavLine/NavLine.stories.js +0 -108
  64. package/src/Atomic/FormElements/NumericInput/NumericInput.js +0 -263
  65. package/src/Atomic/FormElements/NumericInput/NumericInput.scss +0 -135
  66. package/src/Atomic/FormElements/NumericInput/NumericInput.stories.js +0 -78
  67. package/src/Atomic/FormElements/RadioInput/RadioInput.js +0 -28
  68. package/src/Atomic/FormElements/RadioInput/RadioInput.scss +0 -63
  69. package/src/Atomic/FormElements/RadioInput/RadioInput.stories.js +0 -23
  70. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +0 -152
  71. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +0 -101
  72. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +0 -54
  73. package/src/Atomic/FormElements/RangeInputs/RangeInputs.js +0 -41
  74. package/src/Atomic/FormElements/RangeInputs/RangeInputs.scss +0 -20
  75. package/src/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +0 -23
  76. package/src/Atomic/FormElements/Switcher/Switcher.js +0 -24
  77. package/src/Atomic/FormElements/Switcher/Switcher.scss +0 -56
  78. package/src/Atomic/FormElements/Switcher/Switcher.stories.js +0 -22
  79. package/src/Atomic/FormElements/Table/Partials/TdCell.js +0 -47
  80. package/src/Atomic/FormElements/Table/Partials/TdHeader.js +0 -33
  81. package/src/Atomic/FormElements/Table/Partials/TdRow.js +0 -84
  82. package/src/Atomic/FormElements/Table/Partials/TdTitle.js +0 -38
  83. package/src/Atomic/FormElements/Table/Table.js +0 -50
  84. package/src/Atomic/FormElements/Table/Table.scss +0 -78
  85. package/src/Atomic/FormElements/Table/Table.stories.js +0 -102
  86. package/src/Atomic/FormElements/Table/TdTypes/TdActions.js +0 -59
  87. package/src/Atomic/FormElements/Table/TdTypes/TdPriority.js +0 -20
  88. package/src/Atomic/FormElements/Table/TdTypes/TdRange.js +0 -15
  89. package/src/Atomic/FormElements/Table/TdTypes/TdTypes.scss +0 -35
  90. package/src/Atomic/FormElements/Table/TdTypes/TdWeight.js +0 -43
  91. package/src/Atomic/FormElements/Tag/Tag.js +0 -24
  92. package/src/Atomic/FormElements/Tag/Tag.scss +0 -38
  93. package/src/Atomic/FormElements/Tag/Tag.stories.js +0 -30
  94. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.js +0 -108
  95. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +0 -131
  96. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +0 -44
  97. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.js +0 -18
  98. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +0 -50
  99. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +0 -21
  100. package/src/Atomic/FormElements/Textarea/Textarea.js +0 -19
  101. package/src/Atomic/FormElements/Textarea/Textarea.scss +0 -35
  102. package/src/Atomic/FormElements/Textarea/Textarea.stories.js +0 -24
  103. package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +0 -66
  104. package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.scss +0 -10
  105. package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +0 -57
  106. package/src/Atomic/FormElements/TimeRange/TimeRange.js +0 -55
  107. package/src/Atomic/FormElements/TimeRange/TimeRange.scss +0 -17
  108. package/src/Atomic/FormElements/TimeRange/TimeRange.stories.js +0 -21
  109. package/src/Atomic/MainMenu/MainMenu.js +0 -112
  110. package/src/Atomic/MainMenu/MainMenu.scss +0 -176
  111. package/src/Atomic/MainMenu/MainMenu.stories.js +0 -91
  112. package/src/Atomic/UI/Accordion/Accordion.js +0 -45
  113. package/src/Atomic/UI/Accordion/Accordion.scss +0 -73
  114. package/src/Atomic/UI/Accordion/Accordion.stories.js +0 -78
  115. package/src/Atomic/UI/Accordion/AccordionItem.js +0 -92
  116. package/src/Atomic/UI/AdvancedTag/AdvTag.js +0 -81
  117. package/src/Atomic/UI/AdvancedTag/AdvancedTags.js +0 -32
  118. package/src/Atomic/UI/AdvancedTag/AdvancedTags.scss +0 -72
  119. package/src/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +0 -49
  120. package/src/Atomic/UI/Alert/Alert.js +0 -23
  121. package/src/Atomic/UI/Alert/Alert.scss +0 -65
  122. package/src/Atomic/UI/Alert/Alert.stories.js +0 -34
  123. package/src/Atomic/UI/Arrow/Arrow.js +0 -41
  124. package/src/Atomic/UI/Arrow/Arrow.scss +0 -19
  125. package/src/Atomic/UI/Arrow/Arrow.stories.js +0 -32
  126. package/src/Atomic/UI/Button/Button.js +0 -17
  127. package/src/Atomic/UI/Button/Button.scss +0 -108
  128. package/src/Atomic/UI/Button/Button.stories.js +0 -49
  129. package/src/Atomic/UI/Calendar/Calendar.js +0 -190
  130. package/src/Atomic/UI/Calendar/Calendar.scss +0 -607
  131. package/src/Atomic/UI/Calendar/Calendar.stories.js +0 -26
  132. package/src/Atomic/UI/Header/partials/default_ava.png +0 -0
  133. package/src/Atomic/UI/Hint/Hint.js +0 -34
  134. package/src/Atomic/UI/Hint/Hint.scss +0 -92
  135. package/src/Atomic/UI/Hint/Hint.stories.js +0 -34
  136. package/src/Atomic/UI/Price/Price.js +0 -20
  137. package/src/Atomic/UI/Price/Price.stories.js +0 -30
  138. package/src/Atomic/UI/Status/Status.js +0 -38
  139. package/src/Atomic/UI/Status/Status.scss +0 -69
  140. package/src/Atomic/UI/Status/Status.stories.js +0 -47
  141. package/src/Constants/index.constants.js +0 -41
  142. package/src/Functions/customEventListener.js +0 -58
  143. package/src/Functions/inputExecutor.js +0 -53
  144. package/src/Functions/schemas.js +0 -31
  145. package/src/Functions/useClickOutside.js +0 -15
  146. package/src/Functions/useMouseUpOutside.js +0 -16
  147. package/src/Functions/useToggle.js +0 -17
  148. package/src/Functions/utils.js +0 -51
  149. package/src/Molecular/Datepicker/Datepicker.js +0 -346
  150. package/src/Molecular/Datepicker/Datepicker.scss +0 -8
  151. package/src/Molecular/Datepicker/Datepicker.stories.js +0 -27
  152. package/src/Molecular/Datepicker/components/Calendar.js +0 -118
  153. package/src/Molecular/FormElements/FormElement.js +0 -18
  154. package/src/Molecular/FormElements/FormElement.scss +0 -8
  155. package/src/Molecular/FormElements/FormElement.stories.js +0 -59
  156. package/src/index.js +0 -3
  157. package/src/scss/_fonts.scss +0 -109
  158. package/src/scss/_vars.scss +0 -48
  159. package/src/scss/main.scss +0 -40
  160. package/webpack.config.js +0 -61
@@ -1,346 +0,0 @@
1
- import React, { useEffect, useMemo, useRef, useState } from 'react';
2
- import { useClickOutside } from '../../Functions/useClickOutside';
3
- import InputMask from 'react-input-mask';
4
- import moment from 'moment';
5
- import cn from 'classnames';
6
-
7
- import Langs from '../../../../Langs';
8
- import Button from '../../Atomic/UI/Button/Button';
9
- import Calendar from './components/Calendar';
10
-
11
- const padTime = (time) => {
12
- return `${time.toString().padStart(2, '0')}:00`;
13
- };
14
-
15
- import './Datepicker.scss';
16
- import Switcher from '../../Atomic/FormElements/Switcher/Switcher';
17
- import Dropdown from '../../Atomic/FormElements/Dropdown/Dropdown';
18
- import Input from '../../Atomic/FormElements/Input/Input';
19
-
20
- const Datepicker = (props) => {
21
- const { values = {}, onChange, onChangeCompare, onCancel, getSelectedMode = () => {}, onChangeInterval, isCompareHidden, limitRange } = props;
22
- const { start = null, end = null, compare = false } = values;
23
- const txt = Langs[global.lng];
24
- const startDateInputRef = useRef(null);
25
- const endDateInputRef = useRef(null);
26
-
27
- const [startDate, setStartDate] = useState(start);
28
- const [endDate, setEndDate] = useState(end);
29
- const dateInterval = getSelectedMode({ start: startDate, end: endDate });
30
-
31
- const [startDateInput, setStartDateInput] = useState(start);
32
- const [endDateInput, setEndDateInput] = useState(end);
33
- const [startHour, setStartHour] = useState(start ? moment(start).hour() : 0);
34
- const [endHour, setEndHour] = useState(end ? moment(end).hour() : 0);
35
- // eslint-disable-next-line no-unused-vars
36
- const [isCompare, setIsCompare] = useState(compare);
37
- const [date1, setDate1] = useState(start ? moment(start).toDate() : moment().subtract(1, 'month').toDate());
38
- const [date2, setDate2] = useState(end ? moment(end).toDate() : moment().toDate());
39
- const [isStartFocused, setIsStartFocused] = useState(false);
40
- const [isEndFocused, setIsEndFocused] = useState(false);
41
- const [hoverStatus, setHoverStatus] = useState(null);
42
-
43
- const isNearby = useMemo(() => moment(date2).subtract(1, 'month').isSame(moment(date1), 'month'), [date1, date2]);
44
-
45
- const isPreviousPeriodShowed = useMemo(() => isCompare && !isCompareHidden && startDate && endDate, [startDate, endDate, isCompare]);
46
-
47
- const prevEndHour = useRef(endHour);
48
-
49
- const getStartHourItems = () =>
50
- [...Array(24).keys()].map((hour) => ({
51
- label: padTime(hour),
52
- value: hour,
53
- disabled: moment(startDate).isSame(endDate, 'day') && endHour <= hour,
54
- }));
55
- const getEndHourItems = () =>
56
- [...Array(24).keys()].map((hour) => ({
57
- label: padTime(hour + 1),
58
- value: hour === 23 ? 0 : hour + 1,
59
- disabled:
60
- (moment(startDate).isSame(endDate, 'day') || (moment(startDate).isSame(moment(endDate).subtract(1, 'days'), 'day') && endHour === 0)) &&
61
- hour < startHour,
62
- }));
63
-
64
- const startPrevDate = useMemo(() => {
65
- if (isPreviousPeriodShowed) {
66
- const intervalHoursCount = moment(endDate).diff(startDate, 'hours');
67
- return moment(startDate).subtract(intervalHoursCount, 'hours').toDate();
68
- } else return null;
69
- }, [startDate, endDate, isCompare]);
70
-
71
- const endPrevDate = useMemo(() => {
72
- if (isPreviousPeriodShowed) {
73
- return startDate;
74
- } else return null;
75
- }, [startDate, endDate, isCompare]);
76
-
77
- const title = useMemo(() => {
78
- if (isCompare && !isCompareHidden && startDate && endDate) {
79
- return `${moment(startPrevDate).format('ll')} (${moment(startPrevDate).format('HH:mm')}) - ${moment(endPrevDate).format('ll')} (${moment(
80
- endPrevDate
81
- ).format('HH:mm')})`;
82
- } else return '';
83
- }, [startDate, endDate, isCompare]);
84
-
85
- const subtractDay = (date) => (endHour === 0 ? moment(date).subtract(1, 'days') : date);
86
- const addDay = (date) => (endHour === 0 ? moment(date).add(1, 'days') : date);
87
-
88
- useEffect(() => {
89
- if (moment(startDate).isSameOrAfter(endDate)) {
90
- setStartDate(moment(endDate).subtract(1, 'd').toDate());
91
- setDate1(moment(endDate).subtract(1, 'd'));
92
- }
93
- }, [startDate]);
94
-
95
- useEffect(() => {
96
- if (moment(endDate).isSameOrBefore(startDate)) {
97
- setEndDate(moment(startDate).add(1, 'd').toDate());
98
- setDate2(moment(startDate).add(1, 'd'));
99
- }
100
- }, [endDate]);
101
-
102
- useEffect(() => {
103
- setStartDateInput(startDate);
104
- setEndDateInput(endDate);
105
- if (moment(startDate).isBefore(moment(endDate), 'month')) {
106
- setDate1(moment(startDate));
107
- setDate2(moment(endDate));
108
- }
109
- }, [startDate, endDate]);
110
-
111
- useEffect(() => {
112
- if (moment(date1).isSameOrAfter(moment(date2), 'month')) {
113
- setDate1(moment(date2).subtract(1, 'month'));
114
- }
115
- }, [date1, date2]);
116
-
117
- useEffect(() => {
118
- onChangeInterval(dateInterval);
119
- }, [dateInterval]);
120
-
121
- const handleClick = (date) => {
122
- prevEndHour.current = 0;
123
- if (!startDate || (startDate && endDate && !(moment(startDate).add(1, 'd').isSame(endDate, 'day') && endHour === 0))) {
124
- setStartDate(moment(date).startOf('day').toDate());
125
- setEndDate(moment(date).add(1, 'd').startOf('day').toDate());
126
- setStartHour(0);
127
- setEndHour(0);
128
- } else if (moment(date).isBefore(moment(startDate), 'day')) {
129
- setEndDate(moment(startDate).add(1, 'd').startOf('day').toDate());
130
- setStartDate(moment(date).set('hour', parseInt(startHour, 10)).toDate());
131
- } else if (moment(date).isAfter(moment(startDate), 'day')) {
132
- setEndDate(moment(date).add(1, 'd').startOf('day').toDate());
133
- }
134
- setHoverStatus(null);
135
- };
136
-
137
- let timerId;
138
-
139
- const handleHover = (date) => {
140
- if (!date) {
141
- timerId = setTimeout(() => {
142
- setHoverStatus(null);
143
- }, 400);
144
- return;
145
- }
146
- if (timerId) clearTimeout(timerId);
147
- if (moment(startDate).add(1, 'd').isSame(endDate, 'day') && endHour === 0) {
148
- if (moment(date).isAfter(moment(startDate), 'day')) setHoverStatus('end');
149
- else if (moment(date).isBefore(moment(startDate), 'day')) setHoverStatus('start');
150
- else setHoverStatus(null);
151
- } else {
152
- setHoverStatus('start');
153
- }
154
- };
155
-
156
- const handleChangeStartHour = ({ target: { value: val } }) => {
157
- setStartHour(+val);
158
- setStartDate(
159
- moment(startDate)
160
- .set('hour', +val)
161
- .toDate()
162
- );
163
- };
164
-
165
- const handleChangeEndHour = ({ target: { value: val } }) => {
166
- const newHour = +val;
167
- setEndHour(newHour);
168
- let newEndDate;
169
- if (prevEndHour.current === 0 && newHour !== 0) {
170
- newEndDate = moment(endDate).subtract(1, 'days');
171
- } else if (prevEndHour.current !== 0 && newHour === 0) {
172
- newEndDate = moment(endDate).add(1, 'days');
173
- } else {
174
- newEndDate = endDate;
175
- }
176
- prevEndHour.current = newHour;
177
- setEndDate(moment(newEndDate).set('hour', newHour).toDate());
178
- };
179
-
180
- const renderButtons = () => (
181
- <>
182
- <Button className="plr15 mr5" onClick={() => onCancel()}>
183
- {txt.buttons.cancel}
184
- </Button>
185
- <Button
186
- className="plr20"
187
- type="filled"
188
- disabled={!startDate || !endDate}
189
- onClick={() =>
190
- onChange({
191
- start: startDate,
192
- end: endDate,
193
- startPrevDate,
194
- endPrevDate,
195
- compare: isCompare,
196
- })
197
- }
198
- >
199
- {txt.buttons.apply}
200
- </Button>
201
- </>
202
- );
203
-
204
- const renderPreviousPeriod = () => (
205
- <>
206
- {txt.labels.previousPeriod}: <span className="date-picker__previous-period-interval">{title}</span>
207
- </>
208
- );
209
-
210
- const handleStartDateFocus = () => {
211
- setIsStartFocused(true);
212
- setStartDateInput(moment(startDate).format('L'));
213
- };
214
-
215
- const handleStartDateBlur = () => {
216
- let newDate;
217
- if (moment(startDateInput).isValid()) {
218
- newDate = moment(startDateInput).set('hour', parseInt(startHour, 10)).toDate();
219
- setStartDate(newDate);
220
- } else {
221
- newDate = startDate;
222
- setStartDateInput(newDate);
223
- }
224
- setIsStartFocused(false);
225
- startDateInputRef.current.blur();
226
- setDate1(moment(newDate).isSameOrAfter(moment(date2), 'month') ? moment(date2).subtract(1, 'month') : moment(newDate));
227
- };
228
-
229
- const handleEndDateFocus = () => {
230
- setIsEndFocused(true);
231
- setEndDateInput(moment(subtractDay(endDateInput)).format('L'));
232
- };
233
-
234
- const handleEndDateBlur = () => {
235
- let newDate;
236
- if (moment(endDateInput).isValid()) {
237
- newDate = moment(endDateInput).set('hour', parseInt(endHour, 10)).toDate();
238
- setEndDate(addDay(newDate));
239
- } else {
240
- newDate = endDate;
241
- setEndDateInput(newDate);
242
- }
243
- setIsEndFocused(false);
244
- endDateInputRef.current.blur();
245
- setDate2(newDate);
246
- setEndDateInput();
247
- };
248
-
249
- const handleKeyPressed = (e, handleDateBlur) => {
250
- if (e.key === 'Enter') handleDateBlur();
251
- };
252
-
253
- return (
254
- <div className="date-picker">
255
- <div className="date-picker__header">
256
- <Input
257
- dataTest="datepicker_start-date-input"
258
- className={cn('mr5', { 'date-picker-text-input--active': hoverStatus === 'start' })}
259
- value={isStartFocused ? startDateInput : moment(startDate).format('ll')}
260
- disabled={!startDate}
261
- onChange={(e) => setStartDateInput(e.target.value)}
262
- onFocus={handleStartDateFocus}
263
- onBlur={handleStartDateBlur}
264
- onKeyPress={(e) => handleKeyPressed(e, handleStartDateBlur)}
265
- ref={startDateInputRef}
266
- />
267
- <Dropdown
268
- dataTest="datepicker_start-hour-select-input"
269
- onChange={handleChangeStartHour}
270
- value={startHour}
271
- items={getStartHourItems()}
272
- disabled={!startDate}
273
- short
274
- />
275
- <div className="pl5 pr5 date-picker__header--gray">—</div>
276
- <Input
277
- dataTest="datepicker_end-date-input"
278
- className={cn('mr5', { 'date-picker-text-input--active': hoverStatus === 'end' })}
279
- value={isEndFocused ? endDateInput : moment(subtractDay(endDate)).format('ll')}
280
- disabled={!endDate}
281
- onChange={(e) => setEndDateInput(e.target.value)}
282
- onFocus={handleEndDateFocus}
283
- onBlur={handleEndDateBlur}
284
- onKeyPress={(e) => handleKeyPressed(e, handleEndDateBlur)}
285
- ref={endDateInputRef}
286
- />
287
- <Dropdown
288
- dataTest="datepicker_end-hour-select-input"
289
- onChange={handleChangeEndHour}
290
- value={endHour}
291
- items={getEndHourItems()}
292
- disabled={!endDate}
293
- short
294
- />
295
- </div>
296
- <div className="date-picker__previous-period">{isCompare && !isCompareHidden && startDate && endDate && renderPreviousPeriod()}</div>
297
- <div className="date-picker__calendars">
298
- <Calendar
299
- date={date1}
300
- setDate={setDate1}
301
- allowNext={!isNearby}
302
- startDate={startDate}
303
- endDate={endDate}
304
- startPrevDate={startPrevDate}
305
- endPrevDate={endPrevDate}
306
- onClick={handleClick}
307
- onHover={handleHover}
308
- limitRange={limitRange}
309
- />
310
- <Calendar
311
- date={date2}
312
- setDate={setDate2}
313
- allowPrev={!isNearby}
314
- startDate={startDate}
315
- endDate={endDate}
316
- startPrevDate={startPrevDate}
317
- endPrevDate={endPrevDate}
318
- onClick={handleClick}
319
- onHover={handleHover}
320
- />
321
- </div>
322
- <div className="date-picker__footer j46">
323
- {!isCompareHidden ? (
324
- <div className="j4">
325
- <div className="mr5">
326
- <Switcher
327
- dataTest="datepicker_compare"
328
- label={txt.labels.compare}
329
- isSwitchOn={isCompare}
330
- onChange={() => {
331
- onChangeCompare(!isCompare);
332
- setIsCompare((state) => !state);
333
- }}
334
- />
335
- </div>
336
- </div>
337
- ) : (
338
- <div />
339
- )}
340
- <div>{renderButtons()}</div>
341
- </div>
342
- </div>
343
- );
344
- };
345
-
346
- export default Datepicker;
@@ -1,8 +0,0 @@
1
- .test {
2
- width: 380px;
3
- }
4
-
5
- .testing {
6
- border: none;
7
- box-shadow: none;
8
- }
@@ -1,27 +0,0 @@
1
- import React, { useRef, useState } from 'react';
2
- import { ref } from 'yup';
3
- import Datepicker from './Datepicker';
4
-
5
- global.lng = 'en';
6
-
7
- // export default {
8
- // title: 'Form Elements/Datepicker',
9
- // component: Datepicker,
10
- // };
11
-
12
- const Template = (args) => {
13
- const params = {
14
- minDate: args?.minDate,
15
- maxDate: args?.maxDate,
16
- };
17
-
18
- return <Datepicker data={args.date} params={params} />;
19
- };
20
-
21
- export const DatepickerTemplate = Template.bind({});
22
-
23
- DatepickerTemplate.args = {
24
- date: '10/14/2021',
25
- minDate: '10/11/2021',
26
- maxDate: '10/25/2021',
27
- };
@@ -1,118 +0,0 @@
1
- import cn from 'classnames';
2
- import moment from 'moment';
3
- import React, { useEffect, useMemo, useState } from 'react';
4
- import * as Icon from 'react-feather';
5
-
6
- const Calendar = (props) => {
7
- const { date, setDate, startDate, endDate, allowPrev = true, allowNext = true, onClick, onHover, startPrevDate, endPrevDate, limitRange } = props;
8
-
9
- const [days, setDays] = useState({});
10
-
11
- const title = useMemo(() => `${moment(date).format('MMM')} ${moment(date).format('YYYY')}`, [date]);
12
-
13
- useEffect(() => {
14
- const result = {};
15
- const day = moment(date).startOf('month');
16
- const daysInMonth = day.daysInMonth();
17
- for (let d = 0; d < daysInMonth; d += 1) {
18
- let week = day.week();
19
- if (day.month() === 11 && week === 1) week = 53;
20
- if (day.month() === 0 && week === 53) week = 0;
21
- if (!Object.prototype.hasOwnProperty.call(result, week)) {
22
- result[week] = {};
23
- }
24
- result[week][day.weekday()] = { date: day.toDate() };
25
- day.add(1, 'd');
26
- }
27
- setDays(result);
28
- }, [date]);
29
-
30
- const renderDay = (week, dayOfWeek) => {
31
- const day = days[week][dayOfWeek];
32
- const isFutureDay = day && moment(day.date).isAfter(moment(), 'day');
33
- const isPastDay = limitRange ? day && moment(day.date).isBefore(moment().subtract(limitRange, 'days'), 'day') : null;
34
- const isRangeEnd = day && (moment(day.date).isSame(startDate, 'day') || moment(day.date).isSame(moment(endDate).subtract(1, 'hour'), 'day'));
35
- const isRangeInside =
36
- day &&
37
- startDate &&
38
- endDate &&
39
- moment(day.date).isAfter(startDate, 'day') &&
40
- moment(day.date).isBefore(moment(endDate).subtract(1, 'hour'), 'day');
41
- const isPrevRangeEnd =
42
- day && (moment(day.date).isSame(startPrevDate, 'day') || moment(day.date).isSame(moment(endPrevDate).subtract(1, 'day'), 'day'));
43
- const isPrevRangeInside =
44
- day &&
45
- startPrevDate &&
46
- endPrevDate &&
47
- moment(day.date).isAfter(startPrevDate, 'day') &&
48
- moment(day.date).isBefore(moment(endPrevDate).subtract(1, 'day'), 'day');
49
- const classNames = cn(
50
- 'calendar__day',
51
- { 'calendar__day--clickable': day },
52
- { 'calendar__day--disabled': isFutureDay },
53
- { 'calendar__day--disabled': isPastDay },
54
- { 'calendar__day--range-end': isRangeEnd },
55
- { 'calendar__day--range-inside': isRangeInside },
56
- { 'calendar__day--prev-range-end': isPrevRangeEnd },
57
- { 'calendar__day--prev-range-inside': isPrevRangeInside }
58
- );
59
-
60
- return (
61
- <div
62
- key={`${week}_${dayOfWeek}`}
63
- className={classNames}
64
- onClick={day && !isFutureDay ? () => onClick(day.date) : null}
65
- onMouseOver={day && !isFutureDay ? () => onHover(day.date) : null}
66
- onMouseLeave={() => onHover(null)}
67
- >
68
- {day && day.date.getDate()}
69
- </div>
70
- );
71
- };
72
-
73
- const handlePrev = () => {
74
- setDate(moment(date).subtract(1, 'month').toDate());
75
- };
76
-
77
- const handleNext = () => {
78
- setDate(moment(date).add(1, 'month').toDate());
79
- };
80
-
81
- return (
82
- <div className="calendar">
83
- <div className="calendar-header">
84
- <div className="calendar-header__prev">
85
- {allowPrev && (
86
- <div onClick={handlePrev}>
87
- <Icon.ChevronLeft size={16} />
88
- </div>
89
- )}
90
- </div>
91
- <div className="calendar-header__title">{title}</div>
92
- <div className="calendar-header__next">
93
- {allowNext && (
94
- <div onClick={handleNext}>
95
- <Icon.ChevronRight size={16} />
96
- </div>
97
- )}
98
- </div>
99
- </div>
100
- <div className="calendar__week">
101
- {[...Array(7).keys()].map((dayOfWeek) => {
102
- return (
103
- <div key={`day-of-week_${dayOfWeek}`} className="calendar__day calendar__day--title">
104
- {moment().weekday(dayOfWeek).format('dd').charAt(0)}
105
- </div>
106
- );
107
- })}
108
- </div>
109
- {Object.keys(days).map((week, index) => (
110
- <div key={`week_${index}`} className="calendar__week">
111
- {[...Array(7).keys()].map((dayOfWeek) => renderDay(week, dayOfWeek))}
112
- </div>
113
- ))}
114
- </div>
115
- );
116
- };
117
-
118
- export default Calendar;
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import cn from 'classnames';
3
- import Label from '../../Atomic/FormElements/Label/Label';
4
- import './FormElement.scss';
5
-
6
- const RC = 'form-element';
7
-
8
- const FormElement = ({ label, required, children, error, className, hint }) => {
9
- return (
10
- <div className={cn(className, RC)}>
11
- {label && <Label className={`${RC}__label`} label={label} hint={hint} isRequired={required} />}
12
- {children}
13
- {error && <span className={`${RC}__error`}>{error}</span>}
14
- </div>
15
- );
16
- };
17
-
18
- export default FormElement;
@@ -1,8 +0,0 @@
1
- .form-element__error {
2
- margin-top: 2px;
3
- margin-left: 1px;
4
- position: absolute;
5
- display: block;
6
- font-size: 10px;
7
- color: #f06d8d;
8
- }
@@ -1,59 +0,0 @@
1
- import React, { useState } from 'react';
2
- import Input from '../../Atomic/FormElements/Input/Input';
3
- import FormElement from './FormElement';
4
-
5
- global.lng = 'en';
6
-
7
- export default {
8
- title: 'Form Elements/Form Element',
9
- component: FormElement,
10
- argTypes: {
11
- label: {
12
- description: 'string/JSX'
13
- },
14
- children: {
15
- description: 'JSX'
16
- },
17
- error: {
18
- description: 'string - print error if is errored'
19
- },
20
- required: {
21
- description: 'boolean'
22
- },
23
- className: {
24
- description: 'string'
25
- },
26
- hint: {
27
- description: 'object {text: string, hintSide: bottom/right',
28
- control: {
29
- type: 'object'
30
- }
31
- }
32
- }
33
- };
34
-
35
- const Template = args => {
36
- return (
37
- <FormElement {...args}>
38
- {/* eslint-disable-next-line react/destructuring-assignment */}
39
- <Input error={args.error} />
40
- </FormElement>
41
- );
42
- };
43
-
44
- export const InputTemplate = Template.bind({});
45
-
46
- InputTemplate.args = {
47
- label: 'Text label',
48
- error: 'error',
49
- required: true,
50
- hint: {
51
- text: 'hint',
52
- hintSide: 'bottom'
53
- },
54
- numStep: 1,
55
- min: '0',
56
- max: '5',
57
- placeholder: 'Placeholder',
58
- mask: ''
59
- };
package/src/index.js DELETED
@@ -1,3 +0,0 @@
1
- import Button from './Atomic/UI/Button/Button';
2
-
3
- export { Button };