JS -- update radio/checkbox values even if there are no actions
This commit is contained in:
parent
35845d1bbb
commit
7172f0a928
@ -1986,7 +1986,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
id: this.data.id,
|
id: this.data.id,
|
||||||
value: this.data.fieldValue || null,
|
value: this.data.fieldValue || "Off",
|
||||||
defaultValue: this.data.defaultFieldValue,
|
defaultValue: this.data.defaultFieldValue,
|
||||||
exportValues,
|
exportValues,
|
||||||
editable: !this.data.readOnly,
|
editable: !this.data.readOnly,
|
||||||
|
@ -544,9 +544,6 @@ class WidgetAnnotationElement extends AnnotationElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_setEventListener(element, baseName, eventName, valueGetter) {
|
_setEventListener(element, baseName, eventName, valueGetter) {
|
||||||
if (this.data.actions[eventName.replace(" ", "")] === undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (baseName.includes("mouse")) {
|
if (baseName.includes("mouse")) {
|
||||||
// Mouse events
|
// Mouse events
|
||||||
element.addEventListener(baseName, event => {
|
element.addEventListener(baseName, event => {
|
||||||
@ -577,11 +574,14 @@ class WidgetAnnotationElement extends AnnotationElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_setEventListeners(element, names, getter) {
|
_setEventListeners(element, names, getter) {
|
||||||
if (!this.data.actions) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (const [baseName, eventName] of names) {
|
for (const [baseName, eventName] of names) {
|
||||||
this._setEventListener(element, baseName, eventName, getter);
|
if (
|
||||||
|
eventName === "Action" ||
|
||||||
|
(this.data.actions &&
|
||||||
|
this.data.actions[eventName.replace(" ", "")] !== undefined)
|
||||||
|
) {
|
||||||
|
this._setEventListener(element, baseName, eventName, getter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -218,20 +218,20 @@ describe("Interaction", () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const expected = [
|
const expected = [
|
||||||
["#\\36 8R", "Group1=Choice1::1"],
|
["#\\38 1R", "Group1=Choice1::1"],
|
||||||
["#\\36 9R", "Group1=Choice2::2"],
|
["#\\38 2R", "Group1=Choice2::2"],
|
||||||
["#\\37 0R", "Group1=Choice3::3"],
|
["#\\38 3R", "Group1=Choice3::3"],
|
||||||
["#\\37 1R", "Group1=Choice4::4"],
|
["#\\38 4R", "Group1=Choice4::4"],
|
||||||
];
|
];
|
||||||
for (const [selector, expectedText] of expected) {
|
for (const [selector, expectedText] of expected) {
|
||||||
// Clear the textfield
|
// Clear the textfield
|
||||||
await clearInput(page, "#\\36 7R");
|
await clearInput(page, "#\\38 0R");
|
||||||
|
|
||||||
await page.click(selector);
|
await page.click(selector);
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
`document.querySelector("#\\\\36 7R").value !== ""`
|
`document.querySelector("#\\\\38 0R").value !== ""`
|
||||||
);
|
);
|
||||||
const text = await page.$eval("#\\36 7R", el => el.value);
|
const text = await page.$eval("#\\38 0R", el => el.value);
|
||||||
expect(text).withContext(`In ${browserName}`).toEqual(expectedText);
|
expect(text).withContext(`In ${browserName}`).toEqual(expectedText);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -242,24 +242,24 @@ describe("Interaction", () => {
|
|||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
const expected = [
|
const expected = [
|
||||||
["#\\37 2R", "Check1=Yes::5"],
|
["#\\38 5R", "Check1=Yes::5"],
|
||||||
["#\\37 4R", "Check2=Yes::6"],
|
["#\\38 7R", "Check2=Yes::6"],
|
||||||
["#\\37 5R", "Check3=Yes::7"],
|
["#\\38 8R", "Check3=Yes::7"],
|
||||||
["#\\37 6R", "Check4=Yes::8"],
|
["#\\38 9R", "Check4=Yes::8"],
|
||||||
["#\\37 2R", "Check1=Off::5"],
|
["#\\38 5R", "Check1=Off::5"],
|
||||||
["#\\37 4R", "Check2=Off::6"],
|
["#\\38 7R", "Check2=Off::6"],
|
||||||
["#\\37 5R", "Check3=Off::7"],
|
["#\\38 8R", "Check3=Off::7"],
|
||||||
["#\\37 6R", "Check4=Off::8"],
|
["#\\38 9R", "Check4=Off::8"],
|
||||||
];
|
];
|
||||||
for (const [selector, expectedText] of expected) {
|
for (const [selector, expectedText] of expected) {
|
||||||
// Clear the textfield
|
// Clear the textfield
|
||||||
await clearInput(page, "#\\36 7R");
|
await clearInput(page, "#\\38 0R");
|
||||||
|
|
||||||
await page.click(selector);
|
await page.click(selector);
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
`document.querySelector("#\\\\36 7R").value !== ""`
|
`document.querySelector("#\\\\38 0R").value !== ""`
|
||||||
);
|
);
|
||||||
const text = await page.$eval("#\\36 7R", el => el.value);
|
const text = await page.$eval("#\\38 0R", el => el.value);
|
||||||
expect(text).withContext(`In ${browserName}`).toEqual(expectedText);
|
expect(text).withContext(`In ${browserName}`).toEqual(expectedText);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -270,21 +270,51 @@ describe("Interaction", () => {
|
|||||||
await Promise.all(
|
await Promise.all(
|
||||||
pages.map(async ([browserName, page]) => {
|
pages.map(async ([browserName, page]) => {
|
||||||
const expected = [
|
const expected = [
|
||||||
["#\\37 7R", "Check5=Yes1::9"],
|
["#\\39 0R", "Check5=Yes1::9"],
|
||||||
["#\\37 8R", "Check5=Yes2::10"],
|
["#\\39 1R", "Check5=Yes2::10"],
|
||||||
["#\\37 9R", "Check5=Yes3::11"],
|
["#\\39 2R", "Check5=Yes3::11"],
|
||||||
["#\\38 0R", "Check5=Yes4::12"],
|
["#\\39 3R", "Check5=Yes4::12"],
|
||||||
["#\\38 0R", "Check5=Off::12"],
|
["#\\39 3R", "Check5=Off::12"],
|
||||||
];
|
];
|
||||||
for (const [selector, expectedText] of expected) {
|
for (const [selector, expectedText] of expected) {
|
||||||
// Clear the textfield
|
// Clear the textfield
|
||||||
await clearInput(page, "#\\36 7R");
|
await clearInput(page, "#\\38 0R");
|
||||||
|
|
||||||
await page.click(selector);
|
await page.click(selector);
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
`document.querySelector("#\\\\36 7R").value !== ""`
|
`document.querySelector("#\\\\38 0R").value !== ""`
|
||||||
);
|
);
|
||||||
const text = await page.$eval("#\\36 7R", el => el.value);
|
const text = await page.$eval("#\\38 0R", el => el.value);
|
||||||
|
expect(text).withContext(`In ${browserName}`).toEqual(expectedText);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("must show values in a text input when clicking on checkboxes or radio with no actions", async () => {
|
||||||
|
await Promise.all(
|
||||||
|
pages.map(async ([browserName, page]) => {
|
||||||
|
const expected = [
|
||||||
|
["", "Off;Off"],
|
||||||
|
["#\\39 4R", "Yes;Off"],
|
||||||
|
["#\\39 5R", "Yes;NoAct2"],
|
||||||
|
["#\\39 6R", "Yes;NoAct3"],
|
||||||
|
["#\\39 4R", "Off;NoAct3"],
|
||||||
|
["#\\39 5R", "Off;NoAct2"],
|
||||||
|
];
|
||||||
|
for (const [selector, expectedText] of expected) {
|
||||||
|
// Clear the textfield
|
||||||
|
await clearInput(page, "#\\38 0R");
|
||||||
|
|
||||||
|
if (selector) {
|
||||||
|
await page.click(selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
await page.click("[data-annotation-id='97R']");
|
||||||
|
await page.waitForFunction(
|
||||||
|
`document.querySelector("#\\\\38 0R").value !== ""`
|
||||||
|
);
|
||||||
|
const text = await page.$eval("#\\38 0R", el => el.value);
|
||||||
expect(text).withContext(`In ${browserName}`).toEqual(expectedText);
|
expect(text).withContext(`In ${browserName}`).toEqual(expectedText);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
Binary file not shown.
@ -4314,7 +4314,7 @@
|
|||||||
},
|
},
|
||||||
{ "id": "js-buttons",
|
{ "id": "js-buttons",
|
||||||
"file": "pdfs/js-buttons.pdf",
|
"file": "pdfs/js-buttons.pdf",
|
||||||
"md5": "2c56d419c1fb533349fd1ddef3f14da6",
|
"md5": "26f552398b77f8e85b2a8a166ca2ba6a",
|
||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user