From 2a09a948f81eea8b7dba166b9659a06fdd355595 Mon Sep 17 00:00:00 2001 From: Pierre Paridans Date: Tue, 25 Apr 2023 11:24:54 +0000 Subject: [PATCH] [IMP] web: ControlPanel adaptations on mobile Part-of: odoo/odoo#116641 --- .../src/search/control_panel/control_panel.js | 22 ++++ .../search/control_panel/control_panel.xml | 108 ++++++++++++------ 2 files changed, 95 insertions(+), 35 deletions(-) diff --git a/addons/web/static/src/search/control_panel/control_panel.js b/addons/web/static/src/search/control_panel/control_panel.js index abc0491cb45..8d9e26ca18b 100644 --- a/addons/web/static/src/search/control_panel/control_panel.js +++ b/addons/web/static/src/search/control_panel/control_panel.js @@ -70,6 +70,28 @@ export class ControlPanel extends Component { this.lastScrollTop = 0; this.initialScrollTop = this.getScrollingElement().scrollTop; }); + + this.mainButtons = useRef("mainButtons"); + + useEffect(() => { + if (!this.env.isSmall) { + return; + } + // on small screen, clean-up the dropdown elements + const dropdownButtons = this.mainButtons.el.querySelectorAll(".dropdown-menu button"); + if (!dropdownButtons.length) { + this.mainButtons.el + .querySelectorAll(".dropdown-menu, .dropdown-toggle") + .forEach((el) => el.classList.add("d-none")); + return; + } + for (const button of dropdownButtons) { + for (const cl of Array.from(button.classList)) { + button.classList.toggle(cl, !cl.startsWith("btn-")); + } + button.classList.add("dropdown-item", "btn", "btn-link"); + } + }); } getScrollingElement() { diff --git a/addons/web/static/src/search/control_panel/control_panel.xml b/addons/web/static/src/search/control_panel/control_panel.xml index 6c99958b23a..2fcb36a0d1c 100644 --- a/addons/web/static/src/search/control_panel/control_panel.xml +++ b/addons/web/static/src/search/control_panel/control_panel.xml @@ -4,11 +4,25 @@
-
-
- - - +
+
+ +
+ + + +
+
+ + + + +
@@ -26,22 +40,38 @@
-
+
- + + + +
@@ -53,26 +83,34 @@ -
- +