UNPKG

react-native-ui-lib

Version:

<p align="center"> <img src="https://user-images.githubusercontent.com/1780255/105469025-56759000-5ca0-11eb-993d-3568c1fd54f4.png" height="250px" style="display:block"/> </p> <p align="center">UI Toolset & Components Library for React Native</p> <p a

96 lines (79 loc) 3.21 kB
import {ReactElement} from 'react'; import { GestureResponderEvent, ImageSourcePropType, StyleProp, TextInputProps as RNTextInputProps, TextStyle, ViewStyle } from 'react-native'; import {BaseComponent} from '../commons'; import {ColorValue} from '../style/colors'; import {TopBarProps} from './Modal'; export type BaseInputDefaultValidator = 'required' | 'email' | 'url' | 'number' | 'price'; export type BaseInputCustomValidator = (value?: string) => boolean; export type BaseInputValidator = BaseInputDefaultValidator | BaseInputCustomValidator; export type BaseInputValidateProp = BaseInputValidator | BaseInputValidator[]; export interface BaseInputProps extends RNTextInputProps { color?: ColorValue; containerStyle?: StyleProp<ViewStyle>; validate?: BaseInputValidateProp; markRequired?: boolean; errorMessage?: string | string[]; validateOnStart?: boolean; validateOnChange?: boolean; validateOnBlur?: boolean; onChangeValidity?: (isValid: boolean) => void; } export class BaseInput<Props extends BaseInputProps = BaseInputProps, State = {}> extends BaseComponent<Props, State> { onBlur(): void; } export interface TextAreaProps extends BaseInputProps {} export class TextArea extends BaseInput<TextAreaProps> {} export type InputColorValue = ColorValue | { [key: string]: ColorValue }; export interface TextBaseInputProps { floatingPlaceholder?: boolean; floatingPlaceholderColor?: InputColorValue; helperText?: string; hideUnderline?: boolean; underlineColor?: InputColorValue; disabledColor?: ColorValue; centered?: boolean; error?: string; enableErrors?: boolean; expandable?: boolean; transformer?: (text?: string) => string | undefined; title?: string; titleColor?: InputColorValue; titleStyle?: StyleProp<TextStyle>; showCharacterCounter?: boolean; floatOnFocus?: boolean; useTopErrors?: boolean; rightIconSource?: ImageSourcePropType; } export interface TextFieldRightButtonProps { iconSource?: ImageSourcePropType; iconColor?: ColorValue; onPress?: (event: GestureResponderEvent) => void; style?: StyleProp<ViewStyle>; } export interface TextFieldProps extends BaseInputProps, TextBaseInputProps { renderExpandableInput?: (props: TextFieldProps) => ReactElement; renderExpandable?: (props: TextFieldProps, state: TextFieldState) => ReactElement; onToggleExpandableModal?: (value?: string) => void; topBarProps?: TopBarProps; rightButtonProps?: TextFieldRightButtonProps; } export type TextFieldState = any; export class TextField extends BaseInput<TextFieldProps, TextFieldState> {} export interface TextInputProps extends BaseInputProps, TextBaseInputProps { renderExpandableInput?: (props: TextInputProps) => ReactElement | ReactElement[]; renderExpandable?: (props: TextInputProps, state: TextInputState) => ReactElement | ReactElement[]; } export type TextInputState = any; export class TextInput extends BaseInput<TextInputProps, TextInputState> {} export interface MaskedInputProps extends TextFieldProps { renderMaskedText?: (value?: string) => ReactElement | ReactElement[]; containerStyle?: StyleProp<ViewStyle>; } export class MaskedInput extends BaseInput<MaskedInputProps> {}