diff options
| author | Priyanka Kakadiya <pka@odoo.com> | 2018-11-13 13:19:41 +0000 |
|---|---|---|
| committer | Vincent Schippefilt <vsc@odoo.com> | 2019-05-27 13:59:34 +0000 |
| commit | d9c33c4c78e3b2e1a828e59ec423fb3b48acd015 (patch) | |
| tree | e7c880600ada879b3a4caccb00e3b744ee432962 | |
| parent | a61f8c591f7589b24756d3485393f3c6f8b9b26a (diff) | |
[IMP] web: add accesskey 'b' for previous breadcrumb
Also, exclude 'b' for being automatically assigned to buttons
Issue : 1878248
closes odoo/odoo#33689
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: Mohammed Shekha <msh@openerp.com>
3 files changed, 37 insertions, 0 deletions
diff --git a/addons/web/static/src/js/chrome/keyboard_navigation_mixin.js b/addons/web/static/src/js/chrome/keyboard_navigation_mixin.js index 4913d5a6a80..4318bca879a 100644 --- a/addons/web/static/src/js/chrome/keyboard_navigation_mixin.js +++ b/addons/web/static/src/js/chrome/keyboard_navigation_mixin.js @@ -8,6 +8,7 @@ odoo.define('web.KeyboardNavigationMixin', function (require) { */ var knownUnusableAccessKeys = [' ', 'A', // reserved for Odoo Edit + 'B', // reserved for Odoo Previous Breadcrumb (Back) 'C', // reserved for Odoo Create 'H', // reserved for Odoo Home 'J', // reserved for Odoo Discard diff --git a/addons/web/static/src/js/views/control_panel/control_panel_renderer.js b/addons/web/static/src/js/views/control_panel/control_panel_renderer.js index 5ce53b20806..9c519695d7d 100644 --- a/addons/web/static/src/js/views/control_panel/control_panel_renderer.js +++ b/addons/web/static/src/js/views/control_panel/control_panel_renderer.js @@ -254,6 +254,12 @@ var ControlPanelRenderer = Renderer.extend({ self.trigger_up('breadcrumb_clicked', {controllerID: bc.controllerID}); }); } + + var secondLast = index === length - 2; + if (secondLast) { + $bc.attr('accessKey', 'b'); + } + return $bc; }, /** diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 6fdfc6d92bc..b14ccefb447 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -2568,6 +2568,36 @@ QUnit.module('ActionManager', { actionManager.destroy(); }); + QUnit.test('reverse breadcrumb works on accesskey "b"', async function (assert) { + assert.expect(4); + + var actionManager = await createActionManager({ + actions: this.actions, + archs: this.archs, + data: this.data, + }); + await actionManager.doAction(3); + + // open a record in form view + await testUtils.dom.click(actionManager.$('.o_list_view .o_data_row:first')); + await testUtils.dom.click(actionManager.$('.o_form_view button:contains(Execute action)')); + + assert.containsN(actionManager, '.o_control_panel .breadcrumb li', 3); + + var $previousBreadcrumb = actionManager.$('.o_control_panel .breadcrumb li.active').prev(); + assert.strictEqual($previousBreadcrumb.attr("accesskey"), "b", + "previous breadcrumb should have accessKey 'b'"); + await testUtils.dom.click($previousBreadcrumb); + + assert.containsN(actionManager, '.o_control_panel .breadcrumb li', 2); + + var $previousBreadcrumb = actionManager.$('.o_control_panel .breadcrumb li.active').prev(); + assert.strictEqual($previousBreadcrumb.attr("accesskey"), "b", + "previous breadcrumb should have accessKey 'b'"); + + actionManager.destroy(); + }); + QUnit.test('reload previous controller when discarding a new record', async function (assert) { assert.expect(8); |
