Update all the text widgets having the same name with the same value
This commit is contained in:
parent
fd82adccfa
commit
e868ab0051
@ -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 => {
|
||||||
|
@ -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);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -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
BIN
test/pdfs/issue13271.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user