diff options
| author | Vincent Schippefilt <vsc@odoo.com> | 2018-08-30 16:25:42 +0200 |
|---|---|---|
| committer | Vincent Schippefilt <vsc@odoo.com> | 2018-09-25 16:49:23 +0200 |
| commit | 48a53f2ea5c5cd225a08b65c90b94e0032c0a776 (patch) | |
| tree | a44025d5b4350a83a5cb826adcc7e5effe7ac7b3 /addons/web/static/src/js/fields | |
| parent | e343f5f5f95607b91a61fed167a6f11f0eeaeaa8 (diff) | |
[FIX] web: improve automatic creation of new lines in x2many in forms
This commit fixes a few issues with the previous implementation of the
automatic addition of new lines in x2many inside forms
1. Before this commit, when there is a change of mode in a formview
`edit` -> `readonly` -> `edit`, there may be some cases that
mistakenly and automatically opens a modal.
This case occurs in a form view with a x2many field whose 1st inner
focusable element opens a modal (e.g. "Add an item").
In `edit` mode:
1. Open this modal from the x2many
2. Close the modal
3. Change mode to `readonly`
4. Change mode to `edit`
> the same modal is automatically open.
This is due to the tracking of the last activated field that persists
after a change of mode. Since the last activated field in the 1st
`edit` is the x2many, it is granted the focus at the beginning of the
2nd `edit`, which automatically opens the modal.
This commit fixes the issue by resetting the tracking of the last
activated field when there is a change of mode. As a result, at the
beginning of the 2nd `edit`, the focus should always be on the 1st
field.
2. Before this commit, if the focus was moved out of the form (to a modal
for instance) then back, the form would re-activate the last field, which
is the x2many and would re-add a new line. This behavior is not correct
and now going back from a modal to a form does not add a new line.
Co-authored-by: Alexandre Kühn <aku@odoo.com>
Diffstat (limited to 'addons/web/static/src/js/fields')
| -rw-r--r-- | addons/web/static/src/js/fields/relational_fields.js | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index c3d25f37d09..7a428923608 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -906,8 +906,10 @@ var FieldX2Many = AbstractField.extend({ /** * @override + * @param {Object|undefined} [options={}] + * @param {boolean} [options.noAutomaticCreate=false] */ - activate: function () { + activate: function (options) { if (!this.activeActions.create || this.isReadonly || !this.$el.is(":visible")) { return false; } @@ -915,7 +917,11 @@ var FieldX2Many = AbstractField.extend({ this.$buttons.find(".o-kanban-button-new").focus(); } if (this.view.arch.tag === 'tree') { - this.renderer.$('.o_field_x2many_list_row_add a:first').focus(); + if (options && options.noAutomaticCreate) { + this.renderer.$('.o_field_x2many_list_row_add a:first').focus(); + } else { + this.renderer.$('.o_field_x2many_list_row_add a:first').click(); + } } return true; }, |
