The FormInput
is a custom, reusable input component for React-Native applications. It supports both text input and date picker functionality, with extensive customization options.
npm install @react-native-utils/forminput
# or
yarn add @react-native-utils/forminput
import { useState } from "react";
import { FormInput } from "@react-native-utils/forminput";
const App = () => {
const [name, setName] = useState<string>("");
// New grouped props approach (v2.0+)
return (
<FormInput
text={{
labelText: "Name",
placeholderText: "Enter your name",
value: name,
characterLimit: 20,
}}
style={{
isRequired: true,
}}
icon={{
leftIcon: "user",
rightIcon: "times-circle",
rightIconColor: name ? "#999" : "#CCC",
rightIconOnPress: () => setName("")
}}
core={{
onTextChange: (text) => setName(text)
}}
/>
);
};
FormInput v2.0+ uses a modern grouped props approach for better organization and TypeScript support:
Prop Group | Description | Example |
---|---|---|
text |
Text content props like label, placeholder, and values | text={{ labelText: "Name" }} |
style |
Visual styling props | style={{ inputContainerStyle: { borderRadius: 8 } }} |
icon |
Left and right icon configuration | icon={{ leftIcon: "user" }} |
core |
Core functionality props | core={{ onTextChange: (text) => setValue(text) }} |
datePicker |
Date picker functionality | datePicker={{ enabled: true }} |
datePickerStyle |
Date picker styling | datePickerStyle={{ selectedTextStyle: { color: "blue" } }} |
componentProps |
Props passed to underlying components | componentProps={{ textInputProps: { autoFocus: true } }} |
For detailed documentation of all available props within each group, refer to:
- Text Props Documentation
- Style Props Documentation
- Icon Props Documentation
- Core Props Documentation
- Date Picker Props Documentation
- Component Props Documentation
Version 2.0 introduces a new props structure that groups related props together. While the flat props structure is still supported for backward compatibility, we recommend migrating to the new grouped approach:
Before (v1.x):
<FormInput
labelText="Name"
value={name}
onTextChange={(text) => setName(text)}
leftIcon="user"
/>
After (v2.x):
<FormInput
text={{
labelText: "Name",
value: name
}}
core={{
onTextChange: (text) => setName(text)
}}
icon={{
leftIcon: "user"
}}
/>
<FormInput
text={{ labelText: "Email", placeholderText: "Enter your email" }}
style={{ isRequired: true }}
core={{ inputType: "email-address" }}
/>
<FormInput
text={{ labelText: "Date of Birth", datePlaceholder: "Select Date" }}
datePicker={{
enabled: true,
disableFutureDates: true,
onDateChange: (date) => setSelectedDate(date)
}}
icon={{ leftIcon: "calendar" }}
/>
<FormInput
text={{ labelText: "Password", placeholderText: "Enter password" }}
core={{ hiddenText: true }}
icon={{ rightIcon: "eye", rightIconOnPress: () => togglePasswordVisibility() }}
/>
For complete documentation with all available props and advanced examples, please visit our documentation website.
For a complete version history, see our full changelog on the documentation website.
- Minor Bug Fixes.
- Minor Bug Fixes.
- BREAKING CHANGE: Introduced new grouped props structure for better organization and TypeScript support
- Added comprehensive JSDoc documentation to all prop types
- Maintained backward compatibility with flat props structure
- Improved TypeScript type definitions and intellisense support
- Added
datePickerConfirmButtonStyle
anddatePickerConfirmButtonTextStyle
props to allow users to customize the confirm button's style and text style in the date picker.
- Added
datePlaceholderStyle
prop to allow users to pass additional styles for the date placeholder text. - Fixed minor styling issues in the date picker component.
This README provides a quick overview of the FormInput component. For comprehensive documentation including:
- Complete API reference for all props
- Advanced usage examples
- Styling guide
- Theming instructions
- Form validation techniques
- Interactive demos
Please visit our documentation website.