Let your data build your UI, with Astro components
Find a file
2022-09-27 17:46:19 +02:00
.vscode Initial commit 2022-09-25 20:09:11 +02:00
src refactor: formatting 2022-09-27 17:37:52 +02:00
test chore: remove unused code 2022-09-27 17:38:12 +02:00
.editorconfig Initial commit 2022-09-25 20:09:11 +02:00
.eslintignore Initial commit 2022-09-25 20:09:11 +02:00
.eslintrc.cjs Initial commit 2022-09-25 20:09:11 +02:00
.gitignore docs: project readme 2022-09-25 21:38:24 +02:00
.prettierrc.cjs Initial commit 2022-09-25 20:09:11 +02:00
index.ts feat: multiple controls 2022-09-25 21:33:19 +02:00
package-lock.json 0.0.10 2022-09-27 17:46:19 +02:00
package.json 0.0.10 2022-09-27 17:46:19 +02:00
README.md docs: update readme plans for themes 2022-09-27 17:46:12 +02:00
tsconfig.json Initial commit 2022-09-25 20:09:11 +02:00

Astro Reactive Form 🔥

npm npm npm github

The Reactive Form component for Astro 🔥

All contributions are welcome.

Installation

npm i astro-reactive-form

Usage

---
import Form, { FormControl, FormGroup } from 'astro-reactive-form';

// example of a form control
const radio: FormControl = {
  name: 'is-good-looking',
  type: 'radio',
  label: 'Is Good Looking?',
  value: 'checked',
  labelPosition: 'right',
};

const form = new FormGroup([
  // this is just an array of FormControl
  {
    name: 'first-name',
    value: 'Ayo',
    label: 'First Name',
  },
  {
    name: 'last-name',
    value: 'Ayco',
    label: 'Last Name',
  },
  {
    name: 'is-awesome',
    type: 'checkbox',
    label: 'Is Awesome?',
    value: 'checked',
    labelPosition: 'right',
  },
  radio, // the form control we declared earlier
]);
---

<Form formGroup={form} />

Result:

Screen Shot 2022-09-27 at 5 41 46 PM

Future Plans

Currently this only supports very basic form creation, but the goal of the project is ambitious:

  1. Themes - unstyled, light mode, dark mode, compact, large
  2. FormGroup class
    1. get(controlName: string) - returns the FormControl with matching name
    2. statusChanges - observable that emits the form status when it changes
    3. valueChanges - observable that emits the values of all controls when they change
  3. FormControl class
    1. setValue(value) - set the value of the control programmatically
    2. statusChanges - observable that emits the control status when it changes
    3. valueChanges - observable that emits the control value when it changes
    4. value - property that reflects the control value
  4. Validator library for common validation scenarios

... and so much more

All contributions are welcome. Let's make the fastest web form component powered by Astro