diff --git a/addons/web/static/src/views/form/form_group/form_group.js b/addons/web/static/src/views/form/form_group/form_group.js index c6f65229ecf..7be3dcd0964 100644 --- a/addons/web/static/src/views/form/form_group/form_group.js +++ b/addons/web/static/src/views/form/form_group/form_group.js @@ -81,7 +81,7 @@ export class InnerGroup extends Group { reservedSpace += itemSpan || 1; // Allows to remove the line if the content is not visible instead of leaving an empty line. - currentRow.isVisible = isVisible; + currentRow.isVisible = currentRow.isVisible || isVisible; } rows.push(currentRow); diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js index bf040b5accf..e38667fd061 100644 --- a/addons/web/static/tests/views/form/form_view_tests.js +++ b/addons/web/static/tests/views/form/form_view_tests.js @@ -8431,6 +8431,37 @@ QUnit.module("Views", (hooks) => { ); }); + QUnit.test("inner group with invisible cells", async (assert) => { + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
`, + }); + + await editInput(target, "[name='foo'] input", 1); + assert.containsOnce(target, ".o_wrap_field"); + assert.containsNone(target, ".o_wrap_field .cell1"); + assert.containsOnce(target, ".o_wrap_field .cell2"); + + await editInput(target, "[name='foo'] input", 2); + assert.containsOnce(target, ".o_wrap_field"); + assert.containsOnce(target, ".o_wrap_field .cell1"); + assert.containsNone(target, ".o_wrap_field .cell2"); + + await editInput(target, "[name='foo'] input", 3); + assert.containsOnce(target, ".o_wrap_field"); + assert.containsOnce(target, ".o_wrap_field .cell1"); + assert.containsOnce(target, ".o_wrap_field .cell2"); + }); + QUnit.test("form group with newline tag inside", async function (assert) { await makeView({ type: "form",