0.16.14 • Published 3 months ago

svelte-reactive-form v0.16.14

Weekly downloads
87
License
MIT
Repository
github
Last release
3 months ago

Svelte Reactive Form

A better version of form validation for Svelte.

Svelte v3 npm Build Status download Bundle Size LICENCE

NPM Stat

Installation and Usage

npm install svelte-reactive-form

or

yarn add svelte-reactive-form

Features

  • Simple
  • No extra dependency
  • TypeScript as first class citizen
  • Custom validation
  • Reactive
  • Flexible & Configurable

How to use

https://svelte.dev/repl/2afb74650f36429fa15871b6998d60c9?version=3.31.0

<script lang="ts">
  import { useForm, Field, defineRule } from "svelte-reactive-form";
  import { required, minLength } from "@svelte-reactive-form/rules";

  // define the global validation rules
  defineRule("required", required);
  defineRule("minLength", minLength);
  defineRule("numeric", (val: any) => {
    return /[0-9]+/.test(val) || "invalid numeric format";
  });

  // initialize the form instance
  const form$ = useForm<{ name: string; pin: string; description: string }>();
  const { field, register, setValue, control, onSubmit } = form$;

  // you can register your field manually
  register("pin", {
    defaultValue: "",
    rules: ["required", "minLength:4", "numeric"]
  });

  const submitCallback = onSubmit((data, e) => {
    console.log("Data =>", data);
    console.log("Event =>", e);
  }, (err, e) => {
    console.log("Error =>", err);
    console.log("Event =>", e);
  });
</script>

<form on:submit={submitCallback}>
  <Field {control} name="name" rules="required" let:errors let:onChange>
    <Component {onChange} />
    {#each errors as item}
        <div>{item}</div>
    {/each}
  </Field>
  <!-- manually handle set value -->
  <input type="text" on:input={(e) => setValue("pin", e.target.value)} />
  <!-- register field using svelte actions -->
  <input name="description" type="text" use:field={{ rules: ["required"] }}>
  <button disabled={!$form$.valid}>
    {#if $form$.submitting}Submit{:else}Submiting...{/if}
  </button>
</form>

API

Check out the API documentation.

For advanced usage, you may refer to Advanced API.

Sponsors

License

svelve-reactive-form is 100% free and open-source, under the MIT license.

Big Thanks To

Thanks to these awesome companies for their support of Open Source developers ❤

GitHub NPM

Inspired by react-hook-form.

0.16.11

3 months ago

0.16.14

3 months ago

0.16.12

3 months ago

0.16.13

3 months ago

0.16.10

10 months ago

0.15.4

2 years ago

0.15.5

2 years ago

0.15.6

2 years ago

0.15.7

2 years ago

0.15.8

2 years ago

0.15.9

2 years ago

0.15.0

2 years ago

0.15.1

2 years ago

0.15.3

2 years ago

0.16.3

2 years ago

0.16.4

2 years ago

0.14.0

2 years ago

0.16.1

2 years ago

0.13.0

3 years ago

0.13.1

3 years ago

0.12.0

3 years ago

0.12.1

3 years ago

0.11.0

3 years ago

0.10.3

3 years ago

0.10.1

3 years ago

0.10.2

3 years ago

0.10.0

3 years ago

0.9.3

3 years ago

0.9.0

3 years ago

0.9.2

3 years ago

0.9.1

3 years ago

0.8.0

3 years ago

0.7.14

3 years ago

0.7.13

3 years ago

0.7.12

3 years ago

0.7.11

3 years ago

0.7.10

3 years ago

0.7.9

3 years ago

0.7.6

3 years ago

0.7.8

3 years ago

0.7.7

3 years ago

0.7.2

3 years ago

0.7.1

3 years ago

0.7.4

3 years ago

0.7.3

3 years ago

0.7.0

3 years ago

0.6.9-beta

3 years ago

0.6.8-beta

3 years ago

0.6.7-beta

3 years ago

0.6.6-beta

3 years ago

0.6.5-beta

3 years ago

0.6.4-beta

3 years ago

0.6.3-beta

3 years ago

0.6.2-beta

3 years ago

0.6.1-beta

3 years ago

0.6.0-beta

3 years ago

0.5.0-beta

3 years ago

0.4.5-beta

3 years ago

0.4.3-beta

3 years ago

0.4.4-beta

3 years ago

0.4.2-beta

3 years ago

0.4.1-beta

3 years ago

0.4.0-beta

3 years ago

0.3.0-beta

3 years ago

0.2.2-beta

3 years ago

0.2.0-beta

3 years ago

0.2.1-beta

3 years ago

0.1.6-beta

3 years ago

0.1.7-beta

3 years ago

0.1.9-beta

3 years ago

0.1.5-beta

3 years ago

0.1.8-beta

3 years ago

0.1.3-beta

3 years ago

0.1.4-beta

3 years ago

0.1.2-beta

3 years ago

0.1.1-beta

3 years ago

0.1.0-beta

3 years ago