@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
JavaScript
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);
}
}
}