///
export * from './components';
export declare namespace FlexTable {
type Element = React.HTMLAttributes & {
cellClassName?: (ClassNameHandler | string);
};
interface Editable {
isEditing: boolean;
editID: ID | null;
}
interface Insertable {
disableInsert?: boolean;
}
interface Savable {
onSave: SaveHandler;
onCancel: CancelHandler;
}
interface Updatable {
onEdit: EditHandler;
onDelete?: DeleteHandler;
}
interface Header {
headerText?: JSX.Element | string;
headerClass?: (() => string) | string;
binding?: any;
getLink?: any;
onRender?: any;
formatter?: any;
onAction?: any;
hideHeader?: boolean;
}
interface Item {
item?: T;
}
interface Table {
items?: T[];
}
interface Groupable {
groupOn?: (item: T) => ID;
groupHeader?: (items: T[]) => JSX.Element;
}
type ValidationTest = {
passCondition: (params: P) => boolean;
result: M;
};
type FormChildNodes = ElementType | ElementType[];
type TableChildNodes = null | ColumnType | ColumnType[];
type ValidationResult = {
success: boolean;
results: M[] | [];
};
type RowProps = {
className?: ClassNameHandler;
onClick?: RowOnClickHandler;
};
type DataTableProps = TableElement & {
readonly header?: TableRenderer;
readonly footer?: TableRenderer;
readonly itemRenderer?: RowRenderer;
readonly row?: RowProps;
readonly footerClassName?: string;
children: TableChildNodes;
};
type FormProps = Form & {
getState: () => T;
children?: FormChildNodes;
validationTests?: ValidationTest[];
onValidation?: (messages: M[]) => void;
};
type FormRenderHandler = (props: Item) => JSX.Element;
type EditableTableProps = EditableTable & DataTableProps & {
form: FormRenderHandler;
getId: (item: T) => ID;
nonEditableRow?: NonEditableRowHandler;
insertItem?: any;
};
type ClassNameHandler = ((item: any) => string) | undefined;
type RowOnClickHandler = ((item: any) => void) | undefined;
type NonEditableRowHandler = ((item: any) => boolean) | undefined;
type Form = Savable & Item & Table;
type EditableTable = Editable & Insertable & Updatable & Table & Groupable;
type EditableList = Editable & Table;
type HeaderElement = Header & Element & Item;
type ItemElement = Item & Element;
type TableElement = Table & Groupable & React.HTMLAttributes;
type ElementType = React.ReactElement;
type ColumnType = React.ReactElement>;
type Handler = (item: any, e: TEvent) => void;
type SaveHandler = (item: T) => void;
type CancelHandler = () => void;
type EditHandler = (id: ID | null) => void;
type DeleteHandler = (id: ID) => void;
type Renderer = () => React.ReactElement;
type ColumnRenderer = >(item: T) => React.ReactElement | string;
type RowRenderer = >(item: T, columns: React.ReactElement[], row: RowProps, defaultRenderer?: () => React.ReactElement) => React.ReactElement;
type TableRenderer = (>(items: T[]) => React.ReactElement | null) | false;
type ColumnProps = ItemElement & HeaderElement;
type ActionHandler = Handler>;
interface ActionColumnProps extends ColumnProps {
onAction: ActionHandler;
}
interface BoundColumnProps extends ColumnProps {
binding: ((item: T) => React.ReactNode) | string;
formatter?: (value: TValue) => React.ReactNode;
children?: never;
}
interface CustomColumnProps extends ColumnProps {
onRender: ColumnRenderer;
children?: never;
onAction?: ActionHandler;
}
interface LinkColumnProps extends ColumnProps {
getLink: (item: T) => string;
}
interface SubTableProps extends ColumnProps {
isVisible: (item: T) => boolean;
hideHeader: boolean | undefined;
onSubTableRender: (item: any) => JSX.Element;
}
}
//# sourceMappingURL=index.d.ts.map