Coder Social home page Coder Social logo

material-ui-react-hook-form-builder's Introduction

material-ui-react-hook-form-builder

Create easy forms via config file in react using material-ui

NPM JavaScript Style Guide

Install

npm install --save material-ui-react-hook-form-builder

Usage

Need to install @material-ui/icons in your main app. Create forms via config file

config.js

// Libraries
import * as yup from 'yup'

// Icons
import CategoryIcon from '@material-ui/icons/Category'
import DescriptionIcon from '@material-ui/icons/Description'
import CollectionsBookmarkIcon from '@material-ui/icons/CollectionsBookmark'

export default {
  name: {
    // this is the input name
    type: 'input',
    label: 'Name',
    icon: CategoryIcon,
    validation: yup.string(),
    variant: 'outlined'
    //...otherProps   --> generally other props for input
  },
  description: {
    type: 'textarea',
    label: 'Description',
    validation: yup.string(),
    icon: DescriptionIcon,
    multiline: true,
    rows: 4
    //...otherProps   --> generally other props for input
  },
  check:{
    type: 'checkbox',
    label: 'Checked',
    value: true
  },
  numberFormat: {
    type: 'numberFormat'
  },
  radio: {
    type: 'radio',
    label: 'Radio',
    items: [
      { value: true, label: 'True' },
      { value: false, label: 'False' }
    ],
  },
  options: {
    type: 'select',
    label: 'Options',
    icon: CollectionsBookmarkIcon,
    items: [
      { id: 1, name: 'Yes' },
      { id: 2, name: 'No' }
    ],
    validation: yup.string().required(),
    tooltip: 'Yes/No Option' // --> can be used in any input
  }
}

App.js

import React, { useState, useCallback } from 'react'

import BuildForm from 'material-ui-react-hook-form-builder'

import config from './config'

const buttonProps = { size: 'medium', label: 'Save', position: 'flex-end' }
const backButtonProps = { show: true, label: 'Back', action: () => {} }

const App = () => {
  const [formData] = useState(() => {
    const data = Object.assign({}, config)
    return data
  })

  const handleSubmit = useCallback((formData) => {
    console.log('formData', formData)
  }, [])

  const handleBackAction = useCallback(() => {
    console.log('back btn clicked')
  }, [])

  
  return (
    <BuildForm
      config={formData}
      onSubmit={handleSubmit}
      loading={false} // loading state when post/get
      submitErrors={{}} // errors from server. example {"name":"already exists"}
      noBackButton={false} // true if want to remove back button
      backAction={handleBackAction} // when back btn is pressed
      // columns={2} split the form in 2 columns. Must to configure input position on config file: {name: {column: 1, ...otherProps}, option:{column: 2}}
      buttonProps={buttonProps} // options for saveButton... optionals
      backButtonProps={backButtonProps}
    />
  )
}

export default App

License

MIT © julian-linux

material-ui-react-hook-form-builder's People

Contributors

julian-linux avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.