diff --git a/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js b/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js index 77ce2d61d1d..8be1a2a50ac 100644 --- a/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js +++ b/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js @@ -158,4 +158,11 @@ discourseModule("Unit | Utility | emoji", function () { assert.deepEqual(matches, ["bowing_man"]); }); + + test("search does partial-match on emoji aliases", function (assert) { + const matches = emojiSearch("instru"); + + assert.ok(matches.includes("woman_teacher")); + assert.ok(matches.includes("violin")); + }); }); diff --git a/app/assets/javascripts/pretty-text/addon/emoji.js b/app/assets/javascripts/pretty-text/addon/emoji.js index 9d79a6ce61b..16d4b31aea2 100644 --- a/app/assets/javascripts/pretty-text/addon/emoji.js +++ b/app/assets/javascripts/pretty-text/addon/emoji.js @@ -222,9 +222,11 @@ export function emojiSearch(term, options) { } } - if (searchAliases[term]) { - for (const emoji of searchAliases[term]) { - addResult(emoji); + for (const [key, value] of Object.entries(searchAliases)) { + if (key.startsWith(term)) { + for (const emoji of value) { + addResult(emoji); + } } }