40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import React from 'react';
|
|
import { View, Text, TextInput } from 'react-native';
|
|
import { useTheme } from '@theme';
|
|
import { getStyles } from './formInput.styles';
|
|
import { FormInputProps } from './formInput.props';
|
|
|
|
export const FormInput: React.FC<FormInputProps> = ({
|
|
label,
|
|
value,
|
|
onChangeText,
|
|
placeholder,
|
|
required = false,
|
|
multiline = false,
|
|
keyboardType = 'default',
|
|
...rest
|
|
}) => {
|
|
const { theme: colors } = useTheme();
|
|
const styles = getStyles(colors);
|
|
|
|
return (
|
|
<View style={styles.container}>
|
|
<Text style={styles.label}>
|
|
{label}
|
|
{required && <Text style={styles.required}>*</Text>}
|
|
</Text>
|
|
<TextInput
|
|
style={[styles.input, multiline && styles.multilineInput]}
|
|
value={value}
|
|
onChangeText={onChangeText}
|
|
placeholder={placeholder}
|
|
placeholderTextColor={colors.textMuted}
|
|
multiline={multiline}
|
|
numberOfLines={multiline ? 4 : 1}
|
|
keyboardType={keyboardType}
|
|
{...rest}
|
|
/>
|
|
</View>
|
|
);
|
|
};
|