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