summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPriyanka Kakadiya <pka@odoo.com>2018-11-13 13:19:41 +0000
committerVincent Schippefilt <vsc@odoo.com>2019-05-27 13:59:34 +0000
commitd9c33c4c78e3b2e1a828e59ec423fb3b48acd015 (patch)
treee7c880600ada879b3a4caccb00e3b744ee432962
parenta61f8c591f7589b24756d3485393f3c6f8b9b26a (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>
-rw-r--r--addons/web/static/src/js/chrome/keyboard_navigation_mixin.js1
-rw-r--r--addons/web/static/src/js/views/control_panel/control_panel_renderer.js6
-rw-r--r--addons/web/static/tests/chrome/action_manager_tests.js30
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);