import { ActionEmitter } from "action-emitter"; import { FieldValue, FieldStoreStateRecord, FieldProps } from "../contracts/field"; import { FormState, FormProps } from "../contracts/form"; import { FormStoreState, FormStoreStateRecord, BuiltFormObject, FormStoreStateStatus } from "../contracts/form-store"; import { FieldsGroupStoreStateRecord } from "../contracts/fields-group"; import { FormError } from "../contracts/error"; import { ModifierValue } from "../contracts/value"; export declare type Dictionary = { [key: string]: TItem; }; export declare class FormStore extends ActionEmitter { constructor(formId: string); protected FormId: string; protected BuiltFormObject: BuiltFormObject; private state; protected State: FormStoreStateRecord; GetState(): FormStoreStateRecord; GetFormId(): string; /** * ======================== * Public API * ======================== */ RegisterField(fieldId: string, name: string, defaultValue: FieldValue, initialValue?: FieldValue, value?: FieldValue, transitionalValue?: FieldValue, props?: FieldProps, fieldsGroupId?: string, isInFieldsArray?: boolean): void; RegisterFieldsGroup(fieldsGroupId: string, name: string, parentId?: string): void; RegisterFieldsArray(fieldsArrayId: string, name: string, indexWeight?: number, parentId?: string): void; UnregisterField(fieldId: string): void; UnregisterFieldsGroup(fieldsGroupId: string): void; UnregisterFieldsArray(fieldsArrayId: string): void; HasField(fieldId: string): boolean; GetField(fieldId: string): FieldStoreStateRecord; HasFieldsGroup(fieldsGroupId: string): boolean; GetFieldsGroup(fieldsGroupId: string): FieldsGroupStoreStateRecord; SetFormSubmitCallback(submitCallback: () => void): void; UpdateFormProps(props: FormProps): void; UpdateFieldProps(fieldId: string, props: FieldProps): void; UpdateFieldsArrayIndexWeight(fieldsArrayId: string, indexWeight?: number): void; UpdateFieldValue(fieldId: string, newValue: ModifierValue): void; UpdateFieldDefaultValue(fieldId: string, defaultValue: FieldValue): void; UpdateFieldInitialValue(fieldId: string, initialValue: FieldValue): void; ValidateField(fieldId: string, validationPromise: Promise): Promise; SetActiveField(fieldId: string | undefined): void; SetFormDisabled(disabled: boolean): void; TouchFields(fieldsIds?: string[]): void; ValidateForm(validationPromise: Promise): Promise; InitiateFormSubmit(): void; SubmitForm(result: Promise | FormError | any): Promise; /** * Set fields to default values. */ ClearFields(fieldsIds?: string[]): void; /** * Set fields to initial values. */ ResetFields(fieldsIds?: string[]): void; ToObject(): TObject; /** * ======================== * Local helper methods * ======================== */ protected GetInitialFormStoreState(): FormStoreState; protected GetInitialFormState(): FormState; protected GetInitialStoreStatus(): FormStoreStateStatus; protected BuildFormObject(fieldsGroupId?: string): Dictionary; protected RecalculateDependentFormStatuses(formStoreState: FormStoreStateRecord): FormStoreStateRecord; protected IsPromise(value: any): value is Promise; }