![]() * feat(form): add validateOnLoad prop * feat(form): add FormConfig interface * refactor(form): refactor FormConfig * refactor(demo): change params to FormConfig * chore(demo): remove FormConfig on demo * feat(form): make validateOnLoad to be false by default * feat(form): add setValidateOnLoad method * chore(form): edit comment on validateOnLoad * feat(form): remove setValidateOnLoad in FormGroup * revert(form): add FormConfig interface This reverts commit 44b58d4a43d4d2e8bcd3dc799e3110f9b8f23604. * revert(demo): change params to FormConfig This reverts commit 98f8602000505a29d04493617043aa0cfb00a969. |
||
---|---|---|
.. | ||
components | ||
core | ||
test | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc.cjs | ||
.prettierrc.cjs | ||
index.ts | ||
package.json | ||
README.md | ||
RELEASE.md | ||
tsconfig.json | ||
vitest.config.ts |
Astro Reactive Form
Generate a dynamic form based on your data, and modify programmatically.
Installation
In your Astro project:
npm i @astro-reactive/form
Usage
Use in an Astro page:
---
import Form, { FormControl, FormGroup } from "@astro-reactive/form";
// create a form group
const form = new FormGroup([
{
name: "username",
label: "Username",
},
{
name: "password",
label: "Password",
type: "password",
},
]);
// set the name optionally
form.name = "Simple Form";
// you can insert a control at any point
form.controls.push(
new FormControl({
type: "checkbox",
name: "is-awesome",
label: "is Awesome?",
})
);
// you can get a FormControl object
const userNameControl = form.get("username");
// you can set values dynamically
userNameControl?.setValue("RAMOOOON");
form.get('is-awesome')?.setValue("checked");
---
<Form
formGroups={form}
submitControl={{
type: "submit",
name: "submit",
}}
/>
<!--
The `formGroups` attribute can take a single FormGroup
or an array of FormGroup for multiple fieldset blocks;
we are using a single FormGroup for now in this example.
-->
Screenshots
Result of example above:
Example of multiple form groups:
Validation
This Form component is designed to work with Astro Reactive Validator, our package for setting up validators easily.
We are opensource!
👉 All contributions are welcome. Let's make the fastest web forms powered by Astro.
👉 This package is under rigorous development. See the change log.