fix(Grid): arrow key navigation
This commit is contained in:
parent
bb3d435569
commit
cfb2debacb
1 changed files with 26 additions and 19 deletions
|
|
@ -416,7 +416,7 @@ export default class GridRow {
|
|||
var me = this;
|
||||
if(field.$input) {
|
||||
field.$input.on('keydown', function(e) {
|
||||
var { TAB, UP_ARROW, DOWN_ARROW } = frappe.ui.keyCode;
|
||||
var { TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
|
||||
if(!in_list([TAB, UP_ARROW, DOWN_ARROW], e.which)) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -429,43 +429,50 @@ export default class GridRow {
|
|||
if(in_list(['Text', 'Small Text'], fieldtype)) {
|
||||
return;
|
||||
}
|
||||
if(field.autocomplete_open) {
|
||||
return;
|
||||
}
|
||||
|
||||
base.toggle_editable_row();
|
||||
setTimeout(function() {
|
||||
var input = base.columns[fieldname].field.$input;
|
||||
if(input) {
|
||||
input.focus();
|
||||
}
|
||||
}, 400)
|
||||
var input = base.columns[fieldname].field.$input;
|
||||
if(input) {
|
||||
input.focus();
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
// TAB
|
||||
if(e.which==TAB && !e.shiftKey) {
|
||||
// last column
|
||||
if($(this).attr('data-last-input') ||
|
||||
me.grid.wrapper.find('.grid-row :input:enabled:last').get(0)===this) {
|
||||
setTimeout(function() {
|
||||
if(me.doc.idx === values.length) {
|
||||
// last row
|
||||
var last_column = me.wrapper.find(':input:enabled:last').get(0);
|
||||
var is_last_column = $(this).attr('data-last-input') || last_column === this;
|
||||
|
||||
if (is_last_column) {
|
||||
// last row
|
||||
if (me.doc.idx === values.length) {
|
||||
setTimeout(function () {
|
||||
me.grid.add_new_row(null, null, true);
|
||||
me.grid.grid_rows[me.grid.grid_rows.length - 1].toggle_editable_row();
|
||||
me.grid.set_focus_on_row();
|
||||
} else {
|
||||
me.grid.grid_rows[me.doc.idx].toggle_editable_row();
|
||||
me.grid.set_focus_on_row(me.doc.idx+1);
|
||||
}
|
||||
}, 500);
|
||||
}, 100);
|
||||
}
|
||||
// last column before last row
|
||||
else {
|
||||
me.grid.grid_rows[me.doc.idx].toggle_editable_row();
|
||||
me.grid.set_focus_on_row(me.doc.idx);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if(e.which==UP_ARROW) {
|
||||
if(me.doc.idx > 1) {
|
||||
var prev = me.grid.grid_rows[me.doc.idx-2];
|
||||
move_up_down(prev);
|
||||
return false;
|
||||
}
|
||||
} else if(e.which==DOWN_ARROW) {
|
||||
if(me.doc.idx < values.length) {
|
||||
var next = me.grid.grid_rows[me.doc.idx];
|
||||
move_up_down(next);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue