///
import { ID } from "tonwa-core";
import { FieldUIType } from "./fieldUI";
export declare type FieldItemType = 'id' | 'integer' | 'number' | 'string' | 'image' | 'date' | 'boolean' | 'object' | 'arr' | 'button' | 'submit';
declare type Context = {};
export declare type ChangingHandler = (context: Context, value: any, prev: any) => boolean;
export declare type ChangedHandler = (context: Context, value: any, prev: any) => Promise;
export interface FieldItem {
name: string;
type: FieldItemType;
ID?: ID;
label?: string | JSX.Element;
isKey?: boolean;
required?: boolean;
widget?: FieldUIType;
className?: string;
defaultValue?: string | number;
onChanging?: ChangingHandler;
onChanged?: ChangedHandler;
readOnly?: boolean;
hiden?: boolean;
}
export interface FieldItemObject extends FieldItem {
type: 'object';
}
export declare type PickId = (context: Context, name: string, value: number) => Promise;
export interface FieldItemId extends FieldItem {
type: 'id';
pickId: PickId;
render: (values: any) => JSX.Element;
}
export interface FieldItemNumBase extends FieldItem {
type: 'integer' | 'number';
min?: number;
max?: number;
readOnly?: true;
}
export interface FieldItemInt extends FieldItemNumBase {
type: 'integer';
}
export interface FieldItemNum extends FieldItemNumBase {
type: 'number';
}
export declare type FieldItemNumber = FieldItemNum;
export interface FieldItemBool extends FieldItem {
type: 'boolean';
}
export interface FieldItemString extends FieldItem {
type: 'string';
maxLength?: number;
readOnly?: true;
}
export interface FieldItemImage extends FieldItem {
type: 'image';
}
export interface FieldItemDate extends FieldItem {
type: 'date';
}
export interface FieldItemArr extends FieldItem {
type: 'arr';
arr: FieldItem[];
FieldItems: {
[name: string]: FieldItem;
};
}
export interface FieldItemButton extends FieldItem {
type: 'button' | 'submit';
}
export declare type FieldItems = FieldItem[];
export declare type FieldCustoms = {
[name: string]: Partial;
};
export {};