mirror of https://github.com/OCA/web.git
UPDT version
parent
caadd7fe93
commit
481f45b8e9
|
@ -6,7 +6,7 @@
|
||||||
"name": "Web Responsive",
|
"name": "Web Responsive",
|
||||||
"summary": "It provides a mobile compliant interface for Odoo Community "
|
"summary": "It provides a mobile compliant interface for Odoo Community "
|
||||||
"web",
|
"web",
|
||||||
"version": "10.0.1.1.0",
|
"version": "11.0.1.0.0",
|
||||||
"category": "Website",
|
"category": "Website",
|
||||||
"website": "https://laslabs.com/",
|
"website": "https://laslabs.com/",
|
||||||
"author": "LasLabs, Tecnativa, Odoo Community Association (OCA)",
|
"author": "LasLabs, Tecnativa, Odoo Community Association (OCA)",
|
||||||
|
|
|
@ -24,19 +24,21 @@ odoo.define('web_responsive', function(require) {
|
||||||
*/
|
*/
|
||||||
open_menu: function(id, allowOpen) {
|
open_menu: function(id, allowOpen) {
|
||||||
this._super(id);
|
this._super(id);
|
||||||
if (allowOpen) return;
|
if (allowOpen) {
|
||||||
|
return;
|
||||||
|
};
|
||||||
var $clicked_menu = this.$secondary_menus.find('a[data-menu=' + id + ']');
|
var $clicked_menu = this.$secondary_menus.find('a[data-menu=' + id + ']');
|
||||||
$clicked_menu.parents('.oe_secondary_submenu').css('display', '');
|
$clicked_menu.parents('.oe_secondary_submenu').css('display', '');
|
||||||
},
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
SearchView.include({
|
SearchView.include({
|
||||||
|
|
||||||
// Prevent focus of search field on mobile devices
|
// Prevent focus of search field on mobile devices
|
||||||
toggle_visibility: function (is_visible) {
|
toggle_visibility: function(is_visible) {
|
||||||
$('div.oe_searchview_input').last()
|
$('div.oe_searchview_input').last().one(
|
||||||
.one('focus', $.proxy(this.preventMobileFocus, this));
|
'focus', $.proxy(this.preventMobileFocus, this));
|
||||||
return this._super(is_visible);
|
return this._super(is_visible);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -48,15 +50,14 @@ odoo.define('web_responsive', function(require) {
|
||||||
},
|
},
|
||||||
|
|
||||||
// For lack of Modernizr, TouchEvent will do
|
// For lack of Modernizr, TouchEvent will do
|
||||||
isMobile: function () {
|
isMobile: function() {
|
||||||
try{
|
try {
|
||||||
document.createEvent('TouchEvent');
|
document.createEvent('TouchEvent');
|
||||||
return true;
|
return true;
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var AppDrawer = Class.extend({
|
var AppDrawer = Class.extend({
|
||||||
|
@ -82,15 +83,15 @@ odoo.define('web_responsive', function(require) {
|
||||||
'down': this.DOWN,
|
'down': this.DOWN,
|
||||||
'pagedown': this.DOWN,
|
'pagedown': this.DOWN,
|
||||||
'+': this.RIGHT,
|
'+': this.RIGHT,
|
||||||
'-': this.LEFT,
|
'-': this.LEFT
|
||||||
};
|
};
|
||||||
this.initDrawer();
|
this.initDrawer();
|
||||||
var $clickZones = $('.odoo_webclient_container, ' +
|
var $clickZones = $('.odoo_webclient_container, ' +
|
||||||
'a.oe_menu_leaf, ' +
|
'a.oe_menu_leaf, ' +
|
||||||
'a.oe_menu_toggler, ' +
|
'a.oe_menu_toggler, ' +
|
||||||
'a.oe_logo, ' +
|
'a.oe_logo, ' +
|
||||||
'i.oe_logo_edit'
|
'i.oe_logo_edit'
|
||||||
);
|
);
|
||||||
$clickZones.click($.proxy(this.handleClickZones, this));
|
$clickZones.click($.proxy(this.handleClickZones, this));
|
||||||
core.bus.on('resize', this, this.handleWindowResize);
|
core.bus.on('resize', this, this.handleWindowResize);
|
||||||
core.bus.on('keydown', this, this.handleNavKeys);
|
core.bus.on('keydown', this, this.handleNavKeys);
|
||||||
|
@ -101,9 +102,9 @@ odoo.define('web_responsive', function(require) {
|
||||||
this.$el = $('.drawer');
|
this.$el = $('.drawer');
|
||||||
this.$el.drawer();
|
this.$el.drawer();
|
||||||
this.$el.one('drawer.opened', $.proxy(this.onDrawerOpen, this));
|
this.$el.one('drawer.opened', $.proxy(this.onDrawerOpen, this));
|
||||||
this.$el.on('drawer.opened', function setIScrollProbes(){
|
this.$el.on('drawer.opened', function setIScrollProbes() {
|
||||||
var onIScroll = function() {
|
var onIScroll = function() {
|
||||||
var transform = (this.iScroll.y) ? this.iScroll.y * -1 : 0;
|
var transform = this.iScroll.y ? this.iScroll.y * -1 : 0;
|
||||||
$(this).find('#appDrawerAppPanelHead').css(
|
$(this).find('#appDrawerAppPanelHead').css(
|
||||||
'transform', 'matrix(1, 0, 0, 1, 0, ' + transform + ')'
|
'transform', 'matrix(1, 0, 0, 1, 0, ' + transform + ')'
|
||||||
);
|
);
|
||||||
|
@ -131,7 +132,7 @@ odoo.define('web_responsive', function(require) {
|
||||||
|
|
||||||
// It provides keyboard shortcuts for app drawer nav
|
// It provides keyboard shortcuts for app drawer nav
|
||||||
handleNavKeys: function(e) {
|
handleNavKeys: function(e) {
|
||||||
if (!this.isOpen){
|
if (!this.isOpen) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var directionCode = $.hotkeys.specialKeys[e.keyCode.toString()];
|
var directionCode = $.hotkeys.specialKeys[e.keyCode.toString()];
|
||||||
|
@ -141,7 +142,7 @@ odoo.define('web_responsive', function(require) {
|
||||||
this.directionCodes[directionCode]
|
this.directionCodes[directionCode]
|
||||||
);
|
);
|
||||||
this.selectAppLink($link);
|
this.selectAppLink($link);
|
||||||
} else if ($.hotkeys.specialKeys[e.keyCode.toString()] == 'esc') {
|
} else if ($.hotkeys.specialKeys[e.keyCode.toString()] === 'esc') {
|
||||||
this.handleClickZones();
|
this.handleClickZones();
|
||||||
} else {
|
} else {
|
||||||
var buffer = this.handleKeyBuffer(e.keyCode);
|
var buffer = this.handleKeyBuffer(e.keyCode);
|
||||||
|
@ -226,7 +227,7 @@ odoo.define('web_responsive', function(require) {
|
||||||
var obj = [],
|
var obj = [],
|
||||||
$objs = this.$appLinks;
|
$objs = this.$appLinks;
|
||||||
|
|
||||||
switch(direction){
|
switch (direction) {
|
||||||
case this.LEFT:
|
case this.LEFT:
|
||||||
obj = $objs[$objs.index($appLink) - 1];
|
obj = $objs[$objs.index($appLink) - 1];
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
|
@ -273,19 +274,19 @@ odoo.define('web_responsive', function(require) {
|
||||||
function filterWithin(left, right) {
|
function filterWithin(left, right) {
|
||||||
return function() {
|
return function() {
|
||||||
var $this = $(this),
|
var $this = $(this),
|
||||||
thisMiddle = $this.offset().left + ($this.width() / 2);
|
thisMiddle = $this.offset().left + $this.width() / 2;
|
||||||
return thisMiddle >= left && thisMiddle <= right;
|
return thisMiddle >= left && thisMiddle <= right;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
var left = $obj.offset().left,
|
var left = $obj.offset().left,
|
||||||
right = left + $obj.outerWidth();
|
right = left + $obj.outerWidth();
|
||||||
return $grid.filter(filterWithin(left, right));
|
return $grid.filter(filterWithin(left, right));
|
||||||
},
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// It inits a new AppDrawer when the web client is ready
|
// It inits a new AppDrawer when the web client is ready
|
||||||
core.bus.on('web_client_ready', null, function () {
|
core.bus.on('web_client_ready', null, function() {
|
||||||
new AppDrawer();
|
new AppDrawer();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -294,11 +295,10 @@ odoo.define('web_responsive', function(require) {
|
||||||
get_default_view: function() {
|
get_default_view: function() {
|
||||||
var default_view = this._super()
|
var default_view = this._super()
|
||||||
if (config.device.size_class <= config.device.SIZES.XS &&
|
if (config.device.size_class <= config.device.SIZES.XS &&
|
||||||
default_view.type != 'kanban' &&
|
default_view.type !== 'kanban' &&
|
||||||
this.views['kanban'])
|
this.views.kanban) {
|
||||||
{
|
default_view.type = 'kanban';
|
||||||
default_view.type = 'kanban';
|
};
|
||||||
};
|
|
||||||
return default_view;
|
return default_view;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -50,19 +50,50 @@ main {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
> .o_main_content {
|
> .o_main_content {
|
||||||
overflow: initial;
|
overflow: initial;
|
||||||
@media (max-width: @screen-xs-max) {
|
> .o_content {
|
||||||
> .o_content {
|
@media (max-width: @screen-xs-max) {
|
||||||
overflow: initial;
|
overflow: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
// .o_content is the one to display horizontal scrolling in
|
||||||
|
// case of wide tables
|
||||||
|
.table-responsive {
|
||||||
|
overflow-x: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove z-index from CP buttons so it doesn't overlap the menu
|
@media (max-width: @screen-sm-max) {
|
||||||
.o_control_panel {
|
.o_control_panel {
|
||||||
.btn-group > .btn.active {
|
// Remove z-index from CP buttons so it doesn't overlap the menu
|
||||||
z-index: initial;
|
.btn-group > .btn.active {
|
||||||
|
z-index: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Better horizontal space usage for buttons
|
||||||
|
justify-content: space-between;
|
||||||
|
.o_cp_left, .o_cp_right {
|
||||||
|
width: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_search_options > .o_dropdown {
|
||||||
|
&.hidden-xs {
|
||||||
|
// No other way to display "Group By" button :(
|
||||||
|
display: inline-block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hack to hide text and display larger icons
|
||||||
|
> .btn {
|
||||||
|
font-size: 0;
|
||||||
|
> .fa {
|
||||||
|
font-size: @odoo-font-size-base * 1.4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
name="App Drawer - Web Client"
|
name="App Drawer - Web Client"
|
||||||
>
|
>
|
||||||
|
|
||||||
<xpath expr="//div[@class='o_sub_menu']" position="replace" />
|
<xpath expr="//div[@contains('class', 'o_sub_menu')]" position="replace" />
|
||||||
|
|
||||||
<xpath expr="//t[@t-set='head']" position="inside">
|
<xpath expr="//t[@t-set='head']" position="inside">
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
|
|
Loading…
Reference in New Issue