UNPKG

@astro-utils/forms

Version:

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

30 lines (29 loc) 913 B
import { IHTMLFormPlugin } from './iform-plugin.js'; export default class HTMLInputRadioPlugin extends IHTMLFormPlugin { constructor() { super(...arguments); this.storage = new Map(); } createOneValidation(name, keyData) { const { options, about } = keyData; if (!options.has(about.formValue)) { about.pushErrorManually('radio-invalid-value', 'Radio value invalid'); return; } this.form[name] = about.formValue; } createRadioDefault(about) { return { about, options: new Set() }; } addNewValue(about, originalValue) { if (!this.storage.has(about.originalName)) { this.storage.set(about.originalName, this.createRadioDefault(about)); } else { this.storage.get(about.originalName).options.add(originalValue); } } }