UNPKG

@vlsergey/react-bootstrap-pagetable

Version:

Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.

39 lines 2.07 kB
import { ReactNode } from 'react'; import ItemModel from './ItemModel'; export declare type ValueGetter<I, V, F> = ((item: I, fieldModel: FieldModel<I, V, F>, itemType: ItemModel<I>) => V); export interface FilterCellRendererProps<I, V, F> { field: FieldModel<I, V, F>; filterBy: F | undefined; onFilterByChange: (filterBy: F | undefined) => unknown; } export interface FilterValueConverter<F> { fromStrings: (str: string[]) => F | undefined; toStrings: (filterBy: F) => string[]; } export interface ValueRendererProps<ItemType, ValueType> { value: ValueType; item: ItemType; } interface FieldModel<ItemType, ValueType, FilterValueType> { key: string; title: string; description?: ReactNode; hiddenByDefault?: boolean; sortable?: boolean; renderFilterCell?: React.ComponentType<FilterCellRendererProps<ItemType, ValueType, FilterValueType>>; filterValueConverter?: FilterValueConverter<FilterValueType>; getter?: ValueGetter<ItemType, ValueType, FilterValueType>; render?: React.ComponentType<ValueRendererProps<ItemType, ValueType>>; headerCellContent?: React.ComponentType<{ field: FieldModel<ItemType, ValueType, FilterValueType>; }>; headerCellProps?: React.ComponentProps<'th'>; valueCellProps?: (value: ValueType, item: ItemType, fieldModel: FieldModel<ItemType, ValueType, FilterValueType>) => Record<string, unknown>; } export declare const defaultGetter: <I, V, F>(item: I, fieldModel: FieldModel<I, V, F>) => V; export declare function defaultFilterValueConverter<F>(): FilterValueConverter<F>; export declare function defaultHeaderCellProps<I, V, F>(): ((fieldModel: FieldModel<I, V, F>) => Record<string, unknown>); export declare function defaultValueCellProps<I, V, F>(): ((value: V, item: I, fieldModel: FieldModel<I, V, F>) => Record<string, unknown>); export declare function defaultRender<ValueType>({ value }: ValueRendererProps<ValueType, unknown>): ReactNode; export default FieldModel; //# sourceMappingURL=FieldModel.d.ts.map