From 376383a9bf457404c6109e1f4914aa7dea6b4e1b Mon Sep 17 00:00:00 2001 From: Max Lyashuk Date: Sun, 16 Jun 2019 17:06:11 +0300 Subject: [PATCH 1/2] test(directive): add tests to cover #392 --- src/__tests__/index.test.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/__tests__/index.test.js b/src/__tests__/index.test.js index b07108f7..1ee7f959 100644 --- a/src/__tests__/index.test.js +++ b/src/__tests__/index.test.js @@ -67,4 +67,19 @@ describe('directive usage', () => { await wrapper.vm.$nextTick(); expect(wrapper.vm.$el.value).toBe('11.11.2011'); }); + + it('updates model when input value triggered few times with the same value', async () => { + const wrapper = mountWithMask({ + data: () => ({ mask: '##.##.####', value: undefined }), + template: '', + }); + const pasteValue = '11112011'; + wrapper.vm.$el.value = pasteValue; + wrapper.trigger('input'); + wrapper.vm.$el.value = pasteValue; + wrapper.trigger('input'); + await wrapper.vm.$nextTick(); + + expect(wrapper.vm.$el.value).toBe('11.11.2011'); + }); }); From 9f9c397e7f78ac58eb85849779ad8c5f921b48ef Mon Sep 17 00:00:00 2001 From: Max Lyashuk Date: Sun, 16 Jun 2019 17:04:33 +0300 Subject: [PATCH 2/2] fix(directive): reformat despite the same value --- src/directive.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/directive.js b/src/directive.js index 295adc03..97e82d5a 100644 --- a/src/directive.js +++ b/src/directive.js @@ -9,9 +9,11 @@ import { isAndroid, isChrome } from './utils/env'; * @param {Boolean} force */ function updateValue(el, force = false) { - const { value, dataset: { previousValue = '', mask } } = el; + const { value = '', dataset: { mask } } = el; - if (force || (value && value !== previousValue && value.length > previousValue.length)) { + const hasValue = value.trim().length > 0; + + if (force || hasValue) { el.value = format(value, mask); if (isAndroid && isChrome) { setTimeout(() => trigger(el, 'input'), 0); @@ -19,8 +21,6 @@ function updateValue(el, force = false) { trigger(el, 'input'); } } - - el.dataset.previousValue = value; } /**