Update all the text widgets having the same name with the same value

This commit is contained in:
Calixte Denizet 2021-04-20 18:32:23 +02:00
parent fd82adccfa
commit e868ab0051
4 changed files with 55 additions and 1 deletions

View File

@ -625,6 +625,18 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
super(parameters, { isRenderable }); super(parameters, { isRenderable });
} }
setPropertyOnSiblings(base, key, value, keyInStorage) {
const storage = this.annotationStorage;
for (const element of document.getElementsByName(base.name)) {
if (element !== base) {
element[key] = value;
const data = Object.create(null);
data[keyInStorage] = value;
storage.setValue(element.getAttribute("id"), data);
}
}
}
render() { render() {
const storage = this.annotationStorage; const storage = this.annotationStorage;
const id = this.data.id; const id = this.data.id;
@ -660,8 +672,14 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
elementData.userValue = textContent; elementData.userValue = textContent;
element.setAttribute("id", id); element.setAttribute("id", id);
element.addEventListener("input", function (event) { element.addEventListener("input", event => {
storage.setValue(id, { value: event.target.value }); storage.setValue(id, { value: event.target.value });
this.setPropertyOnSiblings(
element,
"value",
event.target.value,
"value"
);
}); });
let blurListener = event => { let blurListener = event => {

View File

@ -87,3 +87,38 @@ describe("Checkbox annotation", () => {
}); });
}); });
}); });
describe("Text widget", () => {
describe("issue13271.pdf", () => {
let pages;
beforeAll(async () => {
pages = await loadAndWait("issue13271.pdf", "[data-annotation-id='24R']");
});
afterAll(async () => {
await closePages(pages);
});
it("must update all the fields with the same value", async () => {
const base = "hello world";
await Promise.all(
pages.map(async ([browserName, page]) => {
await page.type("#\\32 5R", base);
await page.waitForFunction(
`document.querySelector("#\\\\32 4R").value !== ""`
);
await page.waitForFunction(
`document.querySelector("#\\\\32 6R").value !== ""`
);
let text = await page.$eval("#\\32 4R", el => el.value);
expect(text).withContext(`In ${browserName}`).toEqual(base);
text = await page.$eval("#\\32 6R", el => el.value);
expect(text).withContext(`In ${browserName}`).toEqual(base);
})
);
});
});
});

View File

@ -373,6 +373,7 @@
!issue6106.pdf !issue6106.pdf
!issue6296.pdf !issue6296.pdf
!bug852992_reduced.pdf !bug852992_reduced.pdf
!issue13271.pdf
!issue6298.pdf !issue6298.pdf
!issue6889.pdf !issue6889.pdf
!bug1001080.pdf !bug1001080.pdf

BIN
test/pdfs/issue13271.pdf Normal file

Binary file not shown.