| @@ -59,10 +59,13 @@ const SkillSearch: React.FC<Props> = ({ skill }) => { | |||||
| deleteDialog(async () => { | deleteDialog(async () => { | ||||
| await deleteSkill(skill.id); | await deleteSkill(skill.id); | ||||
| successDialog(deleteSuccess, t); | successDialog(deleteSuccess, t); | ||||
| setFilteredSkill((prev) => prev.filter((obj) => obj.id !== skill.id)); | |||||
| }, t); | }, t); | ||||
| }, []); | }, []); | ||||
| useEffect(() => { | |||||
| setFilteredSkill(skill) | |||||
| }, [skill]); | |||||
| const columns = useMemo<Column<SkillResult>[]>( | const columns = useMemo<Column<SkillResult>[]>( | ||||
| () => [ | () => [ | ||||
| { | { | ||||
| @@ -90,10 +90,13 @@ const StaffSearch: React.FC<Props> = ({ staff, teams, grades, positions, isAuthe | |||||
| deleteDialog(async () => { | deleteDialog(async () => { | ||||
| await deleteStaff(staff.id); | await deleteStaff(staff.id); | ||||
| successDialog(t("Delete Success"), t); | successDialog(t("Delete Success"), t); | ||||
| setFilteredStaff((prev) => prev.filter((obj) => obj.id !== staff.id)); | |||||
| }, t); | }, t); | ||||
| }, []); | }, []); | ||||
| useEffect(() => { | |||||
| setFilteredStaff(staff) | |||||
| }, [staff]); | |||||
| const columns = useMemo<Column<StaffResult>[]>( | const columns = useMemo<Column<StaffResult>[]>( | ||||
| () => [ | () => [ | ||||
| { | { | ||||
| @@ -2,7 +2,7 @@ | |||||
| import { TeamResult } from "@/app/api/team"; | import { TeamResult } from "@/app/api/team"; | ||||
| import SearchBox, { Criterion } from "../SearchBox"; | import SearchBox, { Criterion } from "../SearchBox"; | ||||
| import { useCallback, useMemo, useState } from "react"; | |||||
| import { useCallback, useEffect, useMemo, useState } from "react"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| import SearchResults, { Column } from "../SearchResults/index"; | import SearchResults, { Column } from "../SearchResults/index"; | ||||
| import EditNote from "@mui/icons-material/EditNote"; | import EditNote from "@mui/icons-material/EditNote"; | ||||
| @@ -66,6 +66,10 @@ const TeamSearch: React.FC<Props> = ({ team }) => { | |||||
| }, t); | }, t); | ||||
| }, []); | }, []); | ||||
| useEffect(() => { | |||||
| setFilteredTeam(team) | |||||
| }, [team]); | |||||
| const columns = useMemo<Column<TeamResult>[]>( | const columns = useMemo<Column<TeamResult>[]>( | ||||
| () => [ | () => [ | ||||
| { | { | ||||
| @@ -1,7 +1,7 @@ | |||||
| "use client"; | "use client"; | ||||
| import SearchBox, { Criterion } from "../SearchBox"; | import SearchBox, { Criterion } from "../SearchBox"; | ||||
| import { useCallback, useMemo, useState } from "react"; | |||||
| import { useCallback, useEffect, useMemo, useState } from "react"; | |||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| import SearchResults, { Column } from "../SearchResults/index"; | import SearchResults, { Column } from "../SearchResults/index"; | ||||
| import EditNote from "@mui/icons-material/EditNote"; | import EditNote from "@mui/icons-material/EditNote"; | ||||
| @@ -9,7 +9,6 @@ import DeleteIcon from "@mui/icons-material/Delete"; | |||||
| import { useRouter } from "next/navigation"; | import { useRouter } from "next/navigation"; | ||||
| import { deleteDialog, successDialog } from "../Swal/CustomAlerts"; | import { deleteDialog, successDialog } from "../Swal/CustomAlerts"; | ||||
| import { UserGroupResult } from "@/app/api/group"; | import { UserGroupResult } from "@/app/api/group"; | ||||
| import { deleteUser } from "@/app/api/user/actions"; | |||||
| import { deleteGroup } from "@/app/api/group/actions"; | import { deleteGroup } from "@/app/api/group/actions"; | ||||
| interface Props { | interface Props { | ||||
| @@ -41,7 +40,6 @@ const UserGroupSearch: React.FC<Props> = ({ groups }) => { | |||||
| const onUserClick = useCallback( | const onUserClick = useCallback( | ||||
| (group: UserGroupResult) => { | (group: UserGroupResult) => { | ||||
| console.log(group); | |||||
| router.push(`/settings/group/edit?id=${group.id}`) | router.push(`/settings/group/edit?id=${group.id}`) | ||||
| }, | }, | ||||
| [router, t] | [router, t] | ||||
| @@ -51,11 +49,14 @@ const UserGroupSearch: React.FC<Props> = ({ groups }) => { | |||||
| deleteDialog(async () => { | deleteDialog(async () => { | ||||
| await deleteGroup(group.id); | await deleteGroup(group.id); | ||||
| successDialog(t("Delete Success"), t); | successDialog(t("Delete Success"), t); | ||||
| setFilteredGroups((prev) => prev.filter((obj) => obj.id !== group.id)); | |||||
| }, t); | }, t); | ||||
| }, []); | }, []); | ||||
| useEffect(() => { | |||||
| setFilteredGroups(groups) | |||||
| }, [groups]); | |||||
| const columns = useMemo<Column<UserGroupResult>[]>( | const columns = useMemo<Column<UserGroupResult>[]>( | ||||
| () => [ | () => [ | ||||
| { | { | ||||
| @@ -1,6 +1,6 @@ | |||||
| import React from "react"; | import React from "react"; | ||||
| import UserGroupSearchLoading from "./UserGroupSearchLoading"; | import UserGroupSearchLoading from "./UserGroupSearchLoading"; | ||||
| import { UserGroupResult, fetchGroup } from "@/app/api/group"; | |||||
| import { fetchGroup } from "@/app/api/group"; | |||||
| import UserGroupSearch from "./UserGroupSearch"; | import UserGroupSearch from "./UserGroupSearch"; | ||||
| interface SubComponents { | interface SubComponents { | ||||
| @@ -9,6 +9,7 @@ interface SubComponents { | |||||
| const UserGroupSearchWrapper: React.FC & SubComponents = async () => { | const UserGroupSearchWrapper: React.FC & SubComponents = async () => { | ||||
| const group = await fetchGroup() | const group = await fetchGroup() | ||||
| console.log(group) | |||||
| return <UserGroupSearch groups={group.records} />; | return <UserGroupSearch groups={group.records} />; | ||||
| }; | }; | ||||