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 { FormError } from "../contracts/error"; import { ModifierValue } from "../contracts/value"; export declare const FG_SEPARATOR = "."; 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 * ======================== */ /** * Constructs field id from given fieldName and an optional fieldsGroupIdkds * * @param {string} fieldName * @param {string} [fieldsGroupId] * @returns Constructed field id * * @memberOf FormStore */ GetFieldId(fieldName: string, fieldsGroupId?: string): string; GetFieldsGroupId(name: string, parentId?: string): string; GetFieldsArrayId(name: string, parentId?: string): string; RegisterField(fieldId: string, name: string, defaultValue: FieldValue, initialValue?: FieldValue, value?: FieldValue, transitionalValue?: FieldValue, props?: FieldProps, fieldsGroupId?: string): void; RegisterFieldsGroup(fieldsGroupId: string, name: string, parentId?: string): void; RegisterFieldsArray(fieldsArrayId: string, name: string, index: number, parentId?: string): void; UnregisterField(fieldId: string): void; UnregisterFieldsGroup(fieldsGroupId: string): void; UnregisterFieldsArray(fieldsGroupId: string): void; HasField(fieldId: string): boolean; GetField(fieldId: string): FieldStoreStateRecord; SetFormSubmitCallback(submitCallback: () => void): void; UpdateFormProps(props: FormProps): void; UpdateFieldProps(fieldId: string, props: FieldProps): void; UpdateFieldValue(fieldId: string, newValue: ModifierValue): 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; }