UNPKG

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
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[]; }