UNPKG

@astro-utils/forms

Version:

Server component for Astro (call server functions from client side with validation and state management)

44 lines (43 loc) 1.42 kB
import { setProperty } from 'dot-prop'; export default class AboutFormName { constructor(form, originalName, formValue, errorMessage) { this.form = form; this.originalName = originalName; this.formValue = formValue; this.errorMessage = errorMessage; this.hadError = false; } pushError(zodError, overrideMessage) { this.hadError = true; const topMessage = overrideMessage ?? zodError.issues.at(0).message; this.form.errors.push({ name: this.originalName, value: this.formValue, message: this.errorMessage ?? topMessage, issues: zodError.issues.map(x => ({ code: x.code, message: x.message })) }); } pushErrorManually(code, errorMessage) { this.hadError = true; this.form.errors.push({ name: this.originalName, value: this.formValue, message: this.errorMessage ?? errorMessage, issues: [{ code, message: errorMessage }] }); } catchParse(zObject, overrideMessage) { try { this.formValue = zObject.parse(this.formValue); return true; } catch (err) { this.pushError(err, overrideMessage); } } setValue() { if (this.hadError) return; setProperty(this.form, this.originalName, this.formValue); } }