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,131 +0,0 @@
1
- @import "../../../scss/vars";
2
-
3
- .tags-dropdown {
4
- display: inline-flex;
5
- flex-direction: column;
6
- position: relative;
7
- width: 100%;
8
-
9
- &__trigger {
10
- background: #ffffff;
11
- border: 1px solid #e2e5ec;
12
- box-sizing: border-box;
13
- border-radius: 3px;
14
- padding-left: 5px;
15
- height: 28px;
16
- display: flex;
17
- align-items: center;
18
- cursor: pointer;
19
- }
20
-
21
- &__btn {
22
- display: flex;
23
- align-items: center;
24
- width: 100%;
25
- }
26
-
27
- &__input {
28
- width: 100%;
29
- background: none;
30
- border: none;
31
- padding-right: 2px;
32
- height: 16px;
33
- text-overflow: ellipsis;
34
- overflow: hidden;
35
- }
36
-
37
- &__list {
38
- position: absolute;
39
- min-width: 100%;
40
- top: 100%;
41
- background: #ffffff;
42
- border: 1px solid #e2e5ec;
43
- box-shadow: 0px 4px 25px rgba(0, 0, 0, 0.25);
44
- width: 148px;
45
- margin-top: 4px;
46
- padding: 8px 0;
47
- max-height: 320px;
48
- overflow-y: auto;
49
- z-index: 2;
50
- text-align: left;
51
- &::-webkit-scrollbar {
52
- width: 4px;
53
- }
54
-
55
- &::-webkit-scrollbar-track {
56
- background: transparent;
57
- }
58
-
59
- &::-webkit-scrollbar-thumb {
60
- background: $color--gray--dark;
61
- border-radius: 4px;
62
- }
63
-
64
- &-item {
65
- display: flex;
66
- align-items: center;
67
- justify-content: flex-start;
68
- padding-left: 35px;
69
- position: relative;
70
- cursor: pointer;
71
- color: $color--dark;
72
- font-size: 13px;
73
- font-weight: 400;
74
- line-height: 24px;
75
- width: 100%;
76
- height: 24px;
77
-
78
- &:hover,
79
- &_active {
80
- background: $color--gray--gentle;
81
- }
82
-
83
- &_disabled {
84
- opacity: 0.3;
85
- pointer-events: none;
86
- }
87
- }
88
- }
89
-
90
- &__arrow {
91
- display: flex;
92
- align-items: center;
93
- margin-right: 5px;
94
-
95
- &_active {
96
- transform: rotate(180deg);
97
- }
98
-
99
- svg {
100
- width: 17px;
101
- height: 17px;
102
- }
103
- }
104
-
105
- &__active-icon {
106
- align-items: center;
107
- position: absolute;
108
- left: 12px;
109
- top: 0;
110
- bottom: 0;
111
- margin: auto;
112
- display: none;
113
- &_active {
114
- display: flex;
115
- }
116
- }
117
-
118
- &-group {
119
- margin-top: 6px;
120
- &__name {
121
- font-size: 10px;
122
- color: $color--gray--dark;
123
- text-transform: uppercase;
124
- margin-left: 17px;
125
- }
126
- }
127
-
128
- &-label {
129
- margin-bottom: 5px;
130
- }
131
- }
@@ -1,44 +0,0 @@
1
- import React, { useState } from 'react';
2
- import TagsDropdown from './TagsDropdown';
3
-
4
- global.lng = 'en';
5
- export default {
6
- title: 'TagsDropdown',
7
- component: TagsDropdown
8
- };
9
-
10
- const Template = args => {
11
- const { options } = args;
12
-
13
- const [value, setValue] = useState([]);
14
- return <TagsDropdown options={options} chosenOptions={value} onChange={setValue} />;
15
- };
16
-
17
- export const TagsDropdownTemplate = Template.bind({});
18
-
19
- TagsDropdownTemplate.args = {
20
- options: [
21
- { id: 1, title: 'Tags Dropdown1', value: 'drop1', disabled: false },
22
- { id: 2, title: 'Tags Dropdown2', value: 'drop2', disabled: false },
23
- { id: 3, title: 'Tags Dropdown3', value: 'drop3', disabled: true },
24
- { id: 4, title: 'Tags Dropdown4', value: 'drop4', disabled: false },
25
- { id: 5, title: 'Tags Dropdown5', value: 'drop5', disabled: false },
26
- { id: 6, title: 'Tags Dropdown6', value: 'drop6', disabled: false },
27
- {
28
- groupName: 'Some Group',
29
- list: [
30
- { id: 7, title: 'Group 11', value: 'group11', disabled: false },
31
- { id: 8, title: 'Group 12', value: 'group12', disabled: true },
32
- { id: 9, title: 'Group 13', value: 'group13', disabled: false }
33
- ]
34
- },
35
- {
36
- groupName: 'Some Group 2',
37
- list: [
38
- { id: 10, title: 'Group 21', value: 'group21', disabled: false },
39
- { id: 11, title: 'Group 22', value: 'group22', disabled: false },
40
- { id: 12, title: 'Group 23', value: 'group23', disabled: false }
41
- ]
42
- }
43
- ]
44
- };
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import cn from 'classnames';
3
-
4
- import './TextSwitcher.scss';
5
-
6
- const RC = 'text-switcher';
7
-
8
- const TextSwitcher = ({ isIncluded = true, activeText = 'is', inactiveText = 'is not', onChange, className }) => {
9
- return (
10
- <button className={cn(RC, { [`${RC}_active`]: isIncluded }, className)} onClick={() => onChange(!isIncluded)}>
11
- <span className={`${RC}__btn`}>{activeText}</span>
12
- {inactiveText && <span className={cn(`${RC}__btn`, `${RC}__btn_off`)}>{inactiveText}</span>}
13
- <div className={cn(`${RC}__slider`, { [`${RC}__slider_inactive`]: !isIncluded })} />
14
- </button>
15
- );
16
- };
17
-
18
- export default TextSwitcher;
@@ -1,50 +0,0 @@
1
- @import '../../../scss/vars';
2
-
3
- .text-switcher {
4
- display: grid;
5
- grid-template-columns: repeat(2, 1fr);
6
- justify-content: center;
7
- align-items: center;
8
- border: 2px solid $color--error-bg;
9
- border-radius: 26px;
10
- padding: 2px;
11
- position: relative;
12
- background: #fff;
13
-
14
- &__btn {
15
- cursor: pointer;
16
- min-width: 58px;
17
- white-space: nowrap;
18
- padding: 0 14px;
19
- height: 100%;
20
- text-transform: uppercase;
21
- font-size: 10px;
22
- color: $green;
23
- position: relative;
24
- z-index: 2;
25
- &_off {
26
- color: $color--error;
27
- }
28
- }
29
-
30
- &__slider {
31
- position: absolute;
32
- left: 0px;
33
- border-radius: 28px;
34
- top: 0px;
35
- bottom: 0px;
36
- width: 50%;
37
- z-index: 0;
38
- background-color: $color--green-light;
39
- transition: left .3s ease,
40
- background-color .3s ease;
41
- &_inactive {
42
- background-color: $color--error-bg;
43
- left: 50%;
44
- }
45
- }
46
-
47
- &_active {
48
- border-color: $color--green-light;
49
- }
50
- }
@@ -1,21 +0,0 @@
1
- import React, { useState } from 'react';
2
- import TextSwitcher from './TextSwitcher';
3
-
4
- global.lng = 'en';
5
- export default {
6
- title: 'TextSwitcher',
7
- component: TextSwitcher
8
- };
9
-
10
- const Template = args => {
11
- const [isActive, setIsActive] = useState(true);
12
-
13
- return <TextSwitcher {...args} isActive={isActive} onChange={setIsActive} />;
14
- };
15
-
16
- export const TextSwitcherTemplate = Template.bind({});
17
-
18
- TextSwitcherTemplate.args = {
19
- activeText: 'is',
20
- inactiveText: 'some long text'
21
- };
@@ -1,19 +0,0 @@
1
- import React from 'react';
2
- import cn from 'classnames';
3
-
4
- import Label from '../Label/Label';
5
-
6
- import './Textarea.scss';
7
-
8
- const RC = 'textarea';
9
-
10
- const Textarea = ({ value, onChange, placeholder, label, hint, hintSide, isBold, disabled, className }) => {
11
- return (
12
- <div className={cn(`${RC}__wrap`, className)}>
13
- {label && <Label className={`${RC}-label`} label={label} hint={hint} hintSide={hintSide} isBold={isBold} />}
14
- <textarea className={RC} value={value} onChange={e => onChange(e.target.value)} placeholder={placeholder} disabled={disabled} />
15
- </div>
16
- );
17
- };
18
-
19
- export default Textarea;
@@ -1,35 +0,0 @@
1
- @import "../../../scss/vars";
2
- @import "~anme/scss/anme-mixins";
3
-
4
- .textarea {
5
- border: 1px solid #e2e5ec;
6
- background-color: #fff;
7
- min-height: 99px;
8
- min-width: 223px;
9
- width: 100%;
10
- outline: none;
11
- resize: none;
12
- padding: 5px 9px;
13
- box-sizing: border-box;
14
- font-size: 12px;
15
- font-weight: 400;
16
- font-family: Roboto, sans-serif;
17
-
18
- &:focus {
19
- border-color: $color--primary;
20
- filter: drop-shadow(0px 0px 4px rgba(93, 120, 255, 0.5));
21
- }
22
-
23
- &:disabled {
24
- background: #f7f8fa;
25
- opacity: 0.5;
26
- border-color: #a6acb1;
27
- pointer-events: none;
28
- }
29
-
30
- &-label {
31
- margin-bottom: 5px;
32
- }
33
-
34
- @include custom-scroll;
35
- }
@@ -1,24 +0,0 @@
1
- import React, { useState } from 'react';
2
- import Textarea from './Textarea';
3
-
4
- global.lng = 'en';
5
- export default {
6
- title: 'Textarea',
7
- component: Textarea
8
- };
9
-
10
- const Template = args => {
11
- const [value, setValue] = useState('');
12
- return <Textarea {...args} value={value} onChange={setValue} />;
13
- };
14
-
15
- export const TextareaTemplate = Template.bind({});
16
-
17
- TextareaTemplate.args = {
18
- disabled: false,
19
- isBold: true,
20
- placeholder: 'Placeholder',
21
- label: 'label',
22
- hint: 'hint',
23
- hintSide: 'bottom'
24
- };
@@ -1,66 +0,0 @@
1
- import React, { useState } from 'react';
2
- import cn from 'classnames';
3
-
4
- import CheckboxInput from '../CheckboxInput/CheckboxInput';
5
- import { handleObjectChange } from '../../../Functions/utils';
6
-
7
- import './TieredCheckboxes.scss';
8
-
9
- const TieredCheckboxes = ({ items, className }) => {
10
- const [data, setData] = useState(items);
11
- const [checkAll, setCheckAll] = useState(false);
12
- const [checkedItems, setCheckedItems] = useState([]);
13
- const [isThirdStatement, setIsThirdStatement] = useState(false);
14
-
15
- const onChange = handleObjectChange(setData, () => setData([...data]));
16
-
17
- const handleArrayChange = (e, index, childIndex) => {
18
- // change children checkboxes
19
- if (childIndex || childIndex === 0) {
20
- data[index].children[childIndex].value = e;
21
- if (data[index].children.filter(item => item.value === true).length === data[index].children.length) {
22
- data[index].value = true;
23
- setIsThirdStatement(false);
24
- } else if (data[index].children.filter(item => item.value === true).length === 0) {
25
- setIsThirdStatement(false);
26
- } else {
27
- setIsThirdStatement(true);
28
- data[index].value = false;
29
- }
30
-
31
- // change parent checkboxes
32
- } else {
33
- data[index].children.forEach(elem => {
34
- elem.value = e;
35
- });
36
- data[index].value = e;
37
- setCheckAll(true);
38
- setCheckedItems(data[index]);
39
- setIsThirdStatement(false);
40
- }
41
- onChange(data);
42
- };
43
-
44
- return (
45
- <div className={cn('tiered-checkboxes', className)}>
46
- {data.map((parent, index) => (
47
- <div key={parent.id} className="tiered-checkboxes--parents">
48
- <CheckboxInput
49
- isThirdStatement={isThirdStatement}
50
- label={parent.label}
51
- value={data[index].children.length === checkedItems.length ? checkAll : parent.value}
52
- onChange={e => handleArrayChange(e, index)}
53
- />
54
- {parent.children &&
55
- parent.children.map((child, childIndex) => (
56
- <div key={child.id} className="tiered-checkboxes--children">
57
- <CheckboxInput label={child.label} value={child.value} onChange={e => handleArrayChange(e, index, childIndex)} />
58
- </div>
59
- ))}
60
- </div>
61
- ))}
62
- </div>
63
- );
64
- };
65
-
66
- export default TieredCheckboxes;
@@ -1,10 +0,0 @@
1
- .tiered-checkboxes {
2
- &--parents {
3
- margin-bottom: 25px;
4
- }
5
-
6
- &--children {
7
- margin-top: 10px;
8
- margin-left: 10px;
9
- }
10
- }
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
- import TieredCheckboxes from './TieredCheckboxes';
3
-
4
- global.lng = 'en';
5
-
6
- export default {
7
- title: 'TieredCheckboxes',
8
- component: TieredCheckboxes
9
- };
10
-
11
- const Template = args => <TieredCheckboxes {...args} />;
12
-
13
- export const TieredCheckboxesTemplate = Template.bind({});
14
-
15
- TieredCheckboxesTemplate.args = {
16
- items: [
17
- {
18
- id: 1,
19
- label: 'Level 1',
20
- value: false,
21
- children: [
22
- {
23
- id: 1,
24
- label: 'Level 2',
25
- value: true
26
- },
27
- {
28
- id: 2,
29
- label: 'Level 2',
30
- value: false
31
- },
32
- {
33
- id: 3,
34
- label: 'Level 2',
35
- value: false
36
- }
37
- ]
38
- },
39
- {
40
- id: 2,
41
- label: 'Level 1',
42
- value: false,
43
- children: [
44
- {
45
- id: 1,
46
- label: 'Level 2',
47
- value: false
48
- },
49
- {
50
- id: 2,
51
- label: 'Level 2',
52
- value: true
53
- }
54
- ]
55
- }
56
- ]
57
- };
@@ -1,55 +0,0 @@
1
- import React, { useState, useMemo } from 'react';
2
- import cn from 'classnames';
3
- import moment from 'moment';
4
-
5
- import useToggle from '../../../Functions/useToggle';
6
- import Label from '../Label/Label';
7
- import Input from '../Input/Input';
8
-
9
- import './TimeRange.scss';
10
-
11
- const TimeRange = ({ className, from, to, labelFrom, labelTo }) => {
12
- const [startTime, setStartTime] = useState(from);
13
- const [endTime, setEndTime] = useState(to);
14
-
15
- // eslint-disable-next-line no-unused-vars
16
- const { isToggled: isStartTimeValidate, toggleOn: setIsStartTimeValidate } = useToggle();
17
- // eslint-disable-next-line no-unused-vars
18
- const { isToggled: isEndTimeValidate, toggleOn: setIsEndTimeValidate } = useToggle();
19
-
20
- const isStartTimeValid = useMemo(() => moment(startTime, 'HH:mm', true).isValid(), [startTime]);
21
- const isEndTimeValid = useMemo(() => moment(endTime, 'HH:mm', true).isValid(), [endTime]);
22
-
23
- const blurTimeHandler = (time, setFunc) => {
24
- const formattedTime = time ? moment(time, 'HH:mm').format('HH:mm') : '';
25
- setFunc(formattedTime);
26
- };
27
-
28
- return (
29
- <div className={cn(className, 'time-range')}>
30
- <div className="time-range__range">
31
- <Label label={labelFrom || 'Between'} />
32
- <Input
33
- className="time-range__input"
34
- value={startTime}
35
- onChange={value => setStartTime(value)}
36
- placeholder="00:00"
37
- onBlur={() => blurTimeHandler(startTime, setStartTime)}
38
- error={isStartTimeValidate || !isStartTimeValid ? 'HH:MM format' : ''}
39
- />
40
-
41
- <Label label={labelTo || 'and'} />
42
- <Input
43
- className="time-range__input"
44
- value={endTime}
45
- onChange={value => setEndTime(value)}
46
- placeholder="00:00"
47
- onBlur={() => blurTimeHandler(endTime, setEndTime)}
48
- error={isEndTimeValidate || !isEndTimeValid ? 'HH:MM format' : ''}
49
- />
50
- </div>
51
- </div>
52
- );
53
- };
54
-
55
- export default TimeRange;
@@ -1,17 +0,0 @@
1
- .time-range {
2
-
3
- &__input .form-input {
4
- width: 60px;
5
- }
6
-
7
- &__range {
8
- margin: 8px 0 13px 0;
9
- display: flex;
10
- justify-content: flex-start;
11
- align-items: center;
12
-
13
- & > *:not(:last-child) {
14
- margin-right: 16px;
15
- }
16
- }
17
- }
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
-
3
- import TimeRange from './TimeRange';
4
-
5
- global.lng = 'en';
6
-
7
- export default {
8
- title: 'TimeRange',
9
- component: TimeRange
10
- };
11
-
12
- const Template = args => <TimeRange {...args} />;
13
-
14
- export const TimeRangeTemplate = Template.bind({});
15
-
16
- TimeRangeTemplate.args = {
17
- from: '12:00',
18
- to: '13:00',
19
- labelFrom: '',
20
- labelTo: ''
21
- };
@@ -1,112 +0,0 @@
1
- import React, { useState } from 'react';
2
- import cn from 'classnames';
3
- import * as Icons from 'react-feather';
4
- import { NavLink } from 'react-router-dom';
5
-
6
- import Langs from '../../../../Langs';
7
- import Accordion from '../UI/Accordion/Accordion';
8
-
9
- import './MainMenu.scss';
10
-
11
- const classNames = require('classnames');
12
-
13
- const MainMenu = props => {
14
- const { items, className } = props;
15
- const txt = Langs[global.lng];
16
- const [isOpen, setIsOpen] = useState(true);
17
- const [isMenuHovered, setIsMenuHovered] = useState(false);
18
- const [isMenuIconHovered, setIsMenuIconHovered] = useState(false);
19
-
20
- const chapterClass = classNames('main-menu--items-box-chapter', { 'main-menu--items-box-chapter-hidden': !isOpen && !isMenuHovered });
21
- const accordionClass = classNames('main-menu--accordion', { 'main-menu--accordion-hidden': !isOpen && !isMenuHovered });
22
- const itemsBoxClass = classNames('main-menu--items-box', { 'main-menu--items-box-closed': !isOpen && !isMenuHovered });
23
- const mainMenuClass = classNames('main-menu', className, { 'main-menu--closed': !isOpen && !isMenuHovered });
24
-
25
- const onMenuHover = () => {
26
- if (!isOpen) {
27
- setIsMenuHovered(!isMenuHovered);
28
- items.mainMenu.forEach(item => {
29
- item.isOpen = false;
30
- });
31
- items.partners.forEach(item => {
32
- item.isOpen = false;
33
- });
34
- items.other.forEach(item => {
35
- item.isOpen = false;
36
- });
37
- }
38
- };
39
-
40
- const onCloseMenu = () => {
41
- setIsOpen(!isOpen);
42
- items.mainMenu.forEach(item => {
43
- item.isOpen = false;
44
- });
45
- items.partners.forEach(item => {
46
- item.isOpen = false;
47
- });
48
- items.other.forEach(item => {
49
- item.isOpen = false;
50
- });
51
- };
52
-
53
- const changeMenuIcon = () => {
54
- if (isOpen && !isMenuIconHovered) return <Icons.Menu />;
55
- if (isOpen && isMenuIconHovered) return <Icons.ChevronLeft />;
56
- if (!isOpen && isMenuHovered) return <Icons.ChevronRight />;
57
- if (!isOpen) return <div className="main-menu--logo-close" />;
58
- return null;
59
- };
60
-
61
- return (
62
- <div className={mainMenuClass} onMouseEnter={() => onMenuHover()} onMouseLeave={() => setIsMenuHovered(false)}>
63
- <div className={cn('main-menu--header', { 'main-menu--header-closed': !isOpen && !isMenuHovered })}>
64
- <div className={cn('main-menu--logo', { 'main-menu--logo-none': !isOpen && !isMenuHovered })} />
65
- <div className="main-menu--header-btn" onClick={() => onCloseMenu()}>
66
- <div className="j5" onMouseEnter={() => setIsMenuIconHovered(true)} onMouseLeave={() => setIsMenuIconHovered(false)}>
67
- {changeMenuIcon()}
68
- </div>
69
- </div>
70
- </div>
71
-
72
- <div className={itemsBoxClass}>
73
- <div className={cn('main-menu--items-box-main')}>
74
- {items.main.map((item, index) => {
75
- const Icon = Icons[item.icon];
76
- return item.link ? (
77
- <NavLink to={item.link} key={index} className={cn('main-menu--items-box-title')}>
78
- <div className="main-menu--item">
79
- <div className="df">
80
- <Icon className={cn('mr5', item.className)} />
81
- </div>
82
- <span className={cn({ hidden: !isOpen && !isMenuHovered })}>{item?.title || 'Link'}</span>
83
- </div>
84
- </NavLink>
85
- ) : (
86
- <span key={index} className={cn('main-menu--items-box-title', { hidden: !isOpen && !isMenuHovered })}>
87
- {txt?.titles[item?.title]}
88
- </span>
89
- );
90
- })}
91
- </div>
92
-
93
- <div className={chapterClass}>
94
- <span>Main menu</span>
95
- </div>
96
- <Accordion className={accordionClass} items={items.mainMenu} onClick={() => {}} />
97
-
98
- <div className={chapterClass}>
99
- <span>Partners</span>
100
- </div>
101
- <Accordion isOpen={isOpen} isMenuHovered={isMenuHovered} className={accordionClass} items={items.partners} onClick={() => {}} />
102
-
103
- <div className={chapterClass}>
104
- <span>Other</span>
105
- </div>
106
- <Accordion className={accordionClass} isOpen={isOpen} isMenuHovered={isMenuHovered} items={items.other} onClick={() => {}} />
107
- </div>
108
- </div>
109
- );
110
- };
111
-
112
- export default MainMenu;