diff --git a/addons/web/static/src/views/fields/radio/radio_field.js b/addons/web/static/src/views/fields/radio/radio_field.js index c8ba38ce470..19ff94234d9 100644 --- a/addons/web/static/src/views/fields/radio/radio_field.js +++ b/addons/web/static/src/views/fields/radio/radio_field.js @@ -6,6 +6,7 @@ import { registry } from "@web/core/registry"; import { useSpecialData } from "@web/views/fields/relational_utils"; import { standardFieldProps } from "../standard_field_props"; +let nextId = 0; export class RadioField extends Component { static template = "web.RadioField"; static props = { @@ -18,9 +19,8 @@ export class RadioField extends Component { orientation: "vertical", }; - static nextId = 0; - setup() { + this.id = `radio_field_${nextId++}`; this.type = this.props.record.fields[this.props.name].type; if (this.type === "many2one") { this.specialData = useSpecialData(async (orm, props) => { diff --git a/addons/web/static/tests/views/fields/radio_field_tests.js b/addons/web/static/tests/views/fields/radio_field_tests.js index f02b949d45b..33d5e8ea087 100644 --- a/addons/web/static/tests/views/fields/radio_field_tests.js +++ b/addons/web/static/tests/views/fields/radio_field_tests.js @@ -213,6 +213,52 @@ QUnit.module("Fields", (hooks) => { ); }); + QUnit.test("Two RadioField with same selection", async function (assert) { + serverData.models.partner.fields.color_2 = serverData.models.partner.fields.color; + serverData.models.partner.records[0].color = "black"; + serverData.models.partner.records[0].color_2 = "black"; + + await makeView({ + type: "form", + resModel: "partner", + serverData, + resId: 1, + arch: ` +
`, + }); + + assert.hasAttrValue( + target.querySelector("[name='color'] input.o_radio_input:checked"), + "data-value", + "black" + ); + assert.hasAttrValue( + target.querySelector("[name='color_2'] input.o_radio_input:checked"), + "data-value", + "black" + ); + + // click on Red + await click(target.querySelector("[name='color_2'] label")); + assert.hasAttrValue( + target.querySelector("[name='color'] input.o_radio_input:checked"), + "data-value", + "black" + ); + assert.hasAttrValue( + target.querySelector("[name='color_2'] input.o_radio_input:checked"), + "data-value", + "red" + ); + }); + QUnit.test("fieldradio widget has o_horizontal or o_vertical class", async function (assert) { serverData.models.partner.fields.color2 = serverData.models.partner.fields.color;