diff --git a/addons/hr/__manifest__.py b/addons/hr/__manifest__.py index 4949800f4cd..7a34fc83f59 100644 --- a/addons/hr/__manifest__.py +++ b/addons/hr/__manifest__.py @@ -50,7 +50,8 @@ 'assets': { 'web.assets_backend': [ 'hr/static/src/scss/hr.scss', - 'hr/static/src/js/chat.js', + 'hr/static/src/js/chat_mixin.js', + 'hr/static/src/js/hr_employee.js', 'hr/static/src/js/language.js', 'hr/static/src/js/m2x_avatar_employee.js', 'hr/static/src/js/standalone_m2o_avatar_employee.js', diff --git a/addons/hr/static/src/js/chat_mixin.js b/addons/hr/static/src/js/chat_mixin.js new file mode 100644 index 00000000000..040093b00a6 --- /dev/null +++ b/addons/hr/static/src/js/chat_mixin.js @@ -0,0 +1,36 @@ +odoo.define('hr.chat_mixin', function (require) { +"use strict"; + +const { Component } = owl; + +// CHAT MIXIN +const ChatMixin = { + /** + * @override + */ + _render: function () { + var self = this; + return this._super.apply(this, arguments).then(function () { + var $chat_button = self.$el.find('.o_employee_chat_btn'); + $chat_button.off('click').on('click', self._onOpenChat.bind(self)); + }); + }, + + destroy: function () { + if (this.$el) { + this.$el.find('.o_employee_chat_btn').off('click'); + } + return this._super(); + }, + + _onOpenChat: function (ev) { + ev.preventDefault(); + ev.stopImmediatePropagation(); + const env = Component.env; + env.messaging.openChat({ employeeId: this.state.data.id }); + return true; + }, +}; + +return ChatMixin; +}); diff --git a/addons/hr/static/src/js/chat.js b/addons/hr/static/src/js/hr_employee.js similarity index 61% rename from addons/hr/static/src/js/chat.js rename to addons/hr/static/src/js/hr_employee.js index 9bae9d57d41..eca3b2862e7 100644 --- a/addons/hr/static/src/js/chat.js +++ b/addons/hr/static/src/js/hr_employee.js @@ -11,36 +11,7 @@ odoo.define('hr.employee_chat', function (require) { var KanbanRenderer = require('web.KanbanRenderer'); var KanbanRecord = require('web.KanbanRecord'); - const { Component } = owl; - - // CHAT MIXIN - var ChatMixin = { - /** - * @override - */ - _render: function () { - var self = this; - return this._super.apply(this, arguments).then(function () { - var $chat_button = self.$el.find('.o_employee_chat_btn'); - $chat_button.off('click').on('click', self._onOpenChat.bind(self)); - }); - }, - - destroy: function () { - if (this.$el) { - this.$el.find('.o_employee_chat_btn').off('click'); - } - return this._super(); - }, - - _onOpenChat: function (ev) { - ev.preventDefault(); - ev.stopImmediatePropagation(); - const env = Component.env; - env.messaging.openChat({ employeeId: this.state.data.id }); - return true; - }, - }; + const ChatMixin = require('hr.chat_mixin'); // USAGE OF CHAT MIXIN IN FORM VIEWS var EmployeeFormRenderer = FormRenderer.extend(ChatMixin);