diff --git a/src/components/NcRichContenteditable/NcRichContenteditable.vue b/src/components/NcRichContenteditable/NcRichContenteditable.vue index 38f67a174c..3f8a107554 100644 --- a/src/components/NcRichContenteditable/NcRichContenteditable.vue +++ b/src/components/NcRichContenteditable/NcRichContenteditable.vue @@ -160,8 +160,8 @@ export default { aria-multiline="true" class="rich-contenteditable__input" role="textbox" + v-on="listeners" @input="onInput" - v-on="$listeners" @keydown.delete="onDelete" @keydown.enter.exact="onEnter" @keydown.ctrl.enter.exact.stop.prevent="onCtrlEnter" @@ -423,6 +423,23 @@ export default { canEdit() { return this.contenteditable && !this.disabled }, + + /** + * Proxied native event handlers without custom event handlers + * + * @return {Record} + */ + listeners() { + /** + * All component's event handlers are set as native event handlers with by v-on directive. + * The component also raised custom events manually by $emit for corresponding events. + * As a result, it triggers handlers twice. + * The v-on="listeners" directive should only set proxied native events handler without custom events + */ + const listeners = { ...this.$listeners } + delete listeners.paste + return listeners + }, }, watch: {