1
Fork 0

rework how field values are passed in

This commit is contained in:
Conduitry 2022-07-23 10:33:27 -04:00
parent f59c82dfef
commit 4cc1c0afe9
1 changed files with 7 additions and 20 deletions

View File

@ -1,13 +1,12 @@
import { writable } from 'svelte/store';
export const field = (validator, chill) => {
let count = 0;
let value;
let message_enabled = false;
const { set, subscribe } = writable();
const update = () => {
const message = count ? validator(value) : null;
const message = validator(value);
const valid = !message;
if (chill && valid) {
message_enabled = false;
@ -16,36 +15,24 @@ export const field = (validator, chill) => {
return valid;
};
update();
const validate = () => {
message_enabled = true;
return update();
};
const action = (node, new_value) => {
count++;
value = new_value;
update();
const action = (node) => {
const on_blur = (event) => {
if (!node.contains(event.relatedTarget)) {
validate();
}
};
node.addEventListener('blur', on_blur, true);
return { destroy: () => node.removeEventListener('blur', on_blur) };
};
return {
update(new_value) {
value = new_value;
update();
},
destroy() {
count--;
node.removeEventListener('blur', on_blur);
update();
},
};
action.set = (new_value) => {
value = new_value;
update();
};
action.validate = validate;