From 84a088347ec8f3dd1bcf670543c3208c3596c0d1 Mon Sep 17 00:00:00 2001 From: "Grigorii K. Shartsev" Date: Fri, 30 Jun 2023 23:07:51 +0500 Subject: [PATCH] fix(NcRichContenteditable): remove doubling proxied event handlers Co-authored-by: Pytal <24800714+Pytal@users.noreply.github.com> Signed-off-by: Grigorii K. Shartsev --- .../NcRichContenteditable.vue | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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: {