23
React Native Paper Form Builder - Automate your forms
source link: https://github.com/fateh999/react-native-paper-form-builder
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
react-native-paper-form-builder
Form Builder written in typescript with inbuilt Validation, dropdown, autocomplete powered by react-hook-form & react-native-paper .
Dependencies to Install :
- react-native-paper
- react-hook-form
- react-native-vector-icons Follow the configuration step of react-native-vector-icons as provided in the docs.
Demo :
Steps to install :
npm i react-native-paper-form-builder
import FormBuilder from 'react-native-paper-form-builder';
Usage :
import React from 'react'; import {View, StyleSheet, ScrollView, Text} from 'react-native'; import FormBuilder from 'react-native-paper-form-builder'; import {useForm} from 'react-hook-form'; import {Button} from 'react-native-paper'; function BasicExample() { const form = useForm({ defaultValues: { email: '', password: '', }, mode: 'onChange', }); return ( <View style={styles.containerStyle}> <ScrollView contentContainerStyle={styles.scrollViewStyle}> <Text style={styles.headingStyle}>Form Builder Basic Demo</Text> <FormBuilder form={form} formConfigArray={[ { type: 'input', name: 'email', label: 'Email', rules: { required: { value: true, message: 'Email is required', }, }, textInputProps: { keyboardType: 'email-address', autoCapitalize: 'none', }, }, { type: 'input', name: 'password', label: 'Password', rules: { required: { value: true, message: 'Email is required', }, }, textInputProps: { secureTextEntry: true, }, }, ]}> <Button mode={'contained'} onPress={form.handleSubmit((data: any) => { console.log('form data', data); })}> Submit </Button> </FormBuilder> </ScrollView> </View> ); } const styles = StyleSheet.create({ containerStyle: { flex: 1, }, scrollViewStyle: { flex: 1, padding: 15, justifyContent: 'center', }, headingStyle: { fontSize: 30, textAlign: 'center', marginBottom: 40, }, }); export default BasicExample;
For More Advanced Example as in the Demo check App.tsx
Props:
Name Description formConfigArray Array of Input Configs which are specified below form useForm hook value children (Optional) React Component For Showing Buttons or any other component at the end of the formHow to generate different input types:
- TextInput
{ type: 'input', name: string, // Same as defined in default values label?: string, variant?: 'outlined' | 'flat', rules?: ValidationOptions,// Validation Rules of Controller component from React Hook Form textInputProps?: React.ComponentProps<typeof TextInput> // Props of React Native Paper TextInput }
- Select
{ type: 'select', name: string, // Same as defined in default values options: Array<{ value: string | number,label: string }>, label?: string, variant?: 'outlined' | 'flat', rules?: ValidationOptions,// Validation Rules of Controller component from React Hook Form }
- Autocomplete
{ type: 'autocomplete', name: string, // Same as defined in default values options: Array<{ value: string | number,label: string }>, label?: string, variant?: 'outlined' | 'flat', rules?: ValidationOptions,// Validation Rules of Controller component from React Hook Form }
- Checkbox
{ type: 'checkbox', name: string, // Same as defined in default values label?: string | React.ReactNode, rules?: ValidationOptions,// Validation Rules of Controller component from React Hook Form }
- Radio
{ type: 'radio', name: string, // Same as defined in default values label?: string | React.ReactNode, rules?: ValidationOptions,// Validation Rules of Controller component from React Hook Form }
- Switch
{ type: 'switch', name: string, // Same as defined in default values label?: string | React.ReactNode, rules?: ValidationOptions,// Validation Rules of Controller component from React Hook Form }
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK