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,17 +0,0 @@
1
- import React from 'react';
2
- import DateTime from './DateTime';
3
-
4
- global.lng = 'en';
5
-
6
- export default {
7
- title: 'Form Elements/DateTime',
8
- component: DateTime
9
- };
10
-
11
- const Template = args => <DateTime {...args} />;
12
-
13
- export const DateTimeTemplate = Template.bind({});
14
-
15
- DateTimeTemplate.args = {
16
- item: '2021-05-12T23:54:25+0300'
17
- };
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import cn from 'classnames';
3
-
4
- import './DoubleString.scss';
5
-
6
- const DoubleString = ({ value, description, className }) => (
7
- <div className={cn(className, 'double-string')}>
8
- <span className="double-string--value">{value}</span>
9
- <span className="double-string--description">{description}</span>
10
- </div>
11
- );
12
-
13
- export default DoubleString;
@@ -1,20 +0,0 @@
1
- .double-string {
2
- display: flex;
3
- align-items: flex-start;
4
- justify-content: center;
5
- flex-direction: column;
6
-
7
- &--value {
8
- font-size: 13px;
9
- color: #1e1e2d;
10
- max-width: 250px;
11
- overflow: hidden;
12
- white-space: nowrap;
13
- text-overflow: ellipsis;
14
- }
15
-
16
- &--description {
17
- font-size: 13px;
18
- color: #9aa0b9;
19
- }
20
- }
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import DoubleString from './DoubleString';
3
-
4
- global.lng = 'en';
5
-
6
- export default {
7
- title: 'DoubleString',
8
- component: DoubleString
9
- };
10
-
11
- const Template = args => <DoubleString {...args} />;
12
-
13
- export const DoubleStringTemplate = Template.bind({});
14
-
15
- DoubleStringTemplate.args = {
16
- value: 'Value',
17
- description: 'Description'
18
- };
@@ -1,178 +0,0 @@
1
- import React, { useState, useRef, useEffect, useCallback } from 'react';
2
- import cn from 'classnames';
3
- import { Check, ChevronDown, ChevronUp } from 'react-feather';
4
-
5
- import DropdownLoader from './components/DropdownLoader';
6
-
7
- import './Dropdown.scss';
8
-
9
- const RC = 'dropdown';
10
-
11
- const Dropdown = ({ options = [], value, error, disabled, onChange, placeholder, className, isSearchable, entity, scrollReactionObj, isListTop }) => {
12
- const [isOpen, setIsOpen] = useState(false);
13
- const [searchValue, setSearchValue] = useState();
14
- const dropdownRef = useRef(null);
15
- const dropdownListRef = useRef(null);
16
-
17
- if (!options) return null;
18
- const filteredGroups = options
19
- .filter((item) => item.items?.length)
20
- .map((item) => ({ ...item, items: item.items.filter((el) => el?.label?.toLowerCase().includes(searchValue?.toLowerCase() || '')) }))
21
- .filter((item) => item.items?.length > 0);
22
-
23
- const filteredItems = options
24
- .filter((item) => !item.items?.length)
25
- .filter((item) => item?.label?.toLowerCase().includes(searchValue?.toLowerCase() || ''));
26
-
27
- const filteredOptions = [...filteredItems, ...filteredGroups];
28
-
29
- const modalBtnTrigger = entity && entity !== '' && typeof entity === 'string';
30
- const onChangeHandler = (item) => {
31
- setIsOpen(false);
32
- setSearchValue(null);
33
- onChange(item.value);
34
- };
35
- // decorator
36
- const getDepends = (getDependsTrigger) => {
37
- const newOnChange = (e) => {
38
- if (e.value === 'open_modal') {
39
- onChange('open_modal');
40
- } else {
41
- onChangeHandler(e);
42
- }
43
- };
44
-
45
- // add pseudo option
46
- const newOptions = [
47
- {
48
- label: `New ${entity}`,
49
- value: 'open_modal',
50
- className: 'dropdown__list-item--modal',
51
- },
52
- ...filteredOptions,
53
- ];
54
-
55
- return {
56
- onChange: (changeItem) => (getDependsTrigger ? newOnChange(changeItem) : onChangeHandler(changeItem)),
57
- options: getDependsTrigger ? newOptions : options,
58
- };
59
- };
60
-
61
- const handleClickOutside = (event) => {
62
- if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
63
- setIsOpen(false);
64
- setSearchValue(null);
65
- }
66
- };
67
-
68
- const onSearchHandler = (name) => {
69
- setSearchValue(name);
70
- };
71
-
72
- const hightlightedText = (text) =>
73
- searchValue ? text?.replace(new RegExp(searchValue, 'i'), (match) => `<span class="bg--yellow">${match}</span>`) : text;
74
-
75
- const depend = getDepends(modalBtnTrigger);
76
-
77
- const getMarkupForElement = (item) =>
78
- item.label.toLowerCase().includes(searchValue?.toLowerCase() || '') ? (
79
- <button
80
- key={item.value}
81
- onClick={() => depend.onChange(item)}
82
- className={cn(`${RC}__list-item`, { [`${RC}__list-item_active`]: item.value === value }, { [`${RC}__list-item_disabled`]: item.disabled })}
83
- >
84
- <span className={cn(`${RC}__active-icon`, { [`${RC}__active-icon_active`]: item.value === value })}>
85
- <Check />
86
- </span>
87
- <div className={item.className || ''} dangerouslySetInnerHTML={{ __html: hightlightedText(item.label) }} />
88
- </button>
89
- ) : null;
90
-
91
- const filteredOptionList = (filteredOption) =>
92
- filteredOption.items?.length > 0 ? (
93
- <div key={filteredOption.value} className={`${RC}-group`}>
94
- <div className={`${RC}-group__name`}>{filteredOption.label}</div>
95
- {filteredOption.items.map((el) => getMarkupForElement(el))}
96
- </div>
97
- ) : null;
98
-
99
- const selectedLabel =
100
- options.find((el) => el.value === value)?.label ||
101
- options.reduce((acc, item) => acc || item.items?.find((el) => el.value === value)?.label, null);
102
-
103
- const doScrollCallback = useCallback(
104
- (e) => {
105
- const { callback, isWithAnyScrolling } = scrollReactionObj;
106
- if (callback && typeof callback === 'function') {
107
- if (isWithAnyScrolling) callback(e);
108
- else if (e.target.clientHeight + e.target.scrollTop >= e.target.scrollHeight) callback(e);
109
- }
110
- },
111
- [filteredOptions]
112
- );
113
-
114
- useEffect(() => {
115
- if (!value) setSearchValue(null);
116
- document.addEventListener('click', handleClickOutside, true);
117
- return () => document.removeEventListener('click', handleClickOutside, true);
118
- }, [value]);
119
-
120
- useEffect(() => {
121
- if (scrollReactionObj && typeof scrollReactionObj === 'object' && isOpen && dropdownListRef && dropdownListRef.current) {
122
- dropdownListRef.current.addEventListener('scroll', doScrollCallback);
123
- }
124
- return () => {
125
- if (scrollReactionObj && typeof scrollReactionObj === 'object') removeEventListener('scroll', doScrollCallback);
126
- };
127
- }, [isOpen, dropdownListRef]);
128
-
129
- return (
130
- <div
131
- className={cn(RC, className, {
132
- disabled: disabled,
133
- })}
134
- ref={dropdownRef}
135
- >
136
- <button
137
- className={`${RC}__trigger input__wrap ${!value ? 'placeholder' : ''} ${error ? 'error' : ''}`}
138
- onClick={() => (!isSearchable ? setIsOpen(!isOpen) : null)}
139
- >
140
- {isSearchable ? (
141
- <input
142
- className={`${RC}__input`}
143
- value={searchValue || selectedLabel || ''}
144
- onChange={(e) => {
145
- onSearchHandler(e.target.value);
146
- }}
147
- placeholder={placeholder}
148
- onFocus={(e) => {
149
- e.target.select();
150
- setIsOpen(true);
151
- }}
152
- />
153
- ) : (
154
- <span className="text">{selectedLabel || placeholder}</span>
155
- )}
156
- <span className={cn(`${RC}__arrow`, { [`${RC}__arrow_active`]: isOpen })} onClick={() => setIsOpen(!isOpen)}>
157
- {isOpen ? <ChevronUp /> : <ChevronDown />}
158
- </span>
159
- </button>
160
-
161
- {isOpen && filteredOptions.length > 0 && (
162
- <div
163
- className={cn(`${RC}__list`, {
164
- [`${RC}__list-top`]: isListTop,
165
- })}
166
- ref={dropdownListRef}
167
- >
168
- {depend.options.map((filteredOption) =>
169
- filteredOption.items?.length ? filteredOptionList(filteredOption) : getMarkupForElement(filteredOption)
170
- )}
171
- {disabled && isOpen && <DropdownLoader />}
172
- </div>
173
- )}
174
- </div>
175
- );
176
- };
177
-
178
- export default Dropdown;
@@ -1,192 +0,0 @@
1
- @import "../../../scss/vars";
2
-
3
- .dropdown {
4
- display: inline-flex;
5
- flex-direction: column;
6
- position: relative;
7
- width: 100%;
8
- border-radius: 7px;
9
-
10
- &__trigger {
11
- background: #ffffff;
12
- border: 1px solid #e2e5ec;
13
- box-sizing: border-box;
14
- border-radius: 3px;
15
- width: 100%;
16
- height: 28px;
17
- align-items: center;
18
- cursor: pointer;
19
- padding-left: 9px;
20
- padding-right: 16px;
21
- font-weight: 400;
22
- overflow: hidden;
23
- white-space: nowrap;
24
- text-overflow: ellipsis;
25
- display: block;
26
- position: relative;
27
- text-align: left;
28
-
29
- &.error {
30
- border-color: $color--secondary;
31
- }
32
- &.placeholder .text {
33
- opacity: 0.7;
34
- }
35
- }
36
-
37
- &__input {
38
- width: 100%;
39
- background: none;
40
- border: none;
41
- padding: 0 15px 0 0;
42
- height: 16px;
43
- text-overflow: ellipsis;
44
- font-weight: 400;
45
- }
46
-
47
- &__list {
48
- position: relative;
49
- background: #ffffff;
50
- border: 1px solid #e2e5ec;
51
- box-shadow: 0 5px 20px rgb(0 0 0 / 15%);
52
- min-width: 100%;
53
- margin-top: 4px;
54
- padding: 5px 0;
55
- max-height: 320px;
56
- overflow-y: auto;
57
- position: absolute;
58
- top: 100%;
59
- z-index: 6;
60
-
61
- &::-webkit-scrollbar {
62
- width: 4px;
63
- }
64
-
65
- &::-webkit-scrollbar-track {
66
- background: transparent;
67
- }
68
-
69
- &::-webkit-scrollbar-thumb {
70
- background: $color--gray--dark;
71
- border-radius: 4px;
72
- }
73
-
74
- &-top {
75
- bottom: calc(100% + 4px);
76
- top: auto;
77
- box-shadow: 0 -3px 10px rgb(0 0 0 / 15%);
78
- }
79
-
80
- &-item {
81
- display: flex;
82
- align-items: center;
83
- //justify-content: center;
84
- border: none;
85
- background: transparent;
86
- padding: 0 20px 0 30px;
87
- position: relative;
88
- cursor: pointer;
89
- color: $color--dark;
90
- font-size: 13px;
91
- font-weight: 400;
92
- line-height: 24px;
93
- width: 100%;
94
- height: 24px;
95
- white-space: nowrap;
96
- overflow-x: hidden;
97
-
98
- &--modal {
99
- color: #1f7499;
100
- font-size: 14px;
101
- line-height: 20px;
102
- letter-spacing: 0.2px;
103
- position: relative;
104
- &:after {
105
- content: "";
106
- position: absolute;
107
- bottom: -2px;
108
- height: 1px;
109
- width: 300%;
110
- transform: translateX(-50%);
111
- background-color: #e8e9ec;
112
- }
113
- }
114
- &:hover,
115
- &_active {
116
- background: $color--gray--gentle;
117
- }
118
- &_disabled {
119
- opacity: 0.3;
120
- pointer-events: none;
121
- }
122
- }
123
-
124
- &--with-label {
125
- top: 45px;
126
- }
127
- }
128
-
129
- &__arrow {
130
- display: flex;
131
- align-items: center;
132
- width: 16px;
133
- height: 16px;
134
- position: absolute;
135
- right: 4px;
136
- top: 50%;
137
- transform: translate(0, -50%);
138
-
139
- & svg {
140
- width: 16px;
141
- height: 16px;
142
- }
143
- }
144
-
145
- &__active-icon {
146
- align-items: center;
147
- position: absolute;
148
- left: 9px;
149
- top: 0;
150
- bottom: 0;
151
- margin: auto;
152
- display: none;
153
-
154
- &_active {
155
- display: flex;
156
-
157
- & svg {
158
- width: 16px;
159
- height: 16px;
160
- }
161
- }
162
- }
163
-
164
- &-group {
165
- margin-top: 10px;
166
- &__name {
167
- font-size: 10px;
168
- color: $color--gray--dark;
169
- text-transform: uppercase;
170
- margin-left: 17px;
171
- margin-bottom: 6px;
172
- }
173
- }
174
-
175
- &-label {
176
- margin-bottom: 5px;
177
- }
178
-
179
- &__error {
180
- top: 50px;
181
- left: 2px;
182
- position: absolute;
183
- display: block;
184
- font-size: 10px;
185
- color: $color--secondary;
186
- }
187
-
188
- &.disabled {
189
- pointer-events: none;
190
- opacity: 0.5;
191
- }
192
- }
@@ -1,87 +0,0 @@
1
- import React, { useState } from 'react';
2
- import Dropdown from './Dropdown';
3
-
4
- global.lng = 'en';
5
- export default {
6
- title: 'Dropdown',
7
- component: Dropdown,
8
- argTypes: {
9
- className: {
10
- description: 'string',
11
- },
12
- value: { description: 'string - current option' },
13
- isSearchable: {
14
- description: 'boolean - enable search',
15
- },
16
- onChange: { description: 'callback return selected value' },
17
- entity: {
18
- description: 'string',
19
- },
20
- },
21
- };
22
-
23
- const blockStyles = {
24
- display: 'flex',
25
- flexFlow: 'row no-wrap',
26
- alignItems: 'center',
27
- };
28
-
29
- const buttonStyles = {
30
- border: 'solid 1px #000',
31
- padding: '5px',
32
- margin: '0 0 0 50px',
33
- };
34
-
35
- const Template = (args) => {
36
- const [value, setValue] = useState(args.value);
37
- const [disabled, setDisabled] = useState(false);
38
- return (
39
- <div style={blockStyles}>
40
- <div key="dropdown" style={{ width: 200 }}>
41
- <Dropdown {...args} value={value} onChange={setValue} disabled={disabled} scrollReactionObj={{ callback: (e) => setDisabled(true) }} />
42
- </div>
43
- <button key="reset" style={buttonStyles} className="mt10" onClick={() => setValue('')}>
44
- Reset
45
- </button>
46
-
47
- <button key="enable/disable" style={buttonStyles} className="mt10" onClick={() => setDisabled(!disabled)}>
48
- {disabled ? 'enable' : 'disable'}
49
- </button>
50
- </div>
51
- );
52
- };
53
-
54
- export const DropdownTemplate = Template.bind({});
55
-
56
- DropdownTemplate.args = {
57
- // isListTop: true,
58
- entity: 'entity',
59
- value: 'drop6',
60
- placeholder: 'Placeholder',
61
- isSearchable: true,
62
- options: [
63
- { label: 'Dropdown2', value: 'drop2' },
64
- { label: 'Dropdown3', value: 'drop3', disabled: true },
65
- { label: 'Dropdown4', value: 'drop4' },
66
- { label: 'Dropdown1', value: 'drop1', className: 'status status--approved' },
67
- { label: 'Dropdown5', value: 'drop5' },
68
- { label: 'Dropdown6', value: 'drop6' },
69
- {
70
- label: 'Some Group',
71
- items: [
72
- { label: 'Group 11', value: 'group11' },
73
- { label: 'Group 12', value: 'group12', disabled: true },
74
- { label: 'Group 13', value: 'group13' },
75
- ],
76
- },
77
- {
78
- label: 'Some Group 2',
79
- items: [
80
- { label: 'Group 21', value: 'group21' },
81
- { label: 'Group 22', value: 'group22' },
82
- { label: 'Group 23', value: 'group23' },
83
- ],
84
- },
85
- ],
86
- error: '',
87
- };
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import './DropdownLoader.scss';
3
-
4
- const DropdownLoader = function ({ variant }) {
5
- return (
6
- <div className="dropdown-loader-box j5">
7
- <div className={`lds-ring${variant === 'little' ? ' lds-ring_little' : ''}`}>
8
- <div />
9
- <div />
10
- <div />
11
- <div />
12
- </div>
13
- </div>
14
- );
15
- };
16
-
17
- export default DropdownLoader;
@@ -1,67 +0,0 @@
1
- import React, { useRef, useState } from 'react';
2
- import { ChevronRight, Bell, Power } from 'react-feather';
3
- import { GoPrimitiveDot } from 'react-icons/go';
4
- import cn from 'classnames';
5
-
6
- import { logout, useOutsideToggle } from '../../../Functions/utils';
7
- import Hint from '../../UI/Hint/Hint';
8
-
9
- import './Header.scss';
10
-
11
- const Header = ({ name = 'John', surname = 'Silver', status = 'admin', img = '', hintLabel = 'Help', hintText = 'Hint text' }) => {
12
- const [isOpen, setIsOpen] = useState(false);
13
-
14
- const userMenu = useRef(null);
15
-
16
- const handle = {
17
- toggleMenu: () => {
18
- if (!isOpen) setIsOpen(!isOpen);
19
- },
20
- closeMenu: () => {
21
- setTimeout(() => setIsOpen(false), 50);
22
- },
23
- logout: () => {
24
- handle.toggleMenu();
25
- logout();
26
- }
27
- };
28
-
29
- useOutsideToggle(userMenu, handle.closeMenu);
30
-
31
- return (
32
- <header className={cn('header', className)}>
33
- <div className="df">
34
- <Hint side="bottom" hint={hintText} className="header__hint" label={hintLabel} iconOutline />
35
- </div>
36
-
37
- <div className="j6 user-menu">
38
- <div onClick={() => {}} className="header--bell">
39
- <Bell className="header--bell-icon" />
40
- <div className="header--bell-notification-icon" />
41
- </div>
42
-
43
- <div className="header--user-ava">
44
- <img src={img} alt="" />
45
- </div>
46
-
47
- <div className="dfc mr10">
48
- <span className="header--user-name">
49
- {name} {surname}
50
- </span>
51
- <span className="header--user-status">{status}</span>
52
- </div>
53
-
54
- <ChevronRight onClick={handle.toggleMenu} className={cn('accordion--title-chevron', { 'accordion--title-chevron-open': isOpen })} />
55
- {isOpen && (
56
- <div className="user-menu__dropdown" ref={userMenu}>
57
- <div className="user-menu__item" onClick={handle.logout}>
58
- <Power className="mr10" /> Logout
59
- </div>
60
- </div>
61
- )}
62
- </div>
63
- </header>
64
- );
65
- };
66
-
67
- export default Header;
@@ -1,93 +0,0 @@
1
- .header {
2
- display: flex;
3
- align-items: center;
4
- justify-content: space-between;
5
- padding: 11.5px 24px;
6
- box-shadow: 0 4px 16px rgba(31, 116, 153, 0.15);
7
- box-sizing: border-box;
8
-
9
- &--user-name {
10
- font-size: 12px;
11
- text-overflow: ellipsis;
12
- overflow: hidden;
13
- white-space: nowrap;
14
- max-width: 150px;
15
- }
16
-
17
- &--user-status {
18
- font-size: 10px;
19
- color: #9aa0b9;
20
- }
21
-
22
- &--user-ava {
23
- overflow: hidden;
24
- text-align: center;
25
- width: 30px;
26
- height: 30px;
27
- border-radius: 20px;
28
- margin-right: 8px;
29
-
30
- img {
31
- width: 30px;
32
- }
33
- }
34
-
35
- &--chevron-icon:hover {
36
- cursor: pointer;
37
- }
38
-
39
- &--bell {
40
- display: flex;
41
- position: relative;
42
- margin-right: 22px;
43
- cursor: pointer;
44
- width: 16px;
45
- height: 16px;
46
- max-width: 16px;
47
- min-width: 16px;
48
-
49
- &-notification-icon {
50
- content: "";
51
- width: 7px;
52
- height: 7px;
53
- border-radius: 15px;
54
- position: absolute;
55
- top: -3px;
56
- right: -6px;
57
- background-color: #f06d8d;
58
- }
59
- }
60
-
61
- &__hint {
62
- .hint__button {
63
- color: #6b81dd;
64
- .hint__label {
65
- margin-left: 5px;
66
- }
67
- }
68
- }
69
- }
70
-
71
- .user-menu__dropdown {
72
- position: absolute;
73
- width: 100%;
74
- top: 100%;
75
- background: #fff;
76
- border: 1px solid #e2e5ec;
77
- box-shadow: 0 5px 20px rgb(0 0 0 / 15%);
78
- padding: 10px 0;
79
- z-index: 50;
80
- }
81
-
82
- .user-menu__item {
83
- padding: 5px 15px;
84
- cursor: pointer;
85
-
86
- &:hover {
87
- background: #e2e5ec;
88
- }
89
- }
90
-
91
- .user-menu {
92
- position: relative;
93
- }