asab_webui_shell 27.7.2 → 27.7.3

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.
@@ -18,6 +18,10 @@ function TenantDropdown() {
18
18
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
19
19
  isOpen = _useState2[0],
20
20
  setIsOpen = _useState2[1];
21
+ var _useState3 = (0, _react.useState)(''),
22
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
23
+ searchInput = _useState4[0],
24
+ setSearchInput = _useState4[1];
21
25
  var current = (0, _asab_webui_components.useAppSelector)(state => {
22
26
  var _state$tenant;
23
27
  return state === null || state === void 0 || (_state$tenant = state.tenant) === null || _state$tenant === void 0 ? void 0 : _state$tenant.current;
@@ -26,7 +30,16 @@ function TenantDropdown() {
26
30
  var _state$tenant2;
27
31
  return state === null || state === void 0 || (_state$tenant2 = state.tenant) === null || _state$tenant2 === void 0 ? void 0 : _state$tenant2.tenants;
28
32
  });
29
- var toggle = () => setIsOpen(prev => !prev);
33
+ var hasSearch = (tenants === null || tenants === void 0 ? void 0 : tenants.length) >= 10; // Display search input if there is >= 10 tenants
34
+ var toggle = () => {
35
+ setIsOpen(prev => !prev);
36
+ hasSearch && setSearchInput('');
37
+ };
38
+ var filteredTenants = (0, _react.useMemo)(() => {
39
+ if (!hasSearch || !searchInput) return tenants;
40
+ var inputLower = searchInput.toLowerCase();
41
+ return tenants.filter(tenant => String(tenant).toLowerCase().includes(inputLower));
42
+ }, [tenants, searchInput, hasSearch]);
30
43
  return /*#__PURE__*/_react.default.createElement(_reactstrap.Dropdown, {
31
44
  isOpen: isOpen,
32
45
  toggle: toggle,
@@ -40,13 +53,19 @@ function TenantDropdown() {
40
53
  }), /*#__PURE__*/_react.default.createElement(TenantLabel, {
41
54
  tenant: current
42
55
  })), isOpen && (tenants === null || tenants === void 0 ? void 0 : tenants.length) > 0 && /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownMenu, {
43
- className: "shadow overflow-y-auto",
56
+ className: "shadow overflow-y-auto".concat(hasSearch ? ' pt-0' : ''),
44
57
  style: {
45
58
  maxHeight: '20em'
46
59
  }
47
60
  }, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
48
61
  header: true
49
- }, t('General|Tenants')), tenants.map((tenant, i) => /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
62
+ }, t('General|Tenants')), hasSearch && /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
63
+ value: searchInput,
64
+ className: "px-3",
65
+ onChange: e => setSearchInput(e.target.value),
66
+ type: "text",
67
+ placeholder: t('General|Search')
68
+ }), filteredTenants.map((tenant, i) => /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
50
69
  key: i,
51
70
  tag: "a",
52
71
  href: '?tenant=' + tenant + '#/'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asab_webui_shell",
3
- "version": "27.7.2",
3
+ "version": "27.7.3",
4
4
  "license": "BSD-3-Clause",
5
5
  "description": "TeskaLabs ASAB WebUI Shell Application",
6
6
  "contributors": [