@arteneo/forge
Version:
90 lines (89 loc) • 6.08 kB
TypeScript
import React from "react";
import { AxiosResponse, AxiosError } from "axios";
import { FormikHelpers, FormikValues } from "formik";
import FieldsInterface from "../../../components/Form/definitions/FieldsInterface";
import ColumnsInterface from "../../../components/Table/definitions/ColumnsInterface";
import QueryInterface from "../../../components/Table/definitions/QueryInterface";
import SortingDirection from "../../../components/Table/definitions/SortingDirection";
import SortingInterface from "../../../components/Table/definitions/SortingInterface";
import FiltersInterface from "../../../components/Table/definitions/FiltersInterface";
import FilterValuesInterface from "../../../components/Table/definitions/FilterValuesInterface";
import ResultInterface from "../../../components/Table/definitions/ResultInterface";
import BatchSelectedType from "../../../components/Table/definitions/BatchSelectedType";
import BatchQueryInterface from "../../../components/Table/definitions/BatchQueryInterface";
import ColumnNamesType from "../../../components/Table/definitions/ColumnNamesType";
import EndpointType from "../../../definitions/EndpointType";
interface TableContextProps {
columns: ColumnsInterface;
results: ResultInterface[];
page: number;
rowCount: number;
rowsPerPage: number;
rowsPerPageOptions: number[];
disablePagination: boolean;
onChangePage: (event: React.MouseEvent<HTMLButtonElement> | null, page: number) => void;
onChangeRowsPerPage: (event: any) => void;
toolbar?: React.ReactNode;
filters: FilterValuesInterface;
filterFields?: FieldsInterface;
filterClass?: {
accordion: string;
accordionActive: string;
};
onSubmitFilters: (values: FormikValues, helpers: FormikHelpers<FormikValues>) => void;
isFiltersActive: () => boolean;
clearFilters: (setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void) => void;
sorting: SortingInterface;
isSortingActive: (field: string) => boolean;
getSortingDirection: (field: string) => undefined | SortingDirection;
onClickSorting: (field: string) => void;
applySorting: (field: string, direction: SortingDirection) => void;
removeSorting: (field: string) => void;
enableBatchSelect?: boolean;
selected: number[];
isSelected: (id: number) => boolean;
deselectAll: () => void;
selectAll: () => void;
addSelected: (id: number) => void;
removeSelected: (id: number) => void;
toggleSelected: (id: number) => void;
reload: () => void;
query: QueryInterface;
batchQuery: BatchQueryInterface;
visibleColumns: ColumnNamesType;
defaultColumns: ColumnNamesType;
visibleColumnsKey?: string;
visibleColumnsEndpoint?: EndpointType;
setVisibleColumns?: React.Dispatch<React.SetStateAction<ColumnNamesType>>;
reloadVisibleColumns: () => void;
}
interface TableProviderProps {
columns: ColumnsInterface;
defaultColumns?: ColumnNamesType;
children: React.ReactNode;
endpoint: EndpointType;
onLoadSuccess?: (defaultOnLoadSuccess: () => void, response: AxiosResponse, setResults: React.Dispatch<React.SetStateAction<ResultInterface[]>>, setRowCount: React.Dispatch<React.SetStateAction<number>>, setSelected: React.Dispatch<React.SetStateAction<BatchSelectedType>>, setVisibleColumns: React.Dispatch<React.SetStateAction<ColumnNamesType>>) => void;
getQuery?: (defaultGetQuery: () => QueryInterface, getFiltersDefinitions: (filterValues: FilterValuesInterface) => FiltersInterface, page: number, rowsPerPage: number, sorting: SortingInterface, filters: FilterValuesInterface, additionalSorting?: SortingInterface, additionalFilters?: FiltersInterface) => QueryInterface;
getBatchQuery?: (defaultGetBatchQuery: () => BatchQueryInterface, getFiltersDefinitions: (filterValues: FilterValuesInterface) => FiltersInterface, getQuery: (page: number, rowsPerPage: number, sorting: SortingInterface, filters: FilterValuesInterface, additionalSorting?: SortingInterface, additionalFilters?: FiltersInterface) => QueryInterface, page: number, rowsPerPage: number, sorting: SortingInterface, filters: FilterValuesInterface, selected: BatchSelectedType, additionalSorting?: SortingInterface, additionalFilters?: FiltersInterface) => BatchQueryInterface;
rowsPerPage?: number;
rowsPerPageOptions?: number[];
disablePagination?: boolean;
toolbar?: React.ReactNode;
filters?: FieldsInterface;
defaultFilters?: FilterValuesInterface;
additionalFilters?: FiltersInterface;
defaultSorting?: SortingInterface;
additionalSorting?: SortingInterface;
queryKey?: string;
enableMultipleColumnsSorting?: boolean;
enableBatchSelect?: boolean;
visibleColumnsKey?: string;
visibleColumnsEndpoint?: EndpointType;
onVisibleColumnsLoadSuccess?: (defaultOnVisibleColumnsLoadSuccess: () => void, response: AxiosResponse, setVisibleColumns: React.Dispatch<React.SetStateAction<ColumnNamesType>>, visibleColumns: ColumnNamesType) => void;
onVisibleColumnsLoadCatch?: (defaultOnVisibleColumnsLoadCatch: () => void, error: AxiosError, setVisibleColumns: React.Dispatch<React.SetStateAction<ColumnNamesType>>, visibleColumns: ColumnNamesType) => void;
disableReloadOnLocationKeyChange?: boolean;
}
declare const TableContext: React.Context<TableContextProps>;
declare const TableProvider: ({ children, columns, defaultColumns: _defaultColumns, endpoint, onLoadSuccess, getQuery: _getQuery, getBatchQuery: _getBatchQuery, rowsPerPage: _rowsPerPage, rowsPerPageOptions, disablePagination, toolbar, filters: filterFields, defaultFilters, additionalFilters, defaultSorting, additionalSorting, queryKey: _queryKey, enableMultipleColumnsSorting, enableBatchSelect, visibleColumnsKey, visibleColumnsEndpoint, onVisibleColumnsLoadSuccess, onVisibleColumnsLoadCatch, disableReloadOnLocationKeyChange, }: TableProviderProps) => React.JSX.Element;
declare const useTable: () => TableContextProps;
export { TableContext, TableContextProps, TableProvider, TableProviderProps, useTable };