@rocket.chat/fuselage 0.66.3 → 0.66.4
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.
|
@@ -3,8 +3,7 @@ type AutoCompleteOption = {
|
|
|
3
3
|
value: string;
|
|
4
4
|
label: unknown;
|
|
5
5
|
};
|
|
6
|
-
type AutoCompleteProps = {
|
|
7
|
-
value?: string | string[];
|
|
6
|
+
type AutoCompleteProps = Omit<AllHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'is'> & {
|
|
8
7
|
filter: string;
|
|
9
8
|
setFilter?: (filter: string) => void;
|
|
10
9
|
options?: AutoCompleteOption[];
|
|
@@ -16,7 +15,8 @@ type AutoCompleteProps = {
|
|
|
16
15
|
error?: boolean;
|
|
17
16
|
disabled?: boolean;
|
|
18
17
|
multiple?: boolean;
|
|
19
|
-
|
|
18
|
+
value?: string | string[];
|
|
19
|
+
};
|
|
20
20
|
/**
|
|
21
21
|
* An input for selection of options.
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoComplete.d.ts","sourceRoot":"","sources":["../../../src/components/AutoComplete/AutoComplete.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AutoComplete.d.ts","sourceRoot":"","sources":["../../../src/components/AutoComplete/AutoComplete.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAGjB,WAAW,EAGX,YAAY,EAEb,MAAM,OAAO,CAAC;AAgBf,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,iBAAiB,GAAG,IAAI,CAC3B,iBAAiB,CAAC,gBAAgB,CAAC,EACnC,OAAO,GAAG,UAAU,GAAG,IAAI,CAC5B,GAAG;IACF,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B,CAAC;AAyBF;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAY,EACZ,UAAU,EACV,cAAc,EAAE,cAAc,EAC9B,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EAAE,YAAuB,EAC/B,GAAG,KAAK,EACT,EAAE,iBAAiB,GAAG,YAAY,CA8JlC"}
|
|
@@ -2514,8 +2514,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
2514
2514
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2515
2515
|
exports.AutoComplete = AutoComplete;
|
|
2516
2516
|
var jsx_runtime_1 = __webpack_require__(/*! react/jsx-runtime */ "../../node_modules/react/jsx-runtime.js");
|
|
2517
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2518
|
-
// @ts-nocheck
|
|
2519
2517
|
var fuselage_hooks_1 = __webpack_require__(/*! @rocket.chat/fuselage-hooks */ "@rocket.chat/fuselage-hooks");
|
|
2520
2518
|
var react_1 = __webpack_require__(/*! react */ "react");
|
|
2521
2519
|
var AnimatedVisibility_1 = __importDefault(__webpack_require__(/*! ../AnimatedVisibility */ "./src/components/AnimatedVisibility/index.ts"));
|
|
@@ -2535,6 +2533,14 @@ var getSelected = function (value, options) {
|
|
|
2535
2533
|
? options.filter(function (option) { return option.value === value; })
|
|
2536
2534
|
: options === null || options === void 0 ? void 0 : options.filter(function (option) { return value.includes(option.value); });
|
|
2537
2535
|
};
|
|
2536
|
+
var isSelectedValid = function (value) { return function (selected) {
|
|
2537
|
+
if (!value) {
|
|
2538
|
+
return false;
|
|
2539
|
+
}
|
|
2540
|
+
return typeof value === 'string'
|
|
2541
|
+
? selected.value === value
|
|
2542
|
+
: value.includes(selected.value);
|
|
2543
|
+
}; };
|
|
2538
2544
|
/**
|
|
2539
2545
|
* An input for selection of options.
|
|
2540
2546
|
*/
|
|
@@ -2543,28 +2549,38 @@ function AutoComplete(_a) {
|
|
|
2543
2549
|
var ref = (0, react_1.useRef)();
|
|
2544
2550
|
var _d = (0, fuselage_hooks_1.useResizeObserver)(), containerRef = _d.ref, borderBoxSize = _d.borderBoxSize;
|
|
2545
2551
|
var _e = __read((0, react_1.useState)(function () { return getSelected(value, options) || []; }), 2), selected = _e[0], setSelected = _e[1];
|
|
2552
|
+
(0, react_1.useEffect)(function () {
|
|
2553
|
+
// Validates if selected items are still valid after value changes
|
|
2554
|
+
setSelected(function (selected) {
|
|
2555
|
+
return !selected.every(isSelectedValid(value))
|
|
2556
|
+
? selected.filter(isSelectedValid(value))
|
|
2557
|
+
: selected;
|
|
2558
|
+
});
|
|
2559
|
+
}, [value]);
|
|
2546
2560
|
var handleSelect = (0, fuselage_hooks_1.useEffectEvent)(function (_a) {
|
|
2547
|
-
var _b = __read(_a, 1),
|
|
2548
|
-
if (selected
|
|
2561
|
+
var _b = __read(_a, 1), newValue = _b[0];
|
|
2562
|
+
if (selected.some(function (item) { return item.value === newValue; })) {
|
|
2549
2563
|
hide();
|
|
2550
2564
|
return;
|
|
2551
2565
|
}
|
|
2552
2566
|
if (multiple) {
|
|
2553
|
-
setSelected(__spreadArray(__spreadArray([], __read(selected), false), __read(getSelected(
|
|
2554
|
-
onChange(__spreadArray(__spreadArray([], __read(value), false), [
|
|
2567
|
+
setSelected(__spreadArray(__spreadArray([], __read(selected), false), __read(getSelected(newValue, options)), false));
|
|
2568
|
+
onChange(__spreadArray(__spreadArray([], __read((value || [])), false), [newValue], false));
|
|
2555
2569
|
}
|
|
2556
2570
|
else {
|
|
2557
|
-
setSelected(getSelected(
|
|
2558
|
-
onChange(
|
|
2571
|
+
setSelected(getSelected(newValue, options));
|
|
2572
|
+
onChange(newValue);
|
|
2559
2573
|
}
|
|
2560
|
-
setFilter('');
|
|
2574
|
+
setFilter === null || setFilter === void 0 ? void 0 : setFilter('');
|
|
2561
2575
|
hide();
|
|
2562
2576
|
});
|
|
2563
2577
|
var handleRemove = (0, fuselage_hooks_1.useEffectEvent)(function (event) {
|
|
2564
2578
|
event.stopPropagation();
|
|
2565
2579
|
event.preventDefault();
|
|
2566
2580
|
var filtered = selected.filter(function (item) { return item.value !== event.currentTarget.value; });
|
|
2567
|
-
var filteredValue =
|
|
2581
|
+
var filteredValue = multiple && Array.isArray(value)
|
|
2582
|
+
? (value === null || value === void 0 ? void 0 : value.filter(function (item) { return item !== event.currentTarget.value; })) || []
|
|
2583
|
+
: '';
|
|
2568
2584
|
setSelected(filtered);
|
|
2569
2585
|
onChange(filteredValue);
|
|
2570
2586
|
hide();
|
|
@@ -2573,18 +2589,20 @@ function AutoComplete(_a) {
|
|
|
2573
2589
|
var value = _a.value, label = _a.label;
|
|
2574
2590
|
return [value, label];
|
|
2575
2591
|
}); }, [options]);
|
|
2576
|
-
var
|
|
2592
|
+
var firstSelectedIndex = (0, react_1.useMemo)(function () { return options.findIndex(function (option) { var _a; return ((_a = selected[0]) === null || _a === void 0 ? void 0 : _a.value) === option.value; }); }, [options, selected]);
|
|
2593
|
+
var _f = __read((0, Options_1.useCursor)(firstSelectedIndex, memoizedOptions, handleSelect), 5), cursor = _f[0], handleKeyDown = _f[1], reset = _f[3], _g = __read(_f[4], 3), optionsAreVisible = _g[0], hide = _g[1], show = _g[2];
|
|
2577
2594
|
var handleOnBlur = (0, fuselage_hooks_1.useEffectEvent)(function (event) {
|
|
2578
2595
|
hide();
|
|
2579
2596
|
onBlurAction(event);
|
|
2580
2597
|
});
|
|
2581
|
-
(0, react_1.useEffect)(reset, [filter]);
|
|
2582
|
-
return ((0, jsx_runtime_1.jsxs)(Box_1.default, { "rcx-autocomplete": true, ref: containerRef, onClick: (0, fuselage_hooks_1.useEffectEvent)(function () { return ref.current.focus(); }), flexGrow: 1, className: (0, react_1.useMemo)(function () { return [error && 'invalid', disabled && 'disabled']; }, [error, disabled]), children: [(0, jsx_runtime_1.jsx)(Box_1.default, { display: 'flex', flexGrow: 1, alignItems: 'center', flexWrap: 'wrap', margin: 'neg-x4', role: 'group', children: (0, jsx_runtime_1.jsxs)(Margins_1.default, { all: 'x4', children: [(0, jsx_runtime_1.jsx)(InputBox_1.InputBox.Input, __assign({ ref: ref, onChange: (0, fuselage_hooks_1.useEffectEvent)(function (e) {
|
|
2598
|
+
(0, react_1.useEffect)(reset, [filter, reset]);
|
|
2599
|
+
return ((0, jsx_runtime_1.jsxs)(Box_1.default, { "rcx-autocomplete": true, ref: containerRef, onClick: (0, fuselage_hooks_1.useEffectEvent)(function () { var _a; return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus(); }), flexGrow: 1, className: (0, react_1.useMemo)(function () { return [error && 'invalid', disabled && 'disabled']; }, [error, disabled]), children: [(0, jsx_runtime_1.jsx)(Box_1.default, { display: 'flex', flexGrow: 1, alignItems: 'center', flexWrap: 'wrap', margin: 'neg-x4', role: 'group', children: (0, jsx_runtime_1.jsxs)(Margins_1.default, { all: 'x4', children: [(0, jsx_runtime_1.jsx)(InputBox_1.InputBox.Input, __assign({ ref: ref, onChange: (0, fuselage_hooks_1.useEffectEvent)(function (e) {
|
|
2600
|
+
return setFilter === null || setFilter === void 0 ? void 0 : setFilter(e.currentTarget.value);
|
|
2601
|
+
}), onBlur: handleOnBlur, onFocus: show, onKeyDown: handleKeyDown, placeholder: optionsAreVisible === AnimatedVisibility_1.default.HIDDEN || !value
|
|
2583
2602
|
? placeholder
|
|
2584
|
-
: undefined, order: 1, "rcx-input-box--undecorated": true, value: filter, disabled: disabled }, props)), (
|
|
2585
|
-
selected.
|
|
2586
|
-
|
|
2587
|
-
})] }) }), (0, jsx_runtime_1.jsx)(Addon, { children: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: optionsAreVisible === AnimatedVisibility_1.default.VISIBLE
|
|
2603
|
+
: undefined, order: 1, "rcx-input-box--undecorated": true, value: filter, disabled: disabled }, props)), selected.map(function (itemSelected) {
|
|
2604
|
+
return RenderSelected ? ((0, jsx_runtime_1.jsx)(RenderSelected, { selected: itemSelected, onRemove: handleRemove }, itemSelected.value)) : ((0, jsx_runtime_1.jsx)(Chip_1.default, { value: itemSelected.value, children: itemSelected.label, onClick: handleRemove }, itemSelected.value));
|
|
2605
|
+
})] }) }), (0, jsx_runtime_1.jsx)(Addon, { children: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: optionsAreVisible === AnimatedVisibility_1.default.VISIBLE
|
|
2588
2606
|
? 'cross'
|
|
2589
2607
|
: 'magnifier', size: 'x20', color: 'default' }) }), (0, jsx_runtime_1.jsx)(PositionAnimated_1.default, { visible: optionsAreVisible, anchor: containerRef, children: (0, jsx_runtime_1.jsx)(Options_1.Options, { width: borderBoxSize.inlineSize, onSelect: handleSelect, renderItem: renderItem, renderEmpty: renderEmpty, cursor: cursor, value: value, options: memoizedOptions }) })] }));
|
|
2590
2608
|
}
|