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
TypeScript
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;
}