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