import { FormData } from './classes/data'; import { FormSchema } from './classes/schema'; import { FormSchemaValidations, FormSchemaValidationMessages } from './form.validators'; import { FormSchemaMask } from './form.mask'; import { IconMode } from '../icon/icon.component'; export interface FormSettings { groups: Array; schema: Array; } export interface FormSchemaGroupData { key: string; label?: string; icon?: string; description?: string; iconMode?: IconMode; } export interface FormSchemaGroup { key: string; label: string; icon: string; iconMode: string; description?: string; schema: Array; } export interface BaseFormSchemaData { key?: string; type?: FormSchemaTypes; group?: string; label?: string | FormSchemaStringFunction; helper?: HelperSchema; grid?: FormGrid; css_class?: string | FormSchemaStringFunction; autofocus?: boolean; disabled?: boolean | FormSchemaBooleanFunction; validations?: FormSchemaValidations; validation_messages?: FormSchemaValidationMessages; events?: FormSchemaEvents; value?: any; default_value?: any; } export declare type FormSchemaTypes = FormTextSchemaTypes | FormTextareaSchemaTypes | FormNumberSchemaTypes | FormColorSchemaTypes | FormDateTimeSchemaTypes | FormFileSchemaTypes | FormRadioSchemaTypes | FormBooleanSchemaTypes | FormSelectSchemaTypes | FormTypeSearchSchemaTypes | FormWysiwygSchemaTypes; export declare type FormTextSchemaTypes = 'text' | 'email' | 'password' | 'tel' | 'url'; export declare type FormTextareaSchemaTypes = 'textarea' | 'texteditor'; export declare type FormNumberSchemaTypes = 'number' | 'range'; export declare type FormColorSchemaTypes = 'color'; export declare type FormDateTimeSchemaTypes = 'date' | 'time'; export declare type FormFileSchemaTypes = 'file'; export declare type FormRadioSchemaTypes = 'radio'; export declare type FormBooleanSchemaTypes = 'checkbox' | 'toggle'; export declare type FormSelectSchemaTypes = 'select'; export declare type FormTypeSearchSchemaTypes = 'typeahead'; export declare type FormWysiwygSchemaTypes = 'wysiwyg'; export declare type FormSchemaDataWithActionButton = FormTextSchemaData | FormNumberSchemaData | FormDateTimeSchemaData | FormSelectSchemaData | FormTypeSearchSchemaData; export declare type FormSchemaDataWithIcon = FormTextSchemaData | FormNumberSchemaData | FormDateTimeSchemaData | FormSelectSchemaData | FormTypeSearchSchemaData; export interface FormTextSchemaData extends BaseFormSchemaData { type?: FormTextSchemaTypes; placeholder?: string | FormSchemaStringFunction; mask?: FormSchemaMask; spinner?: boolean | FormSchemaBooleanFunction; action_button?: FormSchemaActionButton; icon?: FormSchemaIcon; value?: string; default_value?: string; } export interface FormTextareaSchemaData extends BaseFormSchemaData { type: FormTextareaSchemaTypes; placeholder?: string | FormSchemaStringFunction; grid?: FormGridWithRows; value?: string; } export interface FormNumberSchemaData extends BaseFormSchemaData { type: FormNumberSchemaTypes; placeholder?: string | FormSchemaStringFunction; step?: string | number; action_button?: FormSchemaActionButton; icon?: FormSchemaIcon; value?: number; default_value?: number; } export interface FormColorSchemaData extends BaseFormSchemaData { type: FormColorSchemaTypes; placeholder?: string | FormSchemaStringFunction; action_button?: FormSchemaActionButton; icon?: FormSchemaIcon; value?: string; default_value?: string; } export interface FormDateTimeSchemaData extends BaseFormSchemaData { type: FormDateTimeSchemaTypes; placeholder?: string | FormSchemaStringFunction; action_button?: FormSchemaActionButton; icon?: FormSchemaIcon; value?: string | Date; default_value?: string | Date; } export interface FormFileSchemaData extends BaseFormSchemaData { type: FormFileSchemaTypes; placeholder?: string | FormSchemaStringFunction; action_button?: FormSchemaActionButton; allow_camera?: boolean; allowNotCropAction?: boolean; cropBoxResizable?: boolean; aspectRatio?: { width: number; height: number; }; minWidth?: number; minHeight?: number; zoomable?: boolean; icon?: FormSchemaIcon; value?: string; default_value?: string; } export interface FormRadioSchemaData extends BaseFormSchemaData { type: 'radio'; options?: Array; options_label_format?: (item: any) => string; options_label?: string; options_value_format?: (item: any) => string; options_value?: string; value?: any; default_value?: any; } export interface FormBooleanSchemaData extends BaseFormSchemaData { type: FormBooleanSchemaTypes; color?: string; value?: boolean; default_value?: boolean; } export interface FormSelectSchemaData extends BaseFormSchemaData { type: FormSelectSchemaTypes; placeholder?: string | FormSchemaStringFunction; multiple?: boolean; options?: Array; options_label_format?: (item: any) => string; options_label?: string; options_value_format?: (item: any) => string; options_value?: string; action_button?: FormSchemaActionButton; icon?: FormSchemaIcon; value?: any; default_value?: any; } export interface FormSelectSchemaFormattedOptions { label: string; value: any; checked?: boolean; } export interface FormTypeSearchSchemaData extends BaseFormSchemaData { type: FormTypeSearchSchemaTypes; placeholder?: string | FormSchemaStringFunction; match_only?: boolean; debounce?: number; 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; search_empty_text?: string | FormSchemaStringFunction; search_on_focus?: boolean; select_on_focus?: boolean; always_show_list?: boolean; action_button?: FormSchemaActionButton; icon?: FormSchemaIcon; value?: any; default_value?: any; } export interface FormWysiwygSchemaData extends BaseFormSchemaData { type?: FormWysiwygSchemaTypes; placeholder?: string | FormSchemaStringFunction; mask?: FormSchemaMask; spinner?: boolean | FormSchemaBooleanFunction; toolbar?: ToolbarQuill; action_button?: FormSchemaActionButton; icon?: FormSchemaIcon; value?: string; default_value?: string; group: string; } export declare type FormSchemaData = FormTextSchemaData | FormTextareaSchemaData | FormNumberSchemaData | FormColorSchemaData | FormDateTimeSchemaData | FormFileSchemaData | FormRadioSchemaData | FormBooleanSchemaData | FormSelectSchemaData | FormTypeSearchSchemaData | FormWysiwygSchemaData; export declare type FormSchemaTypeSearch = (value: string, callback: (response: Array) => void) => void; export interface ToolbarQuill { container: Array; handlers?: { [key: string]: () => void; }; } export interface AddSchemaOptions { before?: string; after?: string; } export interface FormValues { [key: string]: any; } export interface FormSchemaActionButton { icon?: string; icon_mode?: string; label?: string | FormSchemaEventFunction; title?: string | FormSchemaEventFunction; onClick: FormSchemaEventFunction; disabled?: boolean | FormSchemaEventFunction; visible?: boolean | FormSchemaEventFunction; mode?: string; color?: string; } export interface FormSchemaIcon { name: string; mode?: IconMode; size?: string; color?: string; highlight_state?: boolean; visible?: boolean | FormSchemaEventFunction; } export interface FormGrid { cols?: number | FormGridCols; offsets?: number | FormGridOffsets; } export interface FormGridWithRows extends FormGrid { rows?: number; } export interface FormGridCols { xs?: number; sm?: number; md?: number; lg?: number; xl?: number; } export interface FormGridOffsets extends FormGridCols { } export declare type FormSubmitHandler = (event: FormSubmitEvent, callback: () => void) => void; export interface FormSubmitEvent { data: any; valid: boolean; errors: any; } export interface FormSchemaEvent { eventRef: any; form: FormData; schema: FormSchema; } export interface FormSchemaEvents { onInit?: FormSchemaEventFunction; onKeydown?: FormSchemaEventFunction; onKeyup?: FormSchemaEventFunction; onKeypress?: FormSchemaEventFunction; onChange?: FormSchemaEventFunction; onFocus?: FormSchemaEventFunction; onBlur?: FormSchemaEventFunction; } export declare type FormSchemaEventFunction = (event: EventType) => ResponseType; export declare type FormSchemaStringFunction = (schema: FormSchema, form: FormData) => string; export interface HelperSchema { icon?: string; action: () => void; } export declare type FormSchemaBooleanFunction = (schema: FormSchema, form: FormData) => boolean;