@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
- } & Omit<AllHTMLAttributes<HTMLInputElement>, 'onChange'>;
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":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAEjB,WAAW,EACX,YAAY,EACb,MAAM,OAAO,CAAC;AAgBf,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,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;CACpB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;AAc1D;;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,CA8IlC"}
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), currentValue = _b[0];
2548
- if (selected === null || selected === void 0 ? void 0 : selected.some(function (item) { return item.value === currentValue; })) {
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(currentValue, options)), false));
2554
- onChange(__spreadArray(__spreadArray([], __read(value), false), [currentValue], 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(currentValue, options));
2558
- onChange(currentValue);
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 = value.filter(function (item) { return item !== event.currentTarget.value; });
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 _f = __read((0, Options_1.useCursor)(value, 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];
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) { return setFilter(e.currentTarget.value); }), onBlur: handleOnBlur, onFocus: show, onKeyDown: handleKeyDown, placeholder: optionsAreVisible === AnimatedVisibility_1.default.HIDDEN || !value
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)), (selected === null || selected === void 0 ? void 0 : selected.length) > 0 &&
2585
- selected.map(function (itemSelected) {
2586
- 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, label: itemSelected.label, children: itemSelected.label, onClick: handleRemove, selected: selected }, itemSelected.value));
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
  }