intelicoreact 0.0.6 → 0.0.9

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 (117) hide show
  1. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +6 -2
  2. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  3. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +2 -1
  4. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +84 -28
  5. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +27 -3
  6. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +50 -7
  7. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +20 -0
  8. package/dist/Atomic/FormElements/Dropdown/components/Loader.scss +57 -0
  9. package/dist/Atomic/FormElements/Input/Input.js +124 -50
  10. package/dist/Atomic/FormElements/Input/Input.stories.js +19 -15
  11. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +33 -31
  12. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +29 -19
  13. package/dist/Atomic/FormElements/InputDateRange/{components/InputDateRange.js → InputDateRange.js} +54 -62
  14. package/dist/Atomic/FormElements/InputDateRange/{components/InputDateRange.scss → InputDateRange.scss} +254 -228
  15. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +15 -160
  16. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +72 -34
  17. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +26 -11
  18. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +14 -6
  19. package/dist/Atomic/FormElements/InputDateRange/{index.js → dependencies.js} +19 -18
  20. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +292 -0
  21. package/dist/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  22. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +117 -0
  23. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +10 -3
  24. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +4 -4
  25. package/dist/Atomic/FormElements/Table/Table.scss +1 -1
  26. package/dist/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  27. package/dist/Atomic/MainMenu/MainMenu.scss +2 -2
  28. package/dist/Atomic/UI/Accordion/Accordion.scss +2 -2
  29. package/dist/Atomic/UI/Arrow/Arrow.js +6 -6
  30. package/dist/Atomic/UI/Arrow/Arrow.scss +0 -3
  31. package/dist/Atomic/UI/Calendar/Calendar.js +8 -5
  32. package/dist/Atomic/UI/Calendar/Calendar.scss +19 -3
  33. package/dist/Atomic/UI/Calendar/Calendar.stories.js +3 -2
  34. package/dist/Atomic/UI/Status/Status.scss +1 -1
  35. package/dist/Constants/index.constants.js +8 -0
  36. package/dist/Functions/inputExecutor.js +58 -0
  37. package/dist/Molecular/Datepicker/Datepicker.js +451 -0
  38. package/dist/Molecular/Datepicker/Datepicker.scss +8 -0
  39. package/dist/Molecular/Datepicker/Datepicker.stories.js +44 -0
  40. package/dist/{Atomic/FormElements/Calendar → Molecular/Datepicker/components}/Calendar.js +50 -39
  41. package/dist/scss/_vars.scss +3 -1
  42. package/dist/scss/main.scss +1 -1
  43. package/package.json +5 -4
  44. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +12 -2
  45. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  46. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +4 -3
  47. package/src/Atomic/FormElements/Dropdown/Dropdown.js +104 -39
  48. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +27 -3
  49. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +42 -15
  50. package/src/Atomic/FormElements/Dropdown/components/DropdownLoader.js +16 -0
  51. package/src/Atomic/FormElements/Dropdown/components/Loader.scss +57 -0
  52. package/src/Atomic/FormElements/Input/Input.js +108 -37
  53. package/src/Atomic/FormElements/Input/Input.stories.js +43 -22
  54. package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +18 -17
  55. package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +17 -14
  56. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +219 -0
  57. package/src/Atomic/FormElements/InputDateRange/{components/InputDateRange.scss → InputDateRange.scss} +254 -228
  58. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +38 -117
  59. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +92 -53
  60. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +14 -5
  61. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +5 -3
  62. package/src/Atomic/FormElements/InputDateRange/{index.js → dependencies.js} +16 -12
  63. package/src/Atomic/FormElements/NumericInput/NumericInput.js +263 -0
  64. package/src/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  65. package/src/Atomic/FormElements/NumericInput/NumericInput.stories.js +78 -0
  66. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +6 -3
  67. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +4 -4
  68. package/src/Atomic/FormElements/Table/Table.scss +1 -1
  69. package/src/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  70. package/src/Atomic/MainMenu/MainMenu.scss +2 -2
  71. package/src/Atomic/UI/Accordion/Accordion.scss +2 -2
  72. package/src/Atomic/UI/Arrow/Arrow.js +4 -4
  73. package/src/Atomic/UI/Arrow/Arrow.scss +0 -3
  74. package/src/Atomic/UI/Calendar/Calendar.js +4 -4
  75. package/src/Atomic/UI/Calendar/Calendar.scss +19 -3
  76. package/src/Atomic/UI/Calendar/Calendar.stories.js +2 -1
  77. package/src/Atomic/UI/Status/Status.scss +1 -1
  78. package/src/Constants/index.constants.js +41 -0
  79. package/src/Functions/inputExecutor.js +53 -0
  80. package/src/Functions/utils.js +4 -1
  81. package/src/Molecular/Datepicker/Datepicker.js +346 -0
  82. package/src/Molecular/Datepicker/Datepicker.scss +8 -0
  83. package/src/Molecular/Datepicker/Datepicker.stories.js +27 -0
  84. package/src/Molecular/Datepicker/components/Calendar.js +118 -0
  85. package/src/scss/_vars.scss +3 -1
  86. package/src/scss/main.scss +1 -1
  87. package/dist/Atomic/FormElements/Calendar/Calendar.scss +0 -543
  88. package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +0 -33
  89. package/dist/scss/anme/_anme-bootstrap-grid.scss +0 -748
  90. package/dist/scss/anme/_anme-elements.scss +0 -269
  91. package/dist/scss/anme/_anme-grid.scss +0 -111
  92. package/dist/scss/anme/_anme-justify.scss +0 -111
  93. package/dist/scss/anme/_anme-mixins-media.scss +0 -116
  94. package/dist/scss/anme/_anme-mixins.scss +0 -166
  95. package/dist/scss/anme/_anme-normalize.scss +0 -8
  96. package/dist/scss/anme/_anme-overall.scss +0 -34
  97. package/dist/scss/anme/_anme-padding-margins.scss +0 -419
  98. package/dist/scss/anme/_anme-table.scss +0 -81
  99. package/dist/scss/anme/_anme-theme.scss +0 -275
  100. package/dist/scss/anme/_anme-vars.scss +0 -91
  101. package/dist/scss/anme/_code-styling.scss +0 -23
  102. package/dist/scss/anme/styles.scss +0 -12
  103. package/src/Atomic/FormElements/InputDateRange/components/InputDateRange.js +0 -230
  104. package/src/scss/anme/_anme-bootstrap-grid.scss +0 -748
  105. package/src/scss/anme/_anme-elements.scss +0 -269
  106. package/src/scss/anme/_anme-grid.scss +0 -111
  107. package/src/scss/anme/_anme-justify.scss +0 -111
  108. package/src/scss/anme/_anme-mixins-media.scss +0 -116
  109. package/src/scss/anme/_anme-mixins.scss +0 -166
  110. package/src/scss/anme/_anme-normalize.scss +0 -8
  111. package/src/scss/anme/_anme-overall.scss +0 -34
  112. package/src/scss/anme/_anme-padding-margins.scss +0 -419
  113. package/src/scss/anme/_anme-table.scss +0 -81
  114. package/src/scss/anme/_anme-theme.scss +0 -275
  115. package/src/scss/anme/_anme-vars.scss +0 -91
  116. package/src/scss/anme/_code-styling.scss +0 -23
  117. package/src/scss/anme/styles.scss +0 -12
@@ -21,7 +21,8 @@ var CheckboxInput = function CheckboxInput(_ref) {
21
21
  value = _ref.value,
22
22
  _onChange = _ref.onChange,
23
23
  disabled = _ref.disabled,
24
- className = _ref.className;
24
+ className = _ref.className,
25
+ isStark = _ref.isStark;
25
26
  return /*#__PURE__*/_react.default.createElement("label", {
26
27
  className: (0, _classnames.default)('checkbox-input', className, (0, _defineProperty2.default)({}, "checkbox-input_disabled", disabled)),
27
28
  htmlFor: id
@@ -35,7 +36,10 @@ var CheckboxInput = function CheckboxInput(_ref) {
35
36
  return _onChange(!value, e);
36
37
  },
37
38
  checked: value,
38
- disabled: disabled
39
+ disabled: disabled,
40
+ ref: function ref(elem) {
41
+ if (elem) elem.indeterminate = isStark;
42
+ }
39
43
  }), /*#__PURE__*/_react.default.createElement("span", {
40
44
  className: "checkbox-input__mark"
41
45
  })), label && /*#__PURE__*/_react.default.createElement("div", {
@@ -1,76 +1,107 @@
1
1
  .checkbox-input {
2
- display: flex;
3
- align-items: center;
4
- cursor: pointer;
2
+ display: flex;
3
+ align-items: center;
4
+ cursor: pointer;
5
+
6
+ &_disabled {
7
+ opacity: 0.5;
8
+ pointer-events: none;
9
+ cursor: auto;
10
+ }
5
11
 
6
- &_disabled {
7
- opacity: .5;
8
- pointer-events: none;
9
- cursor: auto;
12
+ &:hover {
13
+ .checkbox-input__input {
14
+ background-color: rgba(#6b81dd, 0.2);
10
15
  }
16
+ }
17
+
18
+ &__input {
19
+ position: relative;
20
+ height: 14px;
21
+ width: 14px;
22
+ min-width: 14px;
23
+ border: 1px solid #9aa0b9;
24
+ border-radius: 2px;
25
+ overflow: hidden;
26
+ margin-right: 5px;
27
+ cursor: pointer;
28
+ transition: background-color 0.2s ease;
29
+ background-color: #ffff;
11
30
 
12
- &:hover {
13
- .checkbox-input__input {
14
- background-color: rgba(#6b81dd, .2);
15
- }
31
+ &_checked {
32
+ border-color: #6b81dd;
16
33
  }
17
34
 
18
- &__input {
19
- position: relative;
20
- height: 14px;
21
- width: 14px;
22
- min-width: 14px;
23
- border: 1px solid #9AA0B9;
24
- border-radius: 2px;
25
- overflow: hidden;
26
- margin-right: 5px;
27
- cursor: pointer;
28
- transition: background-color .2s ease;
29
- background-color: #ffff;
35
+ .checkbox-input__checkbox:checked ~ .checkbox-input__mark {
36
+ display: block;
37
+ }
38
+ }
30
39
 
31
- &_checked {
32
- border-color: #6b81dd;
33
- }
40
+ &__checkbox {
41
+ opacity: 0;
42
+ position: absolute;
43
+ height: 0;
44
+ width: 0;
45
+ }
34
46
 
35
- .checkbox-input__checkbox:checked ~ .checkbox-input__mark {
36
- display: block;
37
- }
47
+ &__mark {
48
+ display: none;
49
+ position: absolute;
50
+ width: 14px;
51
+ height: 14px;
52
+ background-color: #6b81dd;
38
53
 
54
+ &:after {
55
+ content: "";
56
+ position: absolute;
57
+ top: -2px;
58
+ bottom: 0;
59
+ left: 0;
60
+ right: 0;
61
+ margin: auto;
62
+ width: 4px;
63
+ height: 8px;
64
+ border: solid white;
65
+ border-radius: 2px;
66
+ border-width: 0 2px 2px 0;
67
+ transform: rotate(45deg);
39
68
  }
69
+ }
40
70
 
41
- &__checkbox {
42
- opacity: 0;
43
- position: absolute;
44
- height: 0;
45
- width: 0;
46
- }
71
+ &__label {
72
+ font-size: 13px;
73
+ user-select: none;
74
+ }
47
75
 
48
- &__mark {
49
- display: none;
76
+ input[type="checkbox" i] {
77
+ &:indeterminate {
78
+ display: block;
79
+ width: 100%;
80
+ height: 100%;
81
+ &:after {
82
+ content: "";
50
83
  position: absolute;
51
- width: 14px;
52
- height: 14px;
84
+ top: 0;
85
+ bottom: 0;
86
+ left: 0;
87
+ right: 0;
88
+ margin: auto;
89
+ width: 100%;
90
+ height: 100%;
53
91
  background-color: #6b81dd;
54
-
55
- &:after {
56
- content: '';
57
- position: absolute;
58
- top: -2px;
59
- bottom: 0;
60
- left: 0;
61
- right: 0;
62
- margin: auto;
63
- width: 4px;
64
- height: 8px;
65
- border: solid white;
66
- border-radius: 2px;
67
- border-width: 0 2px 2px 0;
68
- transform: rotate(45deg);
69
- }
70
- }
71
-
72
- &__label{
73
- font-size: 13px;
74
- user-select: none;
92
+ }
93
+ &:before {
94
+ content: "";
95
+ position: absolute;
96
+ top: 50%;
97
+ left: 50%;
98
+ transform: translate(-50%, -50%);
99
+ width: 65%;
100
+ border: solid white;
101
+ border-radius: 2px;
102
+ border-width: 0 2px 2px 0;
103
+ z-index: 1;
104
+ }
75
105
  }
106
+ }
76
107
  }
@@ -48,5 +48,6 @@ Checkbox.args = {
48
48
  label: 'Test label',
49
49
  value: true,
50
50
  disabled: false,
51
- forced: false
51
+ forced: false,
52
+ isStark: true
52
53
  };
@@ -2,13 +2,15 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports.default = void 0;
11
11
 
12
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
+
12
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
15
 
14
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -21,13 +23,13 @@ var _classnames = _interopRequireDefault(require("classnames"));
21
23
 
22
24
  var _reactFeather = require("react-feather");
23
25
 
24
- var _Label = _interopRequireDefault(require("../Label/Label"));
26
+ var _DropdownLoader = _interopRequireDefault(require("./components/DropdownLoader"));
25
27
 
26
28
  require("./Dropdown.scss");
27
29
 
28
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
31
 
30
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
33
 
32
34
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
35
 
@@ -38,25 +40,31 @@ var RC = 'dropdown';
38
40
  var Dropdown = function Dropdown(_ref) {
39
41
  var _options$find;
40
42
 
41
- var options = _ref.options,
43
+ var _ref$options = _ref.options,
44
+ options = _ref$options === void 0 ? [] : _ref$options,
42
45
  value = _ref.value,
43
46
  error = _ref.error,
47
+ disabled = _ref.disabled,
44
48
  onChange = _ref.onChange,
45
49
  placeholder = _ref.placeholder,
46
50
  className = _ref.className,
47
- isSearchable = _ref.isSearchable;
51
+ isSearchable = _ref.isSearchable,
52
+ entity = _ref.entity,
53
+ scrollReactionObj = _ref.scrollReactionObj;
48
54
 
49
55
  var _useState = (0, _react.useState)(false),
50
56
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
51
57
  isOpen = _useState2[0],
52
58
  setIsOpen = _useState2[1];
53
59
 
54
- var _useState3 = (0, _react.useState)(''),
60
+ var _useState3 = (0, _react.useState)(),
55
61
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
56
62
  searchValue = _useState4[0],
57
63
  setSearchValue = _useState4[1];
58
64
 
59
65
  var dropdownRef = (0, _react.useRef)(null);
66
+ var dropdownListRef = (0, _react.useRef)(null);
67
+ if (!options) return null;
60
68
  var filteredGroups = options.filter(function (item) {
61
69
  var _item$items;
62
70
 
@@ -84,6 +92,37 @@ var Dropdown = function Dropdown(_ref) {
84
92
  return item === null || item === void 0 ? void 0 : (_item$label = item.label) === null || _item$label === void 0 ? void 0 : _item$label.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || '');
85
93
  });
86
94
  var filteredOptions = [].concat((0, _toConsumableArray2.default)(filteredItems), (0, _toConsumableArray2.default)(filteredGroups));
95
+ var modalBtnTrigger = entity && entity !== '' && typeof entity === 'string';
96
+
97
+ var onChangeHandler = function onChangeHandler(item) {
98
+ setIsOpen(false);
99
+ setSearchValue(null);
100
+ onChange(item.value);
101
+ }; // decorator
102
+
103
+
104
+ var getDepends = function getDepends(getDependsTrigger) {
105
+ var newOnChange = function newOnChange(e) {
106
+ if (e.value === 'open_modal') {
107
+ onChange('open_modal');
108
+ } else {
109
+ onChangeHandler(e);
110
+ }
111
+ }; // add pseudo option
112
+
113
+
114
+ var newOptions = [{
115
+ label: "New ".concat(entity),
116
+ value: 'open_modal',
117
+ className: 'dropdown__list-item--modal'
118
+ }].concat((0, _toConsumableArray2.default)(filteredOptions));
119
+ return {
120
+ onChange: function onChange(changeItem) {
121
+ return getDependsTrigger ? newOnChange(changeItem) : onChangeHandler(changeItem);
122
+ },
123
+ options: getDependsTrigger ? newOptions : options
124
+ };
125
+ };
87
126
 
88
127
  var handleClickOutside = function handleClickOutside(event) {
89
128
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
@@ -92,12 +131,6 @@ var Dropdown = function Dropdown(_ref) {
92
131
  }
93
132
  };
94
133
 
95
- var onChangeHandler = function onChangeHandler(item) {
96
- setIsOpen(false);
97
- setSearchValue(null);
98
- onChange(item.value);
99
- };
100
-
101
134
  var onSearchHandler = function onSearchHandler(name) {
102
135
  setSearchValue(name);
103
136
  };
@@ -108,11 +141,13 @@ var Dropdown = function Dropdown(_ref) {
108
141
  }) : text;
109
142
  };
110
143
 
144
+ var depend = getDepends(modalBtnTrigger);
145
+
111
146
  var getMarkupForElement = function getMarkupForElement(item) {
112
147
  return item.label.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || '') ? /*#__PURE__*/_react.default.createElement("button", {
113
148
  key: item.value,
114
149
  onClick: function onClick() {
115
- return onChangeHandler(item);
150
+ return depend.onChange(item);
116
151
  },
117
152
  className: (0, _classnames.default)("".concat(RC, "__list-item"), (0, _defineProperty2.default)({}, "".concat(RC, "__list-item_active"), item.value === value), (0, _defineProperty2.default)({}, "".concat(RC, "__list-item_disabled"), item.disabled))
118
153
  }, /*#__PURE__*/_react.default.createElement("span", {
@@ -125,13 +160,6 @@ var Dropdown = function Dropdown(_ref) {
125
160
  })) : null;
126
161
  };
127
162
 
128
- (0, _react.useEffect)(function () {
129
- document.addEventListener('click', handleClickOutside, true);
130
- return function () {
131
- return document.removeEventListener('click', handleClickOutside, true);
132
- };
133
- });
134
-
135
163
  var filteredOptionList = function filteredOptionList(filteredOption) {
136
164
  var _filteredOption$items;
137
165
 
@@ -154,8 +182,34 @@ var Dropdown = function Dropdown(_ref) {
154
182
  return el.value === value;
155
183
  })) === null || _item$items4$find === void 0 ? void 0 : _item$items4$find.label);
156
184
  }, null);
185
+ var doScrollCallback = (0, _react.useCallback)(function (e) {
186
+ var callback = scrollReactionObj.callback,
187
+ isWithAnyScrolling = scrollReactionObj.isWithAnyScrolling;
188
+
189
+ if (callback && typeof callback === 'function') {
190
+ if (isWithAnyScrolling) callback(e);else if (e.target.clientHeight + e.target.scrollTop >= e.target.scrollHeight) callback(e);
191
+ }
192
+ }, [filteredOptions]);
193
+ (0, _react.useEffect)(function () {
194
+ if (!value) setSearchValue(null);
195
+ document.addEventListener('click', handleClickOutside, true);
196
+ return function () {
197
+ return document.removeEventListener('click', handleClickOutside, true);
198
+ };
199
+ }, [value]);
200
+ (0, _react.useEffect)(function () {
201
+ if (scrollReactionObj && (0, _typeof2.default)(scrollReactionObj) === 'object' && isOpen && dropdownListRef && dropdownListRef.current) {
202
+ dropdownListRef.current.addEventListener('scroll', doScrollCallback);
203
+ }
204
+
205
+ return function () {
206
+ if (scrollReactionObj && (0, _typeof2.default)(scrollReactionObj) === 'object') removeEventListener('scroll', doScrollCallback);
207
+ };
208
+ }, [isOpen, dropdownListRef]);
157
209
  return /*#__PURE__*/_react.default.createElement("div", {
158
- className: (0, _classnames.default)(RC, className),
210
+ className: (0, _classnames.default)(RC, className, {
211
+ disabled: disabled
212
+ }),
159
213
  ref: dropdownRef
160
214
  }, /*#__PURE__*/_react.default.createElement("button", {
161
215
  className: "".concat(RC, "__trigger input__wrap ").concat(!value ? 'placeholder' : '', " ").concat(error ? 'error' : ''),
@@ -164,13 +218,14 @@ var Dropdown = function Dropdown(_ref) {
164
218
  }
165
219
  }, isSearchable ? /*#__PURE__*/_react.default.createElement("input", {
166
220
  className: "".concat(RC, "__input"),
167
- value: searchValue !== null && searchValue !== void 0 ? searchValue : selectedLabel,
221
+ value: searchValue || selectedLabel || '',
168
222
  onChange: function onChange(e) {
169
- return onSearchHandler(e.target.value);
223
+ onSearchHandler(e.target.value);
170
224
  },
171
225
  placeholder: placeholder,
172
- onFocus: function onFocus() {
173
- return setIsOpen(true);
226
+ onFocus: function onFocus(e) {
227
+ e.target.select();
228
+ setIsOpen(true);
174
229
  }
175
230
  }) : /*#__PURE__*/_react.default.createElement("span", {
176
231
  className: "text"
@@ -180,12 +235,13 @@ var Dropdown = function Dropdown(_ref) {
180
235
  return setIsOpen(!isOpen);
181
236
  }
182
237
  }, isOpen ? /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronUp, null) : /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronDown, null))), isOpen && filteredOptions.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
183
- className: "".concat(RC, "__list")
184
- }, filteredOptions.map(function (filteredOption) {
238
+ className: "".concat(RC, "__list"),
239
+ ref: dropdownListRef
240
+ }, depend.options.map(function (filteredOption) {
185
241
  var _filteredOption$items2;
186
242
 
187
243
  return (_filteredOption$items2 = filteredOption.items) !== null && _filteredOption$items2 !== void 0 && _filteredOption$items2.length ? filteredOptionList(filteredOption) : getMarkupForElement(filteredOption);
188
- })));
244
+ }), disabled && isOpen && /*#__PURE__*/_react.default.createElement(_DropdownLoader.default, null)));
189
245
  };
190
246
 
191
247
  var _default = Dropdown;
@@ -5,6 +5,7 @@
5
5
  flex-direction: column;
6
6
  position: relative;
7
7
  width: 100%;
8
+ border-radius: 7px;
8
9
 
9
10
  &__trigger {
10
11
  background: #ffffff;
@@ -28,8 +29,8 @@
28
29
  &.error {
29
30
  border-color: $color--secondary;
30
31
  }
31
- &.placeholder .text{
32
- opacity: .7;
32
+ &.placeholder .text {
33
+ opacity: 0.7;
33
34
  }
34
35
  }
35
36
 
@@ -44,6 +45,7 @@
44
45
  }
45
46
 
46
47
  &__list {
48
+ position: relative;
47
49
  background: #ffffff;
48
50
  border: 1px solid #e2e5ec;
49
51
  box-shadow: 0 5px 20px rgb(0 0 0 / 15%);
@@ -85,7 +87,24 @@
85
87
  width: 100%;
86
88
  height: 24px;
87
89
  white-space: nowrap;
88
-
90
+ overflow-x: hidden;
91
+
92
+ &--modal {
93
+ color: #1f7499;
94
+ font-size: 14px;
95
+ line-height: 20px;
96
+ letter-spacing: 0.2px;
97
+ position: relative;
98
+ &:after {
99
+ content: "";
100
+ position: absolute;
101
+ bottom: -2px;
102
+ height: 1px;
103
+ width: 300%;
104
+ transform: translateX(-50%);
105
+ background-color: #e8e9ec;
106
+ }
107
+ }
89
108
  &:hover,
90
109
  &_active {
91
110
  background: $color--gray--gentle;
@@ -159,4 +178,9 @@
159
178
  font-size: 10px;
160
179
  color: $color--secondary;
161
180
  }
181
+
182
+ &.disabled {
183
+ pointer-events: none;
184
+ opacity: 0.5;
185
+ }
162
186
  }
@@ -37,37 +37,76 @@ var _default = {
37
37
  },
38
38
  onChange: {
39
39
  description: 'callback return selected value'
40
+ },
41
+ entity: {
42
+ description: 'string'
40
43
  }
41
44
  }
42
45
  };
43
46
  exports.default = _default;
47
+ var blockStyles = {
48
+ display: 'flex',
49
+ flexFlow: 'row no-wrap',
50
+ alignItems: 'center'
51
+ };
52
+ var buttonStyles = {
53
+ border: 'solid 1px #000',
54
+ padding: '5px',
55
+ margin: '0 0 0 50px'
56
+ };
44
57
 
45
58
  var Template = function Template(args) {
46
- var _useState = (0, _react.useState)(''),
59
+ var _useState = (0, _react.useState)(args.value),
47
60
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
48
61
  value = _useState2[0],
49
62
  setValue = _useState2[1];
50
63
 
64
+ var _useState3 = (0, _react.useState)(false),
65
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
66
+ disabled = _useState4[0],
67
+ setDisabled = _useState4[1];
68
+
51
69
  return /*#__PURE__*/_react.default.createElement("div", {
70
+ style: blockStyles
71
+ }, /*#__PURE__*/_react.default.createElement("div", {
72
+ key: "dropdown",
52
73
  style: {
53
74
  width: 200
54
75
  }
55
76
  }, /*#__PURE__*/_react.default.createElement(_Dropdown.default, (0, _extends2.default)({}, args, {
56
77
  value: value,
57
- onChange: setValue
58
- })));
78
+ onChange: setValue,
79
+ disabled: disabled,
80
+ scrollReactionObj: {
81
+ callback: function callback(e) {
82
+ return setDisabled(true);
83
+ }
84
+ }
85
+ }))), /*#__PURE__*/_react.default.createElement("button", {
86
+ key: "reset",
87
+ style: buttonStyles,
88
+ className: "mt10",
89
+ onClick: function onClick() {
90
+ return setValue('');
91
+ }
92
+ }, "Reset"), /*#__PURE__*/_react.default.createElement("button", {
93
+ key: "enable/disable",
94
+ style: buttonStyles,
95
+ className: "mt10",
96
+ onClick: function onClick() {
97
+ return setDisabled(!disabled);
98
+ }
99
+ }, disabled ? 'enable' : 'disable'));
59
100
  };
60
101
 
61
102
  var DropdownTemplate = Template.bind({});
62
103
  exports.DropdownTemplate = DropdownTemplate;
63
104
  DropdownTemplate.args = {
105
+ entity: 'entity',
106
+ value: 'drop6',
64
107
  placeholder: 'Placeholder',
65
108
  isSearchable: true,
66
109
  options: [{
67
- label: 'Dropdown1',
68
- value: 'drop1',
69
- className: 'status status--approved'
70
- }, {
71
110
  label: 'Dropdown2',
72
111
  value: 'drop2'
73
112
  }, {
@@ -77,6 +116,10 @@ DropdownTemplate.args = {
77
116
  }, {
78
117
  label: 'Dropdown4',
79
118
  value: 'drop4'
119
+ }, {
120
+ label: 'Dropdown1',
121
+ value: 'drop1',
122
+ className: 'status status--approved'
80
123
  }, {
81
124
  label: 'Dropdown5',
82
125
  value: 'drop5'
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ require("./Loader.scss");
9
+
10
+ var DropdownLoader = function DropdownLoader(_ref) {
11
+ var variant = _ref.variant;
12
+ return /*#__PURE__*/React.createElement("div", {
13
+ className: "dropdown-loader-box j5"
14
+ }, /*#__PURE__*/React.createElement("div", {
15
+ className: "lds-ring".concat(variant === 'little' ? ' lds-ring_little' : '')
16
+ }, /*#__PURE__*/React.createElement("div", null), /*#__PURE__*/React.createElement("div", null), /*#__PURE__*/React.createElement("div", null), /*#__PURE__*/React.createElement("div", null)));
17
+ };
18
+
19
+ var _default = DropdownLoader;
20
+ exports.default = _default;
@@ -0,0 +1,57 @@
1
+ @mixin fill-parent {
2
+ left: 0;
3
+ top: 0;
4
+ width: 100%;
5
+ height: 100%;
6
+ }
7
+
8
+ .dropdown-loader-box {
9
+ position: absolute;
10
+ @include fill-parent;
11
+ background: #fff;
12
+ opacity: 0.1;
13
+ z-index: 100;
14
+ }
15
+ .lds-ring {
16
+ display: inline-block;
17
+ position: relative;
18
+ width: 100px;
19
+ height: 100px;
20
+ }
21
+ .lds-ring.lds-ring_little {
22
+ width: 20px;
23
+ height: 20px;
24
+ }
25
+ .lds-ring div {
26
+ box-sizing: border-box;
27
+ display: block;
28
+ position: absolute;
29
+ width: 84px;
30
+ height: 84px;
31
+ margin: 8px;
32
+ border: 8px solid #000;
33
+ border-radius: 50%;
34
+ animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
35
+ border-color: #000 transparent transparent transparent;
36
+ }
37
+ .lds-ring_little div {
38
+ width: 20px;
39
+ height: 20px;
40
+ }
41
+ .lds-ring div:nth-child(1) {
42
+ animation-delay: -0.45s;
43
+ }
44
+ .lds-ring div:nth-child(2) {
45
+ animation-delay: -0.3s;
46
+ }
47
+ .lds-ring div:nth-child(3) {
48
+ animation-delay: -0.15s;
49
+ }
50
+ @keyframes lds-ring {
51
+ 0% {
52
+ transform: rotate(0deg);
53
+ }
54
+ 100% {
55
+ transform: rotate(360deg);
56
+ }
57
+ }