When changing a property on a radio button then change it for the siblings (bug 1922766)

This commit is contained in:
Calixte Denizet 2024-10-17 18:27:12 +02:00
parent 689ffda9df
commit 86d1272d1b
5 changed files with 57 additions and 12 deletions

View File

@ -587,6 +587,12 @@ class RadioButtonField extends Field {
this._value = data.value || "";
}
get _siblings() {
return this._radioIds.filter(id => id !== this._id);
}
set _siblings(_) {}
get value() {
return this._value;
}

View File

@ -96,27 +96,22 @@ function initSandbox(params) {
obj.fieldPath = name;
obj.appObjects = appObjects;
const otherFields = annotations.slice(1);
let field;
switch (obj.type) {
case "radiobutton": {
const otherButtons = annotations.slice(1);
field = new RadioButtonField(otherButtons, obj);
field = new RadioButtonField(otherFields, obj);
break;
}
case "checkbox": {
const otherButtons = annotations.slice(1);
field = new CheckboxField(otherButtons, obj);
field = new CheckboxField(otherFields, obj);
break;
}
case "text":
if (annotations.length <= 1) {
field = new Field(obj);
break;
}
obj.siblings = annotations.map(x => x.id).slice(1);
field = new Field(obj);
break;
default:
if (otherFields.length > 0) {
obj.siblings = otherFields.map(x => x.id);
}
field = new Field(obj);
}

View File

@ -2499,4 +2499,47 @@ describe("Interaction", () => {
);
});
});
describe("Change radio property", () => {
let pages;
beforeAll(async () => {
pages = await loadAndWait("bug1922766.pdf", "[data-annotation-id='44R']");
});
afterAll(async () => {
await closePages(pages);
});
it("must check that a change on a radio implies the change on all the radio in the group", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
await waitForScripting(page);
const checkColor = async color => {
await waitForSandboxTrip(page);
for (const i of [40, 41, 42, 43]) {
const bgColor = await page.$eval(
`[data-element-id='${i}R']`,
el => getComputedStyle(el).backgroundColor
);
expect(bgColor)
.withContext(`In ${browserName}`)
.toEqual(`rgb(${color.join(", ")})`);
}
};
await checkColor([255, 0, 0]);
await page.click("[data-annotation-id='44R']");
await checkColor([0, 0, 255]);
await page.click("[data-annotation-id='44R']");
await checkColor([255, 0, 0]);
await page.click("[data-annotation-id='43R']");
await waitForSandboxTrip(page);
await page.click("[data-annotation-id='44R']");
await checkColor([0, 0, 255]);
})
);
});
});
});

View File

@ -678,3 +678,4 @@
!issue15096.pdf
!issue18036.pdf
!issue18894.pdf
!bug1922766.pdf

BIN
test/pdfs/bug1922766.pdf Executable file

Binary file not shown.