From 56e63ebae349798d26a61a4c516c2abb66a33329 Mon Sep 17 00:00:00 2001 From: pka-odoo <pka@odoo.com> Date: Mon, 4 May 2020 13:03:06 +0000 Subject: [PATCH] [IMP] web: ControlPanel: remove dropdown carets Part of task 2234547 closes odoo/odoo#49793 Related: odoo/enterprise#10059 Signed-off-by: Aaron Bohy (aab) <aab@odoo.com> Co-authored-by: Mohammed Shekha <msh@odoo.com> Co-authored-by: Aaron Bohy <aab@odoo.com> --- .../static/src/js/components/dropdown_menu.js | 17 +++++++++++++---- addons/web/static/src/scss/control_panel.scss | 3 +++ addons/web/static/src/scss/search_view.scss | 2 +- addons/web/static/src/xml/base.xml | 4 +++- .../tests/components/dropdown_menu_tests.js | 4 +--- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/addons/web/static/src/js/components/dropdown_menu.js b/addons/web/static/src/js/components/dropdown_menu.js index df7172ae1d4d..be1f29629ed7 100644 --- a/addons/web/static/src/js/components/dropdown_menu.js +++ b/addons/web/static/src/js/components/dropdown_menu.js @@ -34,8 +34,6 @@ odoo.define('web.DropdownMenu', function (require) { this.dropdownMenu = useRef('dropdown'); this.state = useState({ open: false }); - this.symbol = this.env.device.isMobile ? 'fa fa-chevron-right float-right mt4' : false; - useExternalListener(window, 'click', this._onWindowClick); useExternalListener(window, 'keydown', this._onWindowKeydown); } @@ -45,11 +43,22 @@ odoo.define('web.DropdownMenu', function (require) { //--------------------------------------------------------------------- /** - * Overriden in case we want to keep the caret style on the button in mobile. + * In desktop, by default, we do not display a caret icon next to the + * dropdown. * @returns {boolean} */ get displayCaret() { - return !this.env.device.isMobile; + return false; + } + + /** + * In mobile, by default, we display a chevron icon next to the dropdown + * button. Note that when 'displayCaret' is true, we display a caret + * instead of a chevron, no matter the value of 'displayChevron'. + * @returns {boolean} + */ + get displayChevron() { + return this.env.device.isMobile; } /** diff --git a/addons/web/static/src/scss/control_panel.scss b/addons/web/static/src/scss/control_panel.scss index 0bacb3345c3a..075fce5cfe40 100644 --- a/addons/web/static/src/scss/control_panel.scss +++ b/addons/web/static/src/scss/control_panel.scss @@ -59,6 +59,9 @@ top: 5px; right: 10px; } + .o_dropdown_toggler_btn { + margin-right: 15px; + } } } diff --git a/addons/web/static/src/scss/search_view.scss b/addons/web/static/src/scss/search_view.scss index 88900e6127f2..618e146175df 100644 --- a/addons/web/static/src/scss/search_view.scss +++ b/addons/web/static/src/scss/search_view.scss @@ -83,7 +83,7 @@ .o_search_options .o_dropdown_toggler_btn:first-child { // apply the padding to the first element so that when the `favorites` menu goes under // the `filters` menu, they're still aligned - margin-right: 10px; + margin-right: 15px; } // Dropdowns diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 62370e8f9f44..b06b84026200 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -163,7 +163,7 @@ <i t-if="props.icon" t-att-class="props.icon"/> <span class="o_dropdown_title" t-esc="title"/> <i t-if="displayCaret" t-attf-class="o_dropdown_caret fa fa-caret-{{ state.open ? 'down' : 'right' }}"/> - <i t-else="" t-attf-class="fa fa-chevron-{{ state.open ? 'down' : 'right' }} float-right mt4"/> + <i t-elif="displayChevron" t-attf-class="fa fa-chevron-{{ state.open ? 'down' : 'right' }} float-right mt4"/> </button> <ul t-if="state.open" class="o_dropdown_menu dropdown-menu show" role="menu" t-on-item-selected="_onItemSelected" @@ -631,10 +631,12 @@ <DropdownMenu t-if="printItems.length" title="env._t('Print')" items="printItems" + icon="'fa fa-print'" /> <DropdownMenu t-if="actionItems.length" title="env._t('Action')" items="actionItems" + icon="'fa fa-cog'" /> </div> </t> diff --git a/addons/web/static/tests/components/dropdown_menu_tests.js b/addons/web/static/tests/components/dropdown_menu_tests.js index bf91fa9c04dc..a0f00b68ef10 100644 --- a/addons/web/static/tests/components/dropdown_menu_tests.js +++ b/addons/web/static/tests/components/dropdown_menu_tests.js @@ -32,7 +32,7 @@ odoo.define('web.dropdown_menu_tests', function (require) { QUnit.module('DropdownMenu'); QUnit.test('simple rendering and basic interactions', async function (assert) { - assert.expect(10); + assert.expect(8); const dropdown = await createComponent(DropdownMenu, { props: { @@ -42,14 +42,12 @@ odoo.define('web.dropdown_menu_tests', function (require) { }); assert.strictEqual(dropdown.el.querySelector('button').innerText.trim(), "Dropdown"); - assert.containsOnce(dropdown, 'button i.fa.fa-caret-right'); assert.containsNone(dropdown, 'ul.o_dropdown_menu'); await testUtils.dom.click(dropdown.el.querySelector('button')); assert.containsN(dropdown, '.dropdown-divider, .dropdown-item', 3, 'should have 3 elements counting the divider'); - assert.containsOnce(dropdown, 'button i.fa.fa-caret-down'); const itemEls = dropdown.el.querySelectorAll('.o_menu_item > .dropdown-item'); assert.strictEqual(itemEls[0].innerText.trim(), 'Some Item'); assert.doesNotHaveClass(itemEls[0], 'selected'); -- GitLab