react-smart-data-table
Version:
A smart data table component for React.js meant to be configuration free
86 lines (85 loc) • 4.38 kB
TypeScript
import { CSSProperties, MouseEvent, ReactNode } from 'react';
export declare type UnknownObject<T = unknown> = Record<string, T>;
export declare type ParseBool = {
noWord: string;
yesWord: string;
};
export declare type ParseImg = {
style: CSSProperties;
className: string;
};
export declare type TransformFN<T = UnknownObject> = (value: unknown, index: number, row: T) => ReactNode;
export declare type RowClickFN<T = UnknownObject> = (event: MouseEvent<HTMLElement>, { rowData, rowIndex, tableData, }: {
rowData: T;
rowIndex: number;
tableData: T[];
}) => void;
export declare type CompareFunction<T> = (a: T, b: T) => number;
export declare type HeaderSortable<T> = boolean | CompareFunction<T>;
export interface Column<T> {
key: string;
text: string;
invisible: boolean;
sortable: HeaderSortable<T>;
filterable: boolean;
isImg: boolean;
transform?: TransformFN<T>;
}
export declare type Headers<T> = Record<string, Column<T>>;
export declare type Sorting = {
key: string;
dir: string;
};
export interface Highlight {
first: string | undefined;
highlight: string | undefined;
last: string | undefined;
value: string;
}
export interface RenderOptions {
children?: ReactNode;
content?: ReactNode;
parseBool?: boolean | ParseBool;
}
export declare type KeyResolverFN<T = UnknownObject> = (args: T) => T[];
export interface FetchDataOptions<T = UnknownObject> {
dataKey?: string;
dataKeyResolver?: KeyResolverFN<T>;
options?: RequestInit;
}
export declare const head: <T>([first]: T[]) => T;
export declare const tail: <T>(arr: T[]) => T;
export declare const isString: (str: unknown) => boolean;
export declare const isArray: <T = unknown>(obj: T) => boolean;
export declare const isObject: <T = unknown>(obj: T) => boolean;
export declare const isEmpty: <T = UnknownObject<unknown>>(obj: T | unknown[]) => boolean;
export declare const isFunction: (fn: (...args: unknown[]) => unknown) => boolean;
export declare const isNumber: <T = unknown>(num: T) => boolean;
export declare const isUndefined: <T = unknown>(undef: T) => boolean;
export declare const capitalize: (str: string) => string;
export declare const sortBy: <T = UnknownObject<unknown>>(arr: T[], key: string, compareFn: HeaderSortable<T>) => T[];
export declare const cleanLonelyInt: (val: string) => boolean;
export declare const debugPrint: (...args: unknown[]) => void;
export declare const errorPrint: (...args: unknown[]) => void;
export declare function generatePagination(activePage?: number, totalPages?: number, margin?: number): {
active: boolean;
value: number | undefined;
text: string;
}[];
export declare function getNestedObject<T = UnknownObject>(nestedObj: T, pathArr: string[]): unknown;
export declare function fetchData<T = UnknownObject>(data: string | unknown[], { dataKey, dataKeyResolver, options, }?: FetchDataOptions<T>): Promise<T[]>;
export declare function capitalizeAll(arr: string[]): string;
export declare function parseHeader(val: string): string;
export declare function valueOrDefault<T = unknown>(value: T, defaultValue: T): T;
export declare function columnObject<T>(key: string, headers?: Headers<T>): Column<T>;
export declare function getSampleElement<T = UnknownObject>(data?: T[], dataSampling?: number): T;
export declare function parseDataForColumns<T = UnknownObject>(data?: T[], headers?: Headers<T>, orderedHeaders?: string[], hideUnordered?: boolean, dataSampling?: number): Column<T>[];
export declare function parseDataForRows<T = UnknownObject>(data?: T[]): T[];
export declare function filterRowsByValue<T = UnknownObject>(value: string, rows: T[], colProperties: Headers<T>): T[];
export declare function filterRows<T = UnknownObject>(value: string, rows: T[], colProperties: Headers<T>): T[];
export declare function sliceRowsPerPage<T = UnknownObject>(rows: T[], currentPage: number, perPage: number): T[];
export declare function sortData<T = UnknownObject>(filterValue: string, colProperties: Headers<T>, sorting: Sorting, data: T[]): T[];
export declare function isDataURL(url: unknown): boolean;
export declare function isImage(url: unknown): boolean;
export declare function highlightValueParts(value: string, filterValue: string): Highlight;
export declare function getRenderValue({ children, content, parseBool, }?: RenderOptions): string;