Skip to content

Commit eb69523

Browse files
feat(GAT-9423): Adds search box to teams admin page (#1608)
1 parent 9ef5257 commit eb69523

3 files changed

Lines changed: 50 additions & 5 deletions

File tree

src/app/[locale]/account/profile/teams/components/TeamsList.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
1-
import { useMemo, useState } from "react";
1+
import { useEffect, useMemo, useState } from "react";
2+
import { useForm } from "react-hook-form";
23
import { useTranslations } from "next-intl";
34
import { useRouter } from "next/navigation";
45
import { PaginationType } from "@/interfaces/Pagination";
56
import { Team } from "@/interfaces/Team";
67
import Box from "@/components/Box";
8+
import InputWrapper from "@/components/InputWrapper";
79
import Pagination from "@/components/Pagination";
810
import Table from "@/components/Table";
911
import DeleteTeamDialog from "@/modules/DeleteTeamDialog";
12+
import useDebounce from "@/hooks/useDebounce";
1013
import useDialog from "@/hooks/useDialog";
1114
import useGet from "@/hooks/useGet";
1215
import apis from "@/config/apis";
16+
import {
17+
teamSearchDefaultValues,
18+
teamSearchFilter,
19+
} from "@/config/forms/teamSearch";
1320
import { getColumns } from "@/config/tables/teamManagement";
1421
import { Routes } from "@/consts/routes";
1522

@@ -33,6 +40,17 @@ const TeamsList = ({
3340
const [sort, setSort] = useState({ key: "created_at", direction: "desc" });
3441
const [currentPage, setCurrentPage] = useState(1);
3542

43+
const { control, watch, setValue } = useForm({
44+
defaultValues: teamSearchDefaultValues,
45+
});
46+
47+
const watchAll = watch();
48+
const searchDebounced = useDebounce(watchAll.search, 500);
49+
50+
useEffect(() => {
51+
setCurrentPage(1);
52+
}, [searchDebounced]);
53+
3654
const queryParams = new URLSearchParams();
3755

3856
queryParams.append("sort", `${sort.key}:${sort.direction}`);
@@ -42,6 +60,10 @@ const TeamsList = ({
4260
queryParams.append("is_question_bank", questionBankStatus);
4361
}
4462

63+
if (searchDebounced) {
64+
queryParams.append("name", searchDebounced);
65+
}
66+
4567
queryParams.sort();
4668
const qs = queryParams.toString();
4769

@@ -87,6 +109,13 @@ const TeamsList = ({
87109

88110
return (
89111
<>
112+
<Box sx={{ p: 0, mb: 2, maxWidth: 400 }}>
113+
<InputWrapper
114+
setValue={setValue}
115+
control={control}
116+
{...teamSearchFilter}
117+
/>
118+
</Box>
90119
<Box sx={{ p: 0, mb: 2 }}>
91120
<Table<Team>
92121
columns={columns}

src/config/forms/teamSearch.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { inputComponents } from ".";
2+
3+
const defaultValues = {
4+
search: "",
5+
};
6+
7+
const searchFilter = {
8+
component: inputComponents.TextField,
9+
variant: "outlined",
10+
name: "search",
11+
placeholder: "Search by team name",
12+
label: "",
13+
showClearButton: true,
14+
};
15+
16+
export {
17+
searchFilter as teamSearchFilter,
18+
defaultValues as teamSearchDefaultValues,
19+
};

src/config/tables/teamManagement.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import SortIcon from "@/components/SortIcon";
99
import TickCrossIcon from "@/components/TickCrossIcon";
1010
import { CloseIcon, EditIcon } from "@/consts/icons";
1111
import { formatDate } from "@/utils/date";
12-
import { capitalise } from "@/utils/general";
1312
import { getTeamAdmins } from "@/utils/user";
1413

1514
interface getColumnsProps {
@@ -82,9 +81,7 @@ const getColumns = ({
8281
),
8382
cell: ({ row: { original } }) => (
8483
<MarkDownSanitizedWithHtml
85-
content={`${capitalise(original.member_of)} > ${
86-
original.name
87-
}`}
84+
content={original.name}
8885
WrapperComponent="span"
8986
/>
9087
),

0 commit comments

Comments
 (0)