diff --git a/addons/mail/static/src/models/emoji_grid_no_search_content_view.js b/addons/mail/static/src/models/emoji_grid_no_search_content_view.js
new file mode 100644
index 00000000000..ea9e418e33a
--- /dev/null
+++ b/addons/mail/static/src/models/emoji_grid_no_search_content_view.js
@@ -0,0 +1,19 @@
+/** @odoo-module **/
+
+import { registerModel } from '@mail/model/model_core';
+import { attr, one } from '@mail/model/model_field';
+
+registerModel({
+ name: 'EmojiGridNoSearchContentView',
+ fields: {
+ emojiGridViewOwner: one('EmojiGridView', {
+ identifying: true,
+ inverse: 'searchNoContentView',
+ }),
+ text: attr({
+ compute() {
+ return this.env._t("No emoji match your search");
+ },
+ }),
+ },
+});
diff --git a/addons/mail/static/src/models/emoji_grid_view.js b/addons/mail/static/src/models/emoji_grid_view.js
index 6c33a8554b3..a898807d9df 100644
--- a/addons/mail/static/src/models/emoji_grid_view.js
+++ b/addons/mail/static/src/models/emoji_grid_view.js
@@ -182,6 +182,16 @@ registerModel({
scrollRecomputeCount: attr({
default: 0,
}),
+ searchNoContentView: one('EmojiGridNoSearchContentView', {
+ compute() {
+ if (this.emojiPickerViewOwner.emojiSearchBarView.currentSearch !== "" && this.rows.length === 0) {
+ return {};
+ }
+ return clear();
+ },
+ inverse: 'emojiGridViewOwner',
+ isCausal: true,
+ }),
searchRowRegistry: one('EmojiGridViewRowRegistry', {
default: {},
inverse: 'emojiGridViewOwnerAsSearch',