intelicoreact 0.0.95 → 0.0.98

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 (166) hide show
  1. package/dist/Atomic/FormElements/Input/Input.js +3 -1
  2. package/dist/Atomic/FormElements/Input/Input.stories.js +5 -1
  3. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +4 -4
  4. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +179 -70
  5. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +23 -23
  6. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +87 -12
  7. package/dist/Atomic/FormElements/Spinner/Spinner.js +21 -0
  8. package/{src/Atomic/FormElements/Dropdown/components/DropdownLoader.scss → dist/Atomic/FormElements/Spinner/Spinner.scss} +8 -5
  9. package/dist/Atomic/FormElements/Spinner/Spinner.stories.js +34 -0
  10. package/dist/Functions/inputExecutor.js +7 -1
  11. package/{src → dist}/Functions/useMouseUpOutside.js +13 -4
  12. package/dist/Functions/useToggle.js +40 -0
  13. package/dist/Functions/utils.js +66 -0
  14. package/dist/Molecular/Datepicker/Datepicker.js +451 -0
  15. package/{src → dist}/Molecular/Datepicker/Datepicker.scss +0 -0
  16. package/dist/Molecular/Datepicker/Datepicker.stories.js +44 -0
  17. package/dist/Molecular/Datepicker/components/Calendar.js +156 -0
  18. package/dist/Molecular/FormElements/FormElement.js +40 -0
  19. package/{src → dist}/Molecular/FormElements/FormElement.scss +0 -0
  20. package/dist/Molecular/FormElements/FormElement.stories.js +73 -0
  21. package/dist/index.js +15 -0
  22. package/{src → dist}/scss/_fonts.scss +0 -0
  23. package/{src → dist}/scss/_vars.scss +0 -0
  24. package/{src → dist}/scss/main.scss +0 -0
  25. package/package.json +3 -2
  26. package/.babelrc +0 -12
  27. package/.eslintignore +0 -10
  28. package/.eslintrc.json +0 -93
  29. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +0 -28
  30. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +0 -107
  31. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +0 -26
  32. package/src/Atomic/FormElements/DateTime/DateTime.js +0 -18
  33. package/src/Atomic/FormElements/DateTime/DateTime.scss +0 -12
  34. package/src/Atomic/FormElements/DateTime/DateTime.stories.js +0 -17
  35. package/src/Atomic/FormElements/DoubleString/DoubleString.js +0 -13
  36. package/src/Atomic/FormElements/DoubleString/DoubleString.scss +0 -20
  37. package/src/Atomic/FormElements/DoubleString/DoubleString.stories.js +0 -18
  38. package/src/Atomic/FormElements/Dropdown/Dropdown.js +0 -178
  39. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +0 -192
  40. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +0 -87
  41. package/src/Atomic/FormElements/Dropdown/components/DropdownLoader.js +0 -17
  42. package/src/Atomic/FormElements/Header/Header.js +0 -67
  43. package/src/Atomic/FormElements/Header/Header.scss +0 -93
  44. package/src/Atomic/FormElements/Header/Header.stories.js +0 -30
  45. package/src/Atomic/FormElements/Input/Input.js +0 -186
  46. package/src/Atomic/FormElements/Input/Input.scss +0 -136
  47. package/src/Atomic/FormElements/Input/Input.stories.js +0 -94
  48. package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +0 -104
  49. package/src/Atomic/FormElements/InputCalendar/InputCalendar.scss +0 -23
  50. package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +0 -39
  51. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +0 -254
  52. package/src/Atomic/FormElements/InputDateRange/InputDateRange.scss +0 -624
  53. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +0 -65
  54. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +0 -432
  55. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +0 -126
  56. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +0 -24
  57. package/src/Atomic/FormElements/InputDateRange/dependencies.js +0 -161
  58. package/src/Atomic/FormElements/InputsRow/InputsRow.js +0 -112
  59. package/src/Atomic/FormElements/InputsRow/InputsRow.scss +0 -45
  60. package/src/Atomic/FormElements/InputsRow/InputsRow.stories.js +0 -34
  61. package/src/Atomic/FormElements/Label/Label.js +0 -13
  62. package/src/Atomic/FormElements/Label/Label.scss +0 -20
  63. package/src/Atomic/FormElements/Label/Label.stories.js +0 -23
  64. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.js +0 -315
  65. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +0 -120
  66. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +0 -30
  67. package/src/Atomic/FormElements/Modal/Modal.js +0 -69
  68. package/src/Atomic/FormElements/Modal/Modal.scss +0 -230
  69. package/src/Atomic/FormElements/Modal/Modal.stories.js +0 -116
  70. package/src/Atomic/FormElements/MultiSelect/MultiSelect.js +0 -39
  71. package/src/Atomic/FormElements/MultiSelect/MultiSelect.scss +0 -16
  72. package/src/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +0 -28
  73. package/src/Atomic/FormElements/NavLine/NavLine.js +0 -67
  74. package/src/Atomic/FormElements/NavLine/NavLine.scss +0 -108
  75. package/src/Atomic/FormElements/NavLine/NavLine.stories.js +0 -108
  76. package/src/Atomic/FormElements/NumericInput/NumericInput.js +0 -263
  77. package/src/Atomic/FormElements/NumericInput/NumericInput.scss +0 -135
  78. package/src/Atomic/FormElements/NumericInput/NumericInput.stories.js +0 -78
  79. package/src/Atomic/FormElements/RadioInput/RadioInput.js +0 -28
  80. package/src/Atomic/FormElements/RadioInput/RadioInput.scss +0 -63
  81. package/src/Atomic/FormElements/RadioInput/RadioInput.stories.js +0 -23
  82. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +0 -152
  83. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +0 -101
  84. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +0 -54
  85. package/src/Atomic/FormElements/RangeInputs/RangeInputs.js +0 -41
  86. package/src/Atomic/FormElements/RangeInputs/RangeInputs.scss +0 -20
  87. package/src/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +0 -23
  88. package/src/Atomic/FormElements/Switcher/Switcher.js +0 -24
  89. package/src/Atomic/FormElements/Switcher/Switcher.scss +0 -56
  90. package/src/Atomic/FormElements/Switcher/Switcher.stories.js +0 -22
  91. package/src/Atomic/FormElements/Table/Partials/TdCell.js +0 -47
  92. package/src/Atomic/FormElements/Table/Partials/TdHeader.js +0 -33
  93. package/src/Atomic/FormElements/Table/Partials/TdRow.js +0 -84
  94. package/src/Atomic/FormElements/Table/Partials/TdTitle.js +0 -38
  95. package/src/Atomic/FormElements/Table/Table.js +0 -50
  96. package/src/Atomic/FormElements/Table/Table.scss +0 -78
  97. package/src/Atomic/FormElements/Table/Table.stories.js +0 -102
  98. package/src/Atomic/FormElements/Table/TdTypes/TdActions.js +0 -59
  99. package/src/Atomic/FormElements/Table/TdTypes/TdPriority.js +0 -20
  100. package/src/Atomic/FormElements/Table/TdTypes/TdRange.js +0 -15
  101. package/src/Atomic/FormElements/Table/TdTypes/TdTypes.scss +0 -35
  102. package/src/Atomic/FormElements/Table/TdTypes/TdWeight.js +0 -43
  103. package/src/Atomic/FormElements/Tag/Tag.js +0 -24
  104. package/src/Atomic/FormElements/Tag/Tag.scss +0 -38
  105. package/src/Atomic/FormElements/Tag/Tag.stories.js +0 -30
  106. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.js +0 -108
  107. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +0 -131
  108. package/src/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +0 -44
  109. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.js +0 -18
  110. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +0 -50
  111. package/src/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +0 -21
  112. package/src/Atomic/FormElements/Textarea/Textarea.js +0 -19
  113. package/src/Atomic/FormElements/Textarea/Textarea.scss +0 -35
  114. package/src/Atomic/FormElements/Textarea/Textarea.stories.js +0 -24
  115. package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +0 -66
  116. package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.scss +0 -10
  117. package/src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +0 -57
  118. package/src/Atomic/FormElements/TimeRange/TimeRange.js +0 -55
  119. package/src/Atomic/FormElements/TimeRange/TimeRange.scss +0 -17
  120. package/src/Atomic/FormElements/TimeRange/TimeRange.stories.js +0 -21
  121. package/src/Atomic/MainMenu/MainMenu.js +0 -112
  122. package/src/Atomic/MainMenu/MainMenu.scss +0 -176
  123. package/src/Atomic/MainMenu/MainMenu.stories.js +0 -91
  124. package/src/Atomic/UI/Accordion/Accordion.js +0 -45
  125. package/src/Atomic/UI/Accordion/Accordion.scss +0 -73
  126. package/src/Atomic/UI/Accordion/Accordion.stories.js +0 -78
  127. package/src/Atomic/UI/Accordion/AccordionItem.js +0 -92
  128. package/src/Atomic/UI/AdvancedTag/AdvTag.js +0 -81
  129. package/src/Atomic/UI/AdvancedTag/AdvancedTags.js +0 -32
  130. package/src/Atomic/UI/AdvancedTag/AdvancedTags.scss +0 -72
  131. package/src/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +0 -49
  132. package/src/Atomic/UI/Alert/Alert.js +0 -23
  133. package/src/Atomic/UI/Alert/Alert.scss +0 -65
  134. package/src/Atomic/UI/Alert/Alert.stories.js +0 -34
  135. package/src/Atomic/UI/Arrow/Arrow.js +0 -41
  136. package/src/Atomic/UI/Arrow/Arrow.scss +0 -19
  137. package/src/Atomic/UI/Arrow/Arrow.stories.js +0 -32
  138. package/src/Atomic/UI/Button/Button.js +0 -17
  139. package/src/Atomic/UI/Button/Button.scss +0 -108
  140. package/src/Atomic/UI/Button/Button.stories.js +0 -49
  141. package/src/Atomic/UI/Calendar/Calendar.js +0 -190
  142. package/src/Atomic/UI/Calendar/Calendar.scss +0 -607
  143. package/src/Atomic/UI/Calendar/Calendar.stories.js +0 -26
  144. package/src/Atomic/UI/Header/partials/default_ava.png +0 -0
  145. package/src/Atomic/UI/Hint/Hint.js +0 -34
  146. package/src/Atomic/UI/Hint/Hint.scss +0 -92
  147. package/src/Atomic/UI/Hint/Hint.stories.js +0 -34
  148. package/src/Atomic/UI/Price/Price.js +0 -20
  149. package/src/Atomic/UI/Price/Price.stories.js +0 -30
  150. package/src/Atomic/UI/Status/Status.js +0 -38
  151. package/src/Atomic/UI/Status/Status.scss +0 -69
  152. package/src/Atomic/UI/Status/Status.stories.js +0 -47
  153. package/src/Constants/index.constants.js +0 -41
  154. package/src/Functions/customEventListener.js +0 -58
  155. package/src/Functions/inputExecutor.js +0 -53
  156. package/src/Functions/schemas.js +0 -31
  157. package/src/Functions/useClickOutside.js +0 -15
  158. package/src/Functions/useToggle.js +0 -17
  159. package/src/Functions/utils.js +0 -51
  160. package/src/Molecular/Datepicker/Datepicker.js +0 -346
  161. package/src/Molecular/Datepicker/Datepicker.stories.js +0 -27
  162. package/src/Molecular/Datepicker/components/Calendar.js +0 -118
  163. package/src/Molecular/FormElements/FormElement.js +0 -18
  164. package/src/Molecular/FormElements/FormElement.stories.js +0 -59
  165. package/src/index.js +0 -3
  166. 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;