/** @odoo-module **/ // In Odoo 19, Dropdown uses an inline xml`` template (no QWeb template named web.Dropdown). // MenuTranslationButton is injected into DropdownItem via JS patch + XML template inheritance // of web.DropdownItem (NOT web.NavBar.DropdownItem which is unused as a component template). // NavBar is also patched to support translate buttons on section buttons with children. import {DropdownItem} from "@web/core/dropdown/dropdown_item"; import {NavBar} from "@web/webclient/navbar/navbar"; import {MenuTranslationButton} from "./menu_translation_button"; import {patch} from "@web/core/utils/patch"; // Patch DropdownItem — for leaf menu items (no children) patch(DropdownItem, { components: { ...DropdownItem.components, MenuTranslationButton, }, }); patch(DropdownItem.prototype, { setup() { super.setup(...arguments); this.hasTranslation = this.getHasTranslation(); }, onClick(ev) { if (ev.target.classList.contains("translate-middle-y")) { return; } super.onClick(ev); }, getHasTranslation() { return Boolean(odoo.translate); }, }); // Patch NavBar — for section buttons with children (Dropdown-based) patch(NavBar, { components: { ...NavBar.components, MenuTranslationButton, }, }); patch(NavBar.prototype, { setup() { super.setup(...arguments); // expose to template via __translate__ variable this.__translate__ = Boolean(odoo.translate); }, });