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 || "";
|
this._value = data.value || "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get _siblings() {
|
||||||
|
return this._radioIds.filter(id => id !== this._id);
|
||||||
|
}
|
||||||
|
|
||||||
|
set _siblings(_) {}
|
||||||
|
|
||||||
get value() {
|
get value() {
|
||||||
return this._value;
|
return this._value;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -96,27 +96,22 @@ function initSandbox(params) {
|
|||||||
obj.fieldPath = name;
|
obj.fieldPath = name;
|
||||||
obj.appObjects = appObjects;
|
obj.appObjects = appObjects;
|
||||||
|
|
||||||
|
const otherFields = annotations.slice(1);
|
||||||
|
|
||||||
let field;
|
let field;
|
||||||
switch (obj.type) {
|
switch (obj.type) {
|
||||||
case "radiobutton": {
|
case "radiobutton": {
|
||||||
const otherButtons = annotations.slice(1);
|
field = new RadioButtonField(otherFields, obj);
|
||||||
field = new RadioButtonField(otherButtons, obj);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "checkbox": {
|
case "checkbox": {
|
||||||
const otherButtons = annotations.slice(1);
|
field = new CheckboxField(otherFields, obj);
|
||||||
field = new CheckboxField(otherButtons, obj);
|
|
||||||
break;
|
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:
|
default:
|
||||||
|
if (otherFields.length > 0) {
|
||||||
|
obj.siblings = otherFields.map(x => x.id);
|
||||||
|
}
|
||||||
field = new Field(obj);
|
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
|
!issue15096.pdf
|
||||||
!issue18036.pdf
|
!issue18036.pdf
|
||||||
!issue18894.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