"use client"; import { ColumnDef, ColumnResizeDirection, ColumnResizeMode, flexRender, getCoreRowModel, getPaginationRowModel, getSortedRowModel, SortingState, useReactTable, } from "@tanstack/react-table"; import React, { FC, useEffect } from "react"; import { Breadcrumb, Button, Checkbox, Label, Modal, Table, TextInput, } from "flowbite-react"; import { FaArrowDownLong, FaArrowUp } from "react-icons/fa6"; import { init_column } from "../tablelist/lib/column"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; import TabSlider from "../ui/tabslider"; import { useLocal } from "@/lib/utils/use-local"; export const TabHeader: React.FC = ({ name, column, onLabel, onValue, onLoad, take = 20, header, tabContent, disabledPagination, onChange, }) => { const sideRight = typeof header?.sideRight === "function" ? header.sideRight : null; const local = useLocal({ data: [] as any[], sort: {} as any, search: null as any, reload: async () => { const res: any = onLoad({ search: local.search, sort: local.sort, take, paging: 1, }); if (res instanceof Promise) { res.then((e) => { local.data = e; local.render(); }); } else { local.data = res; local.render(); } }, }); useEffect(() => { if (typeof onLoad === "function") { const res: any = onLoad({ search: local.search, sort: local.sort, take: 10, paging: 1, }); if (res instanceof Promise) { res.then((e) => { local.data = e; local.render(); }); } else { local.data = res; local.render(); } } else { local.data = onLoad; local.render(); } }, []); if (!local.data?.length) return <>; return (
{local.data.map((e, idx) => { return ( { if (typeof onChange === "function") { onChange(e); } }} className={cx( "p-1.5 px-4 border text-sm rounded-full text-gray-500 border-none", !idx ? "" : idx++ === local.data.length ? "mr-2" : "" )} key={onValue(e)} > {onLabel(e)} ); })} {local.data.map((e) => { return (
{tabContent(e)}
); })}
); };