import React from "react"; import { IResourceComponentsProps, BaseRecord } from "@refinedev/core"; import { useTable, List, EditButton, ShowButton, DateField, CloneButton, } from "@refinedev/antd"; import { Table, Space, Button } from "antd"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; import { genericSorter, getSortOrderForField, typeSorters, } from "../../utils/sorting"; import { genericFilterer, typeFilters } from "../../utils/filtering"; import { IVendor } from "./model"; import { useInitialTableState, useStoreInitialState, } from "../../utils/saveload"; import { FilterOutlined } from "@ant-design/icons"; dayjs.extend(utc); export const VendorList: React.FC = () => { // Load initial state const initialState = useInitialTableState("vendorList"); // Fetch data from the API const { tableProps, sorters, filters, setSorters, setFilters } = useTable({ syncWithLocation: false, pagination: { mode: "off", // Perform pagination in antd's Table instead. Otherwise client-side sorting/filtering doesn't work. }, sorters: { mode: "off", // Disable server-side sorting initial: initialState.sorters, }, filters: { mode: "off", // Disable server-side filtering initial: initialState.filters, }, }); // Type the sorters and filters const typedSorters = typeSorters(sorters); const typedFilters = typeFilters(filters); // Store state in local storage useStoreInitialState("vendorList", { sorters, filters }); // Copy dataSource to avoid mutating the original const dataSource = [...(tableProps.dataSource || [])]; // Filter dataSource by the filters const filteredDataSource = dataSource.filter(genericFilterer(typedFilters)); // Sort dataSource by the sorters filteredDataSource.sort(genericSorter(typedSorters)); return ( ( <> {defaultButtons} )} > ( )} /> ( )} />
); };