UNPKG

react-native-form-model

Version:

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

43 lines (42 loc) 1.49 kB
import { BehaviorSubject } from 'rxjs'; import { MaybeObservable } from '../../util/reactUtil'; import FormElement, { EditableFieldModel, FormElementOptions } from '../FormElement'; import { FieldModelLike, FieldViewLike, ViewRef } from '../formTypes'; export declare type FieldAlignment = 'left' | 'center' | 'right'; export interface FieldModelOptions extends FormElementOptions { sectionIndex: number; rowIndex: number; fieldIndex: number; align?: FieldAlignment; flex?: number; /** Whether to show this field. */ visible?: MaybeObservable<boolean>; } export default class FieldModel<View extends FieldViewLike = any> extends FormElement implements FieldModelLike<View> { readonly errors: BehaviorSubject<Error[]>; sectionIndex: number; rowIndex: number; fieldIndex: number; align: FieldAlignment; flex?: number; visible: MaybeObservable<boolean>; viewRef?: ViewRef<View>; /** * Whether this field is currently rendered on the screen. * Do not set this value directly. */ isMounted: boolean; constructor(options: FieldModelOptions); isEditable(): this is EditableFieldModel; /** * Called after the view is mounted. * * Subclasses must call the super implementation. */ onMount(viewRef: ViewRef<View>): void; /** Called before the view is unmounted. * * Subclasses must call the super implementation. */ onUnmount(viewRef: ViewRef<View>): void; }