@uex/web-extensions
Version:
## Installation
130 lines (129 loc) • 4.31 kB
TypeScript
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;
}