svelte-craftcms-headless-formie
Version:
Svelte Package for using Craft CMS with the Formie Plugin in headless configuration
54 lines (53 loc) • 1.33 kB
JavaScript
/**
* @class FormStore
* @description
* custom error class, which can be used to map the errors to its field
*
* @example
* ```svelte
* <script>
* const error = $derived(formStore.errorByHandle(field?.handle));
* </script>
* <input
* type="text"
* aria-invalid={!!error}
* aria-errormessage={error}
* />
* <FieldError {error} /> <!-- will only be shown if errors are present -->
*/
export class FormStore {
#errors = $state(undefined);
/**
* ERROR
*/
clearErrors() {
this.#errors = undefined;
}
// set errorobject
set errors(value) {
this.#errors = value;
}
// get errorobject
get errors() {
return this.#errors;
}
getErrorByHandle(handle) {
if (!handle)
return undefined;
const obj = this.#errors;
if (!obj || !obj[handle] || obj[handle].length === 0)
return undefined;
return obj[handle][0];
}
setErrorByHandle(handle, message) {
if (!handle)
return;
const obj = this.#errors;
if (!obj || !obj[handle])
return (this.#errors = { [handle]: [message] });
// if (obj && obj[handle]) {
// const prevErr: string[] = obj[handle]
// const newErrors: string[] = [message, ...prevErr]
// }
}
}