@peculiar/react-components 0.0.2-alpha.267 → 0.0.2-alpha.271

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 (83) hide show
  1. package/dist/cjs/Autocomplete/autocomplete.js +258 -0
  2. package/dist/cjs/Autocomplete/autocomplete.js.map +1 -0
  3. package/dist/cjs/Autocomplete/index.js +6 -0
  4. package/dist/cjs/Autocomplete/index.js.map +1 -0
  5. package/dist/cjs/Chip/chip.js +60 -13
  6. package/dist/cjs/Chip/chip.js.map +1 -1
  7. package/dist/cjs/Modal/modal.js +3 -3
  8. package/dist/cjs/Modal/modal.js.map +1 -1
  9. package/dist/cjs/hooks/index.js +5 -1
  10. package/dist/cjs/hooks/index.js.map +1 -1
  11. package/dist/cjs/hooks/use_autocomplete.js +345 -0
  12. package/dist/cjs/hooks/use_autocomplete.js.map +1 -0
  13. package/dist/cjs/hooks/use_event_callback.js +44 -0
  14. package/dist/cjs/hooks/use_event_callback.js.map +1 -0
  15. package/dist/cjs/index.js +1 -1
  16. package/dist/esm/Autocomplete/autocomplete.js +251 -0
  17. package/dist/esm/Autocomplete/autocomplete.js.map +1 -0
  18. package/dist/esm/Autocomplete/index.js +2 -0
  19. package/dist/esm/Autocomplete/index.js.map +1 -0
  20. package/dist/esm/Chip/chip.js +60 -13
  21. package/dist/esm/Chip/chip.js.map +1 -1
  22. package/dist/esm/Modal/modal.js +3 -3
  23. package/dist/esm/Modal/modal.js.map +1 -1
  24. package/dist/esm/hooks/index.js +2 -0
  25. package/dist/esm/hooks/index.js.map +1 -1
  26. package/dist/esm/hooks/use_autocomplete.js +338 -0
  27. package/dist/esm/hooks/use_autocomplete.js.map +1 -0
  28. package/dist/esm/hooks/use_event_callback.js +21 -0
  29. package/dist/esm/hooks/use_event_callback.js.map +1 -0
  30. package/dist/esm/index.js +1 -1
  31. package/dist/esnext/Autocomplete/autocomplete.js +255 -0
  32. package/dist/esnext/Autocomplete/autocomplete.js.map +1 -0
  33. package/dist/esnext/Autocomplete/index.js +2 -0
  34. package/dist/esnext/Autocomplete/index.js.map +1 -0
  35. package/dist/esnext/Chip/chip.js +74 -7
  36. package/dist/esnext/Chip/chip.js.map +1 -1
  37. package/dist/esnext/Modal/modal.js +3 -3
  38. package/dist/esnext/Modal/modal.js.map +1 -1
  39. package/dist/esnext/hooks/index.js +2 -0
  40. package/dist/esnext/hooks/index.js.map +1 -1
  41. package/dist/esnext/hooks/use_autocomplete.js +333 -0
  42. package/dist/esnext/hooks/use_autocomplete.js.map +1 -0
  43. package/dist/esnext/hooks/use_event_callback.js +16 -0
  44. package/dist/esnext/hooks/use_event_callback.js.map +1 -0
  45. package/dist/esnext/index.js +1 -1
  46. package/dist/types/Autocomplete/autocomplete.d.ts +86 -0
  47. package/dist/types/Autocomplete/index.d.ts +1 -0
  48. package/dist/types/Chip/chip.d.ts +15 -1
  49. package/dist/types/Modal/modal.d.ts +1 -1
  50. package/dist/types/Popover/popover.d.ts +1 -1
  51. package/dist/types/hooks/index.d.ts +2 -0
  52. package/dist/types/hooks/use_autocomplete.d.ts +91 -0
  53. package/dist/types/hooks/use_event_callback.d.ts +4 -0
  54. package/dist/types/index.d.ts +1 -1
  55. package/package.json +3 -3
  56. package/dist/cjs/ComboBox/combo_box.js +0 -262
  57. package/dist/cjs/ComboBox/combo_box.js.map +0 -1
  58. package/dist/cjs/ComboBox/index.js +0 -6
  59. package/dist/cjs/ComboBox/index.js.map +0 -1
  60. package/dist/cjs/SelectPicker/index.js +0 -6
  61. package/dist/cjs/SelectPicker/index.js.map +0 -1
  62. package/dist/cjs/SelectPicker/select_picker.js +0 -429
  63. package/dist/cjs/SelectPicker/select_picker.js.map +0 -1
  64. package/dist/esm/ComboBox/combo_box.js +0 -240
  65. package/dist/esm/ComboBox/combo_box.js.map +0 -1
  66. package/dist/esm/ComboBox/index.js +0 -2
  67. package/dist/esm/ComboBox/index.js.map +0 -1
  68. package/dist/esm/SelectPicker/index.js +0 -2
  69. package/dist/esm/SelectPicker/index.js.map +0 -1
  70. package/dist/esm/SelectPicker/select_picker.js +0 -422
  71. package/dist/esm/SelectPicker/select_picker.js.map +0 -1
  72. package/dist/esnext/ComboBox/combo_box.js +0 -214
  73. package/dist/esnext/ComboBox/combo_box.js.map +0 -1
  74. package/dist/esnext/ComboBox/index.js +0 -2
  75. package/dist/esnext/ComboBox/index.js.map +0 -1
  76. package/dist/esnext/SelectPicker/index.js +0 -2
  77. package/dist/esnext/SelectPicker/index.js.map +0 -1
  78. package/dist/esnext/SelectPicker/select_picker.js +0 -418
  79. package/dist/esnext/SelectPicker/select_picker.js.map +0 -1
  80. package/dist/types/ComboBox/combo_box.d.ts +0 -19
  81. package/dist/types/ComboBox/index.d.ts +0 -1
  82. package/dist/types/SelectPicker/index.d.ts +0 -1
  83. package/dist/types/SelectPicker/select_picker.d.ts +0 -89
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useAutocomplete = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var use_id_1 = require("./use_id");
9
+ var use_controllable_1 = require("./use_controllable");
10
+ var use_event_callback_1 = require("./use_event_callback");
11
+ /**
12
+ *
13
+ */
14
+ var defaultFilterOptions = function (options, value, getOptionLabel) {
15
+ if (!options || !options.length) {
16
+ return [];
17
+ }
18
+ return options.filter(function (option) {
19
+ var labelValue = getOptionLabel(option).trim().toLowerCase();
20
+ var searchValue = value.trim().toLowerCase();
21
+ return labelValue.includes(searchValue);
22
+ });
23
+ };
24
+ function useAutocomplete(props) {
25
+ var idProp = props.id, options = props.options, _a = props.defaultValue, defaultValue = _a === void 0 ? props.multiple ? [] : null : _a, valueProp = props.value, _b = props.disableCloseOnSelect, disableCloseOnSelect = _b === void 0 ? false : _b, _c = props.multiple, multiple = _c === void 0 ? false : _c, groupBy = props.groupBy,
26
+ // @ts-ignore
27
+ _d = props.getOptionLabel,
28
+ // @ts-ignore
29
+ getOptionLabel = _d === void 0 ? function (option) { var _a; return (_a = option.label) !== null && _a !== void 0 ? _a : option; } : _d, _e = props.filterOptions, filterOptions = _e === void 0 ? defaultFilterOptions : _e, onOpen = props.onOpen, onClose = props.onClose, onInputChange = props.onInputChange, onChange = props.onChange;
30
+ var id = use_id_1.useId(idProp);
31
+ var anchorEl = react_1.default.useRef(null);
32
+ var listboxRef = react_1.default.useRef(null);
33
+ var highlightedIndexRef = react_1.default.useRef(-1);
34
+ var _f = react_1.default.useState(false), popupOpen = _f[0], setPopupOpen = _f[1];
35
+ var _g = react_1.default.useState(''), searchValue = _g[0], setSearchValue = _g[1];
36
+ var _h = use_controllable_1.useControllableState({
37
+ value: valueProp,
38
+ defaultValue: defaultValue,
39
+ }), value = _h[0], setValue = _h[1];
40
+ var filteredOptions = popupOpen
41
+ ? filterOptions(options, searchValue, getOptionLabel)
42
+ : [];
43
+ var validOptionIndex = function (index, direction) {
44
+ if (!listboxRef.current || index === -1) {
45
+ return -1;
46
+ }
47
+ var nextFocus = index;
48
+ while (true) {
49
+ // Out of range
50
+ if ((direction === 'next' && nextFocus === filteredOptions.length)
51
+ || (direction === 'previous' && nextFocus === -1)) {
52
+ return -1;
53
+ }
54
+ var option = listboxRef.current.querySelector("[data-option-index=\"" + nextFocus + "\"]");
55
+ if ((option && !option.hasAttribute('tabindex'))) {
56
+ // Move to the next element.
57
+ nextFocus += direction === 'next' ? 1 : -1;
58
+ }
59
+ else {
60
+ return nextFocus;
61
+ }
62
+ }
63
+ };
64
+ var setHighlightedIndex = use_event_callback_1.useEventCallback(function (index, reason) {
65
+ if (reason === void 0) { reason = 'auto'; }
66
+ highlightedIndexRef.current = index;
67
+ var listboxNode = listboxRef.current;
68
+ if (!listboxNode) {
69
+ return;
70
+ }
71
+ var prevOptionNode = listboxNode.querySelector('[role="option"][data-focused="true"]');
72
+ if (prevOptionNode) {
73
+ prevOptionNode.setAttribute('data-focused', 'false');
74
+ }
75
+ if (index === -1) {
76
+ listboxNode.scrollTop = 0;
77
+ return;
78
+ }
79
+ var option = listboxNode.querySelector("[data-option-index=\"" + index + "\"]");
80
+ if (!option) {
81
+ return;
82
+ }
83
+ option.setAttribute('data-focused', 'true');
84
+ // Scroll active descendant into view.
85
+ // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
86
+ //
87
+ // Consider this API instead once it has a better browser support:
88
+ // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });
89
+ if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {
90
+ var element = option;
91
+ var scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;
92
+ var elementBottom = element.offsetTop + element.offsetHeight;
93
+ if (elementBottom > scrollBottom) {
94
+ listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;
95
+ }
96
+ else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {
97
+ listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);
98
+ }
99
+ }
100
+ });
101
+ var changeHighlightedIndex = use_event_callback_1.useEventCallback(function (diff, direction, reason) {
102
+ if (direction === void 0) { direction = 'next'; }
103
+ if (reason === void 0) { reason = 'auto'; }
104
+ if (!popupOpen) {
105
+ return;
106
+ }
107
+ var getNextIndex = function () {
108
+ var maxIndex = filteredOptions.length - 1;
109
+ if (diff === 'reset') {
110
+ return -1;
111
+ }
112
+ if (diff === 'start') {
113
+ return 0;
114
+ }
115
+ if (diff === 'end') {
116
+ return maxIndex;
117
+ }
118
+ var newIndex = highlightedIndexRef.current + diff;
119
+ if (newIndex < 0) {
120
+ if (newIndex === -1) {
121
+ return -1;
122
+ }
123
+ if ((highlightedIndexRef.current !== -1) || Math.abs(diff) > 1) {
124
+ return 0;
125
+ }
126
+ return maxIndex;
127
+ }
128
+ if (newIndex > maxIndex) {
129
+ if (newIndex === maxIndex + 1) {
130
+ return -1;
131
+ }
132
+ if (Math.abs(diff) > 1) {
133
+ return maxIndex;
134
+ }
135
+ return 0;
136
+ }
137
+ return newIndex;
138
+ };
139
+ var nextIndex = validOptionIndex(getNextIndex(), direction);
140
+ setHighlightedIndex(nextIndex, reason);
141
+ });
142
+ var syncHighlightedIndex = react_1.default.useCallback(function () {
143
+ if (!popupOpen) {
144
+ return;
145
+ }
146
+ var valueItem = Array.isArray(value) ? value[0] : value;
147
+ if (filteredOptions.length === 0 || valueItem == null) {
148
+ changeHighlightedIndex('reset');
149
+ return;
150
+ }
151
+ if (!listboxRef.current) {
152
+ return;
153
+ }
154
+ if (valueItem != null) {
155
+ var itemIndex = filteredOptions.findIndex(function (o) { return o === valueItem; });
156
+ if (itemIndex === -1) {
157
+ changeHighlightedIndex('reset');
158
+ }
159
+ else {
160
+ setHighlightedIndex(itemIndex);
161
+ }
162
+ return;
163
+ }
164
+ // Prevent the highlighted index to leak outside the boundaries.
165
+ if (highlightedIndexRef.current >= filteredOptions.length - 1) {
166
+ setHighlightedIndex(filteredOptions.length - 1);
167
+ return;
168
+ }
169
+ setHighlightedIndex(highlightedIndexRef.current);
170
+ }, [
171
+ filteredOptions.length,
172
+ multiple ? false : value,
173
+ changeHighlightedIndex,
174
+ setHighlightedIndex,
175
+ popupOpen,
176
+ searchValue,
177
+ multiple,
178
+ ]);
179
+ var handleListboxRef = use_event_callback_1.useEventCallback(function (node) {
180
+ listboxRef.current = node;
181
+ if (!node) {
182
+ return;
183
+ }
184
+ syncHighlightedIndex();
185
+ });
186
+ react_1.default.useEffect(function () {
187
+ syncHighlightedIndex();
188
+ }, [syncHighlightedIndex]);
189
+ var handleOpen = function (event) {
190
+ if (popupOpen) {
191
+ return;
192
+ }
193
+ setPopupOpen(true);
194
+ if (onOpen) {
195
+ onOpen(event);
196
+ }
197
+ };
198
+ var handleClick = function (event) {
199
+ handleOpen(event);
200
+ };
201
+ var handleClose = function (event) {
202
+ if (!popupOpen) {
203
+ return;
204
+ }
205
+ setPopupOpen(false);
206
+ setSearchValue('');
207
+ if (onClose) {
208
+ onClose(event);
209
+ }
210
+ };
211
+ var selectNewValue = function (event, option) {
212
+ var newValue = option;
213
+ if (multiple) {
214
+ newValue = Array.isArray(value) ? value.slice() : [];
215
+ var itemIndex = newValue.findIndex(function (v) { return option === v; });
216
+ if (itemIndex === -1) {
217
+ newValue.push(option);
218
+ }
219
+ else {
220
+ newValue.splice(itemIndex, 1);
221
+ }
222
+ }
223
+ setValue(newValue);
224
+ if (!disableCloseOnSelect) {
225
+ handleClose(event);
226
+ }
227
+ if (onChange) {
228
+ onChange(event, newValue);
229
+ }
230
+ };
231
+ var handleInputChange = function (event) {
232
+ var valueInput = event.target.value;
233
+ setSearchValue(valueInput);
234
+ if (onInputChange) {
235
+ onInputChange(event, valueInput);
236
+ }
237
+ };
238
+ var handleKeyDown = function (event) {
239
+ // Wait until IME is settled.
240
+ if (event.which !== 229) {
241
+ switch (event.key) {
242
+ case 'ArrowDown':
243
+ // Prevent cursor move
244
+ event.preventDefault();
245
+ changeHighlightedIndex(1, 'next', 'keyboard');
246
+ break;
247
+ case 'ArrowUp':
248
+ // Prevent cursor move
249
+ event.preventDefault();
250
+ changeHighlightedIndex(-1, 'previous', 'keyboard');
251
+ break;
252
+ case 'Enter':
253
+ // Avoid early form validation, let the end-users continue filling the form.
254
+ event.preventDefault();
255
+ if (highlightedIndexRef.current !== -1 && popupOpen) {
256
+ var option = filteredOptions[highlightedIndexRef.current];
257
+ selectNewValue(event, option);
258
+ }
259
+ break;
260
+ default:
261
+ }
262
+ }
263
+ };
264
+ var handleOptionClick = function (event) {
265
+ var index = Number(event.currentTarget.getAttribute('data-option-index'));
266
+ var option = filteredOptions[index];
267
+ selectNewValue(event, option);
268
+ };
269
+ var handleTagDelete = function (option) { return function (event) {
270
+ selectNewValue(event, option);
271
+ }; };
272
+ var groupedOptions = filteredOptions;
273
+ if (groupBy) {
274
+ groupedOptions = filteredOptions.reduce(function (acc, option, index) {
275
+ var group = groupBy(option);
276
+ if (acc.length > 0 && acc[acc.length - 1].group === group) {
277
+ acc[acc.length - 1].options.push(option);
278
+ }
279
+ else {
280
+ acc.push({
281
+ key: index,
282
+ index: index,
283
+ group: group,
284
+ options: [option],
285
+ });
286
+ }
287
+ return acc;
288
+ }, []);
289
+ }
290
+ return {
291
+ getRootProps: function () { return ({
292
+ ref: anchorEl,
293
+ 'aria-expanded': popupOpen,
294
+ 'aria-haspopup': 'listbox',
295
+ onClick: handleClick,
296
+ }); },
297
+ getListboxProps: function () { return ({
298
+ ref: handleListboxRef,
299
+ role: 'listbox',
300
+ tabIndex: -1,
301
+ id: id + "-listbox",
302
+ }); },
303
+ getInputProps: function () { return ({
304
+ type: 'search',
305
+ value: searchValue,
306
+ autoComplete: 'off',
307
+ autoCapitalize: 'none',
308
+ autoCorrect: 'false',
309
+ spellCheck: 'false',
310
+ onChange: handleInputChange,
311
+ }); },
312
+ getOptionProps: function (option, index) {
313
+ var selected = (Array.isArray(value) ? value : [value]).some(function (v) { return v != null && option === v; });
314
+ return {
315
+ key: getOptionLabel(option),
316
+ tabIndex: -1,
317
+ role: 'option',
318
+ id: id + "-option-" + index,
319
+ 'data-option-index': index,
320
+ 'aria-selected': selected,
321
+ onClick: handleOptionClick,
322
+ };
323
+ },
324
+ getPopoverProps: function () { return ({
325
+ open: popupOpen,
326
+ anchorEl: anchorEl.current,
327
+ onClose: handleClose,
328
+ onKeyDown: handleKeyDown,
329
+ }); },
330
+ getTagProps: function (option, index) { return ({
331
+ key: index,
332
+ 'data-tag-index': index,
333
+ tabIndex: -1,
334
+ onDelete: handleTagDelete(option),
335
+ }); },
336
+ getOptionLabel: getOptionLabel,
337
+ groupedOptions: groupedOptions,
338
+ popupOpen: popupOpen,
339
+ value: value,
340
+ searchValue: searchValue,
341
+ id: id,
342
+ };
343
+ }
344
+ exports.useAutocomplete = useAutocomplete;
345
+ //# sourceMappingURL=use_autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_autocomplete.js","sourceRoot":"","sources":["../../../src/hooks/use_autocomplete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.useEventCallback = void 0;
23
+ var React = __importStar(require("react"));
24
+ /**
25
+ * https://github.com/facebook/react/issues/14099#issuecomment-440013892
26
+ */
27
+ function useEventCallback(fn) {
28
+ var ref = React.useRef(fn);
29
+ React.useLayoutEffect(function () {
30
+ ref.current = fn;
31
+ });
32
+ return React.useCallback(function () {
33
+ var args = [];
34
+ for (var _i = 0; _i < arguments.length; _i++) {
35
+ args[_i] = arguments[_i];
36
+ }
37
+ // @ts-expect-error hide `this`
38
+ // tslint:disable-next-line:ban-comma-operator
39
+ // eslint-disable-next-line implicit-arrow-linebreak
40
+ return (0, ref.current).apply(void 0, args);
41
+ }, []);
42
+ }
43
+ exports.useEventCallback = useEventCallback;
44
+ //# sourceMappingURL=use_event_callback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_event_callback.js","sourceRoot":"","sources":["../../../src/hooks/use_event_callback.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA+B;AAE/B;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,EAA6B;IAE7B,IAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE7B,KAAK,CAAC,eAAe,CAAC;QACpB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,WAAW,CACtB;QAAC,cAAa;aAAb,UAAa,EAAb,qBAAa,EAAb,IAAa;YAAb,yBAAa;;QACZ,+BAA+B;QAC/B,8CAA8C;QAC9C,oDAAoD;QACpD,OAAA,CAAC,CAAC,EAAE,GAAG,CAAC,OAAQ,CAAC,eAAI,IAAI;IAAzB,CAA0B,EAC5B,EAAE,CACH,CAAC;AACJ,CAAC;AAjBD,4CAiBC"}
package/dist/cjs/index.js CHANGED
@@ -31,7 +31,7 @@ __exportStar(require("./Popover"), exports);
31
31
  __exportStar(require("./Portal"), exports);
32
32
  __exportStar(require("./Radio"), exports);
33
33
  __exportStar(require("./Select"), exports);
34
- __exportStar(require("./SelectPicker"), exports);
34
+ __exportStar(require("./Autocomplete"), exports);
35
35
  __exportStar(require("./Slide"), exports);
36
36
  __exportStar(require("./Slider"), exports);
37
37
  __exportStar(require("./Tabs"), exports);
@@ -0,0 +1,251 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React from 'react';
24
+ import { useAutocomplete, } from '../hooks';
25
+ import { Popover } from '../Popover';
26
+ import { TextField } from '../TextField';
27
+ import { Typography } from '../Typography';
28
+ import { Box } from '../Box';
29
+ import { Chip } from '../Chip';
30
+ import { Button } from '../Button';
31
+ import { ArrowDropDownIcon, PlusIcon } from '../icons';
32
+ import { css, cx } from '../styles';
33
+ /**
34
+ *
35
+ */
36
+ /**
37
+ * Styles.
38
+ */
39
+ var stylesContainer = function () { return css({
40
+ label: 'Autocomplete',
41
+ position: 'relative',
42
+ }); };
43
+ var stylesRoot = function () { return css({
44
+ label: 'Autocomplete-root',
45
+ outline: 'none',
46
+ boxSizing: 'border-box',
47
+ width: '100%',
48
+ borderRadius: '4px',
49
+ padding: '0 calc(var(--pv-size-base-2) + 24px) 0 var(--pv-size-base-2)',
50
+ backgroundColor: 'var(--pv-color-gray-1)',
51
+ borderStyle: 'solid',
52
+ borderWidth: '1px',
53
+ borderColor: 'var(--pv-color-gray-8)',
54
+ transition: 'background-color 200ms, color 200ms, border-color 200ms',
55
+ appearance: 'none',
56
+ userSelect: 'none',
57
+ textAlign: 'left',
58
+ cursor: 'pointer',
59
+ fontFamily: 'inherit',
60
+ height: 'var(--pv-size-base-8)',
61
+ '&:hover': {
62
+ backgroundColor: 'var(--pv-color-gray-3)',
63
+ borderColor: 'var(--pv-color-gray-7)',
64
+ },
65
+ '&:disabled': {
66
+ cursor: 'not-allowed',
67
+ backgroundColor: 'var(--pv-color-gray-1)',
68
+ borderColor: 'var(--pv-color-gray-5)',
69
+ color: 'var(--pv-color-gray-7)',
70
+ },
71
+ '&:not(:disabled)': {
72
+ '&:focus': {
73
+ backgroundColor: 'var(--pv-color-secondary-tint-5)',
74
+ borderColor: 'var(--pv-color-secondary-tint-3)',
75
+ },
76
+ },
77
+ }); };
78
+ var stylesRootMultiple = function () { return css({
79
+ label: 'multiple',
80
+ display: 'inline-flex',
81
+ alignItems: 'center',
82
+ }); };
83
+ var stylesInputArrowIcon = function () { return css({
84
+ label: 'Autocomplete-arrow-icon',
85
+ position: 'absolute',
86
+ right: '0px',
87
+ top: 'calc(50% - 12px)',
88
+ pointerEvents: 'none',
89
+ margin: '0px var(--pv-size-base)',
90
+ color: 'var(--pv-color-gray-10)',
91
+ }); };
92
+ var stylesListBox = function () { return css({
93
+ label: 'Autocomplete-listbox',
94
+ maxHeight: '36vh',
95
+ overflowY: 'auto',
96
+ margin: 0,
97
+ listStyleType: 'none',
98
+ position: 'relative',
99
+ padding: '10px 0',
100
+ }); };
101
+ var stylesOption = function (inGroup) { return css(__assign(__assign({ label: 'Autocomplete-option' }, (inGroup ? {
102
+ padding: '0px var(--pv-size-base-2) 0 var(--pv-size-base-3)',
103
+ } : {
104
+ padding: '0px var(--pv-size-base-2)',
105
+ })), { fontFamily: 'inherit', outline: 'none', width: '100%', height: 'var(--pv-size-base-7)', textDecoration: 'none', userSelect: 'none', cursor: 'pointer', transition: 'background-color 200ms', backgroundColor: 'transparent', border: 'none', color: 'var(--pv-color-black)', boxSizing: 'border-box', display: 'flex', textAlign: 'left', alignItems: 'center', justifyContent: 'flex-start', '&:hover': {
106
+ backgroundColor: 'var(--pv-color-gray-2)',
107
+ }, '&[data-focused="true"]': {
108
+ backgroundColor: 'var(--pv-color-gray-3)',
109
+ }, '&[aria-selected="true"]': {
110
+ backgroundColor: 'var(--pv-color-gray-4)',
111
+ } })); };
112
+ var stylesInputSearch = function () { return css({
113
+ label: 'Autocomplete-input-search',
114
+ padding: 'var(--pv-size-base-3) var(--pv-size-base-3) var(--pv-size-base-2)',
115
+ }); };
116
+ var stylesListBoxState = function () { return css({
117
+ label: 'Autocomplete-listbox-state',
118
+ padding: 'var(--pv-size-base-3) var(--pv-size-base-2)',
119
+ }); };
120
+ var stylesPopover = function () { return css({
121
+ label: 'Autocomplete-popover',
122
+ minWidth: 240,
123
+ }); };
124
+ var stylesTagsList = function () { return css({
125
+ label: 'Autocomplete-tags-list',
126
+ overflow: 'hidden',
127
+ width: '100%',
128
+ }); };
129
+ var stylesTag = function (tagsLength, limitTags) { return css(__assign(__assign({ label: 'Autocomplete-tag', borderRadius: '2px', borderColor: 'var(--pv-color-gray-7)', margin: '0 var(--pv-size-base) 0 0' }, (tagsLength === 1 && {
130
+ maxWidth: 'calc(100% - var(--pv-size-base))',
131
+ })), (tagsLength > 1 && limitTags && {
132
+ maxWidth: "calc(" + 100 / limitTags + "% - var(--pv-size-base))",
133
+ }))); };
134
+ var stylesTagSize = function () { return css({
135
+ label: 'Autocomplete-tag-size',
136
+ margin: '0 var(--pv-size-base-2)',
137
+ }); };
138
+ var stylesNativeInput = function () { return css({
139
+ label: 'Autocomplete-native-input',
140
+ bottom: 0,
141
+ left: 0,
142
+ height: '100%',
143
+ position: 'absolute',
144
+ opacity: 0,
145
+ pointerEvents: 'none',
146
+ width: '100%',
147
+ boxSizing: 'border-box',
148
+ }); };
149
+ var stylesGroupList = function () { return css({
150
+ label: 'Autocomplete-group-list',
151
+ padding: 0,
152
+ listStyleType: 'none',
153
+ }); };
154
+ var stylesGroupName = function () { return css({
155
+ label: 'Autocomplete-group-name',
156
+ padding: 'var(--pv-size-base-2)',
157
+ }); };
158
+ var stylesButtonCreateNew = function () { return css({
159
+ label: 'Autocomplete-button-create',
160
+ width: '100%',
161
+ borderRadius: 0,
162
+ justifyContent: 'left',
163
+ padding: '0px var(--pv-size-base-2)',
164
+ }); };
165
+ /**
166
+ *
167
+ */
168
+ export function Autocomplete(props) {
169
+ var placeholder = props.placeholder, disableSearch = props.disableSearch, noOptionsText = props.noOptionsText, loading = props.loading, loadingText = props.loadingText, _a = props.limitTags, limitTags = _a === void 0 ? 2 : _a, name = props.name, required = props.required, multiple = props.multiple, createOptionText = props.createOptionText, allowCreateOption = props.allowCreateOption, renderRootProp = props.renderRoot, renderOptionProp = props.renderOption, _b = props.getLimitTagsText, getLimitTagsText = _b === void 0 ? function (more) { return more + " more"; } : _b, groupBy = props.groupBy, onCreate = props.onCreate;
170
+ var _c = useAutocomplete(props), id = _c.id, value = _c.value, searchValue = _c.searchValue, groupedOptions = _c.groupedOptions, getRootProps = _c.getRootProps, getInputProps = _c.getInputProps, getListboxProps = _c.getListboxProps, getOptionProps = _c.getOptionProps, getPopoverProps = _c.getPopoverProps, getTagProps = _c.getTagProps, getOptionLabel = _c.getOptionLabel;
171
+ var _d = getInputProps(), onChange = _d.onChange, otherInputProps = __rest(_d, ["onChange"]);
172
+ var popoverProps = getPopoverProps();
173
+ var handleCreate = function (event) {
174
+ if (onCreate) {
175
+ onCreate(event, searchValue);
176
+ }
177
+ popoverProps.onClose(event);
178
+ };
179
+ var defaultRenderOption = function (propsOption, option) { return (React.createElement("li", __assign({}, propsOption, { className: stylesOption(!!groupBy) }),
180
+ React.createElement(Typography, { variant: "b3", color: "inherit", noWrap: true }, getOptionLabel(option)))); };
181
+ var renderGroup = function (params) { return (React.createElement("li", { key: params.key },
182
+ React.createElement(Typography, { variant: "c1", color: "gray-10", className: stylesGroupName() }, params.group),
183
+ React.createElement("ul", { className: stylesGroupList() }, params.children))); };
184
+ var renderValue = function () {
185
+ if (!value || (Array.isArray(value) && value.length === 0)) {
186
+ return null;
187
+ }
188
+ if (Array.isArray(value)) {
189
+ var more = (value.length > limitTags) ? (value.length - limitTags) : 0;
190
+ var valueLimits = more > 0 ? value.slice(0, limitTags) : value;
191
+ return (React.createElement(React.Fragment, null,
192
+ React.createElement("div", { className: stylesTagsList() }, valueLimits.map(function (v, index) { return (React.createElement(Chip, __assign({}, getTagProps(v, index), { color: "default", variant: "contained", className: stylesTag(value.length, limitTags) }), getOptionLabel(v))); })),
193
+ !!more && (React.createElement(Typography, { variant: "c2", color: "gray-9", className: stylesTagSize() }, getLimitTagsText(more)))));
194
+ }
195
+ return getOptionLabel(value);
196
+ };
197
+ var renderedValue = renderValue();
198
+ var isValueEmpty = renderedValue === null;
199
+ var defaultRenderRoot = function (propsRoot, valueRoot) {
200
+ var _a;
201
+ return (React.createElement("div", { className: stylesContainer() },
202
+ React.createElement(Typography, __assign({}, propsRoot, { noWrap: true, component: "button", variant: "c1", color: isValueEmpty ? 'gray-9' : 'black', className: cx((_a = {},
203
+ _a[stylesRoot()] = true,
204
+ _a[stylesRootMultiple()] = multiple,
205
+ _a)),
206
+ // @ts-ignore
207
+ type: "button" }), isValueEmpty ? placeholder : renderedValue),
208
+ React.createElement(ArrowDropDownIcon, { className: stylesInputArrowIcon(), "aria-hidden": true }),
209
+ React.createElement("input", { type: "text", value: JSON.stringify(valueRoot) || '', tabIndex: -1, "aria-hidden": "true", className: stylesNativeInput(), autoComplete: "off", id: id, name: name, required: required, onChange: function () { } })));
210
+ };
211
+ var renderOption = renderOptionProp || defaultRenderOption;
212
+ var renderRoot = renderRootProp || defaultRenderRoot;
213
+ var renderListOption = function (option, index) {
214
+ var optionProps = getOptionProps(option, index);
215
+ return renderOption(optionProps, option);
216
+ };
217
+ return (React.createElement(React.Fragment, null,
218
+ renderRoot(getRootProps(), value),
219
+ React.createElement(Popover, __assign({ placement: "bottom-start", allowUseSameWidth: true }, popoverProps, { className: stylesPopover() }),
220
+ !disableSearch && (React.createElement(Box, { borderColor: "gray-3", borderPosition: "bottom", borderStyle: "solid", borderWidth: 1 },
221
+ React.createElement(TextField, { inputProps: otherInputProps, className: stylesInputSearch(), onChange: onChange, placeholder: "Search", disabled: loading }))),
222
+ loading && groupedOptions.length === 0 && (React.createElement("div", { className: stylesListBoxState() }, typeof loadingText === 'string' ? (React.createElement(Typography, { variant: "b2", color: "gray-10" }, loadingText)) : loadingText)),
223
+ groupedOptions.length === 0 && !loading && (React.createElement("div", { className: stylesListBoxState() }, typeof noOptionsText === 'string' ? (React.createElement(Typography, { variant: "b2", color: "gray-10" }, noOptionsText)) : noOptionsText)),
224
+ groupedOptions.length > 0 && (React.createElement("ul", __assign({ className: stylesListBox() }, getListboxProps()), groupedOptions
225
+ // @ts-ignore
226
+ .map(function (option, index) {
227
+ if (groupBy && 'options' in option) {
228
+ return renderGroup({
229
+ key: option.key,
230
+ group: option.group,
231
+ // @ts-ignore
232
+ children: option.options.map(function (option2, index2) { return (renderListOption(option2, option.index + index2)); }),
233
+ });
234
+ }
235
+ return renderListOption(option, index);
236
+ }))),
237
+ allowCreateOption && !loading && (React.createElement(Box, { borderColor: "gray-3", borderPosition: "top", borderStyle: "solid", borderWidth: 1 },
238
+ React.createElement(Button, { color: "secondary", className: stylesButtonCreateNew(), textVariant: "b3", onClick: handleCreate, startIcon: React.createElement(PlusIcon, null) }, createOptionText))))));
239
+ }
240
+ // @ts-ignore
241
+ Autocomplete.defaultProps = {
242
+ disableSearch: false,
243
+ noOptionsText: 'No options',
244
+ loading: false,
245
+ loadingText: 'Loading...',
246
+ limitTags: 2,
247
+ required: false,
248
+ allowCreateOption: false,
249
+ createOptionText: 'Create new',
250
+ };
251
+ //# sourceMappingURL=autocomplete.js.map