@activecollab/components 2.0.209 → 2.0.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Autocomplete/Autocomplete.js +216 -79
- package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/cjs/components/ComboBox/ComboBox.js +4 -2
- package/dist/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/dist/cjs/components/Input/InputPhone.js +10 -6
- package/dist/cjs/components/Input/InputPhone.js.map +1 -1
- package/dist/cjs/components/Input/InputSelect.js +4 -2
- package/dist/cjs/components/Input/InputSelect.js.map +1 -1
- package/dist/cjs/components/Input/InputTime.js +4 -2
- package/dist/cjs/components/Input/InputTime.js.map +1 -1
- package/dist/cjs/components/Input/Styles.js +14 -3
- package/dist/cjs/components/Input/Styles.js.map +1 -1
- package/dist/cjs/components/Select/OptionGroup/OptionGroup.js +5 -16
- package/dist/cjs/components/Select/OptionGroup/OptionGroup.js.map +1 -1
- package/dist/cjs/components/Select/OptionGroup/Styles.js +1 -1
- package/dist/cjs/components/Select/OptionGroup/Styles.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +4 -2
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/hooks/useHighlightText.js +1 -0
- package/dist/cjs/hooks/useHighlightText.js.map +1 -1
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts +6 -3
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/esm/components/Autocomplete/Autocomplete.js +189 -58
- package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/esm/components/ComboBox/ComboBox.d.ts.map +1 -1
- package/dist/esm/components/ComboBox/ComboBox.js +3 -1
- package/dist/esm/components/ComboBox/ComboBox.js.map +1 -1
- package/dist/esm/components/Input/InputPhone.d.ts.map +1 -1
- package/dist/esm/components/Input/InputPhone.js +11 -7
- package/dist/esm/components/Input/InputPhone.js.map +1 -1
- package/dist/esm/components/Input/InputSelect.d.ts +2 -0
- package/dist/esm/components/Input/InputSelect.d.ts.map +1 -1
- package/dist/esm/components/Input/InputSelect.js +4 -2
- package/dist/esm/components/Input/InputSelect.js.map +1 -1
- package/dist/esm/components/Input/InputTime.d.ts +1 -0
- package/dist/esm/components/Input/InputTime.d.ts.map +1 -1
- package/dist/esm/components/Input/InputTime.js +3 -1
- package/dist/esm/components/Input/InputTime.js.map +1 -1
- package/dist/esm/components/Input/Styles.d.ts +4 -1
- package/dist/esm/components/Input/Styles.d.ts.map +1 -1
- package/dist/esm/components/Input/Styles.js +13 -2
- package/dist/esm/components/Input/Styles.js.map +1 -1
- package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts.map +1 -1
- package/dist/esm/components/Select/OptionGroup/OptionGroup.js +5 -10
- package/dist/esm/components/Select/OptionGroup/OptionGroup.js.map +1 -1
- package/dist/esm/components/Select/OptionGroup/Styles.d.ts.map +1 -1
- package/dist/esm/components/Select/OptionGroup/Styles.js +1 -1
- package/dist/esm/components/Select/OptionGroup/Styles.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts +1 -0
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +3 -1
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/hooks/useHighlightText.d.ts.map +1 -1
- package/dist/esm/hooks/useHighlightText.js +1 -0
- package/dist/esm/hooks/useHighlightText.js.map +1 -1
- package/dist/index.js +264 -114
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _styled from "styled-components";
|
|
2
2
|
import React, { useCallback, useState, useMemo, useEffect, useRef } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
4
4
|
import { handleKeyboardMovement } from "./HandleKeyboard";
|
|
5
5
|
import { StyledAutocompleteBody, StyledAutocompleteNewItem, StyledAutocompleteScrollShadow } from "./Styles";
|
|
6
6
|
import highlightText from "../../hooks/useHighlightText";
|
|
@@ -31,10 +31,12 @@ export const Autocomplete = _ref => {
|
|
|
31
31
|
keepSameOptionsOrder = false,
|
|
32
32
|
autoHeightMax = 340,
|
|
33
33
|
clearInputOnSelect,
|
|
34
|
-
mixedOptions = []
|
|
34
|
+
mixedOptions = [],
|
|
35
|
+
filterCriteria,
|
|
36
|
+
disableVirtualization
|
|
35
37
|
} = _ref;
|
|
38
|
+
const listContainerRef = useRef(null);
|
|
36
39
|
const itemRef = useRef(null);
|
|
37
|
-
const listRef = useRef(null);
|
|
38
40
|
const selectedOptions = useMemo(() => {
|
|
39
41
|
if (Array.isArray(selected)) {
|
|
40
42
|
return selected;
|
|
@@ -77,9 +79,9 @@ export const Autocomplete = _ref => {
|
|
|
77
79
|
} else {
|
|
78
80
|
return opts.sort(sortOptions);
|
|
79
81
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
},
|
|
83
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
84
|
+
[mixedOptions, selectedOptions]);
|
|
83
85
|
const sortList = useCallback(options => {
|
|
84
86
|
var _options$;
|
|
85
87
|
if (disabledInternalSort) {
|
|
@@ -100,7 +102,11 @@ export const Autocomplete = _ref => {
|
|
|
100
102
|
return handleSort(sortedOptions);
|
|
101
103
|
}
|
|
102
104
|
}, [sortDirection, disabledInternalSort, handleSort]);
|
|
103
|
-
const sortedList =
|
|
105
|
+
const [sortedList, setSortedList] = useState(() => sortList(options));
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
setSortedList(sortList(options));
|
|
108
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
109
|
+
}, [options]);
|
|
104
110
|
const [hover, setHover] = useState({
|
|
105
111
|
item: undefined,
|
|
106
112
|
by: undefined
|
|
@@ -129,22 +135,20 @@ export const Autocomplete = _ref => {
|
|
|
129
135
|
return option.name.toLowerCase() !== filter.trim().toLowerCase();
|
|
130
136
|
}));
|
|
131
137
|
}, [emptyValue, filter, options]);
|
|
132
|
-
const renderAddNew = useMemo(() => {
|
|
133
|
-
return /*#__PURE__*/React.createElement(StyledAutocompleteNewItem, {
|
|
134
|
-
ref: hover.item === "addNew" ? itemRef : null,
|
|
135
|
-
key: "emptyValue",
|
|
136
|
-
hover: hover.item === "addNew",
|
|
137
|
-
onMouseDown: handleEmpty,
|
|
138
|
-
onMouseEnter: onAddNewMouseEnter
|
|
139
|
-
}, emptyValue);
|
|
140
|
-
}, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);
|
|
141
138
|
const filterOptions = useCallback((options, filter) => {
|
|
142
139
|
const trimmedFilter = filter.trim();
|
|
143
140
|
const isGrouped = options[0] && isOptionGroup(options[0]);
|
|
141
|
+
const matchesFilter = option => {
|
|
142
|
+
const nameMatch = option.name.toLowerCase().includes(trimmedFilter.toLowerCase());
|
|
143
|
+
if (filterCriteria && trimmedFilter) {
|
|
144
|
+
return nameMatch || filterCriteria(option, trimmedFilter);
|
|
145
|
+
}
|
|
146
|
+
return nameMatch;
|
|
147
|
+
};
|
|
144
148
|
if (isGrouped) {
|
|
145
149
|
let hovered = false;
|
|
146
150
|
return options.reduce((acc, groupedOption) => {
|
|
147
|
-
const filteredOptions = groupedOption.options.filter(
|
|
151
|
+
const filteredOptions = groupedOption.options.filter(matchesFilter);
|
|
148
152
|
if (filteredOptions.length > 0) {
|
|
149
153
|
if (!hovered && filter) {
|
|
150
154
|
setHover({
|
|
@@ -161,7 +165,7 @@ export const Autocomplete = _ref => {
|
|
|
161
165
|
return [...acc];
|
|
162
166
|
}, []);
|
|
163
167
|
} else {
|
|
164
|
-
const filteredOptions = options.filter(
|
|
168
|
+
const filteredOptions = options.filter(matchesFilter);
|
|
165
169
|
if (filter && filteredOptions.length > 0) {
|
|
166
170
|
setHover({
|
|
167
171
|
item: filteredOptions[0].id,
|
|
@@ -176,7 +180,7 @@ export const Autocomplete = _ref => {
|
|
|
176
180
|
}
|
|
177
181
|
return filteredOptions;
|
|
178
182
|
}
|
|
179
|
-
}, [emptyValue]);
|
|
183
|
+
}, [emptyValue, filterCriteria]);
|
|
180
184
|
const list = useMemo(() => filterOptions(sortedList, filter), [filter, filterOptions, sortedList]);
|
|
181
185
|
const showDefaultOption = useMemo(() => !!defaultValue && !filter, [defaultValue, filter]);
|
|
182
186
|
const flatOptions = useMemo(() => {
|
|
@@ -188,6 +192,61 @@ export const Autocomplete = _ref => {
|
|
|
188
192
|
}, []);
|
|
189
193
|
return filterOptions(options, filter);
|
|
190
194
|
}, [filter, filterOptions, list]);
|
|
195
|
+
const showNoResultCondition = useMemo(() => noResultText && !showAddNew && list.length < 1 && (defaultValue && filter || !defaultValue), [noResultText, showAddNew, list.length, defaultValue, filter]);
|
|
196
|
+
const virtualItems = useMemo(() => {
|
|
197
|
+
const items = [];
|
|
198
|
+
if (showDefaultOption) {
|
|
199
|
+
items.push({
|
|
200
|
+
type: "default",
|
|
201
|
+
id: "default"
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
list.forEach((item, index) => {
|
|
205
|
+
if (isOptionGroup(item)) {
|
|
206
|
+
items.push({
|
|
207
|
+
type: "group",
|
|
208
|
+
id: item.id,
|
|
209
|
+
item
|
|
210
|
+
});
|
|
211
|
+
item.options.forEach(option => {
|
|
212
|
+
items.push({
|
|
213
|
+
type: "option",
|
|
214
|
+
id: option.id,
|
|
215
|
+
item: option,
|
|
216
|
+
index
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
} else {
|
|
220
|
+
items.push({
|
|
221
|
+
type: "option",
|
|
222
|
+
id: item.id,
|
|
223
|
+
item,
|
|
224
|
+
index
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
if (showNoResultCondition) {
|
|
229
|
+
items.push({
|
|
230
|
+
type: "noResult",
|
|
231
|
+
id: "noResult"
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
if (showAddNew) {
|
|
235
|
+
items.push({
|
|
236
|
+
type: "addNew",
|
|
237
|
+
id: "addNew"
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
return items;
|
|
241
|
+
}, [list, showDefaultOption, showNoResultCondition, showAddNew]);
|
|
242
|
+
const shouldUseVirtualization = !disableVirtualization && virtualItems.length > 40;
|
|
243
|
+
const rowVirtualizer = useVirtualizer({
|
|
244
|
+
count: virtualItems.length,
|
|
245
|
+
getScrollElement: () => listContainerRef.current,
|
|
246
|
+
estimateSize: () => 28,
|
|
247
|
+
overscan: 5,
|
|
248
|
+
gap: 4
|
|
249
|
+
});
|
|
191
250
|
const handleInputChange = useCallback(e => {
|
|
192
251
|
if (e.target && !(e.key === "ArrowDown") && !(e.key === "ArrowUp") && !(e.key === "Enter")) {
|
|
193
252
|
setFilter(e.target.value);
|
|
@@ -264,7 +323,7 @@ export const Autocomplete = _ref => {
|
|
|
264
323
|
}
|
|
265
324
|
return /*#__PURE__*/React.createElement(Option, {
|
|
266
325
|
name: item.name,
|
|
267
|
-
ref: itemRef,
|
|
326
|
+
ref: hover.item === item.id ? itemRef : null,
|
|
268
327
|
key: index,
|
|
269
328
|
tooltip: item.tooltip,
|
|
270
329
|
onMouseEnter: handleMouseEnter,
|
|
@@ -289,23 +348,16 @@ export const Autocomplete = _ref => {
|
|
|
289
348
|
by: "mouse"
|
|
290
349
|
});
|
|
291
350
|
}, []);
|
|
292
|
-
const handleScroll = useCallback((list, itemOffset) => {
|
|
293
|
-
if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {
|
|
294
|
-
return list.scrollTop(itemOffset - list.getClientHeight() + 30);
|
|
295
|
-
}
|
|
296
|
-
if (list.getScrollTop() > itemOffset) {
|
|
297
|
-
return list.scrollTop(itemOffset);
|
|
298
|
-
}
|
|
299
|
-
}, []);
|
|
300
351
|
useEffect(() => {
|
|
301
352
|
if (hover.by === "keyboard" && hover.item !== undefined) {
|
|
302
|
-
const
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
353
|
+
const index = virtualItems.findIndex(item => item.id === hover.item);
|
|
354
|
+
if (index !== -1) {
|
|
355
|
+
rowVirtualizer.scrollToIndex(index, {
|
|
356
|
+
align: "center"
|
|
357
|
+
});
|
|
306
358
|
}
|
|
307
359
|
}
|
|
308
|
-
}, [
|
|
360
|
+
}, [hover, rowVirtualizer, virtualItems]);
|
|
309
361
|
const handleOnKeyDown = useCallback(e => {
|
|
310
362
|
if (e.key === "Enter") {
|
|
311
363
|
e.preventDefault();
|
|
@@ -348,8 +400,80 @@ export const Autocomplete = _ref => {
|
|
|
348
400
|
return selectedOptions[0] === null || selectedOptions.length === flatOptions.length;
|
|
349
401
|
}
|
|
350
402
|
}, [flatOptions.length, preselectDefaultValue, selectedOptions]);
|
|
351
|
-
const
|
|
352
|
-
|
|
403
|
+
const renderVirtualItem = useCallback((virtualItem, index) => {
|
|
404
|
+
switch (virtualItem.type) {
|
|
405
|
+
case "default":
|
|
406
|
+
return /*#__PURE__*/React.createElement(Option, {
|
|
407
|
+
name: String(defaultValue),
|
|
408
|
+
ref: hover.item === null ? itemRef : null,
|
|
409
|
+
hover: hover.item === null,
|
|
410
|
+
onMouseEnter: handleMouseEnter,
|
|
411
|
+
onClick: e => {
|
|
412
|
+
e.preventDefault();
|
|
413
|
+
toggleSelected(null);
|
|
414
|
+
},
|
|
415
|
+
renderOption: renderOption({
|
|
416
|
+
name: defaultValue,
|
|
417
|
+
id: null
|
|
418
|
+
}, {
|
|
419
|
+
checked: isDefaultOptionSelected(),
|
|
420
|
+
hover: hover.item === null,
|
|
421
|
+
onChange: () => null
|
|
422
|
+
})
|
|
423
|
+
});
|
|
424
|
+
case "group":
|
|
425
|
+
if (!virtualItem.item || !isOptionGroup(virtualItem.item)) return null;
|
|
426
|
+
return /*#__PURE__*/React.createElement(OptionGroup, {
|
|
427
|
+
checked: selectedOptions,
|
|
428
|
+
name: virtualItem.item.name,
|
|
429
|
+
tooltip: virtualItem.item.tooltip,
|
|
430
|
+
key: virtualItem.item.id,
|
|
431
|
+
setHover: handleHoverCallback,
|
|
432
|
+
id: virtualItem.item.id,
|
|
433
|
+
hover: hover.item,
|
|
434
|
+
options: virtualItem.item.options,
|
|
435
|
+
renderOptions: handleRenderOption,
|
|
436
|
+
type: type,
|
|
437
|
+
onChange: handleChange,
|
|
438
|
+
filter: filter,
|
|
439
|
+
mixedOptions: mixedOptions
|
|
440
|
+
});
|
|
441
|
+
case "option":
|
|
442
|
+
if (!virtualItem.item || isOptionGroup(virtualItem.item)) return null;
|
|
443
|
+
return /*#__PURE__*/React.createElement(Option, {
|
|
444
|
+
name: virtualItem.item.name,
|
|
445
|
+
ref: hover.item === virtualItem.id ? itemRef : null,
|
|
446
|
+
key: index,
|
|
447
|
+
tooltip: virtualItem.item.tooltip,
|
|
448
|
+
onMouseEnter: () => handleMouseEnter(virtualItem.id),
|
|
449
|
+
onClick: handleClick,
|
|
450
|
+
id: virtualItem.id,
|
|
451
|
+
hover: virtualItem.id === hover.item,
|
|
452
|
+
className: optionClassName,
|
|
453
|
+
renderOption: renderOption({
|
|
454
|
+
...virtualItem.item,
|
|
455
|
+
name: highlightText(virtualItem.item.name, filter)
|
|
456
|
+
}, {
|
|
457
|
+
id: "option_" + virtualItem.id,
|
|
458
|
+
checked: selectedOptions && selectedOptions.includes(virtualItem.id),
|
|
459
|
+
hover: hover.item === virtualItem.id,
|
|
460
|
+
onChange: () => null
|
|
461
|
+
})
|
|
462
|
+
});
|
|
463
|
+
case "noResult":
|
|
464
|
+
return /*#__PURE__*/React.createElement(_StyledStyledOption, null, noResultText);
|
|
465
|
+
case "addNew":
|
|
466
|
+
return /*#__PURE__*/React.createElement(StyledAutocompleteNewItem, {
|
|
467
|
+
ref: hover.item === "addNew" ? itemRef : null,
|
|
468
|
+
key: "emptyValue",
|
|
469
|
+
hover: hover.item === "addNew",
|
|
470
|
+
onMouseDown: handleEmpty,
|
|
471
|
+
onMouseEnter: onAddNewMouseEnter
|
|
472
|
+
}, emptyValue);
|
|
473
|
+
default:
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
476
|
+
}, [defaultValue, hover.item, handleMouseEnter, renderOption, isDefaultOptionSelected, selectedOptions, handleHoverCallback, handleRenderOption, type, handleChange, filter, mixedOptions, handleClick, optionClassName, noResultText, handleEmpty, onAddNewMouseEnter, emptyValue, toggleSelected]);
|
|
353
477
|
return /*#__PURE__*/React.createElement(StyledAutocompleteScrollShadow, {
|
|
354
478
|
className: AutocompleteClassName,
|
|
355
479
|
$isHidden: !defaultValue && !emptyValue && !noResultText && list.length < 1
|
|
@@ -360,30 +484,37 @@ export const Autocomplete = _ref => {
|
|
|
360
484
|
return /*#__PURE__*/React.createElement(StyledAutocompleteBody, {
|
|
361
485
|
key: "body",
|
|
362
486
|
onMouseLeave: handleOnMouseLeave
|
|
363
|
-
}, /*#__PURE__*/React.createElement(
|
|
364
|
-
ref:
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
onScroll: onScroll
|
|
369
|
-
}, defaultValue && !filter && /*#__PURE__*/React.createElement(Option, {
|
|
370
|
-
name: defaultValue,
|
|
371
|
-
ref: itemRef,
|
|
372
|
-
hover: hover.item === null,
|
|
373
|
-
onMouseEnter: handleMouseEnter,
|
|
374
|
-
onClick: e => {
|
|
375
|
-
e.preventDefault();
|
|
376
|
-
toggleSelected(null);
|
|
487
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
488
|
+
ref: listContainerRef,
|
|
489
|
+
style: {
|
|
490
|
+
height: Math.min(rowVirtualizer.getTotalSize() + 12, autoHeightMax) + "px",
|
|
491
|
+
overflow: "auto"
|
|
377
492
|
},
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
493
|
+
onScroll: e => {
|
|
494
|
+
if (onScroll) onScroll(e);
|
|
495
|
+
}
|
|
496
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
497
|
+
style: {
|
|
498
|
+
height: rowVirtualizer.getTotalSize() + "px",
|
|
499
|
+
width: "100%",
|
|
500
|
+
position: "relative"
|
|
501
|
+
}
|
|
502
|
+
}, shouldUseVirtualization ? rowVirtualizer.getVirtualItems().map(virtualRow => {
|
|
503
|
+
const item = virtualItems[virtualRow.index];
|
|
504
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
505
|
+
key: virtualRow.index,
|
|
506
|
+
"data-index": virtualRow.index,
|
|
507
|
+
style: {
|
|
508
|
+
position: "absolute",
|
|
509
|
+
top: 0,
|
|
510
|
+
left: 0,
|
|
511
|
+
width: "100%",
|
|
512
|
+
transform: "translateY(" + virtualRow.start + "px)"
|
|
513
|
+
}
|
|
514
|
+
}, renderVirtualItem(item, virtualRow.index));
|
|
515
|
+
}) : virtualItems.map((item, index) => /*#__PURE__*/React.createElement(React.Fragment, {
|
|
516
|
+
key: index
|
|
517
|
+
}, renderVirtualItem(item, index))))));
|
|
387
518
|
});
|
|
388
519
|
};
|
|
389
520
|
Autocomplete.displayName = "Autocomplete";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Scrollbars","handleKeyboardMovement","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","highlightText","Option","StyledOption","OptionGroup","isOptionGroup","item","options","undefined","Autocomplete","_ref","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","mixedOptions","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","_opts$","isGrouped","sortOptions","a","b","aSelected","includes","id","bSelected","aMixed","bMixed","map","group","sortedGroupOptions","sort","sortList","_options$","sortedOptions","localeCompare","sortedList","hover","setHover","by","filter","setFilter","handleEmpty","e","button","_inputEl$current","current","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","createElement","ref","key","onMouseDown","onMouseEnter","filterOptions","trimmedFilter","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","checked","tooltip","renderOptions","onChange","onClick","className","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","offsetTop","handleOnKeyDown","_inputEl$current2","listenerTarget","document","addEventListener","removeEventListener","isDefaultOptionSelected","showNoResult","renderNoResult","_StyledStyledOption","$isHidden","_ref2","onScroll","onMouseLeave","autoHeight","displayName","_styled","withConfig","componentId"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n MutableRefObject,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars-2\";\n\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { StyledOption } from \"../Select/Option/Styles\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n}\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Mixed options values */\n mixedOptions?: (string | number)[];\n /** Input Element. */\n inputEl?: MutableRefObject<HTMLInputElement | null | undefined>;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n /** Clear input on select - works in single mode */\n clearInputOnSelect?: boolean;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n clearInputOnSelect,\n mixedOptions = [],\n}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const isGrouped = Array.isArray(opts[0]?.options);\n\n const sortOptions = (a, b) => {\n const aSelected = selectedOptions.includes(a.id);\n const bSelected = selectedOptions.includes(b.id);\n const aMixed = mixedOptions.includes(a.id);\n const bMixed = mixedOptions.includes(b.id);\n\n if (aSelected && !bSelected) {\n return -1;\n }\n if (!aSelected && bSelected) {\n return 1;\n }\n if (aMixed && !bMixed) {\n return -1;\n }\n if (!aMixed && bMixed) {\n return 1;\n }\n return 0;\n };\n\n if (isGrouped) {\n return opts.map((group) => {\n const sortedGroupOptions = group.options.sort(sortOptions);\n\n return {\n ...group,\n options: sortedGroupOptions,\n };\n });\n } else {\n return opts.sort(sortOptions);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n\n const isGrouped = Array.isArray(options[0]?.options);\n\n if (isGrouped) {\n const sortedOptions = options.map((group) => {\n const sortedGroupOptions = group.options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return {\n ...group,\n options: handleSort(sortedGroupOptions),\n };\n });\n\n return handleSort(sortedOptions);\n } else {\n const sortedOptions = options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return handleSort(sortedOptions);\n }\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.current?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isOptionGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const renderAddNew = useMemo(() => {\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n result = id;\n }\n if (clearInputOnSelect && inputEl?.current) {\n inputEl.current.value = \"\";\n inputEl.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [\n clearInputOnSelect,\n handleChange,\n handleDefaultOptionChange,\n inputEl,\n selectedOptions,\n type,\n ]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isOptionGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n tooltip={item.tooltip}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n mixedOptions={mixedOptions}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\n tooltip={item.tooltip}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n mixedOptions,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (typeof hover.item !== \"undefined\" || hover.item !== null) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n const listenerTarget = inputEl?.current ?? document;\n listenerTarget.addEventListener(\"input\", handleInputChange);\n listenerTarget.addEventListener(\"keydown\", handleOnKeyDown);\n return () => {\n listenerTarget.removeEventListener(\"input\", handleInputChange);\n listenerTarget.removeEventListener(\"keydown\", handleOnKeyDown);\n };\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const showNoResult = useMemo(\n () =>\n noResultText &&\n !showAddNew &&\n list.length < 1 &&\n ((defaultValue && filter) || !defaultValue),\n [noResultText, showAddNew, list.length, defaultValue, filter]\n );\n\n const renderNoResult = useMemo(\n () => <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>,\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }) => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n )}\n {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","useVirtualizer","handleKeyboardMovement","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","highlightText","Option","StyledOption","OptionGroup","isOptionGroup","item","options","undefined","Autocomplete","_ref","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","mixedOptions","filterCriteria","disableVirtualization","listContainerRef","itemRef","selectedOptions","Array","isArray","handleSort","opts","_opts$","isGrouped","sortOptions","a","b","aSelected","includes","id","bSelected","aMixed","bMixed","map","group","sortedGroupOptions","sort","sortList","_options$","sortedOptions","localeCompare","sortedList","setSortedList","hover","setHover","by","filter","setFilter","handleEmpty","e","button","_inputEl$current","current","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","filterOptions","trimmedFilter","matchesFilter","nameMatch","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","showNoResultCondition","virtualItems","items","push","forEach","index","shouldUseVirtualization","rowVirtualizer","count","getScrollElement","estimateSize","overscan","gap","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","createElement","checked","tooltip","renderOptions","onChange","ref","onMouseEnter","onClick","className","handleOnMouseLeave","findIndex","scrollToIndex","align","handleOnKeyDown","_inputEl$current2","listenerTarget","document","addEventListener","removeEventListener","isDefaultOptionSelected","renderVirtualItem","virtualItem","String","_StyledStyledOption","onMouseDown","$isHidden","_ref2","onScroll","onMouseLeave","style","height","Math","min","getTotalSize","overflow","width","position","getVirtualItems","virtualRow","top","left","transform","start","Fragment","displayName","_styled","withConfig","componentId"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n type FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n type ReactNode,\n type ReactElement,\n type MutableRefObject,\n} from \"react\";\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\n\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { type IOptionItemProps, Option } from \"../Select/Option\";\nimport { StyledOption } from \"../Select/Option/Styles\";\nimport { type IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n}\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Mixed options values */\n mixedOptions?: (string | number)[];\n /** Input Element. */\n inputEl?: MutableRefObject<HTMLInputElement | null | undefined>;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n /** Clear input on select - works in single mode */\n clearInputOnSelect?: boolean;\n /** Custom filter function for additional filtering criteria */\n filterCriteria?: (option: IOptionItemProps, filter: string) => boolean;\n disableVirtualization?: boolean;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\ninterface VirtualItem {\n type: \"default\" | \"option\" | \"group\" | \"addNew\" | \"noResult\";\n id: string | number;\n item?: IOptionItemProps | IOptionGroupProps;\n index?: number;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n clearInputOnSelect,\n mixedOptions = [],\n filterCriteria,\n disableVirtualization,\n}) => {\n const listContainerRef = useRef<HTMLDivElement>(null);\n const itemRef = useRef<HTMLLIElement>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback(\n (opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const isGrouped = Array.isArray(opts[0]?.options);\n\n const sortOptions = (a, b) => {\n const aSelected = selectedOptions.includes(a.id);\n const bSelected = selectedOptions.includes(b.id);\n const aMixed = mixedOptions.includes(a.id);\n const bMixed = mixedOptions.includes(b.id);\n\n if (aSelected && !bSelected) {\n return -1;\n }\n if (!aSelected && bSelected) {\n return 1;\n }\n if (aMixed && !bMixed) {\n return -1;\n }\n if (!aMixed && bMixed) {\n return 1;\n }\n return 0;\n };\n\n if (isGrouped) {\n return opts.map((group) => {\n const sortedGroupOptions = group.options.sort(sortOptions);\n\n return {\n ...group,\n options: sortedGroupOptions,\n };\n });\n } else {\n return opts.sort(sortOptions);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [mixedOptions, selectedOptions]\n );\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n\n const isGrouped = Array.isArray(options[0]?.options);\n\n if (isGrouped) {\n const sortedOptions = options.map((group) => {\n const sortedGroupOptions = group.options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return {\n ...group,\n options: handleSort(sortedGroupOptions),\n };\n });\n\n return handleSort(sortedOptions);\n } else {\n const sortedOptions = options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return handleSort(sortedOptions);\n }\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const [sortedList, setSortedList] = useState(() => sortList(options));\n\n useEffect(() => {\n setSortedList(sortList(options));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.current?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isOptionGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n\n const matchesFilter = (option: IOptionItemProps) => {\n const nameMatch = option.name\n .toLowerCase()\n .includes(trimmedFilter.toLowerCase());\n\n if (filterCriteria && trimmedFilter) {\n return nameMatch || filterCriteria(option, trimmedFilter);\n }\n\n return nameMatch;\n };\n\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter(matchesFilter);\n\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter(matchesFilter);\n\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue, filterCriteria]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const showNoResultCondition = useMemo(\n () =>\n noResultText &&\n !showAddNew &&\n list.length < 1 &&\n ((defaultValue && filter) || !defaultValue),\n [noResultText, showAddNew, list.length, defaultValue, filter]\n );\n\n const virtualItems = useMemo(() => {\n const items: VirtualItem[] = [];\n\n if (showDefaultOption) {\n items.push({\n type: \"default\",\n id: \"default\",\n });\n }\n\n list.forEach((item, index) => {\n if (isOptionGroup(item)) {\n items.push({\n type: \"group\",\n id: item.id,\n item,\n });\n\n item.options.forEach((option) => {\n items.push({\n type: \"option\",\n id: option.id,\n item: option,\n index,\n });\n });\n } else {\n items.push({\n type: \"option\",\n id: item.id,\n item,\n index,\n });\n }\n });\n\n if (showNoResultCondition) {\n items.push({\n type: \"noResult\",\n id: \"noResult\",\n });\n }\n\n if (showAddNew) {\n items.push({\n type: \"addNew\",\n id: \"addNew\",\n });\n }\n\n return items;\n }, [list, showDefaultOption, showNoResultCondition, showAddNew]);\n\n const shouldUseVirtualization =\n !disableVirtualization && virtualItems.length > 40;\n\n const rowVirtualizer = useVirtualizer({\n count: virtualItems.length,\n getScrollElement: () => listContainerRef.current,\n estimateSize: () => 28,\n overscan: 5,\n gap: 4,\n });\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n result = id;\n }\n if (clearInputOnSelect && inputEl?.current) {\n inputEl.current.value = \"\";\n inputEl.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [\n clearInputOnSelect,\n handleChange,\n handleDefaultOptionChange,\n inputEl,\n selectedOptions,\n type,\n ]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isOptionGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n tooltip={item.tooltip}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n mixedOptions={mixedOptions}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={hover.item === item.id ? itemRef : null}\n key={index}\n tooltip={item.tooltip}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n mixedOptions,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const index = virtualItems.findIndex((item) => item.id === hover.item);\n if (index !== -1) {\n rowVirtualizer.scrollToIndex(index, { align: \"center\" });\n }\n }\n }, [hover, rowVirtualizer, virtualItems]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (typeof hover.item !== \"undefined\" || hover.item !== null) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n const listenerTarget = inputEl?.current ?? document;\n listenerTarget.addEventListener(\"input\", handleInputChange);\n listenerTarget.addEventListener(\"keydown\", handleOnKeyDown);\n return () => {\n listenerTarget.removeEventListener(\"input\", handleInputChange);\n listenerTarget.removeEventListener(\"keydown\", handleOnKeyDown);\n };\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const renderVirtualItem = useCallback(\n (virtualItem: VirtualItem, index: number) => {\n switch (virtualItem.type) {\n case \"default\":\n return (\n <Option\n name={String(defaultValue)}\n ref={hover.item === null ? itemRef : null}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n );\n\n case \"group\":\n if (!virtualItem.item || !isOptionGroup(virtualItem.item))\n return null;\n return (\n <OptionGroup\n checked={selectedOptions}\n name={virtualItem.item.name}\n tooltip={virtualItem.item.tooltip}\n key={virtualItem.item.id}\n setHover={handleHoverCallback}\n id={virtualItem.item.id}\n hover={hover.item}\n options={virtualItem.item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n mixedOptions={mixedOptions}\n />\n );\n\n case \"option\":\n if (!virtualItem.item || isOptionGroup(virtualItem.item)) return null;\n return (\n <Option\n name={(virtualItem.item as IOptionItemProps).name}\n ref={hover.item === virtualItem.id ? itemRef : null}\n key={index}\n tooltip={(virtualItem.item as IOptionItemProps).tooltip}\n onMouseEnter={() => handleMouseEnter(virtualItem.id)}\n onClick={handleClick}\n id={virtualItem.id}\n hover={virtualItem.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n {\n ...(virtualItem.item as IOptionItemProps),\n name: highlightText(\n (virtualItem.item as IOptionItemProps).name,\n filter\n ),\n },\n {\n id: `option_${virtualItem.id}`,\n checked:\n selectedOptions && selectedOptions.includes(virtualItem.id),\n hover: hover.item === virtualItem.id,\n onChange: () => null,\n }\n )}\n />\n );\n\n case \"noResult\":\n return <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>;\n\n case \"addNew\":\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n\n default:\n return null;\n }\n },\n [\n defaultValue,\n hover.item,\n handleMouseEnter,\n renderOption,\n isDefaultOptionSelected,\n selectedOptions,\n handleHoverCallback,\n handleRenderOption,\n type,\n handleChange,\n filter,\n mixedOptions,\n handleClick,\n optionClassName,\n noResultText,\n handleEmpty,\n onAddNewMouseEnter,\n emptyValue,\n toggleSelected,\n ]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }) => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <div\n ref={listContainerRef}\n style={{\n height: `${Math.min(\n rowVirtualizer.getTotalSize() + 12,\n autoHeightMax\n )}px`,\n overflow: \"auto\",\n }}\n onScroll={(e) => {\n if (onScroll) onScroll(e);\n }}\n >\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {shouldUseVirtualization\n ? rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const item = virtualItems[virtualRow.index];\n return (\n <div\n key={virtualRow.index}\n data-index={virtualRow.index}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n transform: `translateY(${virtualRow.start}px)`,\n }}\n >\n {renderVirtualItem(item, virtualRow.index)}\n </div>\n );\n })\n : virtualItems.map((item, index) => (\n <React.Fragment key={index}>\n {renderVirtualItem(item, index)}\n </React.Fragment>\n ))}\n </div>\n </div>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.d.ts","sourceRoot":"","sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAOH,MAAM,OAAO,CAAC;AAmBf,OAAO,EACL,kBAAkB,EAEnB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKtD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAYhE,MAAM,WAAW,cACf,SAAQ,IAAI,CACV,kBAAkB,EAClB,cAAc,GAAG,SAAS,GAAG,oBAAoB,CAClD;IACD,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IACV,6BAA6B;IAC7B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,gBAAgB,EACtC,IAAI,EAAE,CAAC,EACP,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,KAClB,GAAG,CAAC,OAAO,CAAC;IACjB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"ComboBox.d.ts","sourceRoot":"","sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAOH,MAAM,OAAO,CAAC;AAmBf,OAAO,EACL,kBAAkB,EAEnB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKtD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAYhE,MAAM,WAAW,cACf,SAAQ,IAAI,CACV,kBAAkB,EAClB,cAAc,GAAG,SAAS,GAAG,oBAAoB,CAClD;IACD,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IACV,6BAA6B;IAC7B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,gBAAgB,EACtC,IAAI,EAAE,CAAC,EACP,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,KAClB,GAAG,CAAC,OAAO,CAAC;IACjB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,cAAc,CA0jBvC,CAAC"}
|
|
@@ -62,6 +62,7 @@ export const ComboBox = _ref => {
|
|
|
62
62
|
triggerMode,
|
|
63
63
|
noResultText,
|
|
64
64
|
emptyValue,
|
|
65
|
+
disableVirtualization,
|
|
65
66
|
...prop
|
|
66
67
|
} = _ref;
|
|
67
68
|
const selectedName = useMemo(() => {
|
|
@@ -425,7 +426,8 @@ export const ComboBox = _ref => {
|
|
|
425
426
|
options: options,
|
|
426
427
|
type: type,
|
|
427
428
|
defaultValue: defaultValue,
|
|
428
|
-
handleEmptyAction: emptyAction
|
|
429
|
+
handleEmptyAction: emptyAction,
|
|
430
|
+
disableVirtualization: disableVirtualization
|
|
429
431
|
})))))) : null);
|
|
430
432
|
};
|
|
431
433
|
ComboBox.displayName = "ComboBox";
|