Skip to content

Commit a3524db

Browse files
committed
[18.0][FIX] sign_oca: Fix window resize navigator issues
1 parent 633eb06 commit a3524db

File tree

3 files changed

+45
-18
lines changed

3 files changed

+45
-18
lines changed

sign_oca/static/src/components/sign_oca_pdf_common/sign_oca_pdf_common.esm.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,28 @@ export default class SignOcaPdfCommon extends Component {
103103
$(this.iframe.el.contentDocument.getElementById("viewer")).addClass(
104104
"sign_oca_ready"
105105
);
106+
107+
// Is essential to make sure the navigator will never duplicate
108+
const target = $(
109+
this.iframe.el.contentDocument.getElementById("viewerContainer")
110+
);
111+
const navigator = $(
112+
this.iframe.el.contentDocument.getElementsByClassName(
113+
"o_sign_sign_item_navigator"
114+
)
115+
);
116+
const navLine = $(
117+
this.iframe.el.contentDocument.getElementsByClassName(
118+
"o_sign_sign_item_navline"
119+
)
120+
);
121+
if (navLine.length === 0) {
122+
target.append($("<div class='o_sign_sign_item_navline'/>"));
123+
}
124+
if (navigator.length === 0) {
125+
target.append($("<div class='o_sign_sign_item_navigator'/>"));
126+
}
127+
106128
this.iframeLoaded.resolve();
107129
}
108130
postIframeField(item) {

sign_oca/static/src/components/sign_oca_pdf_portal/sign_oca_navigator.esm.js

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,15 @@ export function startSignItemNavigator(parent, target, env) {
2222
started: false,
2323
isScrolling: false,
2424
};
25+
const navigator = parent.iframe.el.contentDocument.getElementsByClassName(
26+
"o_sign_sign_item_navigator"
27+
)[0];
28+
const navLine = parent.iframe.el.contentDocument.getElementsByClassName(
29+
"o_sign_sign_item_navline"
30+
)[0];
2531
const checkSignItemsCompletion = parent.checkSignItemsCompletion();
2632
let signItemsToComplete = checkSignItemsCompletion;
2733

28-
const navigator = document.createElement("div");
29-
navigator.classList.add("o_sign_sign_item_navigator");
30-
const navLine = document.createElement("div");
31-
navLine.classList.add("o_sign_sign_item_navline");
32-
3334
function _scrollToSignItemPromise(item) {
3435
return new Promise((resolve) => {
3536
if (env.isSmall) {
@@ -106,6 +107,8 @@ export function startSignItemNavigator(parent, target, env) {
106107
}
107108

108109
function scrollToSignItem({el: item}) {
110+
setTip(_t("Next"));
111+
109112
_scrollToSignItemPromise(item).then(() => {
110113
// Define input to deal with input fields if present
111114
const input = item.querySelector("input");
@@ -130,12 +133,14 @@ export function startSignItemNavigator(parent, target, env) {
130133
}
131134
}
132135
// Field can be signature div or anything else
133-
else if (item.dataset.field) {
134-
const clickableElement =
135-
item.firstChild && item.querySelector("div")
136-
? item.firstChild
137-
: item;
138-
clickableElement.click();
136+
else if (
137+
item.dataset.field &&
138+
item.firstChild &&
139+
item.querySelector("div")
140+
) {
141+
setTip(_t("Click on item to ✒️"));
142+
item.dispatchEvent(new Event("focus_signature"));
143+
item.focus();
139144
} else {
140145
item.focus();
141146
}
@@ -159,8 +164,6 @@ export function startSignItemNavigator(parent, target, env) {
159164
}
160165
}
161166

162-
target.append(navigator);
163-
navigator.before(navLine);
164167
navigator.addEventListener("click", () => {
165168
if (checkSignItemsCompletion.length > 0) {
166169
goToNextSignItem();
@@ -176,6 +179,13 @@ export function startSignItemNavigator(parent, target, env) {
176179
navLine.style.display = force ? "" : "none";
177180
}
178181

182+
// If the window is resized this function asks user to fill all fields again
183+
const watch_navigator = () => {
184+
signItemsToComplete = parent.checkSignItemsCompletion();
185+
setTip(_t("Click to start"));
186+
};
187+
window.addEventListener("resize", watch_navigator);
188+
179189
return {
180190
setTip,
181191
goToNextSignItem,

sign_oca/static/src/components/sign_oca_pdf_portal/sign_oca_pdf_portal.esm.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,6 @@ export class SignOcaPdfPortal extends SignOcaPdf {
6161
navigate() {
6262
const target = this.iframe.el.contentDocument.getElementById("viewerContainer");
6363
this.navigator = startSignItemNavigator(this, target, this.env);
64-
target.addEventListener("scroll", () => {
65-
if (!this.navigator.state.isScrolling && this.navigator.state.started) {
66-
this.navigator.setTip(_t("next"));
67-
}
68-
});
6964
}
7065
}
7166
SignOcaPdfPortal.template = "sign_oca.SignOcaPdfPortal";

0 commit comments

Comments
 (0)