'use client'; import React, { useState, useEffect } from "react"; import { apiPostFetcher } from "@/lib/fetcher"; import { ApiPaginationRequestWithQuery } from "@/validations/mutual/api/requests/validations"; import { TableComponentProps } from "@/validations/mutual/table/type"; import ComponentTable from "../mutual/TableCardPlain"; import PaginationComponent from "../mutual/UpperPagination"; import LowerPagination from "../mutual/LowerPagination"; const TableCardComponent: React.FC = ({ urls, schemas, translations, columns, initPagination, }) => { const defaultPagination = { page: initPagination?.page || 1, size: initPagination?.size || 10, orderFields: initPagination?.orderFields || [], orderTypes: initPagination?.orderTypes || [], query: initPagination?.query || {}, } const [data, setData] = useState(null); const [pagination, setPagination] = useState(defaultPagination); const [apiPagination, setApiPagination] = useState({ onPage: 1, onPageCount: 10, totalPage: 1, totalCount: 1, next: false, back: false, }); const handleBack = async () => { setPagination({ ...pagination, page: pagination.page > 1 ? pagination.page - 1 : pagination.page }); await fetchData(); } const handleNext = async () => { setPagination({ ...pagination, page: pagination.page < apiPagination.totalPage ? pagination.page + 1 : pagination.page }); await fetchData(); } const fetchData = async () => { const response = await apiPostFetcher({ url: urls.list, isNoCache: true, body: { page: pagination.page, size: pagination.size, orderFields: pagination.orderFields, orderTypes: pagination.orderTypes, query: pagination.query, }, }); if (response && response.data) { setData(response.data.data); if (response.data.pagination) { setApiPagination(response.data.pagination); } } }; useEffect(() => { fetchData() }, [pagination.page, pagination.size, pagination.orderFields, pagination.orderTypes]); const upperPaginationProps = { apiPagination, pagination, setPagination, defaultPagination, } const lowerPaginationProps = { pagination: apiPagination, handleBack, handleNext, } const tableProps = { data, columns, translations, } return (

Post Data Page

); } export default TableCardComponent;