一覧へ戻る
ajaishankar/stimulus-zod-form(新しいタブで開きます)
主要言語: TypeScript
Stimulus Zod validated form
- star 数
- 14
- watcher 数
- 1
- fork 数
- 0
- issue 数
- 0
- 最終更新
- 2024/05/14
主要言語: TypeScript
Stimulus Zod validated form
For the ten people on earth who want to use Zod with Stimulus for client side validation.
This package was inspired by Remix Validated Form but a whole lot simpler thanks to Stimulus!
Define your schema and register the controllers
import { Application } from "@hotwired/stimulus" import { FormController, FieldController } from "stimulus-zod-form"; import { z } from "zod"; const PersonSchema = z.object({ name: z.string().min(3), email: z.string().email("invalid_email"), addresses: z.array(z.object({ city: z.string() })) }) const PersonFormController = FormController(PersonSchema); window.Stimulus = Application.start(); Stimulus.register("form", PersonFormController); Stimulus.register("field", FieldController);
Let the controllers spring to life!
<form data-controller="form" data-form-field-outlet=".form-field" data-action="form#submit" data-form-error-map-value='{ "invalid_email": "correo inválido", ... }'> <div data-form-target="error"></div> <div data-controller="field" class="form-field"> <input name="addresses[0].city" data-field-target="input" data-action="blur->field#validate" /> <div data-field-target="error"></div> </div> </form>
In the sample code above note the following
data-form-field-outletdata-action="form#submit"data-action="blur->field#validate"data-field-target="input"data-field-target="error" data-form-target="error"data-form-error-map-value