1.3.1 • Published 9 months ago

@formulaik-community/react-mui v1.3.1

Weekly downloads
-
License
ISC
Repository
github
Last release
9 months ago

Formulaik-Mui

NPM JavaScript Style Guide

Visit The Formulaik project to get started with Formulaik.

This a Formulaik components library built on top of Material UI. Formulaik components are a set of inputs compatible with a Formulaik engine. In this case, the Formulaik-Mui library is made for the Formulaik React engine.

npm.io

The Formulaik project is an open source initiative for defining cross-platform forms, enabling reusable components in a JSON based declarative approach. Formulaik aims to simplify form building across various front-end frameworks. Formulaik defines a protocol for defining form inputs as a sole source of truth (data type, behaviour, validation) in json, which is interpreted by a platform-specific formulaik engine.

Install

  1. Install the React formulaik engine
npm install @formulaik/react
  1. Install the Formulaik React Mui components library
npm install @formulaik-community/formulaik-mui-react

Usage

Create your inputs and create the form using formulaik:

import Formulaik from '@formulaik/react'
import FormulaikMui from '@formulaik-community/formulaik-mui-react'

const inputs = [
 {
      component: 'input',
      id: 'email',
      label: 'Email',
      type: "string",
      params: {
        type: 'email',
        placeholder: "email@domain.com"
      },
      validations: [
        {
          kind: "format",
          value: "email",
          message: 'Invalid email format',
        },
        {
          kind: "required",
          value: true,
          message: "This field can't be blank",
        },
      ],
    },
    {
      component: 'inputPassword',
      label: 'Password',
      id: 'password',
      type: "string",
      params: {
        autoComplete: "current-password",
        placeholder: "xxxx-xxxx-xxxx"
      },
      validations: [
        {
          kind: "required",
          value: true,
          message: "This field can't be blank",
        },
        {
          kind: "matches",
          value: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/,
          message: 'Invalid password, must contain at least 8 characters and at most 18 characters',
        },
      ]
    },
    {
      component: 'submit',
      id: 'submit',
      params: {
        text: 'Continue'
      }
    },
]

export default (props) => {
 const onSubmit = async (values) => {
    const { email, password } = values
    try {
      await myapi.submit({ email, password })
    }
    catch(e) {
      throw (new Error('Could not sign in: ', e.message))
    }
    return { message: t("Email validated") }
  }

  const values = {
      email: cookies.get('email'),
  }

  return <>
      <h3>Login</h3>
      <Formulaik
        components={[FormulaikMui]}
        values={values}
        inputs={inputs}
        onSubmit={onSubmit}
         />
    </>
}

Components

Component KeyDescriptionParameters
inputText input#TODO
selectChoice component#TODO
submitFormulaik submit button#TODO
dateTimePickerDate time picker#TODO
checkboxCheckbox#TODO
textAreaAutogrowing text area#TODO
dateRangePickerDate range picker#TODO
autocompleteAutocomplete input field#TODO
radioGroupRadio group#TODO
autocompleteAutocomplete input field#TODO
buttonButton#TODO
buttonGroupButton group#TODO
ratingRating#TODO
switchSwitch#TODO
fileUploadFile uploader#TODO

Versionning

This repository follows the semantic branching model.

Contributing

<ahref="https://github.com/adoucoure">Aboubacar Doucouré</ahref=> This project follows the all-contributors specification. Contributions of any kind welcome! Please contact me if you want to contribute to the core frameworks or add a components library.

License

MIT © yelounak

References