summaryrefslogtreecommitdiff
path: root/muk_web_theme/static/src/js/chrome/apps.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 17:14:58 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 17:14:58 +0700
commit1ca3b3df3421961caec3b747a364071c80f5c7da (patch)
tree6778a1f0f3f9b4c6e26d6d87ccde16e24da6c9d6 /muk_web_theme/static/src/js/chrome/apps.js
parentb57188be371d36d96caac4b8d65a40745c0e972c (diff)
initial commit
Diffstat (limited to 'muk_web_theme/static/src/js/chrome/apps.js')
-rw-r--r--muk_web_theme/static/src/js/chrome/apps.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/muk_web_theme/static/src/js/chrome/apps.js b/muk_web_theme/static/src/js/chrome/apps.js
new file mode 100644
index 0000000..8423aa9
--- /dev/null
+++ b/muk_web_theme/static/src/js/chrome/apps.js
@@ -0,0 +1,96 @@
+/**********************************************************************************
+*
+* Copyright (c) 2017-today MuK IT GmbH.
+*
+* This file is part of MuK Grid Snippets
+* (see https://mukit.at).
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+**********************************************************************************/
+
+odoo.define('muk_web_theme.AppsMenu', function (require) {
+"use strict";
+
+const core = require('web.core');
+const session = require("web.session");
+
+const AppsMenu = require("web.AppsMenu");
+const MenuSearchMixin = require("muk_web_theme.MenuSearchMixin");
+
+AppsMenu.include(_.extend({}, MenuSearchMixin, {
+ events: _.extend({}, AppsMenu.prototype.events, {
+ "keydown .mk_search_input input": "_onSearchResultsNavigate",
+ "click .mk_menu_search_result": "_onSearchResultChosen",
+ "shown.bs.dropdown": "_onMenuShown",
+ "hidden.bs.dropdown": "_onMenuHidden",
+ "hide.bs.dropdown": "_onMenuHide",
+ }),
+ init(parent, menuData) {
+ this._super(...arguments);
+ for (let n in this._apps) {
+ this._apps[n].web_icon_data = menuData.children[n].web_icon_data;
+ }
+ this._searchableMenus = _.reduce(
+ menuData.children, this._findNames.bind(this), {}
+ );
+ this._search_def = $.Deferred();
+ },
+ start() {
+ this._setBackgroundImage();
+ this.$search_container = this.$(".mk_search_container");
+ this.$search_input = this.$(".mk_search_input input");
+ this.$search_results = this.$(".mk_search_results");
+ return this._super(...arguments);
+ },
+ _onSearchResultChosen(event) {
+ event.preventDefault();
+ const $result = $(event.currentTarget),
+ text = $result.text().trim(),
+ data = $result.data(),
+ suffix = ~text.indexOf("/") ? "/" : "";
+ this.trigger_up("menu_clicked", {
+ action_id: data.actionId,
+ id: data.menuId,
+ previous_menu_id: data.parentId,
+ });
+ const app = _.find(this._apps, (_app) => text.indexOf(_app.name + suffix) === 0);
+ core.bus.trigger("change_menu_section", app.menuID);
+ },
+ _onAppsMenuItemClicked(event) {
+ this._super(...arguments);
+ event.preventDefault();
+ },
+ _setBackgroundImage() {
+ const url = session.url('/web/image', {
+ model: 'res.company',
+ id: session.company_id,
+ field: 'background_image',
+ });
+ this.$('.dropdown-menu').css({
+ "background-size": "cover",
+ "background-image": "url(" + url + ")"
+ });
+ if (session.muk_web_theme_background_blend_mode) {
+ this.$('.o-app-name').css({
+ "mix-blend-mode": session.muk_web_theme_background_blend_mode,
+ });
+ }
+ },
+ _onMenuHide(event) {
+ return $('.oe_wait').length === 0 && !this.$('input').is(':focus');
+ },
+}));
+
+}); \ No newline at end of file