diff --git a/src/vaadin-rich-text-editor.html b/src/vaadin-rich-text-editor.html index 2f64d00..7066801 100644 --- a/src/vaadin-rich-text-editor.html +++ b/src/vaadin-rich-text-editor.html @@ -675,9 +675,14 @@ } __emitChangeEvent() { - this.__debounceSetValue && this.__debounceSetValue.flush(); + let lastCommittedChange = this.__lastCommittedChange; - if (this.__lastCommittedChange !== this.value) { + if (this.__debounceSetValue && this.__debounceSetValue.isActive()) { + lastCommittedChange = this.value; + this.__debounceSetValue.flush(); + } + + if (lastCommittedChange !== this.value) { this.dispatchEvent(new CustomEvent('change', {bubbles: true, cancelable: false})); this.__lastCommittedChange = this.value; } diff --git a/test/basic.html b/test/basic.html index 4172e07..d219874 100644 --- a/test/basic.html +++ b/test/basic.html @@ -443,6 +443,9 @@ // Emulate setting the value from keyboard editor.focus(); setContent('Foo'); + // Setting selection range to null in Quill + // Needed for proper hasFocus() check + content.blur(); content.dispatchEvent(new CustomEvent('focusout')); expect(spy).to.be.calledOnce; @@ -454,6 +457,7 @@ rte.value = JSON.stringify([{insert: 'Foo\n'}]); editor.focus(); + content.blur(); content.dispatchEvent(new CustomEvent('focusout')); expect(spy).to.not.be.called; @@ -475,6 +479,7 @@ btn.dispatchEvent(new MouseEvent('mousedown', {bubbles: true})); const evt = new CustomEvent('focusout'); evt.relatedTarget = btn; + content.blur(); content.dispatchEvent(evt); btn.click(); @@ -533,6 +538,7 @@ btn.dispatchEvent(new MouseEvent('mousedown', {bubbles: true})); btn.click(); + content.blur(); content.dispatchEvent(new CustomEvent('focusout')); expect(spy).to.not.be.called;