[IMP] mail: emoji picker view no search content screen

Task-2976156

closes odoo/odoo#99700

Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
This commit is contained in:
Alexandre Kühn
2022-09-09 02:41:48 +02:00
parent 9c733d8c22
commit d41f6e7687
7 changed files with 67 additions and 7 deletions
@@ -0,0 +1,21 @@
/** @odoo-module **/
import { registerMessagingComponent } from '@mail/utils/messaging_component';
const { Component } = owl;
export class EmojiGridSearchNoContentView extends Component {
/**
* @returns {EmojiGridSearchNoContentView}
*/
get emojiGridSearchNoContentView() {
return this.props.record;
}
}
Object.assign(EmojiGridSearchNoContentView, {
props: { record: Object },
template: 'mail.EmojiGridSearchNoContentView',
});
registerMessagingComponent(EmojiGridSearchNoContentView);
@@ -0,0 +1,5 @@
.o_EmojiGridSearchNoContentView_image {
filter: grayscale(1);
font-size: 5rem;
}
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="mail.EmojiGridSearchNoContentView" owl="1">
<div class="o_EmojiGridSearchNoContentView d-flex flex-column justify-content-center align-items-center w-100 h-100">
<div class="o_EmojiGridSearchNoContentView_image">😢</div>
<span class="o_EmojiGridSearchNoContentView_text text-muted" t-out="emojiGridSearchNoContentView.text"/>
</div>
</t>
</templates>
@@ -2,12 +2,6 @@
// Layout
// ------------------------------------------------------------------
.o_EmojiGridView {
display: grid;
grid-template-columns: repeat(9, 1fr);
text-align: center;
}
.o_EmojiGridView_container {
height: auto;
width: auto;
@@ -3,7 +3,8 @@
<t t-name="mail.EmojiGridView" owl="1">
<div class="o_EmojiGridView o_EmojiGridView_container" t-attf-style="--rowHeight: {{emojiGridView.rowHeight}}px; --itemWidth: {{emojiGridView.itemWidth}}px; height: {{emojiGridView.height}}; width: {{emojiGridView.width}};" t-on-scroll="emojiGridView.onScroll" t-ref="containerRef">
<div class="o_EmojiGridView_list" t-attf-style="height: {{emojiGridView.listHeight}}px; min-height: {{emojiGridView.listHeight}}px;" t-ref="listRef">
<EmojiGridSearchNoContentView t-if="emojiGridView.searchNoContentView" record="emojiGridView.searchNoContentView"/>
<div t-if="!emojiGridView.searchNoContentView" class="o_EmojiGridView_list" t-attf-style="height: {{emojiGridView.listHeight}}px; min-height: {{emojiGridView.listHeight}}px;" t-ref="listRef">
<div t-if="emojiGridView.lastRenderedRowIndex >= emojiGridView.firstRenderedRowIndex" class="o_EmojiGridView_viewBlock" t-attf-style="top: {{emojiGridView.distanceFromTop}}px; width: {{emojiGridView.width}};" t-ref="viewBlockRef">
<EmojiGridRowView t-foreach="emojiGridView.renderedRows" t-as="row" t-key="row" record="row"/>
</div>
@@ -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");
},
}),
},
});
@@ -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',