diff --git a/web_app_drawer/README.rst b/web_app_drawer/README.rst
index b81e6b7b..92e981fd 100755
--- a/web_app_drawer/README.rst
+++ b/web_app_drawer/README.rst
@@ -39,6 +39,8 @@ Known issues / Roadmap
* Provide keyboard navigation to secondary (top) menu
* Drag drawer from left to open in mobile
* Figure out how to test focus on hidden elements for keyboard nav tests
+* If you resize the window, body gets a wrong ``overflow: auto`` css property
+ and you need to refresh your view or open/close the app drawer to fix that.
Bug Tracker
===========
diff --git a/web_app_drawer/static/src/js/web_app_drawer.js b/web_app_drawer/static/src/js/web_app_drawer.js
index 6642b7da..03af47de 100755
--- a/web_app_drawer/static/src/js/web_app_drawer.js
+++ b/web_app_drawer/static/src/js/web_app_drawer.js
@@ -3,20 +3,20 @@
odoo.define('web_app_drawer', function(require) {
'use strict';
-
+
var $ = require('$');
var Menu = require('web.Menu');
var Class = require('web.Class');
var SearchView = require('web.SearchView');
var core = require('web.core');
-
+
Menu.include({
-
+
// Force all_outside to prevent app icons from going into more menu
reflow: function() {
this._super('all_outside');
},
-
+
/* Overload to collapse unwanted visible submenus
* @param allow_open bool Switch to allow submenus to be opened
*/
@@ -26,25 +26,25 @@ odoo.define('web_app_drawer', function(require) {
var $clicked_menu = this.$secondary_menus.find('a[data-menu=' + id + ']');
$clicked_menu.parents('.oe_secondary_submenu').css('display', '');
},
-
+
});
-
+
SearchView.include({
-
+
// Prevent focus of search field on mobile devices
toggle_visibility: function (is_visible) {
- $('div.oe_searchview_input').last()
+ $('div.oe_searchview_input').last()
.one('focus', $.proxy(this.preventMobileFocus, this));
return this._super(is_visible);
},
-
+
// It prevents focusing of search el on mobile
preventMobileFocus: function(event) {
if (this.isMobile()) {
event.preventDefault();
}
},
-
+
// For lack of Modernizr, TouchEvent will do
isMobile: function () {
try{
@@ -54,23 +54,23 @@ odoo.define('web_app_drawer', function(require) {
return false;
}
},
-
+
});
-
+
var AppDrawer = Class.extend({
-
+
LEFT: 'left',
RIGHT: 'right',
UP: 'up',
DOWN: 'down',
-
+
isOpen: false,
keyBuffer: '',
keyBufferTime: 500,
keyBufferTimeoutEvent: false,
dropdownHeightFactor: 0.90,
initialized: false,
-
+
init: function() {
this.directionCodes = {
'left': this.LEFT,
@@ -91,7 +91,7 @@ odoo.define('web_app_drawer', function(require) {
core.bus.on('resize', this, this.handleWindowResize);
core.bus.on('keydown', this, this.handleNavKeys);
},
-
+
// It provides initialization handlers for Drawer
initDrawer: function() {
this.$el = $('.drawer');
@@ -109,7 +109,7 @@ odoo.define('web_app_drawer', function(require) {
});
this.initialized = true;
},
-
+
// It provides handlers to hide drawer when "unfocused"
handleClickZones: function() {
this.$el.drawer('close');
@@ -117,14 +117,14 @@ odoo.define('web_app_drawer', function(require) {
.parent()
.collapse('hide');
},
-
+
// It resizes bootstrap dropdowns for screen
handleWindowResize: function() {
$('.dropdown-scrollable').css(
'max-height', $(window).height() * this.dropdownHeightFactor
);
},
-
+
// It provides keyboard shortcuts for app drawer nav
handleNavKeys: function(e) {
if (!this.isOpen){
@@ -144,7 +144,7 @@ odoo.define('web_app_drawer', function(require) {
this.selectAppLink(this.searchAppLinks(buffer));
}
},
-
+
/* It adds to keybuffer, sets expire timer, and returns buffer
* @returns str of current buffer
*/
@@ -159,11 +159,11 @@ odoo.define('web_app_drawer', function(require) {
);
return this.keyBuffer;
},
-
+
clearKeyBuffer: function() {
this.keyBuffer = '';
},
-
+
/* It performs close actions
* @fires ``drawer.closed`` to the ``core.bus``
* @listens ``drawer.opened`` and sends to onDrawerOpen
@@ -172,8 +172,10 @@ odoo.define('web_app_drawer', function(require) {
core.bus.trigger('drawer.closed');
this.$el.one('drawer.opened', $.proxy(this.onDrawerOpen, this));
this.isOpen = false;
+ // Remove inline style inserted by drawer.js
+ this.$el.css("overflow", "");
},
-
+
/* It finds app links and register event handlers
* @fires ``drawer.opened`` to the ``core.bus``
* @listens ``drawer.closed`` and sends to :meth:``onDrawerClose``
@@ -185,14 +187,14 @@ odoo.define('web_app_drawer', function(require) {
core.bus.trigger('drawer.opened');
this.isOpen = true;
},
-
- // It selects an app link visibly
+
+ // It selects an app link visibly
selectAppLink: function($appLink) {
if ($appLink) {
$appLink.focus();
}
},
-
+
/* It returns first App Link by its name according to query
* @param query str to search
* @return jQuery obj
@@ -202,7 +204,7 @@ odoo.define('web_app_drawer', function(require) {
return $(this).data('menuName').toUpperCase().startsWith(query);
}).first();
},
-
+
/* It returns the link adjacent to $appLink in provided direction.
* It also handles edge cases in the following ways:
* * Moves to last link if LEFT on first
@@ -216,10 +218,10 @@ odoo.define('web_app_drawer', function(require) {
* @return jQuery obj for adjacent applink
*/
findAdjacentAppLink: function($appLink, direction) {
-
+
var obj = [],
$objs = this.$appLinks;
-
+
switch(direction){
case this.LEFT:
obj = $objs[$objs.index($appLink) - 1];
@@ -248,15 +250,15 @@ odoo.define('web_app_drawer', function(require) {
}
break;
}
-
+
if (obj.length) {
event.preventDefault();
}
-
+
return $(obj);
-
+
},
-
+
/* It returns els in the same row
* @param @obj jQuery object to get row for
* @param $grid jQuery objects representing grid
@@ -275,18 +277,18 @@ odoo.define('web_app_drawer', function(require) {
right = left + $obj.outerWidth();
return $grid.filter(filterWithin(left, right));
},
-
+
});
-
+
// It inits a new AppDrawer when the web client is ready
core.bus.on('web_client_ready', null, function () {
new AppDrawer();
});
-
+
return {
'AppDrawer': AppDrawer,
'SearchView': SearchView,
'Menu': Menu,
};
-
+
});
diff --git a/web_app_drawer/static/src/less/app_drawer.less b/web_app_drawer/static/src/less/app_drawer.less
index c64827b3..506ec0ee 100755
--- a/web_app_drawer/static/src/less/app_drawer.less
+++ b/web_app_drawer/static/src/less/app_drawer.less
@@ -13,29 +13,30 @@
background-clip: padding-box;
.navbar-left {
-
width: 100%;
-
+
li {
padding: 0;
}
-
}
-
+
.app-drawer-title {
float: none;
}
-
+
.app-drawer-panel-title {
margin-top: 4px;
}
-
+
.app-drawer-icon-app {
- height: @app-drawer-icon-size;
- width: @app-drawer-icon-size;
- margin: @app-drawer-icon-margin;
+ height: 100%;
+ width: 100%;
+ max-width: @app-drawer-icon-size;
+ max-height: @app-drawer-icon-size;
+ object-fit: contain;
+ object-position: center;
}
-
+
.panel-body {
padding-top: @app-drawer-title-height;
}
@@ -46,7 +47,7 @@
width: 100%;
z-index: 9999;
}
-
+
}
.drawer-nav {
diff --git a/web_app_drawer/static/src/less/main.less b/web_app_drawer/static/src/less/main.less
index 15c6569d..ca2e3236 100755
--- a/web_app_drawer/static/src/less/main.less
+++ b/web_app_drawer/static/src/less/main.less
@@ -4,6 +4,16 @@
body {
width: 100%;
height: 100%;
+
+ // Do not fix the search part, it's too big for small screens
+ @media (max-width: @screen-sm-max) {
+ overflow: inherit;
+ .openerp {
+ .oe-view-manager {
+ overflow: inherit;
+ }
+ }
+ }
}
main {
diff --git a/web_app_drawer/static/src/less/navbar.less b/web_app_drawer/static/src/less/navbar.less
index 04f25299..bbf0d453 100755
--- a/web_app_drawer/static/src/less/navbar.less
+++ b/web_app_drawer/static/src/less/navbar.less
@@ -27,12 +27,7 @@ a.navbar-collapse.collapse {
overflow-x: hidden;
}
-.badge {
- position: absolute;
- right: @app-drawer-padding-horizontal;
-}
-
-@media (max-width: @screen-sm - 1px) {
+@media (max-width: @screen-xs-max) {
#odooMenuBarNav[aria-expanded="false"] {
/* Hack to hide the visibly expanded mobile menu on load. */
position: absolute;
diff --git a/web_app_drawer/static/src/less/variables.less b/web_app_drawer/static/src/less/variables.less
index 82d7ca85..9ab6bdac 100755
--- a/web_app_drawer/static/src/less/variables.less
+++ b/web_app_drawer/static/src/less/variables.less
@@ -2,14 +2,12 @@
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
// App Drawer / Icons
-
-@app-drawer-icon-size: 7em;
+@app-drawer-icon-size: 6em;
@app-drawer-icon-margin: 1em;
@app-drawer-width: 80%;
@app-drawer-title-height: @navbar-height;
// Navbar
-
@app-drawer-navbar-height: @navbar-height / 2;
@app-drawer-navbar-padding-vertical: @navbar-padding-vertical / 2;
@app-drawer-padding-horizontal: @navbar-padding-horizontal / 2;
diff --git a/web_app_drawer/views/web.xml b/web_app_drawer/views/web.xml
index e02fd6cc..6c207810 100644
--- a/web_app_drawer/views/web.xml
+++ b/web_app_drawer/views/web.xml
@@ -11,9 +11,9 @@
inherit_id="web.webclient_bootstrap"
name="App Drawer - Web Client"
>
-
+
-
+
@@ -22,39 +22,39 @@
-
+
-
+
-
+