1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
odoo.define('mail/static/src/widgets/messaging_menu/messaging_menu.js', function (require) {
'use strict';
const components = {
MessagingMenu: require('mail/static/src/components/messaging_menu/messaging_menu.js'),
};
const SystrayMenu = require('web.SystrayMenu');
const Widget = require('web.Widget');
/**
* Odoo Widget, necessary to instantiate component.
*/
const MessagingMenu = Widget.extend({
template: 'mail.widgets.MessagingMenu',
/**
* @override
*/
init() {
this._super(...arguments);
this.component = undefined;
},
/**
* @override
*/
destroy() {
if (this.component) {
this.component.destroy();
}
this._super(...arguments);
},
async on_attach_callback() {
const MessagingMenuComponent = components.MessagingMenu;
this.component = new MessagingMenuComponent(null);
await this.component.mount(this.el);
// unwrap
this.el.parentNode.insertBefore(this.component.el, this.el);
this.el.parentNode.removeChild(this.el);
},
});
// Systray menu items display order matches order in the list
// lower index comes first, and display is from right to left.
// For messagin menu, it should come before activity menu, if any
// otherwise, it is the next systray item.
const activityMenuIndex = SystrayMenu.Items.findIndex(SystrayMenuItem =>
SystrayMenuItem.prototype.name === 'activity_menu');
if (activityMenuIndex > 0) {
SystrayMenu.Items.splice(activityMenuIndex, 0, MessagingMenu);
} else {
SystrayMenu.Items.push(MessagingMenu);
}
return MessagingMenu;
});
|