"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { keepPreviousData, useQuery } from "@tanstack/react-query"; import { getCoreRowModel, type OnChangeFn, type PaginationState, } from "@tanstack/react-table"; import { ENDPOINT } from "@/shared/config"; import { useDataTable, useSearchParamsState } from "@/shared/lib"; import { type Authorizations, AuthorizationsApi, } from "@/entities/authorization"; import { CodeSelect } from "@/entities/code"; import { Button, Input, Label } from "@common/components"; import { columns } from "../model/authorizations-table-columns"; const DEFAULT_PARAMS = { authorizationName: "", urlPatternValue: "", httpMethodCode: "", sort: "regDt,desc", page: 0, size: 10, }; function ModulePage() { const router = useRouter(); const { params, setParams, resetParams } = useSearchParamsState(DEFAULT_PARAMS); const [authorizationName, setAuthorizationName] = useState( params.authorizationName, ); const [urlPatternValue, setUrlPatternValue] = useState( params.urlPatternValue, ); const [httpMethodCode, setHttpMethodCode] = useState(params.httpMethodCode); const query = useQuery({ queryKey: [ENDPOINT.USER_SERVICE.AUTHORIZATIONS, params], queryFn: () => AuthorizationsApi.getAuthorizationsList({ authorizationName: params.authorizationName, urlPatternValue: params.urlPatternValue, httpMethodCode: params.httpMethodCode, sort: params.sort, page: params.page, size: params.size, }), placeholderData: keepPreviousData, }); const pagination: PaginationState = { pageIndex: params.page, pageSize: params.size, }; const handlePaginationChange: OnChangeFn = (updater) => { const next = typeof updater === "function" ? updater(pagination) : updater; setParams({ page: next.pageIndex, size: next.pageSize }); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setParams({ authorizationName, urlPatternValue, httpMethodCode, page: 0 }); }; const handleReset = () => { setAuthorizationName(""); setUrlPatternValue(""); setHttpMethodCode(""); resetParams(); }; const handleRowClick = (row: Authorizations) => { router.push(`/module/register/${row.authorizationNo}`); }; const { tableComponent } = useDataTable({ query, tableOptions: { columns, state: { pagination, }, onPaginationChange: handlePaginationChange, getCoreRowModel: getCoreRowModel(), manualPagination: true, }, dataTableOptions: { onRowClick: handleRowClick, viewPagination: true, }, }); return (
setHttpMethodCode(value)} />
setAuthorizationName(e.target.value)} />
setUrlPatternValue(e.target.value)} />

모듈API 목록

{tableComponent}
); } export { ModulePage };