///
export declare type ColumnType = {
name: string;
label?: string;
hidden?: boolean;
sort?: ((a: RowType, b: RowType) => number) | undefined;
render?: ({ value, row }: {
value: any;
row: T;
}) => React.ReactNode;
headerRender?: HeaderRenderType;
};
export declare type ColumnStateType = {
name: string;
label: string;
hidden: boolean;
sort?: ((a: RowType, b: RowType) => number) | undefined;
sorted: {
on: boolean;
asc?: boolean;
};
headerRender?: HeaderRenderType;
};
export declare type HeaderRenderType = ({ label }: {
label: React.ReactNode;
}) => React.ReactNode;
export declare type HeaderType = {
name: string;
label?: string;
hidden?: boolean;
sorted: {
on: boolean;
asc?: boolean;
};
sort?: ((a: RowType, b: RowType) => number) | undefined;
render: () => React.ReactNode;
};
export declare type DataType = {
[key: string]: any;
};
export declare type ColumnByNamesType = {
[key: string]: ColumnType;
};
export declare type RenderFunctionType = ({ value, row }: RenderFunctionArgsType) => React.ReactNode | undefined;
declare type RenderFunctionArgsType = {
value: any;
row: T;
};
export declare type ColumnByNameType = Omit>, "name" | "sort">;
export interface RowType {
id: number;
cells: CellType[];
hidden?: boolean;
selected?: boolean;
original: T;
}
export declare type CellType = {
value: any;
render: () => React.ReactNode;
};
export interface UseTableTypeParams {
columns: ColumnType[];
data: T[];
options?: {
sortable?: boolean;
selectable?: boolean;
filter?: (row: RowType[]) => RowType[];
filterOn?: boolean;
};
}
export interface UseTablePropsType {
columns: ColumnType[];
data: T[];
options?: {
sortable?: boolean;
selectable?: boolean;
filter?: (row: RowType[]) => RowType[];
};
}
export interface UseTableOptionsType {
sortable?: boolean;
selectable?: boolean;
pagination?: boolean;
sortColumn?: string;
filter?: (row: RowType[]) => RowType[];
}
export interface UseTableReturnType {
headers: HeaderType[];
originalRows: RowType[];
rows: RowType[];
selectedRows: RowType[];
dispatch: React.Dispatch>;
toggleSort: (columnName: string, isAscOverride?: boolean) => void;
selectRow: (id: number) => void;
toggleAll: () => void;
setSearchString: (searchString: string) => void;
toggleAllState: boolean;
pagination: PaginatorType;
}
declare type PaginatorType = {
nextPage: () => void;
prevPage: () => void;
page: number;
perPage: number;
canNext: boolean;
canPrev: boolean;
};
export declare type TableState = {
columnsByName: ColumnByNamesType;
columns: ColumnStateType[];
rows: RowType[];
originalRows: RowType[];
selectedRows: RowType[];
filterOn: boolean;
sortColumn: string | null | undefined;
toggleAllState: boolean;
pagination: PaginatorType;
paginationEnabled: boolean;
};
export declare type TableAction = {
type: "TOGGLE_SORT";
columnName: string;
isAscOverride?: boolean;
} | {
type: "SELECT_ROW";
rowId: number;
} | {
type: "GLOBAL_FILTER";
filter: (row: RowType[]) => RowType[];
} | {
type: "SEARCH_STRING";
searchString: string;
} | {
type: "GLOBAL_FILTER_OFF";
} | {
type: "SET_ROWS";
data: RowType[];
} | {
type: "NEXT_PAGE";
} | {
type: "PREV_PAGE";
} | {
type: "TOGGLE_ALL";
};
export {};