UNPKG

@arteneo/forge

Version:
90 lines (89 loc) 6.08 kB
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 };