diff --git a/addons/mail/static/src/emoji_picker/emoji_picker.js b/addons/mail/static/src/emoji_picker/emoji_picker.js index c9137ea10af..10ffd4dd36a 100644 --- a/addons/mail/static/src/emoji_picker/emoji_picker.js +++ b/addons/mail/static/src/emoji_picker/emoji_picker.js @@ -295,8 +295,10 @@ export class EmojiPicker extends Component { this.recent[codepoints]++; browser.localStorage.setItem("mail.emoji.frequent", JSON.stringify(this.recent)); this.gridRef.el.scrollTop = 0; - this.props.close(); - this.props.onClose(); + if (!ev.shiftKey) { + this.props.close(); + this.props.onClose(); + } } highlightActiveCategory() { diff --git a/addons/mail/static/src/emoji_picker/emoji_picker.xml b/addons/mail/static/src/emoji_picker/emoji_picker.xml index 6d7a2be13f3..d8053859097 100644 --- a/addons/mail/static/src/emoji_picker/emoji_picker.xml +++ b/addons/mail/static/src/emoji_picker/emoji_picker.xml @@ -26,7 +26,7 @@
-
+
😢 No emoji match your search diff --git a/addons/mail/static/tests/emoji/emoji_tests.js b/addons/mail/static/tests/emoji/emoji_tests.js index bd5eb35b70c..fa68557a25b 100644 --- a/addons/mail/static/tests/emoji/emoji_tests.js +++ b/addons/mail/static/tests/emoji/emoji_tests.js @@ -150,3 +150,21 @@ QUnit.test("first category should be highlight by default", async (assert) => { await click("button[aria-label='Emojis']"); assert.containsOnce($, ".o-mail-EmojiPicker-header .o-mail-Emoji:eq(0).bg-300"); }); + +QUnit.test( + "selecting an emoji while holding down the Shift key prevents the emoji picker from closing", + async (assert) => { + const pyEnv = await startServer(); + const channelId = pyEnv["discuss.channel"].create({ name: "" }); + const { openDiscuss } = await start(); + await openDiscuss(channelId); + await click("button[aria-label='Emojis']"); + await afterNextRender(() => + $(".o-mail-EmojiPicker-content .o-mail-Emoji:contains(👺)")[0].dispatchEvent( + new MouseEvent("click", { shiftKey: true }) + ) + ); + assert.containsOnce($, ".o-mail-EmojiPicker"); + assert.strictEqual($(".o-mail-Composer-input").val(), "👺"); + } +);