@laerdal/life-react-components 1.0.1-dev.22.full → 1.0.1-dev.29.full
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.
- package/dist/esm/Banners/Banner.js +11 -8
- package/dist/esm/Banners/Banner.js.map +1 -1
- package/dist/esm/Button/Anchor.js +76 -0
- package/dist/esm/Button/Anchor.js.map +1 -0
- package/dist/esm/Button/BackButton.js +1 -1
- package/dist/esm/Button/BackButton.js.map +1 -1
- package/dist/esm/Button/Button.js +46 -19
- package/dist/esm/Button/Button.js.map +1 -1
- package/dist/esm/Button/DualFunctionButton.js +111 -0
- package/dist/esm/Button/DualFunctionButton.js.map +1 -0
- package/dist/esm/Button/Iconbutton.js +21 -1
- package/dist/esm/Button/Iconbutton.js.map +1 -1
- package/dist/esm/Button/__tests__/Button.test.js +2 -1
- package/dist/esm/Button/__tests__/Button.test.js.map +1 -1
- package/dist/esm/Button/index.js +1 -0
- package/dist/esm/Button/index.js.map +1 -1
- package/dist/esm/Dropdown/BasicDropdown.js +60 -127
- package/dist/esm/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/esm/Dropdown/ChipDropdownInput.js +41 -132
- package/dist/esm/Dropdown/ChipDropdownInput.js.map +1 -1
- package/dist/esm/Dropdown/CommonStyling.js +20 -15
- package/dist/esm/Dropdown/CommonStyling.js.map +1 -1
- package/dist/esm/Dropdown/DropdownButton.js +2 -2
- package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
- package/dist/esm/Dropdown/DropdownContent.js +424 -0
- package/dist/esm/Dropdown/DropdownContent.js.map +1 -0
- package/dist/esm/Dropdown/DropdownFilter.js +42 -151
- package/dist/esm/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/esm/GlobalNavigationBar/UserMenu/UserMenu.js +15 -17
- package/dist/esm/GlobalNavigationBar/UserMenu/UserMenu.js.map +1 -1
- package/dist/esm/InputFields/Checkbox.js +19 -10
- package/dist/esm/InputFields/Checkbox.js.map +1 -1
- package/dist/esm/InputFields/QuickSearch.js +22 -12
- package/dist/esm/InputFields/QuickSearch.js.map +1 -1
- package/dist/esm/InputFields/RadioButton.js +18 -11
- package/dist/esm/InputFields/RadioButton.js.map +1 -1
- package/dist/esm/InputFields/components/SearchBarInput.js +1 -1
- package/dist/esm/InputFields/components/SearchBarInput.js.map +1 -1
- package/dist/esm/Modals/ModalDialog.js +14 -14
- package/dist/esm/Modals/ModalDialog.js.map +1 -1
- package/dist/esm/Modals/ModalStyles.js +3 -2
- package/dist/esm/Modals/ModalStyles.js.map +1 -1
- package/dist/esm/Paginator/Paginator.js +18 -8
- package/dist/esm/Paginator/Paginator.js.map +1 -1
- package/dist/esm/Paginator/__tests__/Paginator.test.js +1 -1
- package/dist/esm/Paginator/__tests__/Paginator.test.js.map +1 -1
- package/dist/esm/Table/Table.js +2 -1
- package/dist/esm/Table/Table.js.map +1 -1
- package/dist/esm/Tabs/TabLink.js +1 -1
- package/dist/esm/Tabs/TabLink.js.map +1 -1
- package/dist/esm/Toasters/Toast.js +2 -1
- package/dist/esm/Toasters/Toast.js.map +1 -1
- package/dist/esm/types.js +8 -0
- package/dist/esm/types.js.map +1 -1
- package/dist/js/Banners/Banner.js +13 -11
- package/dist/js/Banners/Banner.js.map +1 -1
- package/dist/js/Button/Anchor.d.ts +7 -0
- package/dist/js/Button/Anchor.js +66 -0
- package/dist/js/Button/Anchor.js.map +1 -0
- package/dist/js/Button/BackButton.js +1 -1
- package/dist/js/Button/BackButton.js.map +1 -1
- package/dist/js/Button/Button.d.ts +4 -1
- package/dist/js/Button/Button.js +44 -18
- package/dist/js/Button/Button.js.map +1 -1
- package/dist/js/Button/DualFunctionButton.d.ts +12 -0
- package/dist/js/Button/DualFunctionButton.js +148 -0
- package/dist/js/Button/DualFunctionButton.js.map +1 -0
- package/dist/js/Button/Iconbutton.d.ts +1 -0
- package/dist/js/Button/Iconbutton.js +23 -3
- package/dist/js/Button/Iconbutton.js.map +1 -1
- package/dist/js/Button/__tests__/Button.test.js +3 -1
- package/dist/js/Button/__tests__/Button.test.js.map +1 -1
- package/dist/js/Button/index.d.ts +1 -0
- package/dist/js/Button/index.js +8 -0
- package/dist/js/Button/index.js.map +1 -1
- package/dist/js/Dropdown/BasicDropdown.d.ts +9 -2
- package/dist/js/Dropdown/BasicDropdown.js +67 -133
- package/dist/js/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/js/Dropdown/ChipDropdownInput.js +45 -138
- package/dist/js/Dropdown/ChipDropdownInput.js.map +1 -1
- package/dist/js/Dropdown/CommonStyling.d.ts +6 -2
- package/dist/js/Dropdown/CommonStyling.js +17 -6
- package/dist/js/Dropdown/CommonStyling.js.map +1 -1
- package/dist/js/Dropdown/DropdownButton.js +1 -1
- package/dist/js/Dropdown/DropdownButton.js.map +1 -1
- package/dist/js/Dropdown/DropdownContent.d.ts +45 -0
- package/dist/js/Dropdown/DropdownContent.js +476 -0
- package/dist/js/Dropdown/DropdownContent.js.map +1 -0
- package/dist/js/Dropdown/DropdownFilter.js +59 -186
- package/dist/js/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/js/GlobalNavigationBar/UserMenu/UserMenu.js +7 -17
- package/dist/js/GlobalNavigationBar/UserMenu/UserMenu.js.map +1 -1
- package/dist/js/InputFields/Checkbox.d.ts +5 -3
- package/dist/js/InputFields/Checkbox.js +16 -9
- package/dist/js/InputFields/Checkbox.js.map +1 -1
- package/dist/js/InputFields/QuickSearch.js +24 -6
- package/dist/js/InputFields/QuickSearch.js.map +1 -1
- package/dist/js/InputFields/RadioButton.d.ts +4 -2
- package/dist/js/InputFields/RadioButton.js +15 -10
- package/dist/js/InputFields/RadioButton.js.map +1 -1
- package/dist/js/InputFields/components/SearchBarInput.js +1 -1
- package/dist/js/InputFields/components/SearchBarInput.js.map +1 -1
- package/dist/js/Modals/ModalDialog.d.ts +2 -1
- package/dist/js/Modals/ModalDialog.js +15 -14
- package/dist/js/Modals/ModalDialog.js.map +1 -1
- package/dist/js/Modals/ModalStyles.d.ts +4 -3
- package/dist/js/Modals/ModalStyles.js +4 -2
- package/dist/js/Modals/ModalStyles.js.map +1 -1
- package/dist/js/Paginator/Paginator.js +7 -5
- package/dist/js/Paginator/Paginator.js.map +1 -1
- package/dist/js/Paginator/__tests__/Paginator.test.js +1 -1
- package/dist/js/Paginator/__tests__/Paginator.test.js.map +1 -1
- package/dist/js/Table/Table.js +3 -1
- package/dist/js/Table/Table.js.map +1 -1
- package/dist/js/Tabs/TabLink.js +1 -1
- package/dist/js/Tabs/TabLink.js.map +1 -1
- package/dist/js/Toasters/Toast.js +1 -1
- package/dist/js/Toasters/Toast.js.map +1 -1
- package/dist/js/types.d.ts +5 -0
- package/dist/js/types.js +10 -1
- package/dist/js/types.js.map +1 -1
- package/dist/umd/Banners/Banner.js +11 -8
- package/dist/umd/Banners/Banner.js.map +1 -1
- package/dist/umd/Button/Anchor.js +201 -0
- package/dist/umd/Button/Anchor.js.map +1 -0
- package/dist/umd/Button/BackButton.js +1 -1
- package/dist/umd/Button/BackButton.js.map +1 -1
- package/dist/umd/Button/Button.js +48 -22
- package/dist/umd/Button/Button.js.map +1 -1
- package/dist/umd/Button/DualFunctionButton.js +237 -0
- package/dist/umd/Button/DualFunctionButton.js.map +1 -0
- package/dist/umd/Button/Iconbutton.js +21 -1
- package/dist/umd/Button/Iconbutton.js.map +1 -1
- package/dist/umd/Button/__tests__/Button.test.js +5 -5
- package/dist/umd/Button/__tests__/Button.test.js.map +1 -1
- package/dist/umd/Button/index.js +10 -4
- package/dist/umd/Button/index.js.map +1 -1
- package/dist/umd/Dropdown/BasicDropdown.js +64 -131
- package/dist/umd/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/umd/Dropdown/ChipDropdownInput.js +44 -134
- package/dist/umd/Dropdown/ChipDropdownInput.js.map +1 -1
- package/dist/umd/Dropdown/CommonStyling.js +23 -19
- package/dist/umd/Dropdown/CommonStyling.js.map +1 -1
- package/dist/umd/Dropdown/DropdownButton.js +1 -1
- package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
- package/dist/umd/Dropdown/DropdownContent.js +458 -0
- package/dist/umd/Dropdown/DropdownContent.js.map +1 -0
- package/dist/umd/Dropdown/DropdownFilter.js +47 -155
- package/dist/umd/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/umd/GlobalNavigationBar/UserMenu/UserMenu.js +18 -21
- package/dist/umd/GlobalNavigationBar/UserMenu/UserMenu.js.map +1 -1
- package/dist/umd/InputFields/Checkbox.js +22 -14
- package/dist/umd/InputFields/Checkbox.js.map +1 -1
- package/dist/umd/InputFields/QuickSearch.js +22 -12
- package/dist/umd/InputFields/QuickSearch.js.map +1 -1
- package/dist/umd/InputFields/RadioButton.js +21 -15
- package/dist/umd/InputFields/RadioButton.js.map +1 -1
- package/dist/umd/InputFields/components/SearchBarInput.js +1 -1
- package/dist/umd/InputFields/components/SearchBarInput.js.map +1 -1
- package/dist/umd/Modals/ModalDialog.js +17 -18
- package/dist/umd/Modals/ModalDialog.js.map +1 -1
- package/dist/umd/Modals/ModalStyles.js +6 -6
- package/dist/umd/Modals/ModalStyles.js.map +1 -1
- package/dist/umd/Paginator/Paginator.js +18 -8
- package/dist/umd/Paginator/Paginator.js.map +1 -1
- package/dist/umd/Paginator/__tests__/Paginator.test.js +1 -1
- package/dist/umd/Paginator/__tests__/Paginator.test.js.map +1 -1
- package/dist/umd/Table/Table.js +5 -5
- package/dist/umd/Table/Table.js.map +1 -1
- package/dist/umd/Tabs/TabLink.js +1 -1
- package/dist/umd/Tabs/TabLink.js.map +1 -1
- package/dist/umd/Toasters/Toast.js +1 -1
- package/dist/umd/Toasters/Toast.js.map +1 -1
- package/dist/umd/types.js +8 -0
- package/dist/umd/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
if (typeof define === "function" && define.amd) {
|
|
3
|
-
define(["exports", "prop-types", "react", "../styles", "../icons/systemicons/SystemIcons", "../LoadingIndicator", "./CommonStyling", "../InputFields/styling"], factory);
|
|
3
|
+
define(["exports", "prop-types", "react", "../styles", "../icons/systemicons/SystemIcons", "../LoadingIndicator", "./CommonStyling", "./DropdownContent", "../InputFields/styling", "../types"], factory);
|
|
4
4
|
} else if (typeof exports !== "undefined") {
|
|
5
|
-
factory(exports, require("prop-types"), require("react"), require("../styles"), require("../icons/systemicons/SystemIcons"), require("../LoadingIndicator"), require("./CommonStyling"), require("../InputFields/styling"));
|
|
5
|
+
factory(exports, require("prop-types"), require("react"), require("../styles"), require("../icons/systemicons/SystemIcons"), require("../LoadingIndicator"), require("./CommonStyling"), require("./DropdownContent"), require("../InputFields/styling"), require("../types"));
|
|
6
6
|
} else {
|
|
7
7
|
var mod = {
|
|
8
8
|
exports: {}
|
|
9
9
|
};
|
|
10
|
-
factory(mod.exports, global.propTypes, global.react, global.styles, global.SystemIcons, global.LoadingIndicator, global.CommonStyling, global.styling);
|
|
10
|
+
factory(mod.exports, global.propTypes, global.react, global.styles, global.SystemIcons, global.LoadingIndicator, global.CommonStyling, global.DropdownContent, global.styling, global.types);
|
|
11
11
|
global.undefined = mod.exports;
|
|
12
12
|
}
|
|
13
|
-
})(this, function (exports, _propTypes, _react, _styles, _SystemIcons, _LoadingIndicator, _CommonStyling, _styling) {
|
|
13
|
+
})(this, function (exports, _propTypes, _react, _styles, _SystemIcons, _LoadingIndicator, _CommonStyling, _DropdownContent, _styling, _types) {
|
|
14
14
|
"use strict";
|
|
15
15
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
var React = _interopRequireWildcard(_react);
|
|
23
23
|
|
|
24
|
+
var _DropdownContent2 = _interopRequireDefault(_DropdownContent);
|
|
25
|
+
|
|
24
26
|
function _getRequireWildcardCache(nodeInterop) {
|
|
25
27
|
if (typeof WeakMap !== "function") return null;
|
|
26
28
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -88,6 +90,13 @@
|
|
|
88
90
|
initalValue,
|
|
89
91
|
disableSorting,
|
|
90
92
|
messageOnNoResults,
|
|
93
|
+
itemsType,
|
|
94
|
+
action,
|
|
95
|
+
actionLabel,
|
|
96
|
+
pinTopItem,
|
|
97
|
+
multiSelect,
|
|
98
|
+
scrollable = true,
|
|
99
|
+
maxHeight,
|
|
91
100
|
disabled,
|
|
92
101
|
locked,
|
|
93
102
|
isButton,
|
|
@@ -102,9 +111,8 @@
|
|
|
102
111
|
const [placeholderSearch, setPlaceholderSearch] = React.useState(placeholder || '');
|
|
103
112
|
const [restartFilter, setRestartFilter] = React.useState(false);
|
|
104
113
|
const [focused, setFocused] = React.useState(null);
|
|
105
|
-
const [
|
|
114
|
+
const [selectedValues, setSelectedValues] = React.useState([]);
|
|
106
115
|
const [normalizedList, setNormalizedList] = React.useState([]);
|
|
107
|
-
const dropdownContentRef = React.useRef(null);
|
|
108
116
|
const styledFieldRef = React.useRef(null);
|
|
109
117
|
|
|
110
118
|
const isDropdownItem = item => {
|
|
@@ -120,89 +128,32 @@
|
|
|
120
128
|
}
|
|
121
129
|
}
|
|
122
130
|
}, [list]);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
setFocused(null);
|
|
129
|
-
|
|
130
|
-
if (!normalizedList.includes(input)) {
|
|
131
|
-
setInput('');
|
|
132
|
-
setPlaceholderSearch(placeholder || '');
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
const setNewFocusedElement = index => {
|
|
139
|
-
const newFocusedElement = document.getElementById(`${id}_${index}`);
|
|
140
|
-
|
|
141
|
-
if (newFocusedElement) {
|
|
142
|
-
setFocused(index);
|
|
143
|
-
newFocusedElement.focus();
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
const handleKeyDown = e => {
|
|
148
|
-
if (isOpen) {
|
|
149
|
-
if (e.keyCode === 38) {
|
|
150
|
-
e.preventDefault();
|
|
151
|
-
var focusedNow = focused;
|
|
152
|
-
|
|
153
|
-
if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {
|
|
154
|
-
focusedNow -= 1;
|
|
155
|
-
setNewFocusedElement(focusedNow);
|
|
156
|
-
}
|
|
157
|
-
} else if (e.keyCode === 40) {
|
|
158
|
-
e.preventDefault();
|
|
159
|
-
var focusedNow = focused;
|
|
160
|
-
|
|
161
|
-
if (focusedNow !== undefined && focusedNow !== null) {
|
|
162
|
-
focusedNow++;
|
|
163
|
-
} else {
|
|
164
|
-
focusedNow = 0;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
setNewFocusedElement(focusedNow);
|
|
168
|
-
} else if (e.keyCode === 9) {
|
|
169
|
-
e.preventDefault();
|
|
170
|
-
var focusedNow = focused;
|
|
171
|
-
|
|
172
|
-
if (focusedNow !== undefined && focusedNow !== null) {
|
|
173
|
-
focusedNow++;
|
|
174
|
-
const newFocusedElement = document.getElementById(`${id}_${focusedNow}`);
|
|
175
|
-
|
|
176
|
-
if (!newFocusedElement) {
|
|
177
|
-
setNewFocusedElement(0);
|
|
178
|
-
} else {
|
|
179
|
-
setNewFocusedElement(focusedNow);
|
|
180
|
-
}
|
|
181
|
-
} else {
|
|
182
|
-
setNewFocusedElement(0);
|
|
183
|
-
}
|
|
184
|
-
} else if (e.keyCode === 27) {
|
|
185
|
-
setIsOpen(false);
|
|
186
|
-
setNewFocusedElement(0);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
};
|
|
131
|
+
/*
|
|
132
|
+
if (!items.includes(input)) {
|
|
133
|
+
setInput('');
|
|
134
|
+
setPlaceholderSearch(placeholder || '');
|
|
135
|
+
} */
|
|
190
136
|
|
|
191
137
|
const handleKeyPress = e => {
|
|
192
138
|
if (styledFieldRef?.current && styledFieldRef.current.contains(e.target)) {
|
|
193
139
|
if (e.keyCode === 13) {
|
|
194
140
|
setIsOpen(!isOpen);
|
|
195
|
-
setNewFocusedElement(0);
|
|
196
141
|
} else if (e.keyCode === 40) {
|
|
197
142
|
setIsOpen(!isOpen);
|
|
198
|
-
setNewFocusedElement(0);
|
|
199
143
|
}
|
|
200
144
|
}
|
|
201
145
|
};
|
|
202
146
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
147
|
+
const handleValueSelect = values => {
|
|
148
|
+
setRestartFilter(true);
|
|
149
|
+
setInput(values.join(', '));
|
|
150
|
+
onSelect && onSelect(values); //don't close dropdown on item select if have custom action or multiselect
|
|
151
|
+
|
|
152
|
+
if (actionLabel || multiSelect) return;
|
|
153
|
+
setIsOpen(false);
|
|
154
|
+
setFocused(null);
|
|
155
|
+
};
|
|
156
|
+
|
|
206
157
|
React.useEffect(() => {
|
|
207
158
|
if (initalValue) {
|
|
208
159
|
setInput(initalValue);
|
|
@@ -210,63 +161,18 @@
|
|
|
210
161
|
}
|
|
211
162
|
}, [initalValue]);
|
|
212
163
|
React.useEffect(() => {
|
|
213
|
-
document.addEventListener('keydown', handleKeyDown);
|
|
214
164
|
document.addEventListener('keypress', handleKeyPress);
|
|
215
|
-
document.addEventListener('click', handleClickOutside);
|
|
216
165
|
return () => {
|
|
217
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
218
166
|
document.removeEventListener('keypress', handleKeyPress);
|
|
219
|
-
document.removeEventListener('click', handleClickOutside);
|
|
220
167
|
};
|
|
221
168
|
});
|
|
222
169
|
React.useEffect(() => {
|
|
223
170
|
setIsLoading(false);
|
|
224
171
|
}, [input]);
|
|
225
172
|
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
if (!restartFilter && input !== '') {
|
|
231
|
-
options = options.filter(option => option.toUpperCase().indexOf(input.toUpperCase()) !== -1);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
if (!disableSorting) {
|
|
235
|
-
options = options.sort();
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
if (options.length === 0) {
|
|
239
|
-
return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
|
|
240
|
-
disabled: true
|
|
241
|
-
}, /*#__PURE__*/React.createElement("span", null, messageOnNoResults));
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
return options.map(item => {
|
|
245
|
-
return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
|
|
246
|
-
type: "button",
|
|
247
|
-
onClick: e => {
|
|
248
|
-
e.preventDefault();
|
|
249
|
-
setRestartFilter(true);
|
|
250
|
-
setInput(item);
|
|
251
|
-
onSelect && onSelect(item);
|
|
252
|
-
setIsOpen(false);
|
|
253
|
-
setFocused(null);
|
|
254
|
-
},
|
|
255
|
-
className: item === input ? 'active' : '',
|
|
256
|
-
key: item,
|
|
257
|
-
id: `${id}_${number++}`
|
|
258
|
-
}, /*#__PURE__*/React.createElement("span", null, item));
|
|
259
|
-
});
|
|
260
|
-
};
|
|
261
|
-
|
|
262
|
-
const determineDropUp = () => {
|
|
263
|
-
const options = normalizedList;
|
|
264
|
-
const node = dropdownContentRef.current;
|
|
265
|
-
if (!node) return;
|
|
266
|
-
const windowHeight = window.innerHeight;
|
|
267
|
-
const menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);
|
|
268
|
-
const instOffsetWithMenu = node.getBoundingClientRect().top + menuHeight;
|
|
269
|
-
setIsUp(instOffsetWithMenu >= windowHeight);
|
|
173
|
+
const customSetIsOpen = isOpen => {
|
|
174
|
+
console.log('dropdown content triggered');
|
|
175
|
+
setIsOpen(isOpen);
|
|
270
176
|
};
|
|
271
177
|
|
|
272
178
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_CommonStyling.Dropdown, {
|
|
@@ -302,12 +208,32 @@
|
|
|
302
208
|
}) : /*#__PURE__*/React.createElement(_SystemIcons.ArrowDropDown, {
|
|
303
209
|
size: "24px",
|
|
304
210
|
className: size ? size : ''
|
|
305
|
-
}))), !locked && !disabled && /*#__PURE__*/React.createElement(
|
|
211
|
+
}))), !locked && !disabled && /*#__PURE__*/React.createElement(_DropdownContent2.default, {
|
|
212
|
+
customizationProps: {
|
|
213
|
+
itemsType: itemsType,
|
|
214
|
+
action: action ?? (() => {}),
|
|
215
|
+
actionLabel: actionLabel,
|
|
216
|
+
scrollable: scrollable,
|
|
217
|
+
isButton: isButton || false,
|
|
218
|
+
onValueUpdate: handleValueSelect,
|
|
219
|
+
items: normalizedList.map(x => ({
|
|
220
|
+
value: x
|
|
221
|
+
})),
|
|
222
|
+
multiSelect: multiSelect,
|
|
223
|
+
pinTopItem: pinTopItem,
|
|
224
|
+
maxHeight: maxHeight
|
|
225
|
+
},
|
|
226
|
+
size: size == 'medium' ? _types.Size.Medium : _types.Size.Small,
|
|
227
|
+
filter: '',
|
|
228
|
+
hideOnClickOutside: true,
|
|
229
|
+
isOpen: isOpen,
|
|
230
|
+
setIsOpen: customSetIsOpen,
|
|
231
|
+
messageOnNoResults: messageOnNoResults ?? '',
|
|
306
232
|
isButton: isButton || false,
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
}
|
|
233
|
+
selectedValues: selectedValues,
|
|
234
|
+
setSelectedValues: setSelectedValues,
|
|
235
|
+
id: `${id}_dropdowncontent`
|
|
236
|
+
})), activeValidationMessage && /*#__PURE__*/React.createElement(_styling.WarningMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
|
|
311
237
|
size: "20px",
|
|
312
238
|
color: _styles.COLORS.warning_400
|
|
313
239
|
}), /*#__PURE__*/React.createElement("span", null, activeValidationMessage)), autofilledMessage && /*#__PURE__*/React.createElement(_styling.AutofilledMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.Information, {
|
|
@@ -319,6 +245,13 @@
|
|
|
319
245
|
BasicDropdown.propTypes = {
|
|
320
246
|
id: _propTypes2.default.string.isRequired,
|
|
321
247
|
list: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.string), _propTypes2.default.array]).isRequired,
|
|
248
|
+
itemsType: _propTypes2.default.oneOf(['normal', 'checkbox', 'radio']).isRequired,
|
|
249
|
+
action: _propTypes2.default.func,
|
|
250
|
+
actionLabel: _propTypes2.default.string,
|
|
251
|
+
pinTopItem: _propTypes2.default.bool,
|
|
252
|
+
multiSelect: _propTypes2.default.bool,
|
|
253
|
+
scrollable: _propTypes2.default.bool,
|
|
254
|
+
maxHeight: _propTypes2.default.string,
|
|
322
255
|
placeholder: _propTypes2.default.string,
|
|
323
256
|
onSelect: _propTypes2.default.func,
|
|
324
257
|
initalValue: _propTypes2.default.string,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Dropdown/BasicDropdown.tsx"],"names":["id","list","placeholder","onSelect","initalValue","disableSorting","messageOnNoResults","disabled","locked","isButton","activeValidationMessage","autofilledMessage","size","margin","MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","BasicDropdown","React","dropdownContentRef","styledFieldRef","isDropdownItem","item","setNormalizedList","i","handleClickOutside","e","setIsOpen","setFocused","normalizedList","setInput","setPlaceholderSearch","setNewFocusedElement","index","newFocusedElement","document","handleKeyDown","focusedNow","handleKeyPress","determineDropUp","setRestartFilter","setIsLoading","getElements","number","options","input","option","node","windowHeight","window","menuHeight","Math","instOffsetWithMenu","setIsUp","isOpen","isLoading","COLORS","neutral_600","isUp","warning_400"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { COLORS } from '../styles';\nimport { ArrowDropDown, ArrowDropUp, Information, TechnicalWarning } from '../icons/systemicons/SystemIcons';\nimport { LoadingIndicator } from '../LoadingIndicator';\nimport { DropdownButton, Dropdown, DropdownContent, StyledField } from './CommonStyling';\nimport { AutofilledMessage, WarningMessage } from '../InputFields/styling';\nimport { DropdownItem } from './DropdownButtonTypes';\n\ninterface DropdownFilterProps {\n id: string;\n list: string[] | DropdownItem[];\n placeholder?: string;\n onSelect?: (value: string) => void;\n initalValue?: string;\n disableSorting?: boolean;\n messageOnNoResults?: string;\n disabled?: boolean;\n locked?: boolean;\n isButton?: boolean;\n activeValidationMessage?: string;\n autofilledMessage?: string;\n size?: 'small' | 'medium';\n margin?: string;\n}\n\nconst MAX_MENU_HEIGHT = 240;\nconst AVG_OPTION_HEIGHT = 48;\n\nconst BasicDropdown = ({\n id,\n list,\n placeholder,\n onSelect,\n initalValue,\n disableSorting,\n messageOnNoResults,\n disabled,\n locked,\n isButton,\n activeValidationMessage,\n autofilledMessage,\n size,\n margin = '4px 0',\n}: DropdownFilterProps) => {\n const [isOpen, setIsOpen] = React.useState<Boolean>(false);\n const [isLoading, setIsLoading] = React.useState<Boolean>(false);\n const [input, setInput] = React.useState<string>('');\n const [placeholderSearch, setPlaceholderSearch] = React.useState<string>(placeholder || '');\n const [restartFilter, setRestartFilter] = React.useState<boolean>(false);\n const [focused, setFocused] = React.useState<number | null>(null);\n const [isUp, setIsUp] = React.useState<boolean>(false);\n const [normalizedList, setNormalizedList] = React.useState<string[]>([]);\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\n const styledFieldRef = React.useRef<HTMLDivElement>(null);\n\n const isDropdownItem = (item: string | DropdownItem) => {\n return (item as DropdownItem).label !== undefined;\n };\n\n React.useEffect(() => {\n if (list.length > 0) {\n if (isDropdownItem(list[0])) {\n setNormalizedList((list as (string | DropdownItem)[]).map((i: string | DropdownItem) => (i as DropdownItem).label));\n } else {\n setNormalizedList((list as (string | DropdownItem)[]).map((i: string | DropdownItem) => i as string));\n }\n }\n }, [list]);\n\n const handleClickOutside = (e: any) => {\n if (dropdownContentRef?.current && !dropdownContentRef.current.contains(e.target)) {\n if (isOpen) {\n setIsOpen(false);\n setFocused(null);\n if (!normalizedList.includes(input)) {\n setInput('');\n setPlaceholderSearch(placeholder || '');\n }\n }\n }\n };\n\n const setNewFocusedElement = (index: number) => {\n const newFocusedElement = document.getElementById(`${id}_${index}`);\n if (newFocusedElement) {\n setFocused(index);\n newFocusedElement.focus();\n }\n };\n\n const handleKeyDown = (e: any) => {\n if (isOpen) {\n if (e.keyCode === 38) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {\n focusedNow -= 1;\n setNewFocusedElement(focusedNow);\n }\n } else if (e.keyCode === 40) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null) {\n focusedNow++;\n } else {\n focusedNow = 0;\n }\n setNewFocusedElement(focusedNow);\n } else if (e.keyCode === 9) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null) {\n focusedNow++;\n const newFocusedElement = document.getElementById(`${id}_${focusedNow}`);\n if (!newFocusedElement) {\n setNewFocusedElement(0);\n } else {\n setNewFocusedElement(focusedNow);\n }\n } else {\n setNewFocusedElement(0);\n }\n } else if (e.keyCode === 27) {\n setIsOpen(false);\n setNewFocusedElement(0);\n }\n }\n };\n\n const handleKeyPress = (e: any) => {\n if (styledFieldRef?.current && styledFieldRef.current.contains(e.target)) {\n if (e.keyCode === 13) {\n setIsOpen(!isOpen);\n setNewFocusedElement(0);\n } else if (e.keyCode === 40) {\n setIsOpen(!isOpen);\n setNewFocusedElement(0);\n }\n }\n };\n\n React.useEffect(() => {\n determineDropUp();\n }, [isOpen]);\n\n React.useEffect(() => {\n if (initalValue) {\n setInput(initalValue);\n setRestartFilter(true);\n }\n }, [initalValue]);\n\n React.useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keypress', handleKeyPress);\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keypress', handleKeyPress);\n document.removeEventListener('click', handleClickOutside);\n };\n });\n\n React.useEffect(() => {\n setIsLoading(false);\n }, [input]);\n\n const getElements = () => {\n var number = 0;\n var options = normalizedList;\n if (!restartFilter && input !== '') {\n options = options.filter((option) => option.toUpperCase().indexOf(input.toUpperCase()) !== -1);\n }\n if (!disableSorting) {\n options = options.sort();\n }\n if (options.length === 0) {\n return (\n <DropdownButton disabled>\n <span>{messageOnNoResults}</span>\n </DropdownButton>\n );\n }\n return options.map((item) => {\n return (\n <DropdownButton\n type=\"button\"\n onClick={(e: any) => {\n e.preventDefault();\n setRestartFilter(true);\n setInput(item);\n onSelect && onSelect(item);\n setIsOpen(false);\n setFocused(null);\n }}\n className={item === input ? 'active' : ''}\n key={item}\n id={`${id}_${number++}`}>\n <span>{item}</span>\n </DropdownButton>\n );\n });\n };\n\n const determineDropUp = () => {\n const options = normalizedList;\n const node = dropdownContentRef.current;\n\n if (!node) return;\n\n const windowHeight = window.innerHeight;\n const menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);\n const instOffsetWithMenu = node.getBoundingClientRect().top + menuHeight;\n setIsUp(instOffsetWithMenu >= windowHeight);\n };\n\n return (\n <>\n <Dropdown isButton={isButton || false} className={size ? size : ''} locked={locked} disabled={disabled} margin={margin}>\n <StyledField\n ref={styledFieldRef}\n className={(isOpen ? 'expanded ' : '').concat(size ? size : '').concat(isButton ? 'button' : '')}\n onClick={() => {\n if (!locked || !disabled) {\n setIsOpen(!isOpen);\n }\n }}\n tabIndex={disabled || locked ? -1 : 0}\n disabled={disabled || false}\n locked={locked || false}\n showValidationMessage={!!activeValidationMessage}\n isPlaceholder={!input}>\n <div className={'value'}>{input || placeholderSearch}</div>\n {isLoading ? <LoadingIndicator size=\"small\" color={COLORS.neutral_600} /> : null}\n <div onClick={() => setIsOpen(!isOpen)} className={'icon'}>\n {isOpen ? <ArrowDropUp size=\"24px\" className={size ? size : ''} /> : <ArrowDropDown size=\"24px\" className={size ? size : ''} />}\n </div>\n </StyledField>\n {!locked && !disabled && (\n <DropdownContent\n isButton={isButton || false}\n ref={dropdownContentRef}\n id={`${id}_dropdowncontent`}\n className={[isOpen && 'show', isUp && 'up'].filter((e) => !!e).join(' ')}>\n {getElements()}\n </DropdownContent>\n )}\n </Dropdown>\n {activeValidationMessage && (\n <WarningMessage>\n <TechnicalWarning size=\"20px\" color={COLORS.warning_400} />\n <span>{activeValidationMessage}</span>\n </WarningMessage>\n )}\n {autofilledMessage && (\n <AutofilledMessage>\n <Information size=\"20px\" color={COLORS.neutral_600} />\n <span>{autofilledMessage}</span>\n </AutofilledMessage>\n )}\n </>\n );\n};\n\nexport default BasicDropdown;\n"],"file":"BasicDropdown.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/Dropdown/BasicDropdown.tsx"],"names":["id","list","itemsType","action","actionLabel","pinTopItem","multiSelect","scrollable","maxHeight","placeholder","onSelect","initalValue","disableSorting","messageOnNoResults","disabled","locked","isButton","activeValidationMessage","autofilledMessage","size","margin","MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","BasicDropdown","React","styledFieldRef","isDropdownItem","item","setNormalizedList","i","handleKeyPress","e","setIsOpen","handleValueSelect","values","setRestartFilter","setInput","setFocused","document","setIsLoading","customSetIsOpen","isOpen","console","input","isLoading","COLORS","neutral_600","onValueUpdate","items","x","value","Size","warning_400"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { COLORS } from '../styles';\nimport { ArrowDropDown, ArrowDropUp, Information, TechnicalWarning } from '../icons/systemicons/SystemIcons';\nimport { LoadingIndicator } from '../LoadingIndicator';\nimport { DropdownButton, Dropdown, StyledField } from './CommonStyling';\nimport DropdownContent from './DropdownContent'\nimport { AutofilledMessage, WarningMessage } from '../InputFields/styling';\nimport { DropdownItem } from './DropdownButtonTypes';\nimport { Size } from '../types';\n\ninterface DropdownFilterProps {\n id: string;\n list: string[] | DropdownItem[];\n itemsType: 'normal' | 'checkbox' | 'radio';\n action?: () => void;\n actionLabel?: string;\n pinTopItem?: boolean;\n multiSelect?: boolean;\n scrollable?: boolean;\n maxHeight?: string;\n placeholder?: string;\n onSelect?: (value: string[]) => void;\n initalValue?: string;\n disableSorting?: boolean;\n messageOnNoResults?: string;\n disabled?: boolean;\n locked?: boolean;\n isButton?: boolean;\n activeValidationMessage?: string;\n autofilledMessage?: string;\n size?: 'small' | 'medium';\n margin?: string;\n}\n\nconst MAX_MENU_HEIGHT = 240;\nconst AVG_OPTION_HEIGHT = 48;\n\nconst BasicDropdown = ({\n id,\n list,\n placeholder,\n onSelect,\n initalValue,\n disableSorting,\n messageOnNoResults,\n itemsType,\n action,\n actionLabel,\n pinTopItem,\n multiSelect,\n scrollable = true,\n maxHeight,\n disabled,\n locked,\n isButton,\n activeValidationMessage,\n autofilledMessage,\n size,\n margin = '4px 0',\n}: DropdownFilterProps) => {\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\n const [isLoading, setIsLoading] = React.useState<boolean>(false);\n const [input, setInput] = React.useState<string>('');\n const [placeholderSearch, setPlaceholderSearch] = React.useState<string>(placeholder || '');\n const [restartFilter, setRestartFilter] = React.useState<boolean>(false);\n const [focused, setFocused] = React.useState<number | null>(null);\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\n const [normalizedList, setNormalizedList] = React.useState<string[]>([]);\n\n const styledFieldRef = React.useRef<HTMLDivElement>(null);\n\n const isDropdownItem = (item: string | DropdownItem) => {\n return (item as DropdownItem).label !== undefined;\n };\n\n React.useEffect(() => {\n if (list.length > 0) {\n if (isDropdownItem(list[0])) {\n setNormalizedList((list as (string | DropdownItem)[]).map((i: string | DropdownItem) => (i as DropdownItem).label));\n } else {\n setNormalizedList((list as (string | DropdownItem)[]).map((i: string | DropdownItem) => i as string));\n }\n }\n }, [list]);\n\n /*\n if (!items.includes(input)) {\n setInput('');\n setPlaceholderSearch(placeholder || '');\n } */\n\n const handleKeyPress = (e: any) => {\n if (styledFieldRef?.current && styledFieldRef.current.contains(e.target)) {\n if (e.keyCode === 13) {\n setIsOpen(!isOpen);\n } else if (e.keyCode === 40) {\n setIsOpen(!isOpen);\n }\n }\n };\n\n const handleValueSelect = (values: string[]) => {\n \n setRestartFilter(true);\n setInput(values.join(', '));\n onSelect && onSelect(values);\n //don't close dropdown on item select if have custom action or multiselect\n if(actionLabel || multiSelect)\n return;\n\n setIsOpen(false);\n setFocused(null);\n };\n\n React.useEffect(() => {\n if (initalValue) {\n setInput(initalValue);\n setRestartFilter(true);\n }\n }, [initalValue]);\n\n React.useEffect(() => {\n document.addEventListener('keypress', handleKeyPress);\n return () => {\n document.removeEventListener('keypress', handleKeyPress);\n };\n });\n\n React.useEffect(() => {\n setIsLoading(false);\n }, [input]);\n\n const customSetIsOpen = (isOpen: boolean) => {\n console.log('dropdown content triggered');\n setIsOpen(isOpen);\n }\n\n return (\n <>\n <Dropdown isButton={isButton || false} className={size ? size : ''} locked={locked} disabled={disabled} margin={margin}>\n <StyledField\n ref={styledFieldRef}\n className={(isOpen ? 'expanded ' : '').concat(size ? size : '').concat(isButton ? 'button' : '')}\n onClick={() => {\n if (!locked || !disabled) {\n setIsOpen(!isOpen);\n }\n }}\n tabIndex={disabled || locked ? -1 : 0}\n disabled={disabled || false}\n locked={locked || false}\n showValidationMessage={!!activeValidationMessage}\n isPlaceholder={!input}>\n <div className={'value'}>{input || placeholderSearch}</div>\n {isLoading ? <LoadingIndicator size=\"small\" color={COLORS.neutral_600} /> : null}\n <div onClick={() => setIsOpen(!isOpen)} className={'icon'}>\n {isOpen ? <ArrowDropUp size=\"24px\" className={size ? size : ''} /> : <ArrowDropDown size=\"24px\" className={size ? size : ''} />}\n </div>\n </StyledField>\n {!locked && !disabled && (\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {}),\n actionLabel: actionLabel,\n scrollable: scrollable,\n isButton: isButton || false,\n onValueUpdate: handleValueSelect,\n items: normalizedList.map(x => ({ value: x })),\n multiSelect: multiSelect,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight\n }}\n size={size == 'medium' ? Size.Medium : Size.Small}\n filter={''}\n hideOnClickOutside={true}\n isOpen={isOpen}\n setIsOpen={customSetIsOpen}\n messageOnNoResults={messageOnNoResults ?? ''}\n isButton={isButton || false}\n selectedValues={selectedValues}\n setSelectedValues={setSelectedValues}\n id={`${id}_dropdowncontent`}\n />\n )}\n </Dropdown>\n {activeValidationMessage && (\n <WarningMessage>\n <TechnicalWarning size=\"20px\" color={COLORS.warning_400} />\n <span>{activeValidationMessage}</span>\n </WarningMessage>\n )}\n {autofilledMessage && (\n <AutofilledMessage>\n <Information size=\"20px\" color={COLORS.neutral_600} />\n <span>{autofilledMessage}</span>\n </AutofilledMessage>\n )}\n </>\n );\n};\n\nexport default BasicDropdown;\n"],"file":"BasicDropdown.js"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
if (typeof define === "function" && define.amd) {
|
|
3
|
-
define(["exports", "prop-types", "react", "styled-components", "../Chips/index", "../icons/systemicons/SystemIcons", "../InputFields/styling", "../styles", "../Chips/ChipStyles", "./CommonStyling", "../LoadingIndicator", "../styles/typography"], factory);
|
|
3
|
+
define(["exports", "prop-types", "react", "styled-components", "../Chips/index", "../icons/systemicons/SystemIcons", "../InputFields/styling", "../styles", "../Chips/ChipStyles", "./CommonStyling", "./DropdownContent", "../LoadingIndicator", "../styles/typography"], factory);
|
|
4
4
|
} else if (typeof exports !== "undefined") {
|
|
5
|
-
factory(exports, require("prop-types"), require("react"), require("styled-components"), require("../Chips/index"), require("../icons/systemicons/SystemIcons"), require("../InputFields/styling"), require("../styles"), require("../Chips/ChipStyles"), require("./CommonStyling"), require("../LoadingIndicator"), require("../styles/typography"));
|
|
5
|
+
factory(exports, require("prop-types"), require("react"), require("styled-components"), require("../Chips/index"), require("../icons/systemicons/SystemIcons"), require("../InputFields/styling"), require("../styles"), require("../Chips/ChipStyles"), require("./CommonStyling"), require("./DropdownContent"), require("../LoadingIndicator"), require("../styles/typography"));
|
|
6
6
|
} else {
|
|
7
7
|
var mod = {
|
|
8
8
|
exports: {}
|
|
9
9
|
};
|
|
10
|
-
factory(mod.exports, global.propTypes, global.react, global.styledComponents, global.index, global.SystemIcons, global.styling, global.styles, global.ChipStyles, global.CommonStyling, global.LoadingIndicator, global.typography);
|
|
10
|
+
factory(mod.exports, global.propTypes, global.react, global.styledComponents, global.index, global.SystemIcons, global.styling, global.styles, global.ChipStyles, global.CommonStyling, global.DropdownContent, global.LoadingIndicator, global.typography);
|
|
11
11
|
global.undefined = mod.exports;
|
|
12
12
|
}
|
|
13
|
-
})(this, function (exports, _propTypes, _react, _styledComponents, _index, _SystemIcons, _styling, _styles, _ChipStyles, _CommonStyling, _LoadingIndicator, _typography) {
|
|
13
|
+
})(this, function (exports, _propTypes, _react, _styledComponents, _index, _SystemIcons, _styling, _styles, _ChipStyles, _CommonStyling, _DropdownContent, _LoadingIndicator, _typography) {
|
|
14
14
|
"use strict";
|
|
15
15
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
|
|
24
24
|
var _styledComponents2 = _interopRequireDefault(_styledComponents);
|
|
25
25
|
|
|
26
|
+
var _DropdownContent2 = _interopRequireDefault(_DropdownContent);
|
|
27
|
+
|
|
26
28
|
function _getRequireWildcardCache(nodeInterop) {
|
|
27
29
|
if (typeof WeakMap !== "function") return null;
|
|
28
30
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -194,19 +196,6 @@
|
|
|
194
196
|
svg {
|
|
195
197
|
margin: auto 0 auto 0;
|
|
196
198
|
}
|
|
197
|
-
`;
|
|
198
|
-
const DropdownButtonLabels = _styledComponents2.default.div`
|
|
199
|
-
display: flex;
|
|
200
|
-
flex-direction: column;
|
|
201
|
-
span {
|
|
202
|
-
line-height: 24px;
|
|
203
|
-
}
|
|
204
|
-
`;
|
|
205
|
-
const SecondaryLabel = _styledComponents2.default.span`
|
|
206
|
-
${(0, _typography.ComponentXXSStyling)(_typography.ComponentTextStyle.Regular, _styles.COLORS.neutral_600)}
|
|
207
|
-
`;
|
|
208
|
-
const SuggestionButton = (0, _styledComponents2.default)(StyledDropdownButton)`
|
|
209
|
-
border-bottom: 1px solid ${_styles.COLORS.neutral_200};
|
|
210
199
|
`;
|
|
211
200
|
const Loading = _styledComponents2.default.div`
|
|
212
201
|
margin: auto 16px auto auto !important;
|
|
@@ -239,12 +228,10 @@
|
|
|
239
228
|
const [value, setValue] = React.useState('');
|
|
240
229
|
const [dropdownIsOpen, setDropdownIsOpen] = React.useState(false);
|
|
241
230
|
const [currentSearchResult, setCurrentSearchResult] = React.useState();
|
|
242
|
-
const [restartFilter, setRestartFilter] = React.useState(false);
|
|
243
|
-
const [focused, setFocused] = React.useState(null); // Initiate refs
|
|
231
|
+
const [restartFilter, setRestartFilter] = React.useState(false); // Initiate refs
|
|
244
232
|
|
|
245
233
|
const chipInput = React.useRef();
|
|
246
234
|
const styledFieldRef = React.useRef(null);
|
|
247
|
-
const dropdownRef = React.useRef();
|
|
248
235
|
/**
|
|
249
236
|
* Sets initial values for the chips.
|
|
250
237
|
*/
|
|
@@ -359,110 +346,10 @@
|
|
|
359
346
|
setCurrentSearchResult(options);
|
|
360
347
|
}, [value, givenList, chips]);
|
|
361
348
|
|
|
362
|
-
const
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
|
|
367
|
-
disabled: true
|
|
368
|
-
}, /*#__PURE__*/React.createElement("span", null, messageOnNoResults));
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, suggestion && /*#__PURE__*/React.createElement(SuggestionButton, {
|
|
372
|
-
type: "button",
|
|
373
|
-
tabIndex: -1,
|
|
374
|
-
onClick: e => {
|
|
375
|
-
e.preventDefault();
|
|
376
|
-
setRestartFilter(true);
|
|
377
|
-
addChip(suggestion.value);
|
|
378
|
-
setFocused(null);
|
|
379
|
-
chipInput?.current?.focus();
|
|
380
|
-
},
|
|
381
|
-
className: suggestion.value.toLowerCase() === value.toLowerCase() ? 'active' : '',
|
|
382
|
-
key: suggestion.value,
|
|
383
|
-
id: `${inputId}_${number++}`
|
|
384
|
-
}, !excludeIcon && /*#__PURE__*/React.createElement(_SystemIcons.User, {
|
|
385
|
-
size: "24px"
|
|
386
|
-
}), suggestion.secondaryLabel ? /*#__PURE__*/React.createElement(DropdownButtonLabels, null, /*#__PURE__*/React.createElement("span", null, suggestion.label), /*#__PURE__*/React.createElement(SecondaryLabel, null, suggestion.secondaryLabel)) : /*#__PURE__*/React.createElement("span", null, suggestion.label)), currentSearchResult?.map(item => {
|
|
387
|
-
return /*#__PURE__*/React.createElement(StyledDropdownButton, {
|
|
388
|
-
type: "button",
|
|
389
|
-
tabIndex: -1,
|
|
390
|
-
onClick: e => {
|
|
391
|
-
e.preventDefault();
|
|
392
|
-
setRestartFilter(true);
|
|
393
|
-
addChip(item.value);
|
|
394
|
-
setFocused(null);
|
|
395
|
-
chipInput?.current?.focus();
|
|
396
|
-
},
|
|
397
|
-
className: item.value.toLowerCase() === value.toLowerCase() ? 'active' : '',
|
|
398
|
-
key: item.value,
|
|
399
|
-
id: `${inputId}_${number++}`
|
|
400
|
-
}, !excludeIcon && /*#__PURE__*/React.createElement(_SystemIcons.User, {
|
|
401
|
-
size: "24px"
|
|
402
|
-
}), item.secondaryLabel ? /*#__PURE__*/React.createElement(DropdownButtonLabels, null, /*#__PURE__*/React.createElement("span", null, item.label), /*#__PURE__*/React.createElement(SecondaryLabel, null, item.secondaryLabel)) : /*#__PURE__*/React.createElement("span", null, item.label));
|
|
403
|
-
}));
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
const setNewFocusedElement = index => {
|
|
407
|
-
const newFocusedElement = document.getElementById(`${inputId}_${index}`);
|
|
408
|
-
|
|
409
|
-
if (newFocusedElement) {
|
|
410
|
-
setFocused(index);
|
|
411
|
-
newFocusedElement.focus();
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
|
-
|
|
415
|
-
const handleKeyDown = e => {
|
|
416
|
-
if (dropdownIsOpen) {
|
|
417
|
-
if (e.keyCode === 38) {
|
|
418
|
-
e.preventDefault();
|
|
419
|
-
var focusedNow = focused;
|
|
420
|
-
|
|
421
|
-
if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {
|
|
422
|
-
focusedNow -= 1;
|
|
423
|
-
setNewFocusedElement(focusedNow);
|
|
424
|
-
}
|
|
425
|
-
} else if (e.keyCode === 40) {
|
|
426
|
-
e.preventDefault();
|
|
427
|
-
var focusedNow = focused;
|
|
428
|
-
|
|
429
|
-
if (focusedNow !== undefined && focusedNow !== null) {
|
|
430
|
-
focusedNow++;
|
|
431
|
-
} else {
|
|
432
|
-
focusedNow = 0;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
setNewFocusedElement(focusedNow);
|
|
436
|
-
} else if (e.keyCode === 9) {
|
|
437
|
-
setDropdownIsOpen(false);
|
|
438
|
-
} else if (e.keyCode === 27) {
|
|
439
|
-
setDropdownIsOpen(false);
|
|
440
|
-
setNewFocusedElement(0);
|
|
441
|
-
|
|
442
|
-
if (!givenList.find(e => e.value === value)) {
|
|
443
|
-
setValue('');
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
styledFieldRef.current?.focus();
|
|
447
|
-
} else if (e.keyCode === 13) {
|
|
448
|
-
const matches = currentSearchResult?.filter(c => c.value.toLowerCase() === value.toLowerCase());
|
|
449
|
-
|
|
450
|
-
if (matches?.length === 1
|
|
451
|
-
/*&& onSelect*/
|
|
452
|
-
) {
|
|
453
|
-
addChip(matches[0].value); //onSelect(chips);
|
|
454
|
-
} else if (e.target.value === suggestion?.label) {
|
|
455
|
-
addChip(e.target.value);
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
setDropdownIsOpen(!dropdownIsOpen);
|
|
459
|
-
setNewFocusedElement(0);
|
|
460
|
-
|
|
461
|
-
if (matches?.length === 0) {
|
|
462
|
-
setValue('');
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
}
|
|
349
|
+
const handleValueUpdate = values => {
|
|
350
|
+
setRestartFilter(true);
|
|
351
|
+
addChip(values[0]);
|
|
352
|
+
chipInput?.current?.focus();
|
|
466
353
|
};
|
|
467
354
|
|
|
468
355
|
const handleKeyPress = e => {
|
|
@@ -479,14 +366,12 @@
|
|
|
479
366
|
}
|
|
480
367
|
|
|
481
368
|
setDropdownIsOpen(!dropdownIsOpen);
|
|
482
|
-
setNewFocusedElement(0);
|
|
483
369
|
|
|
484
370
|
if (matches?.length === 0) {
|
|
485
371
|
setValue('');
|
|
486
372
|
}
|
|
487
373
|
} else if (e.keyCode === 40) {
|
|
488
374
|
setDropdownIsOpen(!dropdownIsOpen);
|
|
489
|
-
setNewFocusedElement(0);
|
|
490
375
|
}
|
|
491
376
|
}
|
|
492
377
|
};
|
|
@@ -495,7 +380,6 @@
|
|
|
495
380
|
if (styledFieldRef?.current && !styledFieldRef.current.contains(e.target)) {
|
|
496
381
|
if (dropdownIsOpen) {
|
|
497
382
|
setDropdownIsOpen(false);
|
|
498
|
-
setFocused(null);
|
|
499
383
|
|
|
500
384
|
if (!givenList.find(e => e.value === value)) {
|
|
501
385
|
setValue('');
|
|
@@ -505,11 +389,9 @@
|
|
|
505
389
|
};
|
|
506
390
|
|
|
507
391
|
React.useEffect(() => {
|
|
508
|
-
document.addEventListener('keydown', handleKeyDown);
|
|
509
392
|
document.addEventListener('keypress', handleKeyPress);
|
|
510
393
|
document.addEventListener('click', handleClickOutside);
|
|
511
394
|
return () => {
|
|
512
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
513
395
|
document.removeEventListener('keypress', handleKeyPress);
|
|
514
396
|
document.removeEventListener('click', handleClickOutside);
|
|
515
397
|
};
|
|
@@ -518,6 +400,18 @@
|
|
|
518
400
|
* Return Chip Input component.
|
|
519
401
|
*/
|
|
520
402
|
|
|
403
|
+
let dropdownItems = [];
|
|
404
|
+
if (currentSearchResult) dropdownItems = currentSearchResult.map(x => ({
|
|
405
|
+
value: x.value,
|
|
406
|
+
displayLabel: x.label,
|
|
407
|
+
noteLabel: x.secondaryLabel
|
|
408
|
+
}));
|
|
409
|
+
if (suggestion && !chips.includes(suggestion.value)) dropdownItems = [{
|
|
410
|
+
value: suggestion.value,
|
|
411
|
+
displayLabel: suggestion.label,
|
|
412
|
+
noteLabel: suggestion.secondaryLabel,
|
|
413
|
+
suggestion: true
|
|
414
|
+
}, ...dropdownItems];
|
|
521
415
|
return /*#__PURE__*/React.createElement(Wrapper, null, /*#__PURE__*/React.createElement(StyledChipInputContainer, {
|
|
522
416
|
id: inputId,
|
|
523
417
|
onClick: e => {
|
|
@@ -564,12 +458,28 @@
|
|
|
564
458
|
}), loading ? /*#__PURE__*/React.createElement(Loading, null, /*#__PURE__*/React.createElement(_LoadingIndicator.LoadingIndicator, {
|
|
565
459
|
size: "small",
|
|
566
460
|
color: _styles.COLORS.neutral_600
|
|
567
|
-
})) : null), (!maxSelectedItems || maxSelectedItems && chips.length < maxSelectedItems) && /*#__PURE__*/React.createElement(
|
|
461
|
+
})) : null), (!maxSelectedItems || maxSelectedItems && chips.length < maxSelectedItems) && /*#__PURE__*/React.createElement(_DropdownContent2.default, {
|
|
462
|
+
customizationProps: {
|
|
463
|
+
isButton: false,
|
|
464
|
+
action: () => {},
|
|
465
|
+
pinTopItem: true,
|
|
466
|
+
itemsType: 'normal',
|
|
467
|
+
scrollable: true,
|
|
468
|
+
actionLabel: '',
|
|
469
|
+
multiSelect: false,
|
|
470
|
+
onValueUpdate: handleValueUpdate,
|
|
471
|
+
items: dropdownItems
|
|
472
|
+
},
|
|
473
|
+
hideOnClickOutside: false,
|
|
474
|
+
selectedValues: [],
|
|
475
|
+
messageOnNoResults: messageOnNoResults ?? '',
|
|
476
|
+
setSelectedValues: () => {},
|
|
477
|
+
isOpen: dropdownIsOpen,
|
|
478
|
+
setIsOpen: setDropdownIsOpen,
|
|
479
|
+
filter: '',
|
|
568
480
|
isButton: false,
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
className: dropdownIsOpen ? 'show' : ''
|
|
572
|
-
}, getElements()), validationMessage && validationType === 'warning' ? /*#__PURE__*/React.createElement(_styling.WarningMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
|
|
481
|
+
id: `${inputId}_dropdowncontent`
|
|
482
|
+
}), validationMessage && validationType === 'warning' ? /*#__PURE__*/React.createElement(_styling.WarningMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
|
|
573
483
|
size: "20px",
|
|
574
484
|
color: _styles.COLORS.critical_500
|
|
575
485
|
}), /*#__PURE__*/React.createElement("span", null, validationMessage)) : validationType === 'error' && /*#__PURE__*/React.createElement(_styling.ErrorMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
|