@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
TypeScript
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