|
|
@@ -13,14 +13,14 @@ import { deleteUser } from "@/app/api/user/actions"; |
|
|
|
import { deleteGroup } from "@/app/api/group/actions"; |
|
|
|
|
|
|
|
interface Props { |
|
|
|
users: UserGroupResult[]; |
|
|
|
groups: UserGroupResult[]; |
|
|
|
} |
|
|
|
type SearchQuery = Partial<Omit<UserGroupResult, "id">>; |
|
|
|
type SearchParamNames = keyof SearchQuery; |
|
|
|
|
|
|
|
const UserGroupSearch: React.FC<Props> = ({ users }) => { |
|
|
|
const UserGroupSearch: React.FC<Props> = ({ groups }) => { |
|
|
|
const { t } = useTranslation(); |
|
|
|
const [filteredUser, setFilteredUser] = useState(users); |
|
|
|
const [filteredGroups, setFilteredGroups] = useState(groups); |
|
|
|
const router = useRouter(); |
|
|
|
|
|
|
|
const searchCriteria: Criterion<SearchParamNames>[] = useMemo( |
|
|
@@ -51,6 +51,8 @@ const UserGroupSearch: React.FC<Props> = ({ users }) => { |
|
|
|
deleteDialog(async () => { |
|
|
|
await deleteGroup(group.id); |
|
|
|
successDialog(t("Delete Success"), t); |
|
|
|
setFilteredGroups((prev) => prev.filter((obj) => obj.id !== group.id)); |
|
|
|
|
|
|
|
}, t); |
|
|
|
}, []); |
|
|
|
|
|
|
@@ -80,8 +82,8 @@ const UserGroupSearch: React.FC<Props> = ({ users }) => { |
|
|
|
<SearchBox |
|
|
|
criteria={searchCriteria} |
|
|
|
onSearch={(query) => { |
|
|
|
setFilteredUser( |
|
|
|
users.filter( |
|
|
|
setFilteredGroups( |
|
|
|
groups.filter( |
|
|
|
(u) => |
|
|
|
u.name.toLowerCase().includes(query.name.toLowerCase()) && |
|
|
|
u.description.toLowerCase().includes(query.description.toLowerCase()) |
|
|
@@ -89,7 +91,7 @@ const UserGroupSearch: React.FC<Props> = ({ users }) => { |
|
|
|
) |
|
|
|
}} |
|
|
|
/> |
|
|
|
<SearchResults<UserGroupResult> items={filteredUser} columns={columns} /> |
|
|
|
<SearchResults<UserGroupResult> items={filteredGroups} columns={columns} /> |
|
|
|
</> |
|
|
|
); |
|
|
|
}; |
|
|
|