From 00f7caede8c30d32e7efcd6bdec333a3faa83bea Mon Sep 17 00:00:00 2001 From: Alexander Shabunevich Date: Sat, 30 Mar 2024 15:08:44 +0300 Subject: [PATCH] fix: check input value on every update For better handling value change without directive, like vanilla case --- src/directive.ts | 11 +++++------ src/mask-input.ts | 10 ++++------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/directive.ts b/src/directive.ts index e347b48..4b7d824 100644 --- a/src/directive.ts +++ b/src/directive.ts @@ -42,13 +42,12 @@ export const vMaska: MaskaDirective = (el, binding) => { } let mask = masks.get(input) - if (!mask) { + if (mask) { + mask.update(opts) + } else { mask = new MaskInput(input, opts) masks.set(input, mask) - } else { - mask.update(opts) + // delay for possible v-model change + setTimeout(() => mask?.checkValue(input)) } - - // delay init to wait for v-model value - setTimeout(() => mask?.checkValue(input)) } diff --git a/src/mask-input.ts b/src/mask-input.ts index 5715974..f67e448 100644 --- a/src/mask-input.ts +++ b/src/mask-input.ts @@ -43,15 +43,13 @@ export class MaskInput { private init(inputs: HTMLInputElement[], defaults: MaskOptions): void { for (const input of inputs) { - const inited = this.items.has(input) - - this.items.set(input, new Mask(parseInput(input, defaults))) - - if (!inited) { + if (!this.items.has(input)) { input.addEventListener('input', this.inputEvent) input.addEventListener('beforeinput', this.beforeinputEvent) - this.checkValue(input) } + + this.items.set(input, new Mask(parseInput(input, defaults))) + this.checkValue(input) } }