intelicoreact 0.0.96 → 0.0.97
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.
- package/dist/Atomic/FormElements/Input/Input.js +3 -1
- package/dist/Atomic/FormElements/Input/Input.stories.js +5 -1
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +4 -4
- package/dist/Atomic/FormElements/Spinner/Spinner.js +21 -0
- package/{src/Atomic/FormElements/Dropdown/components/DropdownLoader.scss → dist/Atomic/FormElements/Spinner/Spinner.scss} +8 -5
- package/dist/Atomic/FormElements/Spinner/Spinner.stories.js +34 -0
- package/dist/Functions/inputExecutor.js +7 -1
- package/package.json +3 -2
- package/.babelrc +0 -12
- package/.eslintignore +0 -10
- package/.eslintrc.json +0 -93
- package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +0 -28
- package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +0 -107
- package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +0 -26
- package/src/Atomic/FormElements/DateTime/DateTime.js +0 -18
- package/src/Atomic/FormElements/DateTime/DateTime.scss +0 -12
- package/src/Atomic/FormElements/DateTime/DateTime.stories.js +0 -17
- package/src/Atomic/FormElements/DoubleString/DoubleString.js +0 -13
- package/src/Atomic/FormElements/DoubleString/DoubleString.scss +0 -20
- package/src/Atomic/FormElements/DoubleString/DoubleString.stories.js +0 -18
- package/src/Atomic/FormElements/Dropdown/Dropdown.js +0 -178
- package/src/Atomic/FormElements/Dropdown/Dropdown.scss +0 -192
- package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +0 -87
- package/src/Atomic/FormElements/Dropdown/components/DropdownLoader.js +0 -17
- package/src/Atomic/FormElements/Header/Header.js +0 -67
- package/src/Atomic/FormElements/Header/Header.scss +0 -93
- package/src/Atomic/FormElements/Header/Header.stories.js +0 -30
- package/src/Atomic/FormElements/Input/Input.js +0 -186
- package/src/Atomic/FormElements/Input/Input.scss +0 -136
- package/src/Atomic/FormElements/Input/Input.stories.js +0 -94
- package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +0 -104
- package/src/Atomic/FormElements/InputCalendar/InputCalendar.scss +0 -23
- package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +0 -39
- package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +0 -254
- package/src/Atomic/FormElements/InputDateRange/InputDateRange.scss +0 -624
- package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +0 -65
- package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +0 -432
- package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +0 -126
- package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +0 -24
- package/src/Atomic/FormElements/InputDateRange/dependencies.js +0 -161
- package/src/Atomic/FormElements/InputsRow/InputsRow.js +0 -112
- package/src/Atomic/FormElements/InputsRow/InputsRow.scss +0 -45
- package/src/Atomic/FormElements/InputsRow/InputsRow.stories.js +0 -34
- package/src/Atomic/FormElements/Label/Label.js +0 -13
- package/src/Atomic/FormElements/Label/Label.scss +0 -20
- package/src/Atomic/FormElements/Label/Label.stories.js +0 -23
- package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.js +0 -315
- package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +0 -120
- package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +0 -30
- package/src/Atomic/FormElements/Modal/Modal.js +0 -69
- package/src/Atomic/FormElements/Modal/Modal.scss +0 -230
- package/src/Atomic/FormElements/Modal/Modal.stories.js +0 -116
- package/src/Atomic/FormElements/MultiSelect/MultiSelect.js +0 -39
- package/src/Atomic/FormElements/MultiSelect/MultiSelect.scss +0 -16
- package/src/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +0 -28
- package/src/Atomic/FormElements/NavLine/NavLine.js +0 -67
- package/src/Atomic/FormElements/NavLine/NavLine.scss +0 -108
- package/src/Atomic/FormElements/NavLine/NavLine.stories.js +0 -108
- package/src/Atomic/FormElements/NumericInput/NumericInput.js +0 -263
- package/src/Atomic/FormElements/NumericInput/NumericInput.scss +0 -135
- package/src/Atomic/FormElements/NumericInput/NumericInput.stories.js +0 -78
- package/src/Atomic/FormElements/RadioInput/RadioInput.js +0 -28
- package/src/Atomic/FormElements/RadioInput/RadioInput.scss +0 -63
- package/src/Atomic/FormElements/RadioInput/RadioInput.stories.js +0 -23
- package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +0 -152
- package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +0 -101
- package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +0 -54
- package/src/Atomic/FormElements/RangeInputs/RangeInputs.js +0 -41
- package/src/Atomic/FormElements/RangeInputs/RangeInputs.scss +0 -20
- package/src/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +0 -23
- package/src/Atomic/FormElements/Switcher/Switcher.js +0 -24
- package/src/Atomic/FormElements/Switcher/Switcher.scss +0 -56
- package/src/Atomic/FormElements/Switcher/Switcher.stories.js +0 -22
- package/src/Atomic/FormElements/Table/Partials/TdCell.js +0 -47
- package/src/Atomic/FormElements/Table/Partials/TdHeader.js +0 -33
- package/src/Atomic/FormElements/Table/Partials/TdRow.js +0 -84
- package/src/Atomic/FormElements/Table/Partials/TdTitle.js +0 -38
- package/src/Atomic/FormElements/Table/Table.js +0 -50
- package/src/Atomic/FormElements/Table/Table.scss +0 -78
- package/src/Atomic/FormElements/Table/Table.stories.js +0 -102
- package/src/Atomic/FormElements/Table/TdTypes/TdActions.js +0 -59
- package/src/Atomic/FormElements/Table/TdTypes/TdPriority.js +0 -20
- package/src/Atomic/FormElements/Table/TdTypes/TdRange.js +0 -15
- package/src/Atomic/FormElements/Table/TdTypes/TdTypes.scss +0 -35
- package/src/Atomic/FormElements/Table/TdTypes/TdWeight.js +0 -43
- package/src/Atomic/FormElements/Tag/Tag.js +0 -24
- package/src/Atomic/FormElements/Tag/Tag.scss +0 -38
- package/src/Atomic/FormElements/Tag/Tag.stories.js +0 -30
- package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.js +0 -108
- package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +0 -131
- package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +0 -44
- package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.js +0 -18
- package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +0 -50
- package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +0 -21
- package/src/Atomic/FormElements/Textarea/Textarea.js +0 -19
- package/src/Atomic/FormElements/Textarea/Textarea.scss +0 -35
- package/src/Atomic/FormElements/Textarea/Textarea.stories.js +0 -24
- package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +0 -66
- package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.scss +0 -10
- package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +0 -57
- package/src/Atomic/FormElements/TimeRange/TimeRange.js +0 -55
- package/src/Atomic/FormElements/TimeRange/TimeRange.scss +0 -17
- package/src/Atomic/FormElements/TimeRange/TimeRange.stories.js +0 -21
- package/src/Atomic/MainMenu/MainMenu.js +0 -112
- package/src/Atomic/MainMenu/MainMenu.scss +0 -176
- package/src/Atomic/MainMenu/MainMenu.stories.js +0 -91
- package/src/Atomic/UI/Accordion/Accordion.js +0 -45
- package/src/Atomic/UI/Accordion/Accordion.scss +0 -73
- package/src/Atomic/UI/Accordion/Accordion.stories.js +0 -78
- package/src/Atomic/UI/Accordion/AccordionItem.js +0 -92
- package/src/Atomic/UI/AdvancedTag/AdvTag.js +0 -81
- package/src/Atomic/UI/AdvancedTag/AdvancedTags.js +0 -32
- package/src/Atomic/UI/AdvancedTag/AdvancedTags.scss +0 -72
- package/src/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +0 -49
- package/src/Atomic/UI/Alert/Alert.js +0 -23
- package/src/Atomic/UI/Alert/Alert.scss +0 -65
- package/src/Atomic/UI/Alert/Alert.stories.js +0 -34
- package/src/Atomic/UI/Arrow/Arrow.js +0 -41
- package/src/Atomic/UI/Arrow/Arrow.scss +0 -19
- package/src/Atomic/UI/Arrow/Arrow.stories.js +0 -32
- package/src/Atomic/UI/Button/Button.js +0 -17
- package/src/Atomic/UI/Button/Button.scss +0 -108
- package/src/Atomic/UI/Button/Button.stories.js +0 -49
- package/src/Atomic/UI/Calendar/Calendar.js +0 -190
- package/src/Atomic/UI/Calendar/Calendar.scss +0 -607
- package/src/Atomic/UI/Calendar/Calendar.stories.js +0 -26
- package/src/Atomic/UI/Header/partials/default_ava.png +0 -0
- package/src/Atomic/UI/Hint/Hint.js +0 -34
- package/src/Atomic/UI/Hint/Hint.scss +0 -92
- package/src/Atomic/UI/Hint/Hint.stories.js +0 -34
- package/src/Atomic/UI/Price/Price.js +0 -20
- package/src/Atomic/UI/Price/Price.stories.js +0 -30
- package/src/Atomic/UI/Status/Status.js +0 -38
- package/src/Atomic/UI/Status/Status.scss +0 -69
- package/src/Atomic/UI/Status/Status.stories.js +0 -47
- package/src/Constants/index.constants.js +0 -41
- package/src/Functions/customEventListener.js +0 -58
- package/src/Functions/inputExecutor.js +0 -53
- package/src/Functions/schemas.js +0 -31
- package/src/Functions/useClickOutside.js +0 -15
- package/src/Functions/useMouseUpOutside.js +0 -16
- package/src/Functions/useToggle.js +0 -17
- package/src/Functions/utils.js +0 -51
- package/src/Molecular/Datepicker/Datepicker.js +0 -346
- package/src/Molecular/Datepicker/Datepicker.scss +0 -8
- package/src/Molecular/Datepicker/Datepicker.stories.js +0 -27
- package/src/Molecular/Datepicker/components/Calendar.js +0 -118
- package/src/Molecular/FormElements/FormElement.js +0 -18
- package/src/Molecular/FormElements/FormElement.scss +0 -8
- package/src/Molecular/FormElements/FormElement.stories.js +0 -59
- package/src/index.js +0 -3
- package/src/scss/_fonts.scss +0 -109
- package/src/scss/_vars.scss +0 -48
- package/src/scss/main.scss +0 -40
- package/webpack.config.js +0 -61
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useMemo, useState } from 'react';
|
|
2
|
-
import cn from 'classnames';
|
|
3
|
-
import moment from 'moment-timezone';
|
|
4
|
-
|
|
5
|
-
import Arrow from '../../UI/Arrow/Arrow';
|
|
6
|
-
|
|
7
|
-
import './RangeCalendar.scss';
|
|
8
|
-
|
|
9
|
-
const RangeCalendar = (props) => {
|
|
10
|
-
const {
|
|
11
|
-
className,
|
|
12
|
-
date,
|
|
13
|
-
setDate,
|
|
14
|
-
startDate,
|
|
15
|
-
endDate,
|
|
16
|
-
allowPrev = true,
|
|
17
|
-
allowNext = true,
|
|
18
|
-
onClick = () => {},
|
|
19
|
-
onHover = () => {},
|
|
20
|
-
startPrevDate,
|
|
21
|
-
endPrevDate,
|
|
22
|
-
limitRange,
|
|
23
|
-
isShortWeekNames,
|
|
24
|
-
minDate,
|
|
25
|
-
maxDate,
|
|
26
|
-
momentMinDate,
|
|
27
|
-
momentMaxDate,
|
|
28
|
-
isDontLimitFuture,
|
|
29
|
-
} = props;
|
|
30
|
-
|
|
31
|
-
const [days, setDays] = useState({});
|
|
32
|
-
|
|
33
|
-
const title = useMemo(() => `${moment(date).format('MMM')} ${moment(date).format('YYYY')}`, [date]);
|
|
34
|
-
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
const result = {};
|
|
37
|
-
const day = moment(date).startOf('month');
|
|
38
|
-
const daysInMonth = day.daysInMonth();
|
|
39
|
-
for (let d = 0; d < daysInMonth; d += 1) {
|
|
40
|
-
let week = day.week();
|
|
41
|
-
if (day.month() === 11 && week === 1) week = 53;
|
|
42
|
-
if (day.month() === 0 && week === 53) week = 0;
|
|
43
|
-
if (!Object.prototype.hasOwnProperty.call(result, week)) {
|
|
44
|
-
result[week] = {};
|
|
45
|
-
}
|
|
46
|
-
result[week][day.weekday()] = { date: day.toDate() };
|
|
47
|
-
day.add(1, 'd');
|
|
48
|
-
}
|
|
49
|
-
setDays(result);
|
|
50
|
-
}, [date]);
|
|
51
|
-
|
|
52
|
-
const renderDay = (week, dayOfWeek) => {
|
|
53
|
-
const day = days[week][dayOfWeek];
|
|
54
|
-
const isFutureDay = day && moment(day.date).isAfter(moment(), 'day');
|
|
55
|
-
const isPastDay = limitRange ? day && moment(day.date).isBefore(moment().subtract(limitRange, 'days'), 'day') : null;
|
|
56
|
-
const isRangeStart = day && moment(day.date).isSame(startDate, 'day');
|
|
57
|
-
const isRangeEnd = day && moment(day.date).isSame(moment(endDate).subtract(1, 'hour'), 'day');
|
|
58
|
-
const isRangeInside =
|
|
59
|
-
day &&
|
|
60
|
-
startDate &&
|
|
61
|
-
endDate &&
|
|
62
|
-
moment(day.date).isAfter(startDate, 'day') &&
|
|
63
|
-
moment(day.date).isBefore(moment(endDate).subtract(1, 'hour'), 'day');
|
|
64
|
-
const isPrevRangeEnd =
|
|
65
|
-
day && (moment(day.date).isSame(startPrevDate, 'day') || moment(day.date).isSame(moment(endPrevDate).subtract(1, 'day'), 'day'));
|
|
66
|
-
const isPrevRangeInside =
|
|
67
|
-
day &&
|
|
68
|
-
startPrevDate &&
|
|
69
|
-
endPrevDate &&
|
|
70
|
-
moment(day.date).isAfter(startPrevDate, 'day') &&
|
|
71
|
-
moment(day.date).isBefore(moment(endPrevDate).subtract(1, 'day'), 'day');
|
|
72
|
-
const classNames = cn(
|
|
73
|
-
'range-calendar__day',
|
|
74
|
-
{ 'range-calendar__day--clickable': day },
|
|
75
|
-
{
|
|
76
|
-
'range-calendar__day--disabled':
|
|
77
|
-
isPastDay ||
|
|
78
|
-
(minDate && moment(day?.date).isBefore(minDate, 'day')) ||
|
|
79
|
-
(!isDontLimitFuture && (maxDate ? moment(day?.date).isAfter(momentMaxDate) : isFutureDay)),
|
|
80
|
-
},
|
|
81
|
-
{ 'range-calendar__day--range-start': isRangeStart },
|
|
82
|
-
{ 'range-calendar__day--range-end': isRangeEnd },
|
|
83
|
-
{ 'range-calendar__day--range-inside': isRangeInside },
|
|
84
|
-
{ 'range-calendar__day--prev-range-end': isPrevRangeEnd },
|
|
85
|
-
{ 'range-calendar__day--prev-range-inside': isPrevRangeInside }
|
|
86
|
-
);
|
|
87
|
-
|
|
88
|
-
return (
|
|
89
|
-
<div
|
|
90
|
-
key={`${week}_${dayOfWeek}`}
|
|
91
|
-
className={classNames}
|
|
92
|
-
onClick={day ? (e) => onClick(day.date, e) : null}
|
|
93
|
-
onMouseOver={day ? () => onHover(day.date) : null}
|
|
94
|
-
onMouseLeave={() => onHover(null)}
|
|
95
|
-
>
|
|
96
|
-
<span className="calendar__day-num">{day && day.date.getDate()}</span>
|
|
97
|
-
</div>
|
|
98
|
-
);
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
const handlePrev = () => {
|
|
102
|
-
setDate(moment(date).subtract(1, 'month').toDate());
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
const handleNext = () => {
|
|
106
|
-
setDate(moment(date).add(1, 'month').toDate());
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
const getFormatedWeekName = (input) => (isShortWeekNames ? input.charAt(0) : input);
|
|
110
|
-
|
|
111
|
-
return (
|
|
112
|
-
<div className={cn('range-calendar', className)}>
|
|
113
|
-
<div className="range-calendar-header">
|
|
114
|
-
<Arrow
|
|
115
|
-
type="left"
|
|
116
|
-
disabled={!allowPrev || (minDate && moment(date).startOf('month').isSameOrBefore(momentMinDate, 'months'))}
|
|
117
|
-
onClick={handlePrev}
|
|
118
|
-
className="range-calendar-header__prev"
|
|
119
|
-
/>
|
|
120
|
-
<div className="range-calendar-header__title">{title}</div>
|
|
121
|
-
<Arrow
|
|
122
|
-
type="right"
|
|
123
|
-
disabled={
|
|
124
|
-
!allowNext ||
|
|
125
|
-
(
|
|
126
|
-
!isDontLimitFuture &&
|
|
127
|
-
moment(date).startOf('month').isSameOrAfter(maxDate ? momentMaxDate : moment().add(1, 'day').startOf('day'), 'months')
|
|
128
|
-
)
|
|
129
|
-
}
|
|
130
|
-
onClick={handleNext}
|
|
131
|
-
className="range-calendar-header__next"
|
|
132
|
-
/>
|
|
133
|
-
</div>
|
|
134
|
-
<div className="range-calendar__week range-calendar__week-title">
|
|
135
|
-
{[...Array(7).keys()].map((dayOfWeek) => {
|
|
136
|
-
return (
|
|
137
|
-
<div key={`day-of-week_${dayOfWeek}`} className="range-calendar__day range-calendar__day--title">
|
|
138
|
-
{getFormatedWeekName(moment().weekday(dayOfWeek).format('dd'))}
|
|
139
|
-
</div>
|
|
140
|
-
);
|
|
141
|
-
})}
|
|
142
|
-
</div>
|
|
143
|
-
{Object.keys(days).map((week, index) => (
|
|
144
|
-
<div key={`week_${index}`} className="range-calendar__week">
|
|
145
|
-
{[...Array(7).keys()].map((dayOfWeek) => renderDay(week, dayOfWeek))}
|
|
146
|
-
</div>
|
|
147
|
-
))}
|
|
148
|
-
</div>
|
|
149
|
-
);
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
export default RangeCalendar;
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
.range-calendar, .calendar {
|
|
2
|
-
width: 195px;
|
|
3
|
-
min-height: 195px;
|
|
4
|
-
display: flex;
|
|
5
|
-
flex-direction: column;
|
|
6
|
-
user-select: none;
|
|
7
|
-
|
|
8
|
-
&-header {
|
|
9
|
-
height: 24px;
|
|
10
|
-
margin-bottom: 12px;
|
|
11
|
-
|
|
12
|
-
display: flex;
|
|
13
|
-
justify-content: space-between;
|
|
14
|
-
align-items: center;
|
|
15
|
-
|
|
16
|
-
&__title {
|
|
17
|
-
line-height: 20px;
|
|
18
|
-
font-weight: 500;
|
|
19
|
-
text-align: center;
|
|
20
|
-
flex-grow: 1;
|
|
21
|
-
color: #000000;
|
|
22
|
-
display: flex;
|
|
23
|
-
align-items: center;
|
|
24
|
-
justify-content: center;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
&__next, &__prev {
|
|
28
|
-
width: 16px;
|
|
29
|
-
height: 16px;
|
|
30
|
-
//background-color: #E2E6F8;
|
|
31
|
-
border-radius: 5px;
|
|
32
|
-
color: #171D33;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
&__week {
|
|
37
|
-
display: flex;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
&__day {
|
|
41
|
-
font-size: 13px;
|
|
42
|
-
line-height: 20px;
|
|
43
|
-
margin: 1px 0;
|
|
44
|
-
flex-grow: 1;
|
|
45
|
-
flex-basis: 0;
|
|
46
|
-
text-align: center;
|
|
47
|
-
padding: 1px 6px;
|
|
48
|
-
user-select: none;
|
|
49
|
-
|
|
50
|
-
&--clickable {
|
|
51
|
-
cursor: pointer;
|
|
52
|
-
|
|
53
|
-
&:hover {
|
|
54
|
-
background: #E2E6F8;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
&--disabled {
|
|
59
|
-
cursor: default;
|
|
60
|
-
color: #9aa0b9;
|
|
61
|
-
pointer-events: none;
|
|
62
|
-
|
|
63
|
-
&:hover {
|
|
64
|
-
background: inherit;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
&--range-start, &--range-end {
|
|
69
|
-
background: #6B81DD;
|
|
70
|
-
color: white;
|
|
71
|
-
border-radius: 4px;
|
|
72
|
-
|
|
73
|
-
&:hover {
|
|
74
|
-
background: #6B81DD;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
&--range-inside {
|
|
79
|
-
background: #E2E6F8;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
&--prev-range-end {
|
|
83
|
-
background: #E2E5EC;
|
|
84
|
-
border-radius: 4px;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
&--prev-range-inside {
|
|
88
|
-
background: #F7F8FA;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
&--title {
|
|
92
|
-
font-size: 10px;
|
|
93
|
-
color: #9AA0B9;
|
|
94
|
-
font-weight: normal;
|
|
95
|
-
|
|
96
|
-
&:hover {
|
|
97
|
-
background: inherit;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import React, {useState, useMemo, useRef, useEffect} from 'react';
|
|
2
|
-
import moment from 'moment-timezone';
|
|
3
|
-
|
|
4
|
-
import RangeCalendar from './RangeCalendar';
|
|
5
|
-
|
|
6
|
-
global.lng = 'en';
|
|
7
|
-
|
|
8
|
-
export default {
|
|
9
|
-
title: 'RangeCalendar',
|
|
10
|
-
component: RangeCalendar,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const Template = args => {
|
|
14
|
-
const [dateOfRenderedMonth, setDateOfRenderedMonth] = useState(moment().subtract(1, 'month').toDate());
|
|
15
|
-
|
|
16
|
-
const [startDate, setStartDate] = useState(dateOfRenderedMonth);
|
|
17
|
-
const [endDate, setEndDate] = useState(dateOfRenderedMonth);
|
|
18
|
-
const isFirstClickRef = useRef(false);
|
|
19
|
-
|
|
20
|
-
const handleClick = date => {
|
|
21
|
-
if (
|
|
22
|
-
!startDate ||
|
|
23
|
-
(startDate && endDate && !(moment(startDate).add(1, 'd').isSame(endDate, 'day')))
|
|
24
|
-
) {
|
|
25
|
-
setStartDate(moment(date).startOf('day').toDate());
|
|
26
|
-
setEndDate(moment(date).add(1, 'd').startOf('day').toDate());
|
|
27
|
-
} else if (moment(date).isBefore(moment(startDate), 'day')) {
|
|
28
|
-
setEndDate(moment(startDate).add(1, 'd').startOf('day').toDate());
|
|
29
|
-
setStartDate(moment(date).set('hour', parseInt(0, 10)).toDate());
|
|
30
|
-
} else if (moment(date).isAfter(moment(startDate), 'day')) {
|
|
31
|
-
setEndDate(moment(date).add(1, 'd').startOf('day').toDate());
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
return <RangeCalendar
|
|
36
|
-
{...args}
|
|
37
|
-
date={dateOfRenderedMonth}
|
|
38
|
-
setDate={setDateOfRenderedMonth}
|
|
39
|
-
// allowNext={true}
|
|
40
|
-
// allowPrev={true}
|
|
41
|
-
startDate={startDate}
|
|
42
|
-
endDate={endDate}
|
|
43
|
-
// startPrevDate={startPrevDate}
|
|
44
|
-
// endPrevDate={endPrevDate}
|
|
45
|
-
onClick={handleClick}
|
|
46
|
-
// onHover={handleHover}
|
|
47
|
-
/>
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export const RangeCalendarTemplate = Template.bind({});
|
|
51
|
-
|
|
52
|
-
RangeCalendarTemplate.args = {
|
|
53
|
-
limitRange: 60
|
|
54
|
-
};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import cn from 'classnames';
|
|
3
|
-
|
|
4
|
-
import Input from '../Input/Input';
|
|
5
|
-
import Label from '../Label/Label';
|
|
6
|
-
|
|
7
|
-
import './RangeInputs.scss';
|
|
8
|
-
|
|
9
|
-
const RangeInputs = ({ label, hint, items, className, onChange, isRequired }) => {
|
|
10
|
-
const [error, setError] = useState('');
|
|
11
|
-
|
|
12
|
-
const handleChange = (prop, value) => {
|
|
13
|
-
onChange({ ...items, [prop]: value });
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
const rangeValidation = () => {
|
|
17
|
-
if ((items?.from && items?.to && items?.from > items?.to) || !items?.to) {
|
|
18
|
-
setError('Invalid range');
|
|
19
|
-
} else {
|
|
20
|
-
setError('');
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
return (
|
|
25
|
-
<div className={cn('range-inputs', className)}>
|
|
26
|
-
{label && <Label isRequired={isRequired} className="range-inputs--label mb5" label={label} hint={hint} />}
|
|
27
|
-
<div className="j4">
|
|
28
|
-
<div className="j4 w50">
|
|
29
|
-
<span className="range-inputs__input-label">From</span>
|
|
30
|
-
<Input type="number" value={items?.from} className="mr15" onChange={value => handleChange('from', value)} onBlur={rangeValidation} />
|
|
31
|
-
</div>
|
|
32
|
-
<div className="j4 w50">
|
|
33
|
-
<span className="range-inputs__input-label">To</span>
|
|
34
|
-
<Input type="number" value={items?.to} onChange={value => handleChange('to', value)} onBlur={rangeValidation} error={error} />
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
);
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export default RangeInputs;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
.range-inputs {
|
|
2
|
-
display: flex;
|
|
3
|
-
align-items: flex-start;
|
|
4
|
-
justify-content: center;
|
|
5
|
-
flex-direction: column;
|
|
6
|
-
|
|
7
|
-
&--label {
|
|
8
|
-
display: flex;
|
|
9
|
-
align-items: center;
|
|
10
|
-
justify-content: flex-start;
|
|
11
|
-
font-weight: 500;
|
|
12
|
-
font-size: 12px;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
&__input-label {
|
|
16
|
-
font-size: 12px;
|
|
17
|
-
line-height: 24px;
|
|
18
|
-
margin-right: 16px;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import RangeInputs from './RangeInputs';
|
|
3
|
-
|
|
4
|
-
import './RangeInputs.scss';
|
|
5
|
-
|
|
6
|
-
global.lng = 'en';
|
|
7
|
-
export default {
|
|
8
|
-
title: 'RangeInputs',
|
|
9
|
-
component: RangeInputs
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
const Template = args => {
|
|
13
|
-
return <RangeInputs {...args} />;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export const RangeInputsTemplate = Template.bind({});
|
|
17
|
-
|
|
18
|
-
RangeInputsTemplate.args = {
|
|
19
|
-
label: 'loanAmount',
|
|
20
|
-
from: 0,
|
|
21
|
-
to: 0,
|
|
22
|
-
hint: 'Hint'
|
|
23
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import cn from 'classnames';
|
|
3
|
-
|
|
4
|
-
import Hint from '../../UI/Hint/Hint';
|
|
5
|
-
|
|
6
|
-
import './Switcher.scss';
|
|
7
|
-
|
|
8
|
-
const RC = 'switcher';
|
|
9
|
-
|
|
10
|
-
const Switcher = ({ label, className, isActive, disabled, onChange, boldLabel, hint }) => {
|
|
11
|
-
return (
|
|
12
|
-
<div className={`${RC}__wrap`}>
|
|
13
|
-
<button className={cn(RC, className, { [`${RC}_disabled`]: disabled })} onClick={() => onChange(!isActive)}>
|
|
14
|
-
<div className={cn(`${RC}__button`, { [`${RC}__button_active`]: isActive })}>
|
|
15
|
-
<div className={`${RC}__ball`} />
|
|
16
|
-
</div>
|
|
17
|
-
{label && <span className={cn(`${RC}__label`, { [`${RC}__label_bold`]: boldLabel })}>{label}</span>}
|
|
18
|
-
</button>
|
|
19
|
-
{hint && <Hint className={`${RC}__hint`} hint={hint} />}
|
|
20
|
-
</div>
|
|
21
|
-
);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export default Switcher;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
@import "../../../scss/vars";
|
|
2
|
-
|
|
3
|
-
.switcher {
|
|
4
|
-
display: inline-flex;
|
|
5
|
-
align-items: center;
|
|
6
|
-
cursor: pointer;
|
|
7
|
-
|
|
8
|
-
&_disabled {
|
|
9
|
-
pointer-events: none;
|
|
10
|
-
opacity: 0.5;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
&__button {
|
|
14
|
-
background-color: rgba($color--gray, 0.5);
|
|
15
|
-
border-radius: 8px;
|
|
16
|
-
width: 26px;
|
|
17
|
-
height: 16px;
|
|
18
|
-
padding: 1px;
|
|
19
|
-
box-sizing: border-box;
|
|
20
|
-
|
|
21
|
-
&_active {
|
|
22
|
-
background-color: $color--primary;
|
|
23
|
-
.switcher__ball {
|
|
24
|
-
transform: translateX(calc(100% - 4px));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
&__ball {
|
|
30
|
-
height: 14px;
|
|
31
|
-
width: 14px;
|
|
32
|
-
background-color: #fff;
|
|
33
|
-
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);
|
|
34
|
-
border-radius: 50%;
|
|
35
|
-
transition: transform 0.2s ease;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
&__label {
|
|
39
|
-
font-size: 12px;
|
|
40
|
-
margin-left: 4px;
|
|
41
|
-
user-select: none;
|
|
42
|
-
font-weight: 400;
|
|
43
|
-
&_bold {
|
|
44
|
-
font-weight: 500;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
&__wrap {
|
|
49
|
-
display: inline-flex;
|
|
50
|
-
align-items: center;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
&__hint {
|
|
54
|
-
margin-left: 5px;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import Switcher from './Switcher';
|
|
3
|
-
|
|
4
|
-
global.lng = 'en';
|
|
5
|
-
export default {
|
|
6
|
-
title: 'Switcher',
|
|
7
|
-
component: Switcher
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const Template = args => {
|
|
11
|
-
const [isActive, setIsActive] = useState(false);
|
|
12
|
-
|
|
13
|
-
return <Switcher {...args} isActive={isActive} onChange={setIsActive} />;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export const SwitcherTemplate = Template.bind({});
|
|
17
|
-
|
|
18
|
-
SwitcherTemplate.args = {
|
|
19
|
-
label: 'Test label',
|
|
20
|
-
disabled: false,
|
|
21
|
-
boldLabel: true
|
|
22
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
|
|
3
|
-
import AccordionItem from '../../../UI/Accordion/AccordionItem';
|
|
4
|
-
import { TdActions } from '../TdTypes/TdActions';
|
|
5
|
-
import AdvancedTags from '../../../UI/AdvancedTag/AdvancedTags';
|
|
6
|
-
import Status from '../../../UI/Status/Status';
|
|
7
|
-
import Tag from '../../Tag/Tag';
|
|
8
|
-
import TdPriority from '../TdTypes/TdPriority';
|
|
9
|
-
import TdWeight from '../TdTypes/TdWeight';
|
|
10
|
-
|
|
11
|
-
// eslint-disable-next-line import/no-cycle
|
|
12
|
-
import Table from '../Table';
|
|
13
|
-
|
|
14
|
-
import '../Table.scss';
|
|
15
|
-
|
|
16
|
-
const TdCell = ({ type, item, rowIndex, onChange, cardLength, changePriority, getAdviceWeight, onActionClick, rowItem, isDeleted }) => {
|
|
17
|
-
const [isAccordionOpen, setIsAccordionOpen] = useState(item.isOpen);
|
|
18
|
-
|
|
19
|
-
const percent = item.type === 'weight' && getAdviceWeight(isDeleted ? 0 : item.value);
|
|
20
|
-
|
|
21
|
-
switch (type) {
|
|
22
|
-
case 'accordion':
|
|
23
|
-
return (
|
|
24
|
-
<AccordionItem className={item.itemClassName} item={item} isOpen={isAccordionOpen} onClick={e => setIsAccordionOpen(e)}>
|
|
25
|
-
<Table rows={item.rows} className="accordion--table" />
|
|
26
|
-
</AccordionItem>
|
|
27
|
-
);
|
|
28
|
-
case 'actions':
|
|
29
|
-
return <TdActions rowItem={rowItem} actions={item} onChange={onChange} onActionClick={onActionClick} />;
|
|
30
|
-
case 'advancedTags':
|
|
31
|
-
return <AdvancedTags items={item} />;
|
|
32
|
-
case 'link':
|
|
33
|
-
return <a href={item.link}>{item.label}</a>;
|
|
34
|
-
case 'priority':
|
|
35
|
-
return <TdPriority rowIndex={rowIndex} cardLength={cardLength} onClick={changePriority} />;
|
|
36
|
-
case 'status':
|
|
37
|
-
return <Status className={item.className} label={item.label} status={item.status} />;
|
|
38
|
-
case 'tags':
|
|
39
|
-
return item.map((tag, index) => <Tag key={index} label={tag.label} />);
|
|
40
|
-
case 'weight':
|
|
41
|
-
return <TdWeight value={item.value} percent={percent} onChange={value => onChange({ ...item, value })} />;
|
|
42
|
-
default:
|
|
43
|
-
return <span className={item.className}>{item.value}</span>;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export default TdCell;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import cn from 'classnames';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import '../Table.scss';
|
|
6
|
-
import Langs from '../../../../../../Langs';
|
|
7
|
-
|
|
8
|
-
const TdHeader = ({ item }) => {
|
|
9
|
-
const txt = Langs[global.lng];
|
|
10
|
-
|
|
11
|
-
switch (item.type) {
|
|
12
|
-
case 'double':
|
|
13
|
-
return (
|
|
14
|
-
<th>
|
|
15
|
-
<div className="j46">
|
|
16
|
-
<div className="">{txt.labels[item.left] || item.left}</div>
|
|
17
|
-
<div className="">{txt.labels[item.right] || item.right}</div>
|
|
18
|
-
</div>
|
|
19
|
-
</th>
|
|
20
|
-
);
|
|
21
|
-
default:
|
|
22
|
-
return (
|
|
23
|
-
<th className={cn(item.className)}>
|
|
24
|
-
<div className={cn({ df: item.button })}>
|
|
25
|
-
<div className="mr5">{txt.labels[item.label] || item.label}</div>
|
|
26
|
-
{item.button && <div className="cards-table__btn">{txt.buttons[item.button] || item.button}</div>}
|
|
27
|
-
</div>
|
|
28
|
-
</th>
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export default TdHeader;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import cn from 'classnames';
|
|
3
|
-
|
|
4
|
-
import { handleObjectChange } from '../../../../Functions/utils';
|
|
5
|
-
import TdCell from './TdCell';
|
|
6
|
-
import TdRange from '../TdTypes/TdRange';
|
|
7
|
-
import Modal from '../../Modal/Modal';
|
|
8
|
-
|
|
9
|
-
import '../Table.scss';
|
|
10
|
-
|
|
11
|
-
const TdRow = ({
|
|
12
|
-
item,
|
|
13
|
-
onChange,
|
|
14
|
-
rowIndex,
|
|
15
|
-
cardStatus,
|
|
16
|
-
range,
|
|
17
|
-
type,
|
|
18
|
-
rowSpan,
|
|
19
|
-
colSpan,
|
|
20
|
-
cardLength,
|
|
21
|
-
changePriority,
|
|
22
|
-
getAdviceWeight,
|
|
23
|
-
onActionClick,
|
|
24
|
-
isDeleted
|
|
25
|
-
}) => {
|
|
26
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
27
|
-
|
|
28
|
-
const handleChange = handleObjectChange(item, () => onChange({ ...item }));
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<>
|
|
32
|
-
<tr>
|
|
33
|
-
{type && rowSpan && (
|
|
34
|
-
<td className="rel" rowSpan={rowSpan + 1}>
|
|
35
|
-
<span className={cn(type && `cards-table__score cards-table__score-${cardStatus}`)}>
|
|
36
|
-
<TdRange item={range} />
|
|
37
|
-
</span>
|
|
38
|
-
</td>
|
|
39
|
-
)}
|
|
40
|
-
|
|
41
|
-
{Object.entries(item).map(([key, value]) =>
|
|
42
|
-
key === 'id' || key === 'isDeleted' ? null : (
|
|
43
|
-
<td
|
|
44
|
-
key={key}
|
|
45
|
-
className={cn('cards-table__body-item', {
|
|
46
|
-
'cards-table__accordion': value.type === 'accordion'
|
|
47
|
-
})}
|
|
48
|
-
>
|
|
49
|
-
<TdCell
|
|
50
|
-
onActionClick={onActionClick}
|
|
51
|
-
changePriority={changePriority}
|
|
52
|
-
cardLength={cardLength}
|
|
53
|
-
rowIndex={rowIndex}
|
|
54
|
-
rowItem={item}
|
|
55
|
-
type={key}
|
|
56
|
-
item={value}
|
|
57
|
-
onChange={newValue => handleChange(newValue, key)}
|
|
58
|
-
getAdviceWeight={getAdviceWeight}
|
|
59
|
-
isDeleted={isDeleted}
|
|
60
|
-
/>
|
|
61
|
-
</td>
|
|
62
|
-
)
|
|
63
|
-
)}
|
|
64
|
-
</tr>
|
|
65
|
-
|
|
66
|
-
{type && colSpan ? (
|
|
67
|
-
<tr>
|
|
68
|
-
<td />
|
|
69
|
-
<td colSpan={colSpan}>
|
|
70
|
-
<span className="cards-table__title-select-lender-btn" onClick={() => setIsOpen(true)}>
|
|
71
|
-
Select Lender
|
|
72
|
-
</span>
|
|
73
|
-
|
|
74
|
-
<Modal closeModal={() => setIsOpen(false)} isOpen={isOpen} title="Choose Lender" size="420">
|
|
75
|
-
test
|
|
76
|
-
</Modal>
|
|
77
|
-
</td>
|
|
78
|
-
</tr>
|
|
79
|
-
) : null}
|
|
80
|
-
</>
|
|
81
|
-
);
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
export default TdRow;
|