[FIX] web: typo in function name (FieldBoolean._onKeydown)

When focusing a checkbox field and hitting the "enter" key, the
checkbox should change its status. Before this commit, this produced
a traceback instead as it was trying to call the `_onKeyDown`
function while it was defined as `_onKeydown`.

Also the `_onKeydown` method is in fact declared in the `AbstractField`
parent implementation, so there is no point in declaring the event
binding twice. Also, part of the `FieldBoolean._onKeydown` code was in
common with its parent `AbstractField._onKeydown` code so remove it as
there is no point in duplicating it.
Note: this `_onKeydown` method has to be refactored as it is breaking
form view navigation anyway.

Also modify an existing test to check the checkbox keyboard navigation.
This commit is contained in:
qsm-odoo
2017-04-11 19:44:38 +02:00
committed by Aaron Bohy
parent c74ab1a146
commit c60743428d
2 changed files with 8 additions and 9 deletions
@@ -373,7 +373,6 @@ var FieldBoolean = AbstractField.extend({
className: 'o_field_boolean',
events: _.extend({}, AbstractField.prototype.events, {
change: '_onChange',
keydown: '_onKeyDown',
}),
replace_element: true,
supportedFieldTypes: ['boolean'],
@@ -455,6 +454,7 @@ var FieldBoolean = AbstractField.extend({
* @param {KeyEvent} event
*/
_onKeydown: function (event) {
this._super.apply(this, arguments);
switch (event.which) {
case $.ui.keyCode.DOWN:
this.trigger_up('move_down');
@@ -468,10 +468,6 @@ var FieldBoolean = AbstractField.extend({
case $.ui.keyCode.RIGHT:
this.trigger_up('move_right');
break;
case $.ui.keyCode.TAB:
this.trigger_up('move_next');
event.preventDefault();
break;
case $.ui.keyCode.ENTER:
this.$input.prop('checked', !this.value);
this._setValue(!this.value);
@@ -109,7 +109,7 @@ QUnit.module('basic_fields', {
QUnit.module('FieldBoolean');
QUnit.test('boolean field in form view', function(assert) {
QUnit.test('boolean field in form view', function (assert) {
assert.expect(7);
var form = createView({
@@ -142,8 +142,11 @@ QUnit.module('basic_fields', {
form.$buttons.find('.o_form_button_edit').click();
assert.strictEqual(form.$('.o_field_boolean input:checked').length, 0,
"checkbox should still be unchecked");
// check the checkbox
form.$('.o_field_boolean input').click();
// check the checkbox by hitting the "enter" key after focusing it
form.$('.o_field_boolean input')
.trigger("focusin")
.trigger({type: "keydown", which: $.ui.keyCode.ENTER})
.trigger({type: "keyup", which: $.ui.keyCode.ENTER});
assert.strictEqual(form.$('.o_field_boolean input:checked').length, 1,
"checkbox should now be checked");
@@ -154,7 +157,7 @@ QUnit.module('basic_fields', {
form.destroy();
});
QUnit.test('boolean field in editable list view', function(assert) {
QUnit.test('boolean field in editable list view', function (assert) {
assert.expect(11);
var list = createView({