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