diff options
Diffstat (limited to 'addons/web/static')
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); |
