UNPKG

react-native-form-model

Version:

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

41 lines (40 loc) 2.39 kB
import { KeyboardTypeOptions, TextInputProps } from 'react-native'; import { FieldModelOptions } from './FieldModel'; import InputFieldModel, { InputFieldModelOptions, ParsedInputFieldModelOptions } from './InputFieldModel'; export interface KeyboardInputFieldModelBaseOptions extends Pick<TextInputProps, 'clearTextOnFocus' | 'selectTextOnFocus' | 'clearButtonMode' | 'returnKeyType'> { optional?: boolean; mode?: 'plain' | 'contained'; } export interface KeyboardInputFieldModelOwnOptions extends KeyboardInputFieldModelBaseOptions, Pick<TextInputProps, 'textContentType' | 'autoCapitalize' | 'multiline'> { type: KeyboardInputFieldType; keyboardType: KeyboardTypeOptions; /** * If true, then the value will be updated as the user types. * If false (the default), the value will only update when * the user finishes typing. * * The latter is recommeded when a validator is used. */ submitOnChangeValue?: boolean; } export interface KeyboardInputFieldModelOptions<T> extends Partial<KeyboardInputFieldModelOwnOptions>, ParsedInputFieldModelOptions<T, string> { } export declare type KeyboardInputFieldType = 'text' | 'secure' | 'email' | 'integer' | 'float' | 'unsignedInteger' | 'unsignedFloat'; export default class KeyboardInputFieldModel<T> extends InputFieldModel<T> implements KeyboardInputFieldModelOwnOptions { type: KeyboardInputFieldType; mode: KeyboardInputFieldModelOwnOptions['mode'] | undefined; keyboardType: KeyboardTypeOptions; returnKeyType: TextInputProps['returnKeyType']; textContentType: TextInputProps['textContentType'] | undefined; optional: boolean; multiline: boolean; autoFocus: boolean; clearTextOnFocus: TextInputProps['clearTextOnFocus']; selectTextOnFocus: TextInputProps['selectTextOnFocus']; clearButtonMode: TextInputProps['clearButtonMode']; autoCapitalize: TextInputProps['autoCapitalize'] | undefined; submitOnChangeValue: boolean; constructor(options: KeyboardInputFieldModelOptions<T>); static defaults<T>(options: KeyboardInputFieldModelOptions<T>): KeyboardInputFieldModelDefaults<T>; } export declare type KeyboardInputFieldModelDefaults<T> = Omit<KeyboardInputFieldModelOwnOptions & InputFieldModelOptions<T, string>, keyof FieldModelOptions | 'value' | 'defaultValue'> & Required<Pick<KeyboardInputFieldModelOwnOptions, 'optional'>>;