UNPKG

@uex/web-extensions

Version:

## Installation

130 lines (129 loc) 4.31 kB
import { FormData } from './classes/data'; import { FormSchema } from './classes/schema'; import { FormSchemaValidations } from './form.validators'; export interface BaseFormSchemaData { key?: string; type?: string; label: string; grid?: FormGrid; autofocus?: boolean; disabled?: any; validations?: FormSchemaValidations; events?: FormSchemaEvents; value?: any; } export declare type FormSchemaTypes = FormTextSchemaTypes | FormTextareaSchemaTypes | FormNumberSchemaTypes | FormDateTimeSchemaTypes | FormFileSchemaTypes | FormBooleanSchemaTypes | FormSelectSchemaTypes | FormTypeSearchSchemaTypes; export declare type FormTextSchemaTypes = 'text' | 'email' | 'password' | 'tel' | 'url'; export declare type FormTextareaSchemaTypes = 'textarea'; export declare type FormNumberSchemaTypes = 'number'; export declare type FormDateTimeSchemaTypes = 'date' | 'time'; export declare type FormFileSchemaTypes = 'file'; export declare type FormBooleanSchemaTypes = 'checkbox' | 'toggle'; export declare type FormSelectSchemaTypes = 'select'; export declare type FormTypeSearchSchemaTypes = 'typeahead'; export interface FormTextSchemaData extends BaseFormSchemaData { type?: FormTextSchemaTypes; placeholder?: string; mask?: any; action_button?: FormActionButton; } export interface FormTextareaSchemaData extends BaseFormSchemaData { type: FormTextareaSchemaTypes; placeholder?: string; grid?: FormGrid; } export interface FormNumberSchemaData extends BaseFormSchemaData { type: FormNumberSchemaTypes; placeholder?: string; step?: string; action_button?: FormActionButton; } export interface FormDateTimeSchemaData extends BaseFormSchemaData { type: FormDateTimeSchemaTypes; placeholder?: string; action_button?: FormActionButton; } export interface FormFileSchemaData extends BaseFormSchemaData { type: FormFileSchemaTypes; } export interface FormBooleanSchemaData extends BaseFormSchemaData { type: FormBooleanSchemaTypes; color?: string; } export interface FormSelectSchemaData extends BaseFormSchemaData { type: FormSelectSchemaTypes; multiple?: boolean; options_label?: string; options_value?: string; options?: Array<any>; action_button?: FormActionButton; } export interface FormTypeSearchSchemaData extends BaseFormSchemaData { type: FormTypeSearchSchemaTypes; search: FormSchemaTypeSearch; search_list_accessor?: string; search_list_format?: (item: any) => string; search_value_accessor?: string; search_value_format?: (item: any) => any; search_input_accessor?: string; search_input_format?: (item: any) => string; search_list?: Array<any>; action_button?: FormActionButton; } export declare type FormSchemaData = FormTextSchemaData | FormTextareaSchemaData | FormNumberSchemaData | FormDateTimeSchemaData | FormFileSchemaData | FormBooleanSchemaData | FormSelectSchemaData | FormTypeSearchSchemaData; export declare type FormSchemaTypeSearch = (value: string, callback: (response: Array<any>) => void) => void; export interface AddSchemaOptions { before?: string; after?: string; } export interface FormValues { [key: string]: any; } export interface FormActionButton { icon?: string; label?: string; title?: string; onClick: FormActionButtonHandler; disabled?: Function; mode?: string; color?: string; size?: string; } export declare type FormActionButtonHandler = (event: FormActionButtonEvent) => void; export interface FormActionButtonEvent { eventRef: MouseEvent; schema: FormSchema; form: FormData; } export interface FormGrid { cols?: number | FormGridCols; rows?: number; offsets?: number | FormGridOffsets; } export interface FormGridCols { xs?: number; sm?: number; md?: number; lg?: number; xl?: number; } export interface FormGridOffsets extends FormGridCols { } export interface FormSubmitEvent { data: any; valid: boolean; errors: any; } export interface FormSchemaEvent { eventRef: any; form: FormData; schema: FormSchema; } export interface FormSchemaEvents { onKeydown?: Function; onKeyup?: Function; onKeypress?: Function; onChange?: Function; onFocus?: Function; onBlur?: Function; }