summaryrefslogtreecommitdiff
path: root/muk_web_theme/static/src/components
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/components
parentb57188be371d36d96caac4b8d65a40745c0e972c (diff)
initial commit
Diffstat (limited to 'muk_web_theme/static/src/components')
-rw-r--r--muk_web_theme/static/src/components/control_panel.js70
-rw-r--r--muk_web_theme/static/src/components/control_panel.xml65
2 files changed, 135 insertions, 0 deletions
diff --git a/muk_web_theme/static/src/components/control_panel.js b/muk_web_theme/static/src/components/control_panel.js
new file mode 100644
index 0000000..38d7a78
--- /dev/null
+++ b/muk_web_theme/static/src/components/control_panel.js
@@ -0,0 +1,70 @@
+/**********************************************************************************
+*
+* 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.ControlPanel', function (require) {
+"use strict";
+
+const ControlPanel = require('web.ControlPanel');
+const config = require('web.config');
+
+const { useState } = owl.hooks;
+
+if (!config.device.isMobile) {
+ return;
+}
+
+ControlPanel.patch('muk_web_theme.ControlPanel', T => {
+
+ class ControlPanelPatch extends T {
+ constructor() {
+ super(...arguments);
+ this.state = useState({
+ showViewSwitcherButtons: false,
+ });
+ this.isMobile = true;
+ }
+ mounted() {
+ super.mounted();
+ this.onWindowClickEvent = this._onWindowClick.bind(this);
+ window.addEventListener('click', this.onWindowClickEvent);
+ }
+ willUnmount() {
+ super.willUnmount();
+ window.removeEventListener('click', this.onWindowClickEvent);
+ }
+ _onWindowClick(event) {
+ if (this.state.showViewSwitcherButtons && !event.target.closest('.o_cp_switch_buttons')) {
+ this.state.showViewSwitcherButtons = false;
+ }
+ }
+ _getCurrentViewIcon() {
+ const currentView = this.props.views.find((view) => {
+ return view.type === this.env.view.type
+ })
+ return currentView.icon;
+ }
+ }
+
+ return ControlPanelPatch;
+});
+
+});
diff --git a/muk_web_theme/static/src/components/control_panel.xml b/muk_web_theme/static/src/components/control_panel.xml
new file mode 100644
index 0000000..692dd50
--- /dev/null
+++ b/muk_web_theme/static/src/components/control_panel.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ 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/>.
+
+ -->
+
+<templates xml:space="preserve">
+
+ <t t-inherit="web.ControlPanel" t-inherit-mode="extension">
+ <xpath expr="//nav[hasclass('o_cp_switch_buttons')]" position="replace">
+ <nav
+ t-if="props.views.length gt 1"
+ class="btn-group o_cp_switch_buttons"
+ role="toolbar"
+ aria-label="View switcher"
+ t-att-class="{ show: state and state.showViewSwitcherButtons }"
+ >
+ <t t-if="isMobile">
+ <button
+ type="button"
+ class="btn btn-link btn-sm"
+ t-on-click="state.showViewSwitcherButtons = !state.showViewSwitcherButtons"
+ >
+ <span
+ class="fa fa-lg"
+ t-att-class="_getCurrentViewIcon()"
+ />
+ </button>
+ <ul t-if="state.showViewSwitcherButtons"
+ t-att-class="{ show: state.showViewSwitcherButtons }"
+ class="dropdown-menu dropdown-menu-right"
+ >
+ <li t-foreach="props.views" t-as="view" t-key="view.type">
+ <t t-call="web.ViewSwitcherButton"/>
+ </li>
+ </ul>
+ </t>
+ <t t-else="">
+ <t t-foreach="props.views" t-as="view" t-key="view.type">
+ <t t-call="web.ViewSwitcherButton"/>
+ </t>
+ </t>
+ </nav>
+ </xpath>
+ </t>
+
+</templates>