react-native-form-model
Version:
An easily testable and opinionated React Native form model builder written in pure JavaScript.
44 lines (43 loc) • 1.53 kB
TypeScript
import React from 'react';
import { StyleProp, TextStyle, ViewStyle } from 'react-native';
import { FormStyle, PaperThemeWithForm } from '../models/FormStyle';
export declare type Alignment = 'left' | 'center' | 'right';
export interface LabelFieldProps<T> extends Omit<ViewStyle, 'value'> {
value: T;
label?: string;
placeholder?: string;
format?: (value: T) => string;
onPress?: (event: any) => void;
theme: PaperThemeWithForm;
align?: Alignment;
style?: StyleProp<TextStyle>;
textStyle?: StyleProp<TextStyle>;
formStyle?: FormStyle;
rippleColor?: string;
disabled?: boolean;
/**
* If true, does not render label, placeholder and
* value.
**/
custom?: boolean;
}
export interface LabelFieldState<T> {
/** The final value. */
value: T;
/** User input error. */
error?: any;
}
/** @deprecated */
export default class LabelField<T = any, P extends LabelFieldProps<T> = LabelFieldProps<T>, S extends LabelFieldState<T> = LabelFieldState<T>> extends React.PureComponent<P, S> {
initialValue: T;
constructor(props: P);
componentDidUpdate(prevProps: P, prevState: S, snapshot: any): void;
get isCustom(): boolean;
format(value: T): string;
handlePress(event: any): void;
renderField(content: JSX.Element | JSX.Element[]): JSX.Element;
renderTitleAndValue(): JSX.Element;
renderContent(): JSX.Element | JSX.Element[];
renderCustom(): JSX.Element | JSX.Element[];
render(): JSX.Element | JSX.Element[];
}