mario-core 2.9.160-level → 2.9.161-level

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.
@@ -5,10 +5,11 @@ interface Props extends PopoverProps {
5
5
  filters?: UserFilter;
6
6
  sortBy: UserOrder;
7
7
  searchBy?: SearchBy;
8
- searchString?: string;
9
- users: any[];
8
+ users: string[];
10
9
  defaultOptions?: FilterOption[];
11
10
  selectedOptions?: string[];
11
+ searchKey: string;
12
+ onChangeSearchKey: (value: string) => void;
12
13
  onOptionsChange?: (value?: string[], searchBy?: SearchBy) => void;
13
14
  onSearch?: (search: string, searchBy: SearchBy) => void;
14
15
  onClose?: () => void;
@@ -1,15 +1,15 @@
1
1
  import { FC } from "react";
2
- import { SearchBy, UserColumn, UserFilter } from "../constants/types";
2
+ import { SearchBy, UserColumn, UserFilter, UserOrder } from "../constants/types";
3
3
  interface Props {
4
4
  data: UserColumn;
5
5
  popoverId?: string;
6
6
  filters?: UserFilter;
7
7
  searchString?: string;
8
- users: any[];
8
+ users: string[];
9
9
  selectedOptions?: string[];
10
10
  onOptionsChange?: (value?: string[], searchBy?: SearchBy) => void;
11
11
  onSearch?: (search: string, searchBy: SearchBy) => void;
12
- onOpenFilter?: (id: string) => void;
12
+ onOpenFilter?: (id: string, searchBy?: SearchBy, searchStringBy?: string, sortBy?: UserOrder) => void;
13
13
  onClose?: () => void;
14
14
  onChangeFilters?: (filter: UserFilter) => void;
15
15
  }
@@ -36,9 +36,16 @@ export declare type UserFilter = {
36
36
  isDescending?: boolean;
37
37
  sortBy?: UserOrder;
38
38
  searchBy?: SearchBy;
39
- searchStringBy?: string;
40
39
  searchByStrings?: string[];
41
40
  };
41
+ export declare type UserFilterField = {
42
+ currentPage?: number;
43
+ pageSize?: number;
44
+ searchString?: string;
45
+ isDescending?: boolean;
46
+ searchBy?: SearchBy;
47
+ searchStringBy?: string;
48
+ };
42
49
  export declare type UserColumn = {
43
50
  name: string;
44
51
  sortBy?: UserOrder;
@@ -4,11 +4,12 @@ import { PopoverProps } from "reactstrap";
4
4
  interface Props extends PopoverProps {
5
5
  filters?: UserFilter;
6
6
  sortBy: UserOrder;
7
- searchString?: string;
8
7
  searchBy?: SearchBy;
9
- users: any[];
8
+ users: string[];
10
9
  defaultOptions?: FilterOption[];
11
10
  selectedOptions?: string[];
11
+ searchKey: string;
12
+ onChangeSearchKey: (value: string) => void;
12
13
  onOptionsChange?: (value?: string[], searchBy?: SearchBy) => void;
13
14
  onSearch?: (search: string, searchBy: SearchBy) => void;
14
15
  onClose?: () => void;
@@ -18,8 +19,9 @@ interface Props extends PopoverProps {
18
19
  }
19
20
  declare const useFilterPopover: (props: Props) => {
20
21
  ref: import("react").RefObject<HTMLDivElement>;
21
- options: any;
22
- sOptions: string[] | undefined;
22
+ options: FilterOption[];
23
+ inputRef: import("react").MutableRefObject<any>;
24
+ sOptions: any[] | undefined;
23
25
  isAscending: boolean;
24
26
  isDescending: boolean;
25
27
  filteredOptions: FilterOption[];
@@ -30,6 +32,6 @@ declare const useFilterPopover: (props: Props) => {
30
32
  handleOptionSelectedAll: (e?: any) => void;
31
33
  handleSortDesc: () => void;
32
34
  handleSortAsc: () => void;
33
- handleChangeSearchKey: (e: any) => void;
35
+ handleChangeSearchKey: (e: React.ChangeEvent<HTMLInputElement>) => void;
34
36
  };
35
37
  export default useFilterPopover;
@@ -1,15 +1,15 @@
1
- import { SearchBy, UserFilter } from "../constants/types";
1
+ import { SearchBy, UserFilter, UserFilterField, UserOrder } from "../constants/types";
2
2
  interface Props {
3
3
  filters: UserFilter;
4
4
  onChangeFilters?: (filter: UserFilter) => void;
5
5
  }
6
6
  declare const useTableHeader: (props: Props) => {
7
- popoverFilters: UserFilter;
7
+ popoverFilters: UserFilterField;
8
8
  popoverId: string | undefined;
9
- users: any[];
10
- handleFilterIcon: (id: string) => void;
9
+ users: string[];
10
+ handleFilterIcon: (id: string, searchBy?: SearchBy | undefined, searchStringBy?: string | undefined, sortBy?: UserOrder | undefined) => void;
11
11
  handleCloseFilter: () => void;
12
- handleSearch: (search: string, searchBy: SearchBy) => void;
12
+ handleSearch: (search: string, searchBy?: SearchBy | undefined) => void;
13
13
  handleChangeFilters: (value?: string[] | undefined, searchBy?: SearchBy | undefined) => void;
14
14
  };
15
15
  export default useTableHeader;
package/dist/index.js CHANGED
@@ -7307,6 +7307,11 @@ var getRosterUser = function getRosterUser(filter) {
7307
7307
  params: filter
7308
7308
  });
7309
7309
  };
7310
+ var getFilterRosterUser = function getFilterRosterUser(filter) {
7311
+ return api.get(MAPPING_ROSTER_USER_URL + "/filters", {
7312
+ params: filter
7313
+ });
7314
+ };
7310
7315
  var getRosterUserExport = function getRosterUserExport(filter) {
7311
7316
  return api.get(MAPPING_ROSTER_USER_URL + "/export-csv", {
7312
7317
  params: filter
@@ -7377,11 +7382,9 @@ var UserColumns = [{
7377
7382
  searchBy: SearchBy.Name,
7378
7383
  className: "align-top",
7379
7384
  getOption: function getOption(user) {
7380
- var _user$fullName, _user$fullName$trim;
7381
-
7382
7385
  return {
7383
- label: user.fullName || "empty",
7384
- value: ((_user$fullName = user.fullName) === null || _user$fullName === void 0 ? void 0 : (_user$fullName$trim = _user$fullName.trim) === null || _user$fullName$trim === void 0 ? void 0 : _user$fullName$trim.call(_user$fullName)) || ""
7386
+ label: user || "empty",
7387
+ value: user
7385
7388
  };
7386
7389
  }
7387
7390
  }, {
@@ -7390,11 +7393,9 @@ var UserColumns = [{
7390
7393
  searchBy: SearchBy.Email,
7391
7394
  className: "align-top",
7392
7395
  getOption: function getOption(user) {
7393
- var _user$email, _user$email$trim;
7394
-
7395
7396
  return {
7396
- label: user.email || "empty",
7397
- value: ((_user$email = user.email) === null || _user$email === void 0 ? void 0 : (_user$email$trim = _user$email.trim) === null || _user$email$trim === void 0 ? void 0 : _user$email$trim.call(_user$email)) || ""
7397
+ label: user || "empty",
7398
+ value: user
7398
7399
  };
7399
7400
  }
7400
7401
  }, {
@@ -7407,13 +7408,11 @@ var UserColumns = [{
7407
7408
  searchBy: SearchBy.Role,
7408
7409
  className: "align-top",
7409
7410
  getOption: function getOption(user) {
7410
- var _user$roles, _user$roles2, _user$roles3, _user$roles3$join, _user$roles3$join$tri;
7411
+ var _user$replace;
7411
7412
 
7412
7413
  return {
7413
- label: (_user$roles = user.roles) !== null && _user$roles !== void 0 && _user$roles.length ? (_user$roles2 = user.roles) === null || _user$roles2 === void 0 ? void 0 : _user$roles2.map(function (role) {
7414
- return role === "SecondaryTeacher" ? "SupportTeacher" : role;
7415
- }).join(", ") : "empty",
7416
- value: ((_user$roles3 = user.roles) === null || _user$roles3 === void 0 ? void 0 : (_user$roles3$join = _user$roles3.join("")) === null || _user$roles3$join === void 0 ? void 0 : (_user$roles3$join$tri = _user$roles3$join.trim) === null || _user$roles3$join$tri === void 0 ? void 0 : _user$roles3$join$tri.call(_user$roles3$join)) || ""
7414
+ label: !!user ? user === null || user === void 0 ? void 0 : (_user$replace = user.replace) === null || _user$replace === void 0 ? void 0 : _user$replace.call(user, "SecondaryTeacher", "SupportTeacher") : "empty",
7415
+ value: user
7417
7416
  };
7418
7417
  }
7419
7418
  }, {
@@ -7421,12 +7420,6 @@ var UserColumns = [{
7421
7420
  sortBy: UserOrder.Status,
7422
7421
  searchBy: SearchBy.Status,
7423
7422
  className: "align-top",
7424
- getOption: function getOption(user, t) {
7425
- return {
7426
- label: user.isActive ? t("active") : t("inactive"),
7427
- value: user.isActive
7428
- };
7429
- },
7430
7423
  options: [{
7431
7424
  label: "Active",
7432
7425
  value: "true"
@@ -7443,32 +7436,10 @@ var UserColumns = [{
7443
7436
  sortBy: UserOrder.RosterUser,
7444
7437
  searchBy: SearchBy.RosterUser,
7445
7438
  className: "align-top",
7446
- getOption: function getOption(record) {
7447
- if (!record) return {
7448
- label: "empty",
7449
- value: ""
7450
- };
7451
- var result = [];
7452
- var sourcedId = record.sourcedId,
7453
- rosterUser = record.rosterUser;
7454
- !!sourcedId && result.push(sourcedId);
7455
-
7456
- if (rosterUser) {
7457
- var givenName = rosterUser.givenName,
7458
- middleName = rosterUser.middleName,
7459
- familyName = rosterUser.familyName,
7460
- email = rosterUser.email;
7461
- var names = [];
7462
- !!givenName && names.push(givenName);
7463
- !!middleName && names.push(middleName);
7464
- !!familyName && names.push(familyName);
7465
- !!names.length && result.push(names.join(" "));
7466
- !!email && result.push(email);
7467
- }
7468
-
7439
+ getOption: function getOption(user) {
7469
7440
  return {
7470
- label: result.length ? result.join(" / ") : "empty",
7471
- value: !!rosterUser ? "" + (sourcedId || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.familyName) || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.middleName) || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.givenName) || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.email) || "") : ""
7441
+ label: user || "empty",
7442
+ value: user
7472
7443
  };
7473
7444
  }
7474
7445
  }, {
@@ -7546,6 +7517,14 @@ var useUserList = function useUserList() {
7546
7517
  dispatch(setLoading(false));
7547
7518
  };
7548
7519
 
7520
+ if (filters.searchBy !== undefined && filters.searchByStrings !== undefined && filters.searchByStrings.length === 0) {
7521
+ dispatch(setUserList({
7522
+ userList: [],
7523
+ totalItems: 0
7524
+ }));
7525
+ return Promise.resolve();
7526
+ }
7527
+
7549
7528
  dispatch(setLoading(true));
7550
7529
 
7551
7530
  var _temp4 = _catch(function () {
@@ -7622,7 +7601,7 @@ var useUserList = function useUserList() {
7622
7601
  var result = [];
7623
7602
  var sourcedId = record.sourcedId,
7624
7603
  rosterUser = record.rosterUser;
7625
- !!sourcedId && result.push(sourcedId);
7604
+ !!sourcedId && !!rosterUser && result.push(sourcedId);
7626
7605
 
7627
7606
  if (rosterUser) {
7628
7607
  var givenName = rosterUser.givenName,
@@ -7630,11 +7609,11 @@ var useUserList = function useUserList() {
7630
7609
  familyName = rosterUser.familyName,
7631
7610
  email = rosterUser.email;
7632
7611
  var names = [];
7633
- !!givenName && names.push(givenName);
7634
- !!middleName && names.push(middleName);
7635
7612
  !!familyName && names.push(familyName);
7636
- !!names.length && result.push(names.join(" "));
7637
- !!email && result.push(email);
7613
+ !!middleName && names.push(middleName);
7614
+ !!givenName && names.push(givenName);
7615
+ result.push(names.join(" ") || "");
7616
+ result.push(email || "");
7638
7617
  }
7639
7618
 
7640
7619
  return result.join(" / ");
@@ -7666,9 +7645,9 @@ var useUserList = function useUserList() {
7666
7645
  type: "success",
7667
7646
  message: "Remove user successfully"
7668
7647
  }));
7669
- changeFilters({
7648
+ if (filters.currentPage !== 1) changeFilters({
7670
7649
  currentPage: 1
7671
- });
7650
+ });else getData();
7672
7651
  });
7673
7652
  } catch (e) {
7674
7653
  return Promise.reject(e);
@@ -7685,7 +7664,7 @@ var useUserList = function useUserList() {
7685
7664
  }
7686
7665
 
7687
7666
  dispatch(setLoading(false));
7688
- }, [filters]);
7667
+ }, [JSON.stringify(filters)]);
7689
7668
 
7690
7669
  var redirectLoginUser = function redirectLoginUser(res) {
7691
7670
  var _res$data2 = res.data,
@@ -7922,9 +7901,10 @@ var useFilterPopover = function useFilterPopover(props) {
7922
7901
  filters = props.filters,
7923
7902
  users = props.users,
7924
7903
  searchBy = props.searchBy,
7925
- searchString = props.searchString,
7926
7904
  defaultOptions = props.defaultOptions,
7927
7905
  selectedOptions = props.selectedOptions,
7906
+ searchKey = props.searchKey,
7907
+ onChangeSearchKey = props.onChangeSearchKey,
7928
7908
  onOptionsChange = props.onOptionsChange,
7929
7909
  onSearch = props.onSearch,
7930
7910
  onClose = props.onClose,
@@ -7939,28 +7919,32 @@ var useFilterPopover = function useFilterPopover(props) {
7939
7919
  filteredOptions = _useState2[0],
7940
7920
  setFilteredOptions = _useState2[1];
7941
7921
 
7942
- var _useState3 = React.useState(""),
7943
- searchKey = _useState3[0],
7944
- setSearchKey = _useState3[1];
7945
-
7946
7922
  var ref = React.useRef(null);
7923
+ var inputRef = React.useRef(null);
7947
7924
  useClickOutside(ref, onClose);
7948
7925
 
7949
7926
  var _useTranslation = reactI18next.useTranslation(),
7950
7927
  t = _useTranslation.t;
7951
7928
 
7952
7929
  var handleSearch = React.useCallback(function () {
7953
- searchBy != undefined && !defaultOptions && (onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchKey, searchBy));
7930
+ var _searchKey$trim, _searchKey$trim2;
7931
+
7932
+ if (!isOpen) return;
7933
+ var searchString = (_searchKey$trim = searchKey === null || searchKey === void 0 ? void 0 : (_searchKey$trim2 = searchKey.trim) === null || _searchKey$trim2 === void 0 ? void 0 : _searchKey$trim2.call(searchKey)) != null ? _searchKey$trim : "";
7934
+ searchBy != undefined && !defaultOptions && (onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchString, searchBy));
7954
7935
  searchBy != undefined && !!defaultOptions && setFilteredOptions(defaultOptions.filter(function (i) {
7955
- return i.label.toLowerCase().includes(searchKey === null || searchKey === void 0 ? void 0 : searchKey.toLowerCase());
7936
+ return i.label.toLowerCase().includes(searchString.toLowerCase());
7956
7937
  }));
7957
- }, [searchBy, searchKey, JSON.stringify(defaultOptions)]);
7938
+ }, [searchBy, searchKey, JSON.stringify(defaultOptions), isOpen]);
7958
7939
 
7959
- var handleChangeSearchKey = function handleChangeSearchKey(e) {
7960
- var _e$target$value;
7940
+ var debounceSearch = function debounceSearch() {
7941
+ if (!!inputRef.current) clearTimeout(inputRef.current);
7942
+ inputRef.current = setTimeout(handleSearch, 500);
7943
+ };
7961
7944
 
7962
- var value = (_e$target$value = e.target.value) != null ? _e$target$value : "";
7963
- setSearchKey(value);
7945
+ var handleChangeSearchKey = function handleChangeSearchKey(e) {
7946
+ var value = e.target.value;
7947
+ onChangeSearchKey(value);
7964
7948
  };
7965
7949
 
7966
7950
  var handleApplyFilter = React.useCallback(function () {
@@ -7968,9 +7952,9 @@ var useFilterPopover = function useFilterPopover(props) {
7968
7952
  onClose === null || onClose === void 0 ? void 0 : onClose();
7969
7953
  }, [JSON.stringify(sOptions)]);
7970
7954
  var handleOptionSelected = React.useCallback(function (e) {
7971
- var _e$target$value2;
7955
+ var _e$target$value;
7972
7956
 
7973
- var value = (_e$target$value2 = e.target.value) != null ? _e$target$value2 : "";
7957
+ var value = (_e$target$value = e.target.value) != null ? _e$target$value : "";
7974
7958
  var newOptions = sOptions != null ? sOptions : [];
7975
7959
  var index = newOptions.indexOf(value);
7976
7960
 
@@ -7992,22 +7976,19 @@ var useFilterPopover = function useFilterPopover(props) {
7992
7976
  isDescending: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === true ? undefined : true
7993
7977
  }));
7994
7978
  onClose === null || onClose === void 0 ? void 0 : onClose();
7995
- }, [JSON.stringify(filters), searchBy, searchBy]);
7979
+ }, [JSON.stringify(filters), searchBy]);
7996
7980
  var handleSortAsc = React.useCallback(function () {
7997
7981
  onChangeFilters === null || onChangeFilters === void 0 ? void 0 : onChangeFilters(_extends({}, filters, {
7998
7982
  sortBy: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === false ? undefined : sortBy,
7999
7983
  isDescending: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === false ? undefined : false
8000
7984
  }));
8001
7985
  onClose === null || onClose === void 0 ? void 0 : onClose();
8002
- }, [JSON.stringify(filters), searchBy, searchBy]);
7986
+ }, [JSON.stringify(filters), searchBy]);
8003
7987
  var options = React.useMemo(function () {
8004
7988
  if (!getOption) return [];
8005
- return users.reduce(function (i, current) {
8006
- var _extends2;
8007
-
8008
- var option = getOption(current, t);
8009
- return _extends({}, i, (_extends2 = {}, _extends2[option.label] = option.value, _extends2));
8010
- }, {});
7989
+ return users.map(function (i) {
7990
+ return getOption(i, t);
7991
+ });
8011
7992
  }, [JSON.stringify(users), JSON.stringify(getOption)]);
8012
7993
  var isAscending = (filters === null || filters === void 0 ? void 0 : filters.isDescending) == false && filters.sortBy === sortBy;
8013
7994
  var isDescending = !!(filters !== null && filters !== void 0 && filters.isDescending) && filters.sortBy === sortBy;
@@ -8018,14 +7999,12 @@ var useFilterPopover = function useFilterPopover(props) {
8018
7999
  setFilteredOptions(defaultOptions || []);
8019
8000
  }, [JSON.stringify(defaultOptions)]);
8020
8001
  React.useEffect(function () {
8021
- if ((filters === null || filters === void 0 ? void 0 : filters.searchBy) === searchBy) setSearchKey(searchString || "");
8022
- }, [searchBy, searchString, filters === null || filters === void 0 ? void 0 : filters.searchBy]);
8023
- React.useEffect(function () {
8024
- isOpen && handleSearch();
8002
+ debounceSearch();
8025
8003
  }, [searchKey, isOpen]);
8026
8004
  return {
8027
8005
  ref: ref,
8028
8006
  options: options,
8007
+ inputRef: inputRef,
8029
8008
  sOptions: sOptions,
8030
8009
  isAscending: isAscending,
8031
8010
  isDescending: isDescending,
@@ -8048,6 +8027,7 @@ var FilterPopover = function FilterPopover(props) {
8048
8027
 
8049
8028
  var _useFilterPopover = useFilterPopover(props),
8050
8029
  ref = _useFilterPopover.ref,
8030
+ inputRef = _useFilterPopover.inputRef,
8051
8031
  options = _useFilterPopover.options,
8052
8032
  sOptions = _useFilterPopover.sOptions,
8053
8033
  isAscending = _useFilterPopover.isAscending,
@@ -8082,7 +8062,7 @@ var FilterPopover = function FilterPopover(props) {
8082
8062
  onClick: handleSortDesc
8083
8063
  }, React__default.createElement(ai.AiOutlineSortDescending, {
8084
8064
  className: "mr-1"
8085
- }), "Descending")), typeof getOption != 'undefined' && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
8065
+ }), "Descending")), (typeof getOption != 'undefined' || !!defaultOptions) && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
8086
8066
  className: "border border-top-1 border-bottom-0 mx-1 my-2"
8087
8067
  }), React__default.createElement("div", {
8088
8068
  className: "d-flex flex-column"
@@ -8093,6 +8073,7 @@ var FilterPopover = function FilterPopover(props) {
8093
8073
  }, React__default.createElement(bi.BiSearchAlt2, {
8094
8074
  className: "position-absolute " + styles["popover__search__icon"]
8095
8075
  }), React__default.createElement(reactstrap.Input, {
8076
+ ref: inputRef,
8096
8077
  className: styles["popover__search__input"],
8097
8078
  value: searchKey,
8098
8079
  onChange: handleChangeSearchKey
@@ -8107,19 +8088,19 @@ var FilterPopover = function FilterPopover(props) {
8107
8088
  checked: sOptions == undefined
8108
8089
  }), " ", React__default.createElement(reactstrap.Label, {
8109
8090
  check: true
8110
- }, "(Select all)")), !!getOption && !defaultOptions && Object.keys(options).map(function (i) {
8091
+ }, "(Select all)")), !!getOption && !defaultOptions && options.map(function (i) {
8111
8092
  return React__default.createElement(reactstrap.FormGroup, {
8112
- key: i.id,
8093
+ key: i.value,
8113
8094
  className: "d-flex align-items-center",
8114
8095
  check: true
8115
8096
  }, React__default.createElement(reactstrap.Input, {
8116
8097
  type: "checkbox",
8117
- value: options["" + i],
8098
+ value: i.value,
8118
8099
  onChange: handleOptionSelected,
8119
- checked: (sOptions === null || sOptions === void 0 ? void 0 : sOptions.includes(options["" + i])) || sOptions == undefined
8100
+ checked: (sOptions === null || sOptions === void 0 ? void 0 : sOptions.includes(i.value)) || sOptions == undefined
8120
8101
  }), " ", React__default.createElement(reactstrap.Label, {
8121
8102
  check: true
8122
- }, i));
8103
+ }, i.label));
8123
8104
  }), !!defaultOptions && filteredOptions.map(function (i) {
8124
8105
  return React__default.createElement(reactstrap.FormGroup, {
8125
8106
  key: i.value,
@@ -8153,14 +8134,22 @@ var HeaderCell = function HeaderCell(_ref) {
8153
8134
  var data = _ref.data,
8154
8135
  popoverId = _ref.popoverId,
8155
8136
  filters = _ref.filters,
8137
+ searchString = _ref.searchString,
8138
+ users = _ref.users,
8139
+ selectedOptions = _ref.selectedOptions,
8140
+ onOptionsChange = _ref.onOptionsChange,
8141
+ onSearch = _ref.onSearch,
8156
8142
  onChangeFilters = _ref.onChangeFilters,
8157
8143
  onOpenFilter = _ref.onOpenFilter,
8158
- onClose = _ref.onClose,
8159
- rest = _objectWithoutPropertiesLoose(_ref, ["data", "popoverId", "filters", "onChangeFilters", "onOpenFilter", "onClose"]);
8144
+ onClose = _ref.onClose;
8160
8145
 
8161
8146
  var _useTranslation = reactI18next.useTranslation(),
8162
8147
  t = _useTranslation.t;
8163
8148
 
8149
+ var _useState = React.useState(""),
8150
+ searchKey = _useState[0],
8151
+ setSearchKey = _useState[1];
8152
+
8164
8153
  var id = React.useMemo(function () {
8165
8154
  return data.sortBy != undefined ? userOrders[data.sortBy] : "";
8166
8155
  }, [data.sortBy]);
@@ -8169,7 +8158,11 @@ var HeaderCell = function HeaderCell(_ref) {
8169
8158
  }, [id, popoverId]);
8170
8159
 
8171
8160
  var handleOpenFilter = function handleOpenFilter() {
8172
- onOpenFilter === null || onOpenFilter === void 0 ? void 0 : onOpenFilter(id);
8161
+ onOpenFilter === null || onOpenFilter === void 0 ? void 0 : onOpenFilter(id, data.searchBy, searchKey, data.sortBy);
8162
+ };
8163
+
8164
+ var handleChangeSearchKey = function handleChangeSearchKey(value) {
8165
+ setSearchKey(value);
8173
8166
  };
8174
8167
 
8175
8168
  return React__default.createElement("th", {
@@ -8183,18 +8176,25 @@ var HeaderCell = function HeaderCell(_ref) {
8183
8176
  style: {
8184
8177
  cursor: "pointer"
8185
8178
  }
8186
- }, data.sortBy !== undefined && data.sortBy === (filters === null || filters === void 0 ? void 0 : filters.sortBy) && React__default.createElement("span", null, filters.isDescending ? React__default.createElement(ai.AiOutlineSortDescending, null) : React__default.createElement(ai.AiOutlineSortAscending, null)), !!(filters !== null && filters !== void 0 && (_filters$searchByStri = filters.searchByStrings) !== null && _filters$searchByStri !== void 0 && _filters$searchByStri.length) && data.searchBy === (filters === null || filters === void 0 ? void 0 : filters.searchBy) ? React__default.createElement(hi.HiFilter, null) : React__default.createElement(bi.BiFilterAlt, null)), React__default.createElement(FilterPopover, Object.assign({
8187
- target: id,
8179
+ }, data.sortBy !== undefined && data.sortBy === (filters === null || filters === void 0 ? void 0 : filters.sortBy) && React__default.createElement("span", null, filters.isDescending ? React__default.createElement(ai.AiOutlineSortDescending, null) : React__default.createElement(ai.AiOutlineSortAscending, null)), !!(filters !== null && filters !== void 0 && (_filters$searchByStri = filters.searchByStrings) !== null && _filters$searchByStri !== void 0 && _filters$searchByStri.length) && data.searchBy === (filters === null || filters === void 0 ? void 0 : filters.searchBy) ? React__default.createElement(hi.HiFilter, null) : React__default.createElement(bi.BiFilterAlt, null)), React__default.createElement(FilterPopover, {
8188
8180
  placement: "bottom-end",
8181
+ target: id,
8182
+ users: users,
8189
8183
  isOpen: isOpen,
8190
8184
  filters: filters,
8191
- onClose: onClose,
8192
- onChangeFilters: onChangeFilters,
8193
8185
  sortBy: data.sortBy,
8186
+ searchKey: searchKey,
8194
8187
  searchBy: data.searchBy,
8188
+ searchString: searchString,
8189
+ defaultOptions: data.options,
8190
+ selectedOptions: selectedOptions,
8191
+ onClose: onClose,
8192
+ onSearch: onSearch,
8195
8193
  getOption: data.getOption,
8196
- defaultOptions: data.options
8197
- }, rest))) : t(data.name));
8194
+ onChangeFilters: onChangeFilters,
8195
+ onOptionsChange: onOptionsChange,
8196
+ onChangeSearchKey: handleChangeSearchKey
8197
+ })) : t(data.name));
8198
8198
  };
8199
8199
 
8200
8200
  var useTableHeader = function useTableHeader(props) {
@@ -8210,7 +8210,6 @@ var useTableHeader = function useTableHeader(props) {
8210
8210
  setUsers = _useState2[1];
8211
8211
 
8212
8212
  var _useState3 = React.useState(_extends({}, DEFAULT_FILTER_POPOVER, {
8213
- sortBy: filters.sortBy,
8214
8213
  isDescending: filters.isDescending,
8215
8214
  searchString: filters.searchString
8216
8215
  })),
@@ -8221,14 +8220,10 @@ var useTableHeader = function useTableHeader(props) {
8221
8220
  var getData = React.useCallback(function () {
8222
8221
  try {
8223
8222
  var _temp2 = _catch(function () {
8224
- return Promise.resolve(getRosterUser(popoverFilters)).then(function (res) {
8225
- var items = res.data.items;
8226
-
8227
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
8228
- var user = _step.value;
8229
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
8230
- }
8223
+ return Promise.resolve(getFilterRosterUser(popoverFilters)).then(function (res) {
8224
+ var _res$data;
8231
8225
 
8226
+ var items = ((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || [];
8232
8227
  setUsers(items);
8233
8228
  });
8234
8229
  }, function (err) {
@@ -8245,25 +8240,24 @@ var useTableHeader = function useTableHeader(props) {
8245
8240
  return Promise.reject(e);
8246
8241
  }
8247
8242
  }, [JSON.stringify(popoverFilters)]);
8248
-
8249
- var handleFilterIcon = function handleFilterIcon(id) {
8243
+ var handleFilterIcon = React.useCallback(function (id, searchBy, searchStringBy, sortBy) {
8250
8244
  setPopoverId(id);
8251
- };
8245
+ setPopoverFilters(_extends({}, popoverFilters, {
8246
+ searchBy: searchBy,
8247
+ searchStringBy: searchStringBy,
8248
+ isDescending: filters.sortBy === sortBy ? filters.isDescending : undefined,
8249
+ searchString: filters.searchString
8250
+ }));
8251
+ }, [JSON.stringify(popoverFilters), filters.isDescending, filters.searchString]);
8252
8252
 
8253
8253
  var handleCloseFilter = function handleCloseFilter() {
8254
8254
  setPopoverId("");
8255
8255
  };
8256
8256
 
8257
- React.useEffect(function () {
8258
- setPopoverFilters(_extends({}, popoverFilters, {
8259
- sortBy: filters.sortBy,
8260
- isDescending: filters.isDescending
8261
- }));
8262
- }, [filters.sortBy, filters.isDescending]);
8263
8257
  var handleSearch = React.useCallback(function (search, searchBy) {
8264
8258
  setPopoverFilters(_extends({}, popoverFilters, {
8265
- searchStringBy: search,
8266
- searchBy: searchBy
8259
+ searchBy: searchBy,
8260
+ searchStringBy: search
8267
8261
  }));
8268
8262
  }, [JSON.stringify(popoverFilters)]);
8269
8263
  var handleChangeFilters = React.useCallback(function (value, searchBy) {
@@ -8273,15 +8267,8 @@ var useTableHeader = function useTableHeader(props) {
8273
8267
  }));
8274
8268
  }, [JSON.stringify(filters)]);
8275
8269
  React.useEffect(function () {
8276
- getData();
8270
+ popoverFilters.searchBy !== undefined && getData();
8277
8271
  }, [JSON.stringify(popoverFilters)]);
8278
- React.useEffect(function () {
8279
- setPopoverFilters(_extends({}, DEFAULT_FILTER_POPOVER, popoverFilters, {
8280
- sortBy: filters.sortBy,
8281
- isDescending: filters.isDescending,
8282
- searchString: filters.searchString
8283
- }));
8284
- }, [JSON.stringify(filters), JSON.stringify(popoverFilters)]);
8285
8272
  return {
8286
8273
  popoverFilters: popoverFilters,
8287
8274
  popoverId: popoverId,
@@ -8302,7 +8289,6 @@ var TableHeader = function TableHeader(_ref) {
8302
8289
  filters: filters,
8303
8290
  onChangeFilters: onChangeFilters
8304
8291
  }),
8305
- popoverFilters = _useTableHeader.popoverFilters,
8306
8292
  popoverId = _useTableHeader.popoverId,
8307
8293
  users = _useTableHeader.users,
8308
8294
  handleFilterIcon = _useTableHeader.handleFilterIcon,
@@ -8312,17 +8298,16 @@ var TableHeader = function TableHeader(_ref) {
8312
8298
 
8313
8299
  return React__default.createElement("tr", null, headers.map(function (header) {
8314
8300
  return React__default.createElement(HeaderCell, {
8315
- key: header.name,
8301
+ users: users,
8316
8302
  data: header,
8317
- popoverId: popoverId,
8303
+ key: header.name,
8318
8304
  filters: filters,
8319
- users: users,
8320
- searchString: popoverFilters.searchStringBy,
8305
+ popoverId: popoverId,
8321
8306
  selectedOptions: filters.searchByStrings,
8322
8307
  onSearch: handleSearch,
8323
- onChangeFilters: onChangeFilters,
8324
8308
  onClose: handleCloseFilter,
8325
8309
  onOpenFilter: handleFilterIcon,
8310
+ onChangeFilters: onChangeFilters,
8326
8311
  onOptionsChange: handleChangeFilters
8327
8312
  });
8328
8313
  }));