UNPKG

react-native-form-model

Version:

An easily testable and opinionated React Native form model builder written in pure JavaScript.

46 lines (45 loc) 1.64 kB
import { BehaviorSubject, Observable } from 'rxjs'; import { FieldModel } from './FieldModel'; import FormModel from './FormModel'; import { FormStyle, PartialFormStyle } from './FormStyle'; export interface FormElementOptions { key?: string; form: FormModel; style?: PartialFormStyle; } export interface ErrorOptions { editedOnly?: boolean; } export interface EditableFieldModel { edited: BehaviorSubject<boolean>; } export default abstract class FormElement { key: string; style?: PartialFormStyle; sectionIndex: number; rowIndex: number; fieldIndex: number; private _formRef?; constructor(options: FormElementOptions); get form(): FormModel; set form(form: FormModel); modify(callback: (element: this) => any): this; validateAll(options?: { focusOnInvalid?: boolean; }): boolean; valid(): boolean; valid$(): Observable<boolean>; fieldsWithErrors({ editedOnly }?: ErrorOptions): FieldModel[]; fieldsWithErrors$({ editedOnly }?: ErrorOptions): Observable<FieldModel[]>; flattenedErrors$(options?: ErrorOptions): Observable<Error[]>; flattenedFormattedErrors$(options?: ErrorOptions & { formatter?: (errors: Error[]) => string; }): Observable<string>; allFields(): FieldModel[]; visibleFields$(): Observable<FieldModel[]>; iterateFields(): Generator<FieldModel>; iterateNextFields(): Generator<FieldModel>; resolveStyle(theme?: PartialFormStyle): Required<FormStyle>; resolveStyleValue<K extends keyof FormStyle>(key: K, theme?: PartialFormStyle): FormStyle[K]; private static _mergeStyleValues; }