@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.
Files changed (176) hide show
  1. package/dist/esm/Banners/Banner.js +11 -8
  2. package/dist/esm/Banners/Banner.js.map +1 -1
  3. package/dist/esm/Button/Anchor.js +76 -0
  4. package/dist/esm/Button/Anchor.js.map +1 -0
  5. package/dist/esm/Button/BackButton.js +1 -1
  6. package/dist/esm/Button/BackButton.js.map +1 -1
  7. package/dist/esm/Button/Button.js +46 -19
  8. package/dist/esm/Button/Button.js.map +1 -1
  9. package/dist/esm/Button/DualFunctionButton.js +111 -0
  10. package/dist/esm/Button/DualFunctionButton.js.map +1 -0
  11. package/dist/esm/Button/Iconbutton.js +21 -1
  12. package/dist/esm/Button/Iconbutton.js.map +1 -1
  13. package/dist/esm/Button/__tests__/Button.test.js +2 -1
  14. package/dist/esm/Button/__tests__/Button.test.js.map +1 -1
  15. package/dist/esm/Button/index.js +1 -0
  16. package/dist/esm/Button/index.js.map +1 -1
  17. package/dist/esm/Dropdown/BasicDropdown.js +60 -127
  18. package/dist/esm/Dropdown/BasicDropdown.js.map +1 -1
  19. package/dist/esm/Dropdown/ChipDropdownInput.js +41 -132
  20. package/dist/esm/Dropdown/ChipDropdownInput.js.map +1 -1
  21. package/dist/esm/Dropdown/CommonStyling.js +20 -15
  22. package/dist/esm/Dropdown/CommonStyling.js.map +1 -1
  23. package/dist/esm/Dropdown/DropdownButton.js +2 -2
  24. package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
  25. package/dist/esm/Dropdown/DropdownContent.js +424 -0
  26. package/dist/esm/Dropdown/DropdownContent.js.map +1 -0
  27. package/dist/esm/Dropdown/DropdownFilter.js +42 -151
  28. package/dist/esm/Dropdown/DropdownFilter.js.map +1 -1
  29. package/dist/esm/GlobalNavigationBar/UserMenu/UserMenu.js +15 -17
  30. package/dist/esm/GlobalNavigationBar/UserMenu/UserMenu.js.map +1 -1
  31. package/dist/esm/InputFields/Checkbox.js +19 -10
  32. package/dist/esm/InputFields/Checkbox.js.map +1 -1
  33. package/dist/esm/InputFields/QuickSearch.js +22 -12
  34. package/dist/esm/InputFields/QuickSearch.js.map +1 -1
  35. package/dist/esm/InputFields/RadioButton.js +18 -11
  36. package/dist/esm/InputFields/RadioButton.js.map +1 -1
  37. package/dist/esm/InputFields/components/SearchBarInput.js +1 -1
  38. package/dist/esm/InputFields/components/SearchBarInput.js.map +1 -1
  39. package/dist/esm/Modals/ModalDialog.js +14 -14
  40. package/dist/esm/Modals/ModalDialog.js.map +1 -1
  41. package/dist/esm/Modals/ModalStyles.js +3 -2
  42. package/dist/esm/Modals/ModalStyles.js.map +1 -1
  43. package/dist/esm/Paginator/Paginator.js +18 -8
  44. package/dist/esm/Paginator/Paginator.js.map +1 -1
  45. package/dist/esm/Paginator/__tests__/Paginator.test.js +1 -1
  46. package/dist/esm/Paginator/__tests__/Paginator.test.js.map +1 -1
  47. package/dist/esm/Table/Table.js +2 -1
  48. package/dist/esm/Table/Table.js.map +1 -1
  49. package/dist/esm/Tabs/TabLink.js +1 -1
  50. package/dist/esm/Tabs/TabLink.js.map +1 -1
  51. package/dist/esm/Toasters/Toast.js +2 -1
  52. package/dist/esm/Toasters/Toast.js.map +1 -1
  53. package/dist/esm/types.js +8 -0
  54. package/dist/esm/types.js.map +1 -1
  55. package/dist/js/Banners/Banner.js +13 -11
  56. package/dist/js/Banners/Banner.js.map +1 -1
  57. package/dist/js/Button/Anchor.d.ts +7 -0
  58. package/dist/js/Button/Anchor.js +66 -0
  59. package/dist/js/Button/Anchor.js.map +1 -0
  60. package/dist/js/Button/BackButton.js +1 -1
  61. package/dist/js/Button/BackButton.js.map +1 -1
  62. package/dist/js/Button/Button.d.ts +4 -1
  63. package/dist/js/Button/Button.js +44 -18
  64. package/dist/js/Button/Button.js.map +1 -1
  65. package/dist/js/Button/DualFunctionButton.d.ts +12 -0
  66. package/dist/js/Button/DualFunctionButton.js +148 -0
  67. package/dist/js/Button/DualFunctionButton.js.map +1 -0
  68. package/dist/js/Button/Iconbutton.d.ts +1 -0
  69. package/dist/js/Button/Iconbutton.js +23 -3
  70. package/dist/js/Button/Iconbutton.js.map +1 -1
  71. package/dist/js/Button/__tests__/Button.test.js +3 -1
  72. package/dist/js/Button/__tests__/Button.test.js.map +1 -1
  73. package/dist/js/Button/index.d.ts +1 -0
  74. package/dist/js/Button/index.js +8 -0
  75. package/dist/js/Button/index.js.map +1 -1
  76. package/dist/js/Dropdown/BasicDropdown.d.ts +9 -2
  77. package/dist/js/Dropdown/BasicDropdown.js +67 -133
  78. package/dist/js/Dropdown/BasicDropdown.js.map +1 -1
  79. package/dist/js/Dropdown/ChipDropdownInput.js +45 -138
  80. package/dist/js/Dropdown/ChipDropdownInput.js.map +1 -1
  81. package/dist/js/Dropdown/CommonStyling.d.ts +6 -2
  82. package/dist/js/Dropdown/CommonStyling.js +17 -6
  83. package/dist/js/Dropdown/CommonStyling.js.map +1 -1
  84. package/dist/js/Dropdown/DropdownButton.js +1 -1
  85. package/dist/js/Dropdown/DropdownButton.js.map +1 -1
  86. package/dist/js/Dropdown/DropdownContent.d.ts +45 -0
  87. package/dist/js/Dropdown/DropdownContent.js +476 -0
  88. package/dist/js/Dropdown/DropdownContent.js.map +1 -0
  89. package/dist/js/Dropdown/DropdownFilter.js +59 -186
  90. package/dist/js/Dropdown/DropdownFilter.js.map +1 -1
  91. package/dist/js/GlobalNavigationBar/UserMenu/UserMenu.js +7 -17
  92. package/dist/js/GlobalNavigationBar/UserMenu/UserMenu.js.map +1 -1
  93. package/dist/js/InputFields/Checkbox.d.ts +5 -3
  94. package/dist/js/InputFields/Checkbox.js +16 -9
  95. package/dist/js/InputFields/Checkbox.js.map +1 -1
  96. package/dist/js/InputFields/QuickSearch.js +24 -6
  97. package/dist/js/InputFields/QuickSearch.js.map +1 -1
  98. package/dist/js/InputFields/RadioButton.d.ts +4 -2
  99. package/dist/js/InputFields/RadioButton.js +15 -10
  100. package/dist/js/InputFields/RadioButton.js.map +1 -1
  101. package/dist/js/InputFields/components/SearchBarInput.js +1 -1
  102. package/dist/js/InputFields/components/SearchBarInput.js.map +1 -1
  103. package/dist/js/Modals/ModalDialog.d.ts +2 -1
  104. package/dist/js/Modals/ModalDialog.js +15 -14
  105. package/dist/js/Modals/ModalDialog.js.map +1 -1
  106. package/dist/js/Modals/ModalStyles.d.ts +4 -3
  107. package/dist/js/Modals/ModalStyles.js +4 -2
  108. package/dist/js/Modals/ModalStyles.js.map +1 -1
  109. package/dist/js/Paginator/Paginator.js +7 -5
  110. package/dist/js/Paginator/Paginator.js.map +1 -1
  111. package/dist/js/Paginator/__tests__/Paginator.test.js +1 -1
  112. package/dist/js/Paginator/__tests__/Paginator.test.js.map +1 -1
  113. package/dist/js/Table/Table.js +3 -1
  114. package/dist/js/Table/Table.js.map +1 -1
  115. package/dist/js/Tabs/TabLink.js +1 -1
  116. package/dist/js/Tabs/TabLink.js.map +1 -1
  117. package/dist/js/Toasters/Toast.js +1 -1
  118. package/dist/js/Toasters/Toast.js.map +1 -1
  119. package/dist/js/types.d.ts +5 -0
  120. package/dist/js/types.js +10 -1
  121. package/dist/js/types.js.map +1 -1
  122. package/dist/umd/Banners/Banner.js +11 -8
  123. package/dist/umd/Banners/Banner.js.map +1 -1
  124. package/dist/umd/Button/Anchor.js +201 -0
  125. package/dist/umd/Button/Anchor.js.map +1 -0
  126. package/dist/umd/Button/BackButton.js +1 -1
  127. package/dist/umd/Button/BackButton.js.map +1 -1
  128. package/dist/umd/Button/Button.js +48 -22
  129. package/dist/umd/Button/Button.js.map +1 -1
  130. package/dist/umd/Button/DualFunctionButton.js +237 -0
  131. package/dist/umd/Button/DualFunctionButton.js.map +1 -0
  132. package/dist/umd/Button/Iconbutton.js +21 -1
  133. package/dist/umd/Button/Iconbutton.js.map +1 -1
  134. package/dist/umd/Button/__tests__/Button.test.js +5 -5
  135. package/dist/umd/Button/__tests__/Button.test.js.map +1 -1
  136. package/dist/umd/Button/index.js +10 -4
  137. package/dist/umd/Button/index.js.map +1 -1
  138. package/dist/umd/Dropdown/BasicDropdown.js +64 -131
  139. package/dist/umd/Dropdown/BasicDropdown.js.map +1 -1
  140. package/dist/umd/Dropdown/ChipDropdownInput.js +44 -134
  141. package/dist/umd/Dropdown/ChipDropdownInput.js.map +1 -1
  142. package/dist/umd/Dropdown/CommonStyling.js +23 -19
  143. package/dist/umd/Dropdown/CommonStyling.js.map +1 -1
  144. package/dist/umd/Dropdown/DropdownButton.js +1 -1
  145. package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
  146. package/dist/umd/Dropdown/DropdownContent.js +458 -0
  147. package/dist/umd/Dropdown/DropdownContent.js.map +1 -0
  148. package/dist/umd/Dropdown/DropdownFilter.js +47 -155
  149. package/dist/umd/Dropdown/DropdownFilter.js.map +1 -1
  150. package/dist/umd/GlobalNavigationBar/UserMenu/UserMenu.js +18 -21
  151. package/dist/umd/GlobalNavigationBar/UserMenu/UserMenu.js.map +1 -1
  152. package/dist/umd/InputFields/Checkbox.js +22 -14
  153. package/dist/umd/InputFields/Checkbox.js.map +1 -1
  154. package/dist/umd/InputFields/QuickSearch.js +22 -12
  155. package/dist/umd/InputFields/QuickSearch.js.map +1 -1
  156. package/dist/umd/InputFields/RadioButton.js +21 -15
  157. package/dist/umd/InputFields/RadioButton.js.map +1 -1
  158. package/dist/umd/InputFields/components/SearchBarInput.js +1 -1
  159. package/dist/umd/InputFields/components/SearchBarInput.js.map +1 -1
  160. package/dist/umd/Modals/ModalDialog.js +17 -18
  161. package/dist/umd/Modals/ModalDialog.js.map +1 -1
  162. package/dist/umd/Modals/ModalStyles.js +6 -6
  163. package/dist/umd/Modals/ModalStyles.js.map +1 -1
  164. package/dist/umd/Paginator/Paginator.js +18 -8
  165. package/dist/umd/Paginator/Paginator.js.map +1 -1
  166. package/dist/umd/Paginator/__tests__/Paginator.test.js +1 -1
  167. package/dist/umd/Paginator/__tests__/Paginator.test.js.map +1 -1
  168. package/dist/umd/Table/Table.js +5 -5
  169. package/dist/umd/Table/Table.js.map +1 -1
  170. package/dist/umd/Tabs/TabLink.js +1 -1
  171. package/dist/umd/Tabs/TabLink.js.map +1 -1
  172. package/dist/umd/Toasters/Toast.js +1 -1
  173. package/dist/umd/Toasters/Toast.js.map +1 -1
  174. package/dist/umd/types.js +8 -0
  175. package/dist/umd/types.js.map +1 -1
  176. package/package.json +1 -1
@@ -2,8 +2,15 @@ import { DropdownItem } from './DropdownButtonTypes';
2
2
  interface DropdownFilterProps {
3
3
  id: string;
4
4
  list: string[] | DropdownItem[];
5
+ itemsType: 'normal' | 'checkbox' | 'radio';
6
+ action?: () => void;
7
+ actionLabel?: string;
8
+ pinTopItem?: boolean;
9
+ multiSelect?: boolean;
10
+ scrollable?: boolean;
11
+ maxHeight?: string;
5
12
  placeholder?: string;
6
- onSelect?: (value: string) => void;
13
+ onSelect?: (value: string[]) => void;
7
14
  initalValue?: string;
8
15
  disableSorting?: boolean;
9
16
  messageOnNoResults?: string;
@@ -15,5 +22,5 @@ interface DropdownFilterProps {
15
22
  size?: 'small' | 'medium';
16
23
  margin?: string;
17
24
  }
18
- declare const BasicDropdown: ({ id, list, placeholder, onSelect, initalValue, disableSorting, messageOnNoResults, disabled, locked, isButton, activeValidationMessage, autofilledMessage, size, margin, }: DropdownFilterProps) => JSX.Element;
25
+ declare const BasicDropdown: ({ id, list, placeholder, onSelect, initalValue, disableSorting, messageOnNoResults, itemsType, action, actionLabel, pinTopItem, multiSelect, scrollable, maxHeight, disabled, locked, isButton, activeValidationMessage, autofilledMessage, size, margin, }: DropdownFilterProps) => JSX.Element;
19
26
  export default BasicDropdown;
@@ -19,8 +19,12 @@ var _LoadingIndicator = require("../LoadingIndicator");
19
19
 
20
20
  var _CommonStyling = require("./CommonStyling");
21
21
 
22
+ var _DropdownContent = _interopRequireDefault(require("./DropdownContent"));
23
+
22
24
  var _styling = require("../InputFields/styling");
23
25
 
26
+ var _types = require("../types");
27
+
24
28
  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); }
25
29
 
26
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; }
@@ -50,6 +54,14 @@ var BasicDropdown = function BasicDropdown(_ref) {
50
54
  initalValue = _ref.initalValue,
51
55
  disableSorting = _ref.disableSorting,
52
56
  messageOnNoResults = _ref.messageOnNoResults,
57
+ itemsType = _ref.itemsType,
58
+ action = _ref.action,
59
+ actionLabel = _ref.actionLabel,
60
+ pinTopItem = _ref.pinTopItem,
61
+ multiSelect = _ref.multiSelect,
62
+ _ref$scrollable = _ref.scrollable,
63
+ scrollable = _ref$scrollable === void 0 ? true : _ref$scrollable,
64
+ maxHeight = _ref.maxHeight,
53
65
  disabled = _ref.disabled,
54
66
  locked = _ref.locked,
55
67
  isButton = _ref.isButton,
@@ -89,17 +101,16 @@ var BasicDropdown = function BasicDropdown(_ref) {
89
101
  focused = _React$useState12[0],
90
102
  setFocused = _React$useState12[1];
91
103
 
92
- var _React$useState13 = React.useState(false),
104
+ var _React$useState13 = React.useState([]),
93
105
  _React$useState14 = _slicedToArray(_React$useState13, 2),
94
- isUp = _React$useState14[0],
95
- setIsUp = _React$useState14[1];
106
+ selectedValues = _React$useState14[0],
107
+ setSelectedValues = _React$useState14[1];
96
108
 
97
109
  var _React$useState15 = React.useState([]),
98
110
  _React$useState16 = _slicedToArray(_React$useState15, 2),
99
111
  normalizedList = _React$useState16[0],
100
112
  setNormalizedList = _React$useState16[1];
101
113
 
102
- var dropdownContentRef = React.useRef(null);
103
114
  var styledFieldRef = React.useRef(null);
104
115
 
105
116
  var isDropdownItem = function isDropdownItem(item) {
@@ -119,89 +130,32 @@ var BasicDropdown = function BasicDropdown(_ref) {
119
130
  }
120
131
  }
121
132
  }, [list]);
122
-
123
- var handleClickOutside = function handleClickOutside(e) {
124
- if (dropdownContentRef !== null && dropdownContentRef !== void 0 && dropdownContentRef.current && !dropdownContentRef.current.contains(e.target)) {
125
- if (isOpen) {
126
- setIsOpen(false);
127
- setFocused(null);
128
-
129
- if (!normalizedList.includes(input)) {
130
- setInput('');
131
- setPlaceholderSearch(placeholder || '');
132
- }
133
- }
134
- }
135
- };
136
-
137
- var setNewFocusedElement = function setNewFocusedElement(index) {
138
- var newFocusedElement = document.getElementById("".concat(id, "_").concat(index));
139
-
140
- if (newFocusedElement) {
141
- setFocused(index);
142
- newFocusedElement.focus();
143
- }
144
- };
145
-
146
- var handleKeyDown = function handleKeyDown(e) {
147
- if (isOpen) {
148
- if (e.keyCode === 38) {
149
- e.preventDefault();
150
- var focusedNow = focused;
151
-
152
- if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {
153
- focusedNow -= 1;
154
- setNewFocusedElement(focusedNow);
155
- }
156
- } else if (e.keyCode === 40) {
157
- e.preventDefault();
158
- var focusedNow = focused;
159
-
160
- if (focusedNow !== undefined && focusedNow !== null) {
161
- focusedNow++;
162
- } else {
163
- focusedNow = 0;
164
- }
165
-
166
- setNewFocusedElement(focusedNow);
167
- } else if (e.keyCode === 9) {
168
- e.preventDefault();
169
- var focusedNow = focused;
170
-
171
- if (focusedNow !== undefined && focusedNow !== null) {
172
- focusedNow++;
173
- var newFocusedElement = document.getElementById("".concat(id, "_").concat(focusedNow));
174
-
175
- if (!newFocusedElement) {
176
- setNewFocusedElement(0);
177
- } else {
178
- setNewFocusedElement(focusedNow);
179
- }
180
- } else {
181
- setNewFocusedElement(0);
182
- }
183
- } else if (e.keyCode === 27) {
184
- setIsOpen(false);
185
- setNewFocusedElement(0);
186
- }
187
- }
188
- };
133
+ /*
134
+ if (!items.includes(input)) {
135
+ setInput('');
136
+ setPlaceholderSearch(placeholder || '');
137
+ } */
189
138
 
190
139
  var handleKeyPress = function handleKeyPress(e) {
191
140
  if (styledFieldRef !== null && styledFieldRef !== void 0 && styledFieldRef.current && styledFieldRef.current.contains(e.target)) {
192
141
  if (e.keyCode === 13) {
193
142
  setIsOpen(!isOpen);
194
- setNewFocusedElement(0);
195
143
  } else if (e.keyCode === 40) {
196
144
  setIsOpen(!isOpen);
197
- setNewFocusedElement(0);
198
145
  }
199
146
  }
200
147
  };
201
148
 
202
- React.useEffect(function () {
203
- determineDropUp();
204
- }, [isOpen]);
149
+ var handleValueSelect = function handleValueSelect(values) {
150
+ setRestartFilter(true);
151
+ setInput(values.join(', '));
152
+ onSelect && onSelect(values); //don't close dropdown on item select if have custom action or multiselect
153
+
154
+ if (actionLabel || multiSelect) return;
155
+ setIsOpen(false);
156
+ setFocused(null);
157
+ };
158
+
205
159
  React.useEffect(function () {
206
160
  if (initalValue) {
207
161
  setInput(initalValue);
@@ -209,65 +163,18 @@ var BasicDropdown = function BasicDropdown(_ref) {
209
163
  }
210
164
  }, [initalValue]);
211
165
  React.useEffect(function () {
212
- document.addEventListener('keydown', handleKeyDown);
213
166
  document.addEventListener('keypress', handleKeyPress);
214
- document.addEventListener('click', handleClickOutside);
215
167
  return function () {
216
- document.removeEventListener('keydown', handleKeyDown);
217
168
  document.removeEventListener('keypress', handleKeyPress);
218
- document.removeEventListener('click', handleClickOutside);
219
169
  };
220
170
  });
221
171
  React.useEffect(function () {
222
172
  setIsLoading(false);
223
173
  }, [input]);
224
174
 
225
- var getElements = function getElements() {
226
- var number = 0;
227
- var options = normalizedList;
228
-
229
- if (!restartFilter && input !== '') {
230
- options = options.filter(function (option) {
231
- return option.toUpperCase().indexOf(input.toUpperCase()) !== -1;
232
- });
233
- }
234
-
235
- if (!disableSorting) {
236
- options = options.sort();
237
- }
238
-
239
- if (options.length === 0) {
240
- return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
241
- disabled: true
242
- }, /*#__PURE__*/React.createElement("span", null, messageOnNoResults));
243
- }
244
-
245
- return options.map(function (item) {
246
- return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
247
- type: "button",
248
- onClick: function onClick(e) {
249
- e.preventDefault();
250
- setRestartFilter(true);
251
- setInput(item);
252
- onSelect && onSelect(item);
253
- setIsOpen(false);
254
- setFocused(null);
255
- },
256
- className: item === input ? 'active' : '',
257
- key: item,
258
- id: "".concat(id, "_").concat(number++)
259
- }, /*#__PURE__*/React.createElement("span", null, item));
260
- });
261
- };
262
-
263
- var determineDropUp = function determineDropUp() {
264
- var options = normalizedList;
265
- var node = dropdownContentRef.current;
266
- if (!node) return;
267
- var windowHeight = window.innerHeight;
268
- var menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);
269
- var instOffsetWithMenu = node.getBoundingClientRect().top + menuHeight;
270
- setIsUp(instOffsetWithMenu >= windowHeight);
175
+ var customSetIsOpen = function customSetIsOpen(isOpen) {
176
+ console.log('dropdown content triggered');
177
+ setIsOpen(isOpen);
271
178
  };
272
179
 
273
180
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_CommonStyling.Dropdown, {
@@ -305,14 +212,34 @@ var BasicDropdown = function BasicDropdown(_ref) {
305
212
  }) : /*#__PURE__*/React.createElement(_SystemIcons.ArrowDropDown, {
306
213
  size: "24px",
307
214
  className: size ? size : ''
308
- }))), !locked && !disabled && /*#__PURE__*/React.createElement(_CommonStyling.DropdownContent, {
215
+ }))), !locked && !disabled && /*#__PURE__*/React.createElement(_DropdownContent.default, {
216
+ customizationProps: {
217
+ itemsType: itemsType,
218
+ action: action !== null && action !== void 0 ? action : function () {},
219
+ actionLabel: actionLabel,
220
+ scrollable: scrollable,
221
+ isButton: isButton || false,
222
+ onValueUpdate: handleValueSelect,
223
+ items: normalizedList.map(function (x) {
224
+ return {
225
+ value: x
226
+ };
227
+ }),
228
+ multiSelect: multiSelect,
229
+ pinTopItem: pinTopItem,
230
+ maxHeight: maxHeight
231
+ },
232
+ size: size == 'medium' ? _types.Size.Medium : _types.Size.Small,
233
+ filter: '',
234
+ hideOnClickOutside: true,
235
+ isOpen: isOpen,
236
+ setIsOpen: customSetIsOpen,
237
+ messageOnNoResults: messageOnNoResults !== null && messageOnNoResults !== void 0 ? messageOnNoResults : '',
309
238
  isButton: isButton || false,
310
- ref: dropdownContentRef,
311
- id: "".concat(id, "_dropdowncontent"),
312
- className: [isOpen && 'show', isUp && 'up'].filter(function (e) {
313
- return !!e;
314
- }).join(' ')
315
- }, getElements())), activeValidationMessage && /*#__PURE__*/React.createElement(_styling.WarningMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
239
+ selectedValues: selectedValues,
240
+ setSelectedValues: setSelectedValues,
241
+ id: "".concat(id, "_dropdowncontent")
242
+ })), activeValidationMessage && /*#__PURE__*/React.createElement(_styling.WarningMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
316
243
  size: "20px",
317
244
  color: _styles.COLORS.warning_400
318
245
  }), /*#__PURE__*/React.createElement("span", null, activeValidationMessage)), autofilledMessage && /*#__PURE__*/React.createElement(_styling.AutofilledMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.Information, {
@@ -324,6 +251,13 @@ var BasicDropdown = function BasicDropdown(_ref) {
324
251
  BasicDropdown.propTypes = {
325
252
  id: _propTypes.default.string.isRequired,
326
253
  list: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.array]).isRequired,
254
+ itemsType: _propTypes.default.oneOf(['normal', 'checkbox', 'radio']).isRequired,
255
+ action: _propTypes.default.func,
256
+ actionLabel: _propTypes.default.string,
257
+ pinTopItem: _propTypes.default.bool,
258
+ multiSelect: _propTypes.default.bool,
259
+ scrollable: _propTypes.default.bool,
260
+ maxHeight: _propTypes.default.string,
327
261
  placeholder: _propTypes.default.string,
328
262
  onSelect: _propTypes.default.func,
329
263
  initalValue: _propTypes.default.string,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Dropdown/BasicDropdown.tsx"],"names":["MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","BasicDropdown","id","list","placeholder","onSelect","initalValue","disableSorting","messageOnNoResults","disabled","locked","isButton","activeValidationMessage","autofilledMessage","size","margin","React","useState","isOpen","setIsOpen","isLoading","setIsLoading","input","setInput","placeholderSearch","setPlaceholderSearch","restartFilter","setRestartFilter","focused","setFocused","isUp","setIsUp","normalizedList","setNormalizedList","dropdownContentRef","useRef","styledFieldRef","isDropdownItem","item","label","undefined","useEffect","length","map","i","handleClickOutside","e","current","contains","target","includes","setNewFocusedElement","index","newFocusedElement","document","getElementById","focus","handleKeyDown","keyCode","preventDefault","focusedNow","handleKeyPress","determineDropUp","addEventListener","removeEventListener","getElements","number","options","filter","option","toUpperCase","indexOf","sort","node","windowHeight","window","innerHeight","menuHeight","Math","min","instOffsetWithMenu","getBoundingClientRect","top","concat","COLORS","neutral_600","join","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":["MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","BasicDropdown","id","list","placeholder","onSelect","initalValue","disableSorting","messageOnNoResults","itemsType","action","actionLabel","pinTopItem","multiSelect","scrollable","maxHeight","disabled","locked","isButton","activeValidationMessage","autofilledMessage","size","margin","React","useState","isOpen","setIsOpen","isLoading","setIsLoading","input","setInput","placeholderSearch","setPlaceholderSearch","restartFilter","setRestartFilter","focused","setFocused","selectedValues","setSelectedValues","normalizedList","setNormalizedList","styledFieldRef","useRef","isDropdownItem","item","label","undefined","useEffect","length","map","i","handleKeyPress","e","current","contains","target","keyCode","handleValueSelect","values","join","document","addEventListener","removeEventListener","customSetIsOpen","console","log","concat","COLORS","neutral_600","onValueUpdate","items","x","value","Size","Medium","Small","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"}
@@ -25,11 +25,13 @@ var _ChipStyles = require("../Chips/ChipStyles");
25
25
 
26
26
  var _CommonStyling = require("./CommonStyling");
27
27
 
28
+ var _DropdownContent = _interopRequireDefault(require("./DropdownContent"));
29
+
28
30
  var _LoadingIndicator = require("../LoadingIndicator");
29
31
 
30
32
  var _typography = require("../styles/typography");
31
33
 
32
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
34
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
33
35
 
34
36
  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); }
35
37
 
@@ -67,13 +69,7 @@ var ChipInput = _styledComponents.default.input(_templateObject3 || (_templateOb
67
69
 
68
70
  var StyledDropdownButton = (0, _styledComponents.default)(_CommonStyling.DropdownButton)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n width: 98%;\n margin-left: 3px;\n svg {\n margin: auto 0 auto 0;\n }\n"])));
69
71
 
70
- var DropdownButtonLabels = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n span {\n line-height: 24px;\n }\n"])));
71
-
72
- var SecondaryLabel = _styledComponents.default.span(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n ", "\n"])), (0, _typography.ComponentXXSStyling)(_typography.ComponentTextStyle.Regular, _styles.COLORS.neutral_600));
73
-
74
- var SuggestionButton = (0, _styledComponents.default)(StyledDropdownButton)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n border-bottom: 1px solid ", ";\n"])), _styles.COLORS.neutral_200);
75
-
76
- var Loading = _styledComponents.default.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n margin: auto 16px auto auto !important;\n height: 20px;\n div {\n height: 20px;\n }\n"])));
72
+ var Loading = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n margin: auto 16px auto auto !important;\n height: 20px;\n div {\n height: 20px;\n }\n"])));
77
73
 
78
74
  var ChipDropdownInput = function ChipDropdownInput(_ref) {
79
75
  var list = _ref.list,
@@ -121,17 +117,11 @@ var ChipDropdownInput = function ChipDropdownInput(_ref) {
121
117
  var _React$useState11 = React.useState(false),
122
118
  _React$useState12 = _slicedToArray(_React$useState11, 2),
123
119
  restartFilter = _React$useState12[0],
124
- setRestartFilter = _React$useState12[1];
125
-
126
- var _React$useState13 = React.useState(null),
127
- _React$useState14 = _slicedToArray(_React$useState13, 2),
128
- focused = _React$useState14[0],
129
- setFocused = _React$useState14[1]; // Initiate refs
120
+ setRestartFilter = _React$useState12[1]; // Initiate refs
130
121
 
131
122
 
132
123
  var chipInput = React.useRef();
133
124
  var styledFieldRef = React.useRef(null);
134
- var dropdownRef = React.useRef();
135
125
  /**
136
126
  * Sets initial values for the chips.
137
127
  */
@@ -255,120 +245,12 @@ var ChipDropdownInput = function ChipDropdownInput(_ref) {
255
245
  setCurrentSearchResult(options);
256
246
  }, [value, givenList, chips]);
257
247
 
258
- var getElements = function getElements() {
259
- var number = 0;
260
-
261
- if ((currentSearchResult === null || currentSearchResult === void 0 ? void 0 : currentSearchResult.length) === 0 && !suggestion) {
262
- return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
263
- disabled: true
264
- }, /*#__PURE__*/React.createElement("span", null, messageOnNoResults));
265
- }
266
-
267
- return /*#__PURE__*/React.createElement(React.Fragment, null, suggestion && /*#__PURE__*/React.createElement(SuggestionButton, {
268
- type: "button",
269
- tabIndex: -1,
270
- onClick: function onClick(e) {
271
- var _chipInput$current;
272
-
273
- e.preventDefault();
274
- setRestartFilter(true);
275
- addChip(suggestion.value);
276
- setFocused(null);
277
- chipInput === null || chipInput === void 0 ? void 0 : (_chipInput$current = chipInput.current) === null || _chipInput$current === void 0 ? void 0 : _chipInput$current.focus();
278
- },
279
- className: suggestion.value.toLowerCase() === value.toLowerCase() ? 'active' : '',
280
- key: suggestion.value,
281
- id: "".concat(inputId, "_").concat(number++)
282
- }, !excludeIcon && /*#__PURE__*/React.createElement(_SystemIcons.User, {
283
- size: "24px"
284
- }), 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 === null || currentSearchResult === void 0 ? void 0 : currentSearchResult.map(function (item) {
285
- return /*#__PURE__*/React.createElement(StyledDropdownButton, {
286
- type: "button",
287
- tabIndex: -1,
288
- onClick: function onClick(e) {
289
- var _chipInput$current2;
290
-
291
- e.preventDefault();
292
- setRestartFilter(true);
293
- addChip(item.value);
294
- setFocused(null);
295
- chipInput === null || chipInput === void 0 ? void 0 : (_chipInput$current2 = chipInput.current) === null || _chipInput$current2 === void 0 ? void 0 : _chipInput$current2.focus();
296
- },
297
- className: item.value.toLowerCase() === value.toLowerCase() ? 'active' : '',
298
- key: item.value,
299
- id: "".concat(inputId, "_").concat(number++)
300
- }, !excludeIcon && /*#__PURE__*/React.createElement(_SystemIcons.User, {
301
- size: "24px"
302
- }), 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));
303
- }));
304
- };
305
-
306
- var setNewFocusedElement = function setNewFocusedElement(index) {
307
- var newFocusedElement = document.getElementById("".concat(inputId, "_").concat(index));
308
-
309
- if (newFocusedElement) {
310
- setFocused(index);
311
- newFocusedElement.focus();
312
- }
313
- };
314
-
315
- var handleKeyDown = function handleKeyDown(e) {
316
- if (dropdownIsOpen) {
317
- if (e.keyCode === 38) {
318
- e.preventDefault();
319
- var focusedNow = focused;
320
-
321
- if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {
322
- focusedNow -= 1;
323
- setNewFocusedElement(focusedNow);
324
- }
325
- } else if (e.keyCode === 40) {
326
- e.preventDefault();
327
- var focusedNow = focused;
328
-
329
- if (focusedNow !== undefined && focusedNow !== null) {
330
- focusedNow++;
331
- } else {
332
- focusedNow = 0;
333
- }
334
-
335
- setNewFocusedElement(focusedNow);
336
- } else if (e.keyCode === 9) {
337
- setDropdownIsOpen(false);
338
- } else if (e.keyCode === 27) {
339
- var _styledFieldRef$curre;
340
-
341
- setDropdownIsOpen(false);
342
- setNewFocusedElement(0);
343
-
344
- if (!givenList.find(function (e) {
345
- return e.value === value;
346
- })) {
347
- setValue('');
348
- }
349
-
350
- (_styledFieldRef$curre = styledFieldRef.current) === null || _styledFieldRef$curre === void 0 ? void 0 : _styledFieldRef$curre.focus();
351
- } else if (e.keyCode === 13) {
352
- var matches = currentSearchResult === null || currentSearchResult === void 0 ? void 0 : currentSearchResult.filter(function (c) {
353
- return c.value.toLowerCase() === value.toLowerCase();
354
- });
355
-
356
- if ((matches === null || matches === void 0 ? void 0 : matches.length) === 1
357
- /*&& onSelect*/
358
- ) {
359
- addChip(matches[0].value); //onSelect(chips);
360
- } else if (e.target.value === (suggestion === null || suggestion === void 0 ? void 0 : suggestion.label)) {
361
- addChip(e.target.value);
362
- }
363
-
364
- setDropdownIsOpen(!dropdownIsOpen);
365
- setNewFocusedElement(0);
248
+ var handleValueUpdate = function handleValueUpdate(values) {
249
+ var _chipInput$current;
366
250
 
367
- if ((matches === null || matches === void 0 ? void 0 : matches.length) === 0) {
368
- setValue('');
369
- }
370
- }
371
- }
251
+ setRestartFilter(true);
252
+ addChip(values[0]);
253
+ chipInput === null || chipInput === void 0 ? void 0 : (_chipInput$current = chipInput.current) === null || _chipInput$current === void 0 ? void 0 : _chipInput$current.focus();
372
254
  };
373
255
 
374
256
  var handleKeyPress = function handleKeyPress(e) {
@@ -387,14 +269,12 @@ var ChipDropdownInput = function ChipDropdownInput(_ref) {
387
269
  }
388
270
 
389
271
  setDropdownIsOpen(!dropdownIsOpen);
390
- setNewFocusedElement(0);
391
272
 
392
273
  if ((matches === null || matches === void 0 ? void 0 : matches.length) === 0) {
393
274
  setValue('');
394
275
  }
395
276
  } else if (e.keyCode === 40) {
396
277
  setDropdownIsOpen(!dropdownIsOpen);
397
- setNewFocusedElement(0);
398
278
  }
399
279
  }
400
280
  };
@@ -403,7 +283,6 @@ var ChipDropdownInput = function ChipDropdownInput(_ref) {
403
283
  if (styledFieldRef !== null && styledFieldRef !== void 0 && styledFieldRef.current && !styledFieldRef.current.contains(e.target)) {
404
284
  if (dropdownIsOpen) {
405
285
  setDropdownIsOpen(false);
406
- setFocused(null);
407
286
 
408
287
  if (!givenList.find(function (e) {
409
288
  return e.value === value;
@@ -415,11 +294,9 @@ var ChipDropdownInput = function ChipDropdownInput(_ref) {
415
294
  };
416
295
 
417
296
  React.useEffect(function () {
418
- document.addEventListener('keydown', handleKeyDown);
419
297
  document.addEventListener('keypress', handleKeyPress);
420
298
  document.addEventListener('click', handleClickOutside);
421
299
  return function () {
422
- document.removeEventListener('keydown', handleKeyDown);
423
300
  document.removeEventListener('keypress', handleKeyPress);
424
301
  document.removeEventListener('click', handleClickOutside);
425
302
  };
@@ -428,6 +305,20 @@ var ChipDropdownInput = function ChipDropdownInput(_ref) {
428
305
  * Return Chip Input component.
429
306
  */
430
307
 
308
+ var dropdownItems = [];
309
+ if (currentSearchResult) dropdownItems = currentSearchResult.map(function (x) {
310
+ return {
311
+ value: x.value,
312
+ displayLabel: x.label,
313
+ noteLabel: x.secondaryLabel
314
+ };
315
+ });
316
+ if (suggestion && !chips.includes(suggestion.value)) dropdownItems = [{
317
+ value: suggestion.value,
318
+ displayLabel: suggestion.label,
319
+ noteLabel: suggestion.secondaryLabel,
320
+ suggestion: true
321
+ }].concat(_toConsumableArray(dropdownItems));
431
322
  return /*#__PURE__*/React.createElement(Wrapper, null, /*#__PURE__*/React.createElement(StyledChipInputContainer, {
432
323
  id: inputId,
433
324
  onClick: function onClick(e) {
@@ -482,12 +373,28 @@ var ChipDropdownInput = function ChipDropdownInput(_ref) {
482
373
  }), loading ? /*#__PURE__*/React.createElement(Loading, null, /*#__PURE__*/React.createElement(_LoadingIndicator.LoadingIndicator, {
483
374
  size: "small",
484
375
  color: _styles.COLORS.neutral_600
485
- })) : null), (!maxSelectedItems || maxSelectedItems && chips.length < maxSelectedItems) && /*#__PURE__*/React.createElement(_CommonStyling.DropdownContent, {
376
+ })) : null), (!maxSelectedItems || maxSelectedItems && chips.length < maxSelectedItems) && /*#__PURE__*/React.createElement(_DropdownContent.default, {
377
+ customizationProps: {
378
+ isButton: false,
379
+ action: function action() {},
380
+ pinTopItem: true,
381
+ itemsType: 'normal',
382
+ scrollable: true,
383
+ actionLabel: '',
384
+ multiSelect: false,
385
+ onValueUpdate: handleValueUpdate,
386
+ items: dropdownItems
387
+ },
388
+ hideOnClickOutside: false,
389
+ selectedValues: [],
390
+ messageOnNoResults: messageOnNoResults !== null && messageOnNoResults !== void 0 ? messageOnNoResults : '',
391
+ setSelectedValues: function setSelectedValues() {},
392
+ isOpen: dropdownIsOpen,
393
+ setIsOpen: setDropdownIsOpen,
394
+ filter: '',
486
395
  isButton: false,
487
- ref: dropdownRef,
488
- id: "".concat(inputId, "_dropdowncontent"),
489
- className: dropdownIsOpen ? 'show' : ''
490
- }, getElements()), validationMessage && validationType === 'warning' ? /*#__PURE__*/React.createElement(_styling.WarningMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
396
+ id: "".concat(inputId, "_dropdowncontent")
397
+ }), validationMessage && validationType === 'warning' ? /*#__PURE__*/React.createElement(_styling.WarningMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {
491
398
  size: "20px",
492
399
  color: _styles.COLORS.critical_500
493
400
  }), /*#__PURE__*/React.createElement("span", null, validationMessage)) : validationType === 'error' && /*#__PURE__*/React.createElement(_styling.ErrorMessage, null, /*#__PURE__*/React.createElement(_SystemIcons.TechnicalWarning, {