mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[MIG] web_responsive: Migration to 17.0
This commit is contained in:
77
web_responsive/static/src/components/apps_menu_tools.esm.js
Normal file
77
web_responsive/static/src/components/apps_menu_tools.esm.js
Normal file
@@ -0,0 +1,77 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
/* Copyright 2018 Tecnativa - Jairo Llopis
|
||||
* Copyright 2021 ITerra - Sergey Shebanin
|
||||
* Copyright 2023 Onestein - Anjeel Haria
|
||||
* Copyright 2023 Taras Shabaranskyi
|
||||
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
|
||||
|
||||
export function getWebIconData(menu) {
|
||||
const result = "/web_responsive/static/img/default_icon_app.png";
|
||||
const iconData = menu.webIconData;
|
||||
if (!iconData) {
|
||||
return result;
|
||||
}
|
||||
const prefix = iconData.startsWith("P")
|
||||
? "data:image/svg+xml;base64,"
|
||||
: "data:image/png;base64,";
|
||||
if (iconData.startsWith("data:image")) {
|
||||
return iconData;
|
||||
}
|
||||
return prefix + iconData.replace(/\s/g, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} menu
|
||||
*/
|
||||
export function updateMenuWebIconData(menu) {
|
||||
menu.webIconData = menu.webIconData ? getWebIconData(menu) : "";
|
||||
}
|
||||
|
||||
export function updateMenuDisplayName(menu) {
|
||||
menu.displayName = menu.name.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} menu
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
export function isRootMenu(menu) {
|
||||
return menu.actionID && menu.appID === menu.id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object[]} memo
|
||||
* @param {Object|null} parentMenu
|
||||
* @param {Object} menu
|
||||
* @returns {Object[]}
|
||||
*/
|
||||
export function collectSubMenuItems(memo, parentMenu, menu) {
|
||||
const menuCopy = Object.assign({}, menu);
|
||||
updateMenuDisplayName(menuCopy);
|
||||
if (parentMenu) {
|
||||
menuCopy.displayName = `${parentMenu.displayName} / ${menuCopy.displayName}`;
|
||||
}
|
||||
if (menuCopy.actionID && !isRootMenu(menuCopy)) {
|
||||
memo.push(menuCopy);
|
||||
}
|
||||
for (const child of menuCopy.childrenTree || []) {
|
||||
collectSubMenuItems(memo, menuCopy, child);
|
||||
}
|
||||
return memo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object[]} memo
|
||||
* @param {Object} menu
|
||||
* @returns {Object}
|
||||
*/
|
||||
export function collectRootMenuItems(memo, menu) {
|
||||
if (isRootMenu(menu)) {
|
||||
const menuCopy = Object.assign({}, menu);
|
||||
updateMenuWebIconData(menuCopy);
|
||||
updateMenuDisplayName(menuCopy);
|
||||
memo.push(menuCopy);
|
||||
}
|
||||
return memo;
|
||||
}
|
||||
Reference in New Issue
Block a user