import { useEffect, useState } from "react"; import { keepPreviousData, useMutation, useQuery } from "@tanstack/react-query"; import { getCoreRowModel, type PaginationState } from "@tanstack/react-table"; import { Button, Input, Label } from "@common/components"; import { LwpoCodeApi, type LwpoCodeParams } from "@/entities/code"; import { ENDPOINT } from "@/shared/config"; import { useAlertStore, useDataTable } from "@/shared/lib"; import { columns } from "../model/lwpocode-table-columns"; import { LwpoCodeManagementDialog } from "./lwpocode-dialog"; type LwpoCodeSectionProps = { upCd?: string; }; function LwpoCodeSection({ upCd }: LwpoCodeSectionProps) { const alert = useAlertStore((state) => state.setMessage); const [dialogOpen, setDialogOpen] = useState(false); const [lwpoCodeQuery, setLwpoCodeQuery] = useState({ lwpoCdNm: "", }); const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10, }); const query = useQuery({ queryKey: [ENDPOINT.CMS_SERVICE.LWPO_CODE, upCd, pagination], queryFn: () => LwpoCodeApi.getLwpoCodeList({ ...lwpoCodeQuery, upCd, page: pagination.pageIndex, size: pagination.pageSize, }), enabled: !!upCd, placeholderData: keepPreviousData, }); const { mutateAsync: codeRefreshAll } = useMutation({ mutationFn: LwpoCodeApi.codeRefreshAll, onSuccess: () => { alert("코드 갱신이 완료되었습니다."); }, }); const { tableComponent } = useDataTable({ query, tableOptions: { columns, state: { pagination }, manualPagination: true, enableMultiRowSelection: false, getCoreRowModel: getCoreRowModel(), onPaginationChange: setPagination, getRowId: (row) => row.lwpoCd, }, dataTableOptions: { viewPagination: true }, }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); query.refetch(); }; useEffect(() => { setPagination({ ...pagination, pageIndex: 0 }); }, [upCd]); return (
setLwpoCodeQuery({ ...lwpoCodeQuery, lwpoCdNm: e.target.value, }) } />

하위코드 목록

{tableComponent}
); } export { LwpoCodeSection };