import PrimaryButton from "@/components/button/PrimaryButton"; import TextInput from "@/components/input/TextInput"; import Pagination from "@/components/pagination/Pagination"; import { useGetRaidLayoutsByRaidGroupCount } from "@/hooks/RaidLayoutHooks"; import { RaidGroup } from "@/interface/RaidGroup"; import { useEffect, useState } from "react"; import { useDebouncedCallback } from "use-debounce"; import RaidLayoutModal from "./modal/RaidLayoutModal"; import RaidLayoutLoader from "./RaidLayoutLoader"; export default function RaidLayoutTab({ raidGroup }:{ raidGroup: RaidGroup; }){ const [ displayCreateRaidLayoutModal, setDisplayCreateRaidLayoutModal ] = useState(false); const [ page, setPage ] = useState(1); const [ totalPages, setTotalPages ] = useState(1); const [ searchTerm, setSearchTerm ] = useState(""); const [ sentSearchTerm, setSentSearchTerm ] = useState(); const pageSize = 10; const modalId = crypto.randomUUID().replaceAll("-", ""); const raidLayoutCountQuery = useGetRaidLayoutsByRaidGroupCount(raidGroup.raidGroupId!, sentSearchTerm); const updateSearchTerm = useDebouncedCallback((newSearchTerm: string) => { setSentSearchTerm(newSearchTerm); }, 1000); useEffect(() => { updateSearchTerm(searchTerm); }, [ searchTerm, updateSearchTerm ]); useEffect(() => { if(raidLayoutCountQuery.status === "success"){ setTotalPages(Math.ceil(raidLayoutCountQuery.data / pageSize)); } }, [ raidLayoutCountQuery ]); return ( <>
 
{/* Add Raid Layout Button */}
setDisplayCreateRaidLayoutModal(true)} > Create Raid Layout setDisplayCreateRaidLayoutModal(false)} raidLayout={undefined} raidGroup={raidGroup} selectedClassGroups={[]} />
{/* Raid Layout Search Box */}
setSearchTerm(e.target.value)} placeholder="Search" />
{/* Raid Layout List */} {/* Pagination */}
); }