diff --git a/src/AttributesManager.ts b/src/AttributesManager.ts index ca2f95a..14e227f 100644 --- a/src/AttributesManager.ts +++ b/src/AttributesManager.ts @@ -48,6 +48,13 @@ export default class AttributesManager { } } + public onUnfocus(ev:FocusEvent) { + const target = ev.target + if (target) { + this.triggerElement(AttributeListeners.INPUT_UNFOCUS, this.form.inputs[(target as HTMLInputElement).name]) + } + } + // private onChange public setup() { @@ -61,6 +68,8 @@ export default class AttributesManager { el.element.addEventListener("keyup", ev => this.onChange(ev)) el.element.removeEventListener("change", ev => this.onChange(ev)) el.element.addEventListener("change", ev => this.onChange(ev)) + el.element.removeEventListener("focusout", ev => this.onUnfocus(ev)) + el.element.addEventListener("focusout", ev => this.onUnfocus(ev)) // loop through assignments for (const key in this.attributesArray) { diff --git a/src/FormManager.ts b/src/FormManager.ts index ddd6587..335b176 100644 --- a/src/FormManager.ts +++ b/src/FormManager.ts @@ -163,8 +163,11 @@ export default class FormManager { const input = this.inputs[name]; const res = this.attributeManager.triggerElement(AttributeListeners.VERIFY, input) as boolean if (input.verify() && res) continue + this.attributeManager.triggerElement(AttributeListeners.INPUT_ERROR, input) errored.push(input) - if(quick) return errored + if(quick) { + return errored + } } return errored } @@ -175,8 +178,8 @@ export default class FormManager { * @returns {boolean} * @memberof FormManager */ - public verify(): boolean { - return this.validate(true).length === 0 + public verify(quick = true): boolean { + return this.validate(quick).length === 0 } /** @@ -250,11 +253,15 @@ export default class FormManager { */ public fillFromJSON(json: any) { for (const key in json) { - if (json.hasOwnProperty(key)) { - const element = json[key]; - if(this.inputs[key] !== undefined) this.inputs[key].setValue(element) - else console.warn(`${key} is not a valid input name`) + if (!json.hasOwnProperty(key)) { + continue } + const element = json[key]; + if (this.inputs[key] === undefined) { + console.warn(`${key} is not a valid input name`) + continue + } + this.inputs[key].setValue(element) } this.attributeManager.trigger(AttributeListeners.FORM_FILL) }