1.1.0 • Published 1 year ago

@coffeebeanslabs/react-native-form-builder v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

react-native-form-builder

A basic form builder for react-native apps. Using a user defined template, it renders the required form elements.

Installation

Via npm

$ npm i @coffeebeanslabs/react-native-form-builder

Via yarn

$ yarn add @coffeebeanslabs/react-native-form-builder

Usage

import React from 'react';
import {
  StyleSheet,
  View
} from 'react-native';
import DynamicForm from '@coffeebeanslabs/react-native-form-builder';

function Example(props) {
  const formTemplate = {
    data: [
      {
        component: 'image',
        field_name: 'headerImage',
        meta: {
          label: 'alt text for header image',
          source: 'https://upload.wikimedia.org/wikipedia/commons/f/f9/Phoenicopterus_ruber_in_S%C3%A3o_Paulo_Zoo.jpg'
        },
        style: {
          width: 200,
          height: 200
        }
      },
      {
        component: 'input-text',
        field_name: 'name',
        is_mandatory: 'true',
        meta: {
          label: 'Name',
          placeholder: 'Enter name..'
        }
      },
      {
        component: 'input-date',
        field_name: 'birthDate',
        is_mandatory: 'true',
        meta: {
          title: 'Birth Date'
        }
      },
      {
        component: 'input-radio',
        field_name: 'gender',
        is_mandatory: 'true',
        meta: {
          text: 'Your Gender',
          data: [
            {
              label: 'Male',
              value: 'male'
            },
            {
              label: 'Female',
              value: 'female'
            }
          ]
        }
      }
    ]
  }

  const onSubmit = formFields => {
    // Actions on submit button click.
    console.log('Form submitted with fields: ', formFields);
  }

  return (
    <View style={styles.container}>
      <DynamicForm formTemplate={formTemplate} onSubmit={onSubmit} />
    </View>
  )
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
});

export default Example;

Props

The component takes following props:

PropRequiredTypePurpose
formTemplateYesObjectA template representing form components to render (see Form Template for more info)
onSubmitYesFunctionCallback method when the user clicks on submit button

Form Template

Following properties are used in every template object representing a form element to be rendered: | Property | Required | Type | Purpose | | ------------|-----------| -------| -------| | component | Yes | String | The name of form component to be rendered (check below for list). | | index | Yes | Number | The placement index of the form component. | | field_name | Yes | String | Name of the form field. | | is_mandatory | No | String | Specifies if a form field is to be mandatorily filled. Until all mandatory fields are not provided by the user, the Submit button remains disabled| | meta | Yes | Object | Holds component specific props like label, placeholder, value etc. | | style | No | Object | Custom styles to be applied (Not supported for all components)|

Following form components are available:

  • image
  • input-checkbox
  • input-date
  • input-dropdown
  • input-radio
  • input-text (also supports multiline)
  • rating
  • read-only-text

Checkout the example here.

Feedback

Feel free to open a new Issue with a feature request or report a bug or submit a PR.

Thank you!