1.0.59 • Published 2 years ago
svelte-forma v1.0.59
Svelte Forma
- 📦 Super light 3.3kb (1.5k gzip)
- 🚀 Very easy to use
- 😎 Minimum API for the best experience
- 🔥 Reactive
- 🗒 Type safe
- 🖋 Controllable inputs
npm install svelte-forma # or yarn add svelte-forma
<!-- Form.svelte -->
<script>
import { useForm } from "svelte-forma";
import ErrorMessage from "./ErrorMessage"
const { form, handleSubmit, validators, formState } = useForm();
let name = "";
let agree = false
</script>
<form use:form on:submit={handleSubmit(() => {
console.log("submitted", name)
name = ""
})}>
<input
name="name"
bind:value={name}
use:validators={[
(value) => Boolean(value) || "Field is required"
]}
/>
<ErrorMessage name="name" {formState} />
<input
name="agree"
use:validators={[
(value) => value === 'true' || 'Field is required';
]}
type="checkbox"
on:input={(e) => {
agree = e.currentTarget.checked;
}}
checked={agree}
value={agree}
/>
<ErrorMessage name="agree" {formState} />
<button type="submit">Submit</button>
</form>
<!-- ErrorMessage.svelte -->
<script lang="ts">
import type { IFormState } from 'svelte-forma/dist/IForm';
import type { Writable } from 'svelte/store';
export let formState: Writable<IFormState>;
export let name: string;
</script>
{#if $formState?.errors?.[name] && $formState?.touched?.[name] && $formState?.dirty?.[name]}
<div>
<span class="font-medium text-sm text-red-500">
{$formState?.errors?.[name]}
</span>
</div>
{/if}
1.0.33
2 years ago
1.0.32
2 years ago
1.0.37
2 years ago
1.0.36
2 years ago
1.0.35
2 years ago
1.0.34
2 years ago
1.0.39
2 years ago
1.0.38
2 years ago
1.0.40
2 years ago
1.0.44
2 years ago
1.0.43
2 years ago
1.0.42
2 years ago
1.0.41
2 years ago
1.0.48
2 years ago
1.0.47
2 years ago
1.0.46
2 years ago
1.0.45
2 years ago
1.0.51
2 years ago
1.0.55
2 years ago
1.0.54
2 years ago
1.0.53
2 years ago
1.0.52
2 years ago
1.0.59
2 years ago
1.0.58
2 years ago
1.0.57
2 years ago
1.0.56
2 years ago
1.0.28
3 years ago
1.0.27
3 years ago
1.0.26
3 years ago
1.0.25
3 years ago
1.0.24
3 years ago
1.0.23
3 years ago
1.0.22
3 years ago
1.0.21
3 years ago
1.0.20
3 years ago
1.0.19
3 years ago
1.0.18
3 years ago
1.0.17
3 years ago
1.0.16
3 years ago
1.0.15
3 years ago
1.0.14
3 years ago
1.0.13
3 years ago
1.0.12
3 years ago
1.0.11
3 years ago
1.0.8
3 years ago
1.0.7
3 years ago
1.0.6
3 years ago
1.0.5
3 years ago
1.0.4
3 years ago
1.0.3
3 years ago
1.0.2
3 years ago
1.0.1
3 years ago
1.0.0
3 years ago