Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/manojadams/metaforms-core

A framework for building react form libraries.
https://github.com/manojadams/metaforms-core

forms react react-form-library react-forms

Last synced: 22 days ago
JSON representation

A framework for building react form libraries.

Awesome Lists containing this project

README

        

# metaform-core
A framework for building react form libraries. Create your react form components and use this framework for adding form behavior using JSON-based schema.

## Change logs
- [fix #88: fix validation errors with autofill](https://github.com/manojadams/metaforms-core/issues/88)

## Introduction
This library reads the JSON-based schema and lays out beautiful forms.
It acts as a base for creating a dynamic form library.

## Main features
- Layouting configuration
- Support for multiple-page forms
- Support for field dependencies
- Support custom components

## Core components/concepts
- Form control (BaseFormControl)
- Form group (BaseFormGroup)
- Form stepper (BaseFormStepper)

### Form control (BaseFormControl)
This is a class containing declarations of basic form controls as well as some other advanced form controls.

### Form group (BaseFormGroup)
Contains declarations of basic form grouping controls.

### Form stepper (BasicFormStepper)
This is another type of form grouping that contains declarations to implement stepper functionalities for your form.

## How to use
This library contains abstract declarations and requires the user to implement his own core components.
- BasicFormControl - for basic components
- BasicFormGroup - for basic form grouping
- BasicFormStepper = for stepper functionalities
- Write your classes (typescript) and extend the above controls.
- To know details, check the documentation.

## Implement an `email` control
````typescript
class MyFormControl extends CoreFormControl {
/**
* Implement email
*/
email() {
return (


Email address


)
}
}
````

## Implement a `phone` control
````typescript
class MyFormControl extends CoreFormControl {
/**
* Implement phone
*/
phone() {
return (


Your Phone


)
}
}
````

## Install

```bash
npm install --save @manojadams/metaform-core
```

## Basic usage of the library
```tsx
import MetaformRenderer from "@manojadams/metaforms-core";
import React from "react";
import FormControl from "./forms/FormControl"; // your form control implementation
import FormGroup from "./forms/FormGroup"; // your form group implementation
import { FormStepper } from "./forms/FormStepper"; // your form stepper implementation

class FormRenderer extends React.Component {

constructor(props: IFormRenderer) {
super(props);
}

render() {
return (

)
}
}

export default FormRenderer;
```

## License

MIT © [manojadams](https://github.com/manojadams)