@laerdal/life-react-components 1.7.0-dev.6.full → 1.7.0-dev.8

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 (123) hide show
  1. package/dist/Card/Card.cjs +28 -44
  2. package/dist/Card/Card.cjs.map +1 -1
  3. package/dist/Card/Card.d.ts +3 -11
  4. package/dist/Card/Card.js +26 -44
  5. package/dist/Card/Card.js.map +1 -1
  6. package/dist/Card/CardBottomSection.cjs +2 -9
  7. package/dist/Card/CardBottomSection.cjs.map +1 -1
  8. package/dist/Card/CardBottomSection.d.ts +1 -2
  9. package/dist/Card/CardBottomSection.js +3 -10
  10. package/dist/Card/CardBottomSection.js.map +1 -1
  11. package/dist/Card/CardMiddleSection.cjs +2 -7
  12. package/dist/Card/CardMiddleSection.cjs.map +1 -1
  13. package/dist/Card/CardMiddleSection.d.ts +0 -2
  14. package/dist/Card/CardMiddleSection.js +3 -8
  15. package/dist/Card/CardMiddleSection.js.map +1 -1
  16. package/dist/Card/CardTopSection.cjs +9 -12
  17. package/dist/Card/CardTopSection.cjs.map +1 -1
  18. package/dist/Card/CardTopSection.d.ts +2 -4
  19. package/dist/Card/CardTopSection.js +10 -13
  20. package/dist/Card/CardTopSection.js.map +1 -1
  21. package/dist/Card/index.cjs +1 -13
  22. package/dist/Card/index.cjs.map +1 -1
  23. package/dist/Card/index.d.ts +0 -1
  24. package/dist/Card/index.js +0 -1
  25. package/dist/Card/index.js.map +1 -1
  26. package/dist/Chips/ActionChip.cjs +4 -4
  27. package/dist/Chips/ActionChip.cjs.map +1 -1
  28. package/dist/Chips/ActionChip.js +4 -4
  29. package/dist/Chips/ActionChip.js.map +1 -1
  30. package/dist/Chips/ChipStyles.cjs +3 -15
  31. package/dist/Chips/ChipStyles.cjs.map +1 -1
  32. package/dist/Chips/ChipStyles.d.ts +0 -3
  33. package/dist/Chips/ChipStyles.js +2 -5
  34. package/dist/Chips/ChipStyles.js.map +1 -1
  35. package/dist/Chips/ChipTypes.d.ts +6 -18
  36. package/dist/Chips/ChoiceChips.cjs +2 -2
  37. package/dist/Chips/ChoiceChips.cjs.map +1 -1
  38. package/dist/Chips/ChoiceChips.js +2 -2
  39. package/dist/Chips/ChoiceChips.js.map +1 -1
  40. package/dist/Chips/FilterChip.cjs +3 -3
  41. package/dist/Chips/FilterChip.cjs.map +1 -1
  42. package/dist/Chips/FilterChip.js +3 -3
  43. package/dist/Chips/FilterChip.js.map +1 -1
  44. package/dist/Chips/InputChip.cjs +4 -4
  45. package/dist/Chips/InputChip.cjs.map +1 -1
  46. package/dist/Chips/InputChip.js +4 -4
  47. package/dist/Chips/InputChip.js.map +1 -1
  48. package/dist/Chips/index.cjs +1 -1
  49. package/dist/Chips/index.cjs.map +1 -1
  50. package/dist/Chips/index.d.ts +1 -1
  51. package/dist/Chips/index.js +1 -1
  52. package/dist/Chips/index.js.map +1 -1
  53. package/dist/ChipsInput/ChipDropdownInput.cjs +398 -0
  54. package/dist/ChipsInput/ChipDropdownInput.cjs.map +1 -0
  55. package/dist/ChipsInput/ChipDropdownInput.d.ts +22 -0
  56. package/dist/ChipsInput/ChipDropdownInput.js +382 -0
  57. package/dist/ChipsInput/ChipDropdownInput.js.map +1 -0
  58. package/dist/ChipsInput/ChipInput.cjs +141 -0
  59. package/dist/ChipsInput/ChipInput.cjs.map +1 -0
  60. package/dist/{Chips → ChipsInput}/ChipInput.d.ts +1 -4
  61. package/dist/ChipsInput/ChipInput.js +122 -0
  62. package/dist/ChipsInput/ChipInput.js.map +1 -0
  63. package/dist/ChipsInput/ChipInputField.cjs +193 -0
  64. package/dist/ChipsInput/ChipInputField.cjs.map +1 -0
  65. package/dist/ChipsInput/ChipInputField.d.ts +24 -0
  66. package/dist/ChipsInput/ChipInputField.js +158 -0
  67. package/dist/ChipsInput/ChipInputField.js.map +1 -0
  68. package/dist/ChipsInput/ChipInputTypes.cjs +6 -0
  69. package/dist/ChipsInput/ChipInputTypes.cjs.map +1 -0
  70. package/dist/ChipsInput/ChipInputTypes.d.ts +22 -0
  71. package/dist/ChipsInput/ChipInputTypes.js +2 -0
  72. package/dist/ChipsInput/ChipInputTypes.js.map +1 -0
  73. package/dist/ChipsInput/index.cjs +19 -0
  74. package/dist/ChipsInput/index.cjs.map +1 -0
  75. package/dist/ChipsInput/index.d.ts +1 -0
  76. package/dist/ChipsInput/index.js +2 -0
  77. package/dist/ChipsInput/index.js.map +1 -0
  78. package/dist/Dropdown/DropdownContent.cjs +14 -21
  79. package/dist/Dropdown/DropdownContent.cjs.map +1 -1
  80. package/dist/Dropdown/DropdownContent.js +14 -21
  81. package/dist/Dropdown/DropdownContent.js.map +1 -1
  82. package/dist/Dropdown/index.cjs +0 -8
  83. package/dist/Dropdown/index.cjs.map +1 -1
  84. package/dist/Dropdown/index.d.ts +1 -2
  85. package/dist/Dropdown/index.js +1 -2
  86. package/dist/Dropdown/index.js.map +1 -1
  87. package/dist/InputFields/styling.cjs.map +1 -1
  88. package/dist/InputFields/styling.js.map +1 -1
  89. package/dist/List/ListRow.cjs +2 -5
  90. package/dist/List/ListRow.cjs.map +1 -1
  91. package/dist/List/ListRow.js +3 -2
  92. package/dist/List/ListRow.js.map +1 -1
  93. package/dist/Tabs/HorizontalTabs.cjs +4 -0
  94. package/dist/Tabs/HorizontalTabs.cjs.map +1 -1
  95. package/dist/Tabs/HorizontalTabs.js +4 -1
  96. package/dist/Tabs/HorizontalTabs.js.map +1 -1
  97. package/dist/Tooltips/TooltipStyles.cjs +2 -2
  98. package/dist/Tooltips/TooltipStyles.cjs.map +1 -1
  99. package/dist/Tooltips/TooltipStyles.js +3 -3
  100. package/dist/Tooltips/TooltipStyles.js.map +1 -1
  101. package/dist/Tooltips/TooltipTypes.cjs.map +1 -1
  102. package/dist/Tooltips/TooltipTypes.d.ts +1 -0
  103. package/dist/Tooltips/TooltipTypes.js.map +1 -1
  104. package/dist/Tooltips/TooltipWrapper.cjs +2 -0
  105. package/dist/Tooltips/TooltipWrapper.cjs.map +1 -1
  106. package/dist/Tooltips/TooltipWrapper.d.ts +1 -1
  107. package/dist/Tooltips/TooltipWrapper.js +2 -0
  108. package/dist/Tooltips/TooltipWrapper.js.map +1 -1
  109. package/dist/index.cjs +14 -0
  110. package/dist/index.cjs.map +1 -1
  111. package/dist/index.d.ts +1 -0
  112. package/dist/index.js +1 -0
  113. package/dist/index.js.map +1 -1
  114. package/package.json +1 -1
  115. package/dist/Chips/ChipInput.cjs +0 -199
  116. package/dist/Chips/ChipInput.cjs.map +0 -1
  117. package/dist/Chips/ChipInput.js +0 -182
  118. package/dist/Chips/ChipInput.js.map +0 -1
  119. package/dist/Dropdown/ChipDropdownInput.cjs +0 -431
  120. package/dist/Dropdown/ChipDropdownInput.cjs.map +0 -1
  121. package/dist/Dropdown/ChipDropdownInput.d.ts +0 -24
  122. package/dist/Dropdown/ChipDropdownInput.js +0 -418
  123. package/dist/Dropdown/ChipDropdownInput.js.map +0 -1
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.ChipDropdownInput = void 0;
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var React = _interopRequireWildcard(require("react"));
23
+
24
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
25
+
26
+ var _ChipInputField = require("./ChipInputField");
27
+
28
+ var _types = require("../types");
29
+
30
+ var _Dropdown = require("../Dropdown");
31
+
32
+ var _icons = require("../icons");
33
+
34
+ var _jsxRuntime = require("react/jsx-runtime");
35
+
36
+ var _templateObject;
37
+
38
+ 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); }
39
+
40
+ 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; }
41
+
42
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
43
+
44
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
45
+
46
+ var Wrapper = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n display: inline-block;\n width: 100%;\n"])));
47
+
48
+ var ChipDropdownInput = function ChipDropdownInput(_ref) {
49
+ var list = _ref.list,
50
+ onInputChange = _ref.onInputChange,
51
+ disableSorting = _ref.disableSorting,
52
+ messageOnNoResults = _ref.messageOnNoResults,
53
+ values = _ref.values,
54
+ inputId = _ref.inputId,
55
+ variants = _ref.variants,
56
+ placeholder = _ref.placeholder,
57
+ validationType = _ref.validationType,
58
+ validationMessage = _ref.validationMessage,
59
+ onValueChange = _ref.onValueChange,
60
+ suggestion = _ref.suggestion,
61
+ loading = _ref.loading,
62
+ maxSelectedItems = _ref.maxSelectedItems,
63
+ _ref$multiLine = _ref.multiLine,
64
+ multiLine = _ref$multiLine === void 0 ? true : _ref$multiLine,
65
+ _ref$size = _ref.size,
66
+ size = _ref$size === void 0 ? _types.Size.Medium : _ref$size,
67
+ icon = _ref.icon,
68
+ disableFiltering = _ref.disableFiltering,
69
+ disabled = _ref.disabled,
70
+ altPlaceholder = _ref.altPlaceholder;
71
+
72
+ // Initiate states
73
+ var _React$useState = React.useState([]),
74
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
75
+ givenList = _React$useState2[0],
76
+ setGivenList = _React$useState2[1];
77
+
78
+ var _React$useState3 = React.useState([]),
79
+ _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
80
+ chips = _React$useState4[0],
81
+ setChips = _React$useState4[1];
82
+
83
+ var _React$useState5 = React.useState(''),
84
+ _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
85
+ value = _React$useState6[0],
86
+ setValue = _React$useState6[1];
87
+
88
+ var _React$useState7 = React.useState(false),
89
+ _React$useState8 = (0, _slicedToArray2.default)(_React$useState7, 2),
90
+ restartFilter = _React$useState8[0],
91
+ setRestartFilter = _React$useState8[1];
92
+
93
+ var _React$useState9 = React.useState(),
94
+ _React$useState10 = (0, _slicedToArray2.default)(_React$useState9, 2),
95
+ filteredList = _React$useState10[0],
96
+ setFilteredList = _React$useState10[1];
97
+
98
+ var _React$useState11 = React.useState(false),
99
+ _React$useState12 = (0, _slicedToArray2.default)(_React$useState11, 2),
100
+ dropdownIsOpen = _React$useState12[0],
101
+ setDropdownIsOpen = _React$useState12[1];
102
+
103
+ var _React$useState13 = React.useState([]),
104
+ _React$useState14 = (0, _slicedToArray2.default)(_React$useState13, 2),
105
+ dropdownList = _React$useState14[0],
106
+ setDropdownList = _React$useState14[1];
107
+
108
+ var _React$useState15 = React.useState(''),
109
+ _React$useState16 = (0, _slicedToArray2.default)(_React$useState15, 2),
110
+ dropdownValue = _React$useState16[0],
111
+ setDropdownValue = _React$useState16[1];
112
+
113
+ var _React$useState17 = React.useState(null),
114
+ _React$useState18 = (0, _slicedToArray2.default)(_React$useState17, 2),
115
+ focused = _React$useState18[0],
116
+ setFocused = _React$useState18[1];
117
+
118
+ var containerRef = React.useRef(null);
119
+ var inputRef = React.useRef(null);
120
+ /**
121
+ * Sets initial values for the chips.
122
+ */
123
+
124
+ React.useEffect(function () {
125
+ var list = values.map(function (a) {
126
+ return chips.find(function (b) {
127
+ return b.value === a;
128
+ }) || givenList.find(function (b) {
129
+ return b.value === a;
130
+ }) || {
131
+ label: a,
132
+ value: a,
133
+ icon: icon
134
+ };
135
+ }).map(function (a, index) {
136
+ return _objectSpread(_objectSpread({}, a), {}, {
137
+ variant: a.variant || variants && variants[index] || 'normal'
138
+ });
139
+ }).map(function (a, index) {
140
+ return _objectSpread(_objectSpread({}, a), {}, {
141
+ icon: a.icon || icon
142
+ });
143
+ });
144
+ setChips(list);
145
+ }, [values, variants, icon, givenList]);
146
+ /**
147
+ * Convert string[] to List[] if necessary
148
+ */
149
+
150
+ React.useEffect(function () {
151
+ if (typeof list[0] === 'string') {
152
+ var newList = list.map(function (e) {
153
+ return {
154
+ label: e,
155
+ value: e
156
+ };
157
+ });
158
+ setGivenList(newList);
159
+ } else {
160
+ setGivenList(list);
161
+ }
162
+ }, [list]);
163
+ /**
164
+ * filter and sort list if remoteOperations is false
165
+ * */
166
+
167
+ React.useEffect(function () {
168
+ var options = (0, _toConsumableArray2.default)(givenList);
169
+
170
+ if (!disableFiltering) {
171
+ if (!restartFilter && value !== '') {
172
+ options = options.filter(function (option) {
173
+ var _option$secondaryLabe;
174
+
175
+ return option.label.toUpperCase().indexOf(value.toUpperCase()) !== -1 || option.secondaryLabel && ((_option$secondaryLabe = option.secondaryLabel) === null || _option$secondaryLabe === void 0 ? void 0 : _option$secondaryLabe.toUpperCase().indexOf(value.toUpperCase())) !== -1;
176
+ });
177
+ }
178
+ }
179
+
180
+ if (!disableSorting) {
181
+ options = options.sort();
182
+ }
183
+
184
+ suggestion && options.push(suggestion);
185
+ options = options.filter(function (o) {
186
+ return !chips.find(function (a) {
187
+ return a.value === o.value;
188
+ });
189
+ });
190
+ setFilteredList(options);
191
+ }, [value, givenList, chips, disableFiltering, disableSorting]);
192
+ /**
193
+ * if there is only one active item in dropdown mark it as focused
194
+ * */
195
+
196
+ React.useEffect(function () {
197
+ if (dropdownIsOpen && !!value && (dropdownList === null || dropdownList === void 0 ? void 0 : dropdownList.filter(function (a) {
198
+ return !a.disabled;
199
+ }).length) === 1) {
200
+ setDropdownValue(dropdownList.find(function (a) {
201
+ return !a.disabled;
202
+ }).value);
203
+ } else {
204
+ setDropdownValue('');
205
+ }
206
+ }, [dropdownList, dropdownIsOpen, value]);
207
+
208
+ var handleClickOutside = function handleClickOutside(e) {
209
+ var _containerRef$current;
210
+
211
+ if (!((_containerRef$current = containerRef.current) !== null && _containerRef$current !== void 0 && _containerRef$current.contains(e.target))) {
212
+ if (dropdownIsOpen) {
213
+ setDropdownIsOpen(false);
214
+
215
+ if (!givenList.find(function (e) {
216
+ return e.value === value;
217
+ })) {
218
+ setValue('');
219
+ }
220
+ }
221
+ }
222
+ };
223
+ /**
224
+ * register click outside event listener
225
+ * */
226
+
227
+
228
+ React.useEffect(function () {
229
+ document.addEventListener('click', handleClickOutside);
230
+ return function () {
231
+ document.removeEventListener('click', handleClickOutside);
232
+ };
233
+ });
234
+ /**
235
+ * update dropdown items when filtered list changes
236
+ * */
237
+
238
+ React.useEffect(function () {
239
+ var _filteredList$map;
240
+
241
+ setDropdownList((_filteredList$map = filteredList === null || filteredList === void 0 ? void 0 : filteredList.map(function (x) {
242
+ var _x$icon;
243
+
244
+ return {
245
+ value: x.value,
246
+ displayLabel: x.label,
247
+ noteLabel: x.secondaryLabel,
248
+ icon: ((_x$icon = x.icon) !== null && _x$icon !== void 0 ? _x$icon : icon) && _icons.SystemIcons[x.icon || icon]({}),
249
+ disabled: x.disabled
250
+ };
251
+ })) !== null && _filteredList$map !== void 0 ? _filteredList$map : []);
252
+ }, [filteredList]);
253
+
254
+ var addChip = function addChip(newChip) {
255
+ var newList = [].concat((0, _toConsumableArray2.default)(chips), [newChip]); // Let's add the chip
256
+
257
+ setChips(newList);
258
+ onValueChange(newList.map(function (a) {
259
+ return a.value;
260
+ }));
261
+ setValue('');
262
+ };
263
+
264
+ var handleInputValueChange = function handleInputValueChange(value) {
265
+ setValue(value);
266
+ setRestartFilter(false);
267
+ setDropdownIsOpen(true);
268
+ onInputChange && onInputChange(value);
269
+ };
270
+ /**
271
+ * Add chip from dropdown
272
+ * */
273
+
274
+
275
+ var handleValueUpdate = function handleValueUpdate(values) {
276
+ var _inputRef$current;
277
+
278
+ var item = filteredList === null || filteredList === void 0 ? void 0 : filteredList.find(function (a) {
279
+ return a.value === values[0];
280
+ });
281
+ item && addChip(item);
282
+ setRestartFilter(true);
283
+ inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
284
+ };
285
+ /**
286
+ * Adds a chip to the chip list.
287
+ * @param event - Event handler from the key down event.
288
+ */
289
+
290
+
291
+ var handleInputKeyDown = function handleInputKeyDown(event) {
292
+ // Let's trigger only on enter, comma and space key press
293
+ if ((event.key === 'Enter' || event.key === 'Space' || event.key === 'Comma') && value) {
294
+ if ((dropdownList === null || dropdownList === void 0 ? void 0 : dropdownList.filter(function (a) {
295
+ return !a.disabled;
296
+ }).length) === 1) {
297
+ handleValueUpdate([dropdownList.find(function (a) {
298
+ return !a.disabled;
299
+ }).value]);
300
+ event.stopPropagation();
301
+ }
302
+ }
303
+
304
+ if ((event.key === 'ArrowDown' || event.key === 'Down') && !!(dropdownList !== null && dropdownList !== void 0 && dropdownList.length)) {
305
+ setDropdownIsOpen(true);
306
+ setFocused(dropdownList.findIndex(function (a) {
307
+ return !a.disabled;
308
+ }) + 1);
309
+ event.stopPropagation();
310
+ }
311
+ };
312
+ /**
313
+ * Removes a specific chip from the chip list.
314
+ * @param index - Index of the chip that needs to be removed.
315
+ */
316
+
317
+
318
+ var handleOnChipRemoved = function handleOnChipRemoved(index) {
319
+ // Let's copy the chips
320
+ var newChips = (0, _toConsumableArray2.default)(chips); // Let's delete the chip
321
+ // If necessary, let's replace it with a different chip
322
+
323
+ newChips.splice(index, 1); // Let's update the chip list
324
+
325
+ setChips((0, _toConsumableArray2.default)(newChips));
326
+ onValueChange(newChips.map(function (e) {
327
+ return e.value;
328
+ }));
329
+ };
330
+
331
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Wrapper, {
332
+ ref: containerRef,
333
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChipInputField.ChipInputField, {
334
+ inputId: inputId,
335
+ ref: inputRef,
336
+ items: chips,
337
+ inputValue: value,
338
+ size: size,
339
+ placeholder: placeholder,
340
+ altPlaceholder: altPlaceholder,
341
+ disabled: disabled,
342
+ multiLine: multiLine,
343
+ validationType: validationType,
344
+ validationMessage: validationMessage,
345
+ loading: loading,
346
+ onRemoveItem: function onRemoveItem(chip, index) {
347
+ return handleOnChipRemoved(index);
348
+ },
349
+ onInputValueChange: handleInputValueChange,
350
+ onInputKeyDown: handleInputKeyDown,
351
+ onActivation: function onActivation() {
352
+ return setDropdownIsOpen(true);
353
+ }
354
+ }), (!maxSelectedItems || maxSelectedItems && chips.length < maxSelectedItems) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropdown.DropdownContent, {
355
+ customizationProps: {
356
+ action: function action() {},
357
+ pinTopItem: true,
358
+ itemsType: 'normal',
359
+ scrollable: true,
360
+ actionLabel: '',
361
+ multiSelect: false,
362
+ onValueUpdate: handleValueUpdate,
363
+ items: dropdownList
364
+ },
365
+ focused: focused,
366
+ setFocused: setFocused,
367
+ hideOnClickOutside: false,
368
+ selectedValues: [dropdownValue],
369
+ messageOnNoResults: messageOnNoResults !== null && messageOnNoResults !== void 0 ? messageOnNoResults : '',
370
+ setSelectedValues: function setSelectedValues() {},
371
+ isOpen: dropdownIsOpen,
372
+ setIsOpen: setDropdownIsOpen,
373
+ filter: '',
374
+ isButton: false,
375
+ id: "".concat(inputId, "_dropdowncontent")
376
+ })]
377
+ });
378
+ };
379
+
380
+ exports.ChipDropdownInput = ChipDropdownInput;
381
+ ChipDropdownInput.propTypes = {
382
+ list: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape({
383
+ secondaryLabel: _propTypes.default.string,
384
+ value: _propTypes.default.string.isRequired
385
+ })), _propTypes.default.arrayOf(_propTypes.default.string)]).isRequired,
386
+ onInputChange: _propTypes.default.func,
387
+ messageOnNoResults: _propTypes.default.string,
388
+ suggestion: _propTypes.default.shape({
389
+ secondaryLabel: _propTypes.default.string,
390
+ value: _propTypes.default.string.isRequired
391
+ }),
392
+ loading: _propTypes.default.bool,
393
+ maxSelectedItems: _propTypes.default.number,
394
+ disableSorting: _propTypes.default.bool,
395
+ disableFiltering: _propTypes.default.bool,
396
+ allowCustomItem: _propTypes.default.bool
397
+ };
398
+ //# sourceMappingURL=ChipDropdownInput.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ChipsInput/ChipDropdownInput.tsx"],"names":["Wrapper","styled","div","ChipDropdownInput","list","onInputChange","disableSorting","messageOnNoResults","values","inputId","variants","placeholder","validationType","validationMessage","onValueChange","suggestion","loading","maxSelectedItems","multiLine","size","Size","Medium","icon","disableFiltering","disabled","altPlaceholder","React","useState","givenList","setGivenList","chips","setChips","value","setValue","restartFilter","setRestartFilter","filteredList","setFilteredList","dropdownIsOpen","setDropdownIsOpen","dropdownList","setDropdownList","dropdownValue","setDropdownValue","focused","setFocused","containerRef","useRef","inputRef","useEffect","map","a","find","b","label","index","variant","newList","e","options","filter","option","toUpperCase","indexOf","secondaryLabel","sort","push","o","length","handleClickOutside","current","contains","target","document","addEventListener","removeEventListener","x","displayLabel","noteLabel","SystemIcons","addChip","newChip","handleInputValueChange","handleValueUpdate","item","focus","handleInputKeyDown","event","key","stopPropagation","findIndex","handleOnChipRemoved","newChips","splice","chip","action","pinTopItem","itemsType","scrollable","actionLabel","multiSelect","onValueUpdate","items","allowCustomItem"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import third-party libraries.\n */\nimport styled from 'styled-components';\n\n/**\n * Import custom components.\n */\nimport {ChipInputField} from './ChipInputField';\nimport {Size} from '../types';\nimport {DropdownContent, DropdownItem} from '../Dropdown';\nimport {SystemIcons} from '../icons';\nimport {ChipInputProps, ChipItem} from './ChipInputTypes';\n\nconst Wrapper = styled.div`\n position: relative;\n display: inline-block;\n width: 100%;\n`;\n\n\ninterface ListItem extends ChipItem {\n secondaryLabel?: string;\n value: string;\n}\n\ninterface ChipDropdownInputProps extends ChipInputProps {\n list: ListItem[] | string[];\n onInputChange?: (input: string) => void;\n messageOnNoResults?: string;\n suggestion?: ListItem;\n loading?: boolean;\n maxSelectedItems?: number;\n disableSorting?: boolean;\n disableFiltering?: boolean;\n allowCustomItem?: boolean;\n}\n\nexport const ChipDropdownInput: React.FunctionComponent<ChipDropdownInputProps> = ({\n list,\n onInputChange,\n disableSorting,\n messageOnNoResults,\n values,\n inputId,\n variants,\n placeholder,\n validationType,\n validationMessage,\n onValueChange,\n suggestion,\n loading,\n maxSelectedItems,\n multiLine = true,\n size = Size.Medium,\n icon,\n disableFiltering,\n disabled,\n altPlaceholder\n }: ChipDropdownInputProps) => {\n // Initiate states\n const [givenList, setGivenList] = React.useState<ListItem[]>([]);\n const [chips, setChips] = React.useState<ListItem[]>([]);\n\n const [value, setValue] = React.useState<string>('');\n const [restartFilter, setRestartFilter] = React.useState<boolean>(false);\n const [filteredList, setFilteredList] = React.useState<ListItem[]>();\n\n const [dropdownIsOpen, setDropdownIsOpen] = React.useState<boolean>(false);\n const [dropdownList, setDropdownList] = React.useState<DropdownItem[]>([]);\n const [dropdownValue, setDropdownValue] = React.useState<string>('');\n\n const [focused, setFocused] = React.useState<number | null>(null);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n\n /**\n * Sets initial values for the chips.\n */\n React.useEffect(() => {\n\n const list =\n values.map((a) => chips.find(b => b.value === a) || givenList.find(b => b.value === a) || {\n label: a,\n value: a,\n icon: icon\n })\n .map((a, index) => ({...a, variant: a.variant || (variants && variants[index]) || 'normal'}))\n .map((a, index) => ({...a, icon: a.icon || icon}));\n\n setChips(list);\n }, [values, variants, icon, givenList]);\n\n /**\n * Convert string[] to List[] if necessary\n */\n React.useEffect(() => {\n if (typeof list[0] === 'string') {\n const newList: ListItem[] = (list as string[]).map((e: string) => ({label: e, value: e}));\n setGivenList(newList);\n } else {\n setGivenList(list as ListItem[]);\n }\n }, [list]);\n\n /**\n * filter and sort list if remoteOperations is false\n * */\n React.useEffect(() => {\n let options = [...givenList];\n if (!disableFiltering) {\n if (!restartFilter && value !== '') {\n options = options.filter((option) => option.label.toUpperCase().indexOf(value.toUpperCase()) !== -1 ||\n (option.secondaryLabel && option.secondaryLabel?.toUpperCase().indexOf(value.toUpperCase()) !== -1));\n }\n }\n\n if (!disableSorting) {\n options = options.sort();\n }\n\n suggestion && options.push(suggestion);\n\n options = options.filter((o) => !chips.find(a => a.value === o.value));\n setFilteredList(options);\n }, [value, givenList, chips, disableFiltering, disableSorting]);\n\n /**\n * if there is only one active item in dropdown mark it as focused\n * */\n React.useEffect(() => {\n if (dropdownIsOpen && !!value && dropdownList?.filter(a => !a.disabled).length === 1) {\n setDropdownValue(dropdownList.find(a => !a.disabled)!.value);\n } else {\n setDropdownValue('');\n }\n }, [dropdownList, dropdownIsOpen, value]);\n\n const handleClickOutside = (e: any) => {\n if (!containerRef.current?.contains(e.target)) {\n if (dropdownIsOpen) {\n setDropdownIsOpen(false);\n if (!givenList.find((e) => e.value === value)) {\n setValue('');\n }\n }\n }\n };\n\n /**\n * register click outside event listener\n * */\n React.useEffect(() => {\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n });\n\n /**\n * update dropdown items when filtered list changes\n * */\n React.useEffect(() => {\n setDropdownList(filteredList?.map(x => ({\n value: x.value,\n displayLabel: x.label,\n noteLabel: x.secondaryLabel,\n icon: (x.icon ?? icon) && SystemIcons[(x.icon || icon)!]({}),\n disabled: x.disabled,\n })) ?? []);\n }, [filteredList]);\n\n const addChip = (newChip: ListItem) => {\n const newList = [...chips, newChip];\n // Let's add the chip\n setChips(newList);\n onValueChange(newList.map(a => a.value));\n\n setValue('');\n };\n\n const handleInputValueChange = (value: string) => {\n setValue(value);\n setRestartFilter(false);\n setDropdownIsOpen(true);\n onInputChange && onInputChange(value);\n }\n\n /**\n * Add chip from dropdown\n * */\n const handleValueUpdate = (values: string[]) => {\n const item = filteredList?.find(a => a.value === values[0]);\n item && addChip(item);\n setRestartFilter(true);\n inputRef?.current?.focus();\n }\n\n /**\n * Adds a chip to the chip list.\n * @param event - Event handler from the key down event.\n */\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>): void => {\n // Let's trigger only on enter, comma and space key press\n if ((event.key === 'Enter' || event.key === 'Space' || event.key === 'Comma') && value) {\n if (dropdownList?.filter(a => !a.disabled).length === 1) {\n handleValueUpdate([dropdownList!.find(a => !a.disabled)!.value]);\n event.stopPropagation();\n }\n }\n\n if ((event.key === 'ArrowDown' || event.key === 'Down') && !!dropdownList?.length) {\n setDropdownIsOpen(true);\n setFocused(dropdownList.findIndex(a => !a.disabled) + 1);\n event.stopPropagation();\n }\n };\n\n /**\n * Removes a specific chip from the chip list.\n * @param index - Index of the chip that needs to be removed.\n */\n const handleOnChipRemoved = (index: number): void => {\n // Let's copy the chips\n const newChips = [...chips];\n\n // Let's delete the chip\n // If necessary, let's replace it with a different chip\n newChips.splice(index, 1);\n\n // Let's update the chip list\n setChips([...newChips]);\n onValueChange(newChips.map((e) => e.value));\n };\n\n return (\n <Wrapper ref={containerRef}>\n <ChipInputField inputId={inputId}\n ref={inputRef}\n items={chips}\n inputValue={value}\n size={size}\n placeholder={placeholder}\n altPlaceholder={altPlaceholder}\n disabled={disabled}\n multiLine={multiLine}\n validationType={validationType}\n validationMessage={validationMessage}\n loading={loading}\n onRemoveItem={(chip, index) => handleOnChipRemoved(index)}\n onInputValueChange={handleInputValueChange}\n onInputKeyDown={handleInputKeyDown}\n onActivation={() => setDropdownIsOpen(true)}/>\n {(!maxSelectedItems || (maxSelectedItems && chips.length < maxSelectedItems)) && (\n <DropdownContent\n customizationProps={{\n action: () => {\n },\n pinTopItem: true,\n\n itemsType: 'normal',\n scrollable: true,\n actionLabel: '',\n multiSelect: false,\n onValueUpdate: handleValueUpdate,\n items: dropdownList\n }}\n focused={focused}\n setFocused={setFocused}\n hideOnClickOutside={false}\n selectedValues={[dropdownValue]}\n messageOnNoResults={messageOnNoResults ?? ''}\n setSelectedValues={() => {\n }}\n isOpen={dropdownIsOpen}\n setIsOpen={setDropdownIsOpen}\n filter={''}\n isButton={false}\n id={`${inputId}_dropdowncontent`}/>\n )}\n\n </Wrapper>\n );\n};\n"],"file":"ChipDropdownInput.cjs"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Import React libraries.
3
+ */
4
+ import * as React from 'react';
5
+ import { ChipInputProps, ChipItem } from './ChipInputTypes';
6
+ interface ListItem extends ChipItem {
7
+ secondaryLabel?: string;
8
+ value: string;
9
+ }
10
+ interface ChipDropdownInputProps extends ChipInputProps {
11
+ list: ListItem[] | string[];
12
+ onInputChange?: (input: string) => void;
13
+ messageOnNoResults?: string;
14
+ suggestion?: ListItem;
15
+ loading?: boolean;
16
+ maxSelectedItems?: number;
17
+ disableSorting?: boolean;
18
+ disableFiltering?: boolean;
19
+ allowCustomItem?: boolean;
20
+ }
21
+ export declare const ChipDropdownInput: React.FunctionComponent<ChipDropdownInputProps>;
22
+ export {};