@goodie-forms/core
v1.3.1
Published
<!-- Logo --> <p align="center"> <img src="https://raw.githubusercontent.com/iGoodie/goodie-forms/master/.github/assets/logo.svg" height="200px" alt="Logo"/> </p>
Readme
Description
Core package of Goodie Forms.
Quick Example
import { FormController } from "@goodie-forms/core";
import z from "zod";
// 1. Define a schema for your form data
const userRegisterSchema = z.object({
name: z.string().min(1, "Name is required"),
email: z.string().email("Invalid email address"),
password: z.string().min(6, "Password must be at least 6 characters"),
});
// 2. Create a form controller with the schema
const formController = new FormController({
validationSchema: userRegisterSchema,
});
// 3. Register form fields
const nameEl = document.getElementById("name") as HTMLInputElement;
const emailEl = document.getElementById("email") as HTMLInputElement;
const passwordEl = document.getElementById("password") as HTMLInputElement;
formController
.registerField(formController.path.of("name"))
.bindElement(nameEl);
formController
.registerField(formController.path.of("email"))
.bindElement(emailEl);
formController
.registerField(formController.path.of("password"))
.bindElement(passwordEl);
// 4. Handle issues
formController.events.on("fieldIssuesUpdated", (path) => {
const field = formController.getField(path)!;
if (field.issues.length !== 0) {
field.boundElement?.classList.add("has-issues");
} else {
field.boundElement?.classList.remove("has-issues");
}
});
// 5. Handle form submission
const formEl = document.getElementById("form") as HTMLFormElement);
const submitHandler = formController.createSubmitHandler(async (data) => {
console.log("Form submitted successfully with data:", data);
});
formEl.onsubmit = submitHandler;License
© 2026 Taha Anılcan Metinyurt (iGoodie)
For any part of this work for which the license is applicable, this work is licensed under the Attribution-ShareAlike 4.0 International license. (See LICENSE).
