From fd86ffd5aa6f633de879bd62b2fe0b6826395825 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Tue, 4 Jun 2019 15:36:04 +0200 Subject: [PATCH] [IMP] web: Keep dropdown open and show multi company changes before reload --- .../src/js/widgets/switch_company_menu.js | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/widgets/switch_company_menu.js b/addons/web/static/src/js/widgets/switch_company_menu.js index 153c6b164cb..62e2a27f3d0 100644 --- a/addons/web/static/src/js/widgets/switch_company_menu.js +++ b/addons/web/static/src/js/widgets/switch_company_menu.js @@ -51,16 +51,21 @@ var SwitchCompanyMenu = Widget.extend({ * @param {MouseEvent} ev */ _onSwitchCompanyClick: function (ev) { - ev.preventDefault(); - var companyID = $(ev.currentTarget).parent().data('company-id'); + ev.stopPropagation(); + var dropdownItem = $(ev.currentTarget).parent() + var dropdownMenu = dropdownItem.parent() + var companyID = dropdownItem.data('company-id'); var hash = $.bbq.getState() var allowed_company_ids = _.map(hash.cids.split(','), function(company_id) {return parseInt(company_id);}); - if ($($(ev.currentTarget).parent()).find('.fa-square-o').length) { + if (dropdownItem.find('.fa-square-o').length) { // 1 enabled company: Stay in single company mode if (this.allowed_company_ids.length === 1) { - allowed_company_ids = [companyID] + dropdownMenu.find('.fa-check-square').removeClass('fa-check-square').addClass('fa-square-o'); + dropdownItem.find('.fa-square-o').removeClass('fa-square-o').addClass('fa-check-square'); + allowed_company_ids = [companyID] } else { // Multi company mode allowed_company_ids.push(companyID); + dropdownItem.find('.fa-square-o').removeClass('fa-square-o').addClass('fa-check-square'); } } session.setCompanies(companyID, allowed_company_ids); @@ -75,14 +80,19 @@ var SwitchCompanyMenu = Widget.extend({ * @param {MouseEvent} ev */ _onToggleCompanyClick: function (ev) { - var companyID = $(ev.currentTarget).parent().data('company-id'); + ev.stopPropagation(); + var dropdownItem = $(ev.currentTarget).parent() + var dropdownMenu = dropdownItem.parent() + var companyID = dropdownItem.data('company-id'); var hash = $.bbq.getState() var allowed_company_ids = _.map(hash.cids.split(','), function(company_id) {return parseInt(company_id);}); var current_company_id = allowed_company_ids[0]; - if ($(ev.currentTarget).find('.fa-square-o').length) { + if (dropdownItem.find('.fa-square-o').length) { allowed_company_ids.push(companyID); + dropdownItem.find('.fa-square-o').removeClass('fa-square-o').addClass('fa-check-square'); } else { allowed_company_ids.splice(allowed_company_ids.indexOf(companyID), 1); + dropdownItem.find('.fa-check-square').addClass('fa-square-o').removeClass('fa-check-square'); } session.setCompanies(current_company_id, allowed_company_ids); },