import { useRouter } from 'next/router' import { Button } from 'primereact/button' import { Card } from 'primereact/card' import { DataTable } from 'primereact/datatable' import { InputText } from 'primereact/inputtext' import { Paginator } from 'primereact/paginator' import { Toolbar } from 'primereact/toolbar' /** * CUSTOM DATATABLES PRIME REACT * @children column-column data * @data isi dari datatables * @dataDrawPrev untuk cek apakah ada data sebelumnya * @dataDrawNext untuk cek apakah ada data setelahnya * @draw untuk merubah draw/page datatables * @setDraw untuk merubah draw/page datatables * @buttonUpload button untuk upload data * @buttonUploadLabel label button add * @buttonAdd button untuk add data * @buttonAddLabel label button add * @dialogForm usestate untuk open/close dialog/modal form * @setDialogForm set dialog form modal untuk set open/close * @Form form modal dynamic * @dataEdit state yang menyimpan data yang akan di edit * @setDataEdit set state data edit * @refresh state untuk refresh datatables * @toast reference untuk toast * @setSearch set state untuk pencarian pada datatables * @buttonAddCustom untuk add pengajuan tagihan * @buttonAddCustomLabel label button add custom * @expandRow untuk detail row * @fiturSearch untuk tampil kolom search */ export const DatatablePrime = ({ children, data, dataDrawPrev = 0, dataDrawNext = 0, draw, setDraw, buttonUpload, buttonUploadLabel, buttonAdd, buttonAddLabel, dialogForm, setDialogForm, setDialogUpload, Form, dataEdit, setDataEdit, refresh, toast, setSearch, buttonAddCustom, buttonAddCustomLabel, linkCustom, expandRow, fiturSearch = true, showHeader = true, }) => { const first = 0 const rows = 30 const router = useRouter() const keyUpSearch = (data) => { setSearch(data) } const leftToolbarTemplate = () => { return <> } const rightToolbarTemplate = () => { return ( <>
{buttonUpload && (
) } const dtHeader = () => { return (
{fiturSearch && (
keyUpSearch(e.target.value)} placeholder='Search' />
)}
) } const templatePaginator = { layout: 'PrevPageLink NextPageLink', PrevPageLink: () => { return ( ) }, NextPageLink: () => { return ( ) }, } return ( <> {children} {(data.length === 30 || draw > 1) && ( )} {dialogForm && (
)} ) }