When changing a property on a radio button then change it for the siblings (bug 1922766)
This commit is contained in:
parent
689ffda9df
commit
86d1272d1b
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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]);
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -678,3 +678,4 @@
|
||||
!issue15096.pdf
|
||||
!issue18036.pdf
|
||||
!issue18894.pdf
|
||||
!bug1922766.pdf
|
||||
|
||||
BIN
test/pdfs/bug1922766.pdf
Executable file
BIN
test/pdfs/bug1922766.pdf
Executable file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user