[FIX] web: close button discard x2m
Before this commit, editing a x2m record in a dialog then clicking on
the close button (X) does not discard the change.
How to reproduce:
- Go to a form view with an x2m in non-editable list mode
- Click on an x2m record to open it in a dialog
- Edit a field
- Click on the close button (X)
Before this commit:
The change is kept
After this commit:
The change is discarded
Part-of: odoo/odoo#131662
This commit is contained in:
@@ -509,6 +509,7 @@ export class X2ManyFieldDialog extends Component {
|
||||
this.title = this.props.title;
|
||||
this.contentClass = computeViewClassName("form", this.archInfo.xmlDoc);
|
||||
useSubEnv({ config: this.props.config });
|
||||
this.env.dialogData.close = () => this.discard();
|
||||
|
||||
useBus(this.record.model.bus, "update", () => this.render(true));
|
||||
|
||||
|
||||
@@ -4265,6 +4265,46 @@ QUnit.module("Fields", (hooks) => {
|
||||
]);
|
||||
});
|
||||
|
||||
QUnit.test("discard O2M field with close button", async function (assert) {
|
||||
serverData.models.partner.records[0].p = [2];
|
||||
await makeView({
|
||||
type: "form",
|
||||
resModel: "partner",
|
||||
serverData,
|
||||
arch: `
|
||||
<form>
|
||||
<field name="p">
|
||||
<tree>
|
||||
<field name="display_name" />
|
||||
</tree>
|
||||
<form>
|
||||
<field name="display_name" />
|
||||
</form>
|
||||
</field>
|
||||
</form>`,
|
||||
resId: 1,
|
||||
});
|
||||
assert.strictEqual(target.querySelector(".o_data_row").textContent, "second record");
|
||||
|
||||
await click(target.querySelector(".o_data_row .o_data_cell"));
|
||||
assert.containsOnce(target, ".o_dialog");
|
||||
assert.strictEqual(
|
||||
target.querySelector(".modal .o_field_widget[name=display_name] input").value,
|
||||
"second record"
|
||||
);
|
||||
|
||||
await editInput(target, ".modal .o_field_widget[name=display_name] input", "plop");
|
||||
await click(target.querySelector(".modal .btn-close"));
|
||||
assert.strictEqual(target.querySelector(".o_data_row").textContent, "second record");
|
||||
|
||||
await click(target.querySelector(".o_data_row .o_data_cell"));
|
||||
assert.containsOnce(target, ".o_dialog");
|
||||
assert.strictEqual(
|
||||
target.querySelector(".modal .o_field_widget[name=display_name] input").value,
|
||||
"second record"
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test("editable one2many list, adding line when only one page", async function (assert) {
|
||||
serverData.models.partner.records[0].turtles = [1, 2, 3];
|
||||
await makeView({
|
||||
|
||||
Reference in New Issue
Block a user