///
import { Context, ContextRule } from '../form/context';
import { ItemSchema } from './schema';
import { FieldProps } from '../form/field';
import { Widget } from '../form/widgets';
import { IValuesView } from './IValuesView';
import { FieldRule } from '../inputRules';
import { ChangedHandler, ChangingHandler, PickId } from '../../ui';
export declare type TypeWidget = new (context: Context, itemSchema: ItemSchema, fieldProps: FieldProps, children: React.ReactNode) => Widget;
export declare type UiType = 'form' | 'arr' | 'group' | 'button' | 'submit' | 'custom' | 'image' | 'id' | 'pick' | 'text' | 'textarea' | 'password' | 'date' | 'datetime' | 'select' | 'url' | 'email' | 'time' | 'updown' | 'number' | 'color' | 'checkbox' | 'checkboxes' | 'radio' | 'range' | 'tagSingle' | 'tagMulti';
export interface Pick {
ref(): JSX.Element;
pick(): Promise;
}
export interface UiItem {
widget?: UiType;
readOnly?: boolean;
disabled?: boolean;
visible?: boolean;
label?: string | JSX.Element;
labelHide?: boolean;
className?: string;
onChanging?: ChangingHandler;
onChanged?: ChangedHandler;
rules?: (ContextRule | FieldRule) | ((ContextRule | FieldRule)[]);
Templet?: TempletType;
discription?: (string | JSX.Element | (() => JSX.Element));
discriptionClassName?: string;
defaultValue?: any;
hiden?: boolean;
}
export interface UiCustom extends UiItem {
widget: 'custom';
WidgetClass: TypeWidget;
}
export interface UiPick extends UiItem {
widget: 'pick';
pick: Pick;
}
export interface UiImageItem extends UiItem {
widget: 'image';
size: 'sm' | 'lg';
}
export interface UiIdItem extends UiItem {
widget: 'id';
placeholder?: string | JSX.Element;
pickId?: PickId;
}
export interface UiInputItem extends UiItem {
placeholder?: string;
rules?: FieldRule | FieldRule[];
}
export interface UiTextItem extends UiInputItem {
widget: 'text';
}
export interface UiTextAreaItem extends UiInputItem {
widget: 'textarea';
rows?: number;
}
export interface UiPasswordItem extends UiInputItem {
widget: 'password';
}
export interface UiRange extends UiInputItem {
widget: 'range';
min?: number;
max?: number;
step?: number;
}
export interface UiNumberItem extends UiInputItem {
widget: 'number';
min?: number;
max?: number;
step?: number;
}
export interface UiDate extends UiInputItem {
widget: 'date';
min?: Date;
max?: Date;
}
export interface UiDateTime extends UiInputItem {
widget: 'datetime';
min?: Date;
max?: Date;
}
export interface UiTime extends UiInputItem {
widget: 'time';
min?: Date;
max?: Date;
}
export interface UiCheckItem extends UiItem {
widget: 'checkbox';
trueValue?: any;
falseValue?: any;
}
export interface UiSelectListItem {
value: any;
title: string;
}
export interface UiSelectBase extends UiItem {
rules?: FieldRule | FieldRule[];
list: UiSelectListItem[];
}
export interface UiSelect extends UiSelectBase {
widget: 'select';
}
export interface UiRadio extends UiSelectBase {
widget: 'radio';
}
export interface UiTag extends UiItem {
widget: 'tagSingle' | 'tagMulti';
valuesView: IValuesView;
wrapClassName?: string;
}
export interface UiTagSingle extends UiTag {
widget: 'tagSingle';
}
export interface UiTagMulti extends UiTag {
widget: 'tagMulti';
}
export interface UiItemCollection {
[field: string]: UiItem;
}
export declare type TempletType = ((item?: any) => JSX.Element) | JSX.Element;
export interface UiSchema {
items?: UiItemCollection;
Templet?: TempletType;
readonly?: boolean;
disabled?: boolean;
className?: string;
selectable?: boolean;
deletable?: boolean;
restorable?: boolean;
rules?: ContextRule | ContextRule[];
}
export interface UiArr extends UiSchema, UiItem {
widget: 'arr';
rules?: ContextRule | ContextRule[];
ArrContainer?: (label: any, content: JSX.Element) => JSX.Element;
RowContainer?: (content: JSX.Element) => JSX.Element;
RowSeperator?: JSX.Element;
onDeleted?: (row: any) => void;
onRestored?: (row: any) => void;
}
export interface UiGroup extends UiItem {
widget: 'group';
with: string[];
}
export interface UiButton extends UiItem {
widget: 'button';
}