diff --git a/packages/scripts/dist/welcome-back.d.ts b/packages/scripts/dist/welcome-back.d.ts index 9cbfb7f5..df059b28 100644 --- a/packages/scripts/dist/welcome-back.d.ts +++ b/packages/scripts/dist/welcome-back.d.ts @@ -9,6 +9,7 @@ export declare class WelcomeBack { private shouldRun; private addWelcomeBack; private resetWelcomeBack; + private removeAutoFillWithIframe; private addPersonalDetailsSummary; private addEventListeners; enOnValidate(): void; diff --git a/packages/scripts/dist/welcome-back.js b/packages/scripts/dist/welcome-back.js index 57e0475e..69a2c159 100644 --- a/packages/scripts/dist/welcome-back.js +++ b/packages/scripts/dist/welcome-back.js @@ -73,18 +73,29 @@ export class WelcomeBack { .querySelector(options.anchor)) === null || _a === void 0 ? void 0 : _a.insertAdjacentElement(options.placement, welcomeBack); } resetWelcomeBack() { - const inputs = document.querySelectorAll(".fast-personal-details .en__field__input"); - inputs.forEach((input) => { - if (input.type === "checkbox" || input.type === "radio") { - input.checked = false; - } - else { - input.value = ""; - } - }); + const clearAutofillLink = document.getElementById("clear-autofill-data"); + if (clearAutofillLink) { + clearAutofillLink.click(); + } this.supporterDetails = {}; ENGrid.setBodyData("hide-fast-personal-details", false); cookie.remove("engrid-autofill"); + this.removeAutoFillWithIframe(); + } + removeAutoFillWithIframe() { + const rememberMeOptions = ENGrid.getOption("RememberMe"); + const iframe = document.querySelector('iframe[title="Remember Me iframe"]'); + if (rememberMeOptions && iframe && iframe.contentWindow) { + const cookieName = typeof rememberMeOptions === "object" && rememberMeOptions.cookieName + ? rememberMeOptions.cookieName + : "engrid-autofill"; + iframe.contentWindow.postMessage(JSON.stringify({ + key: cookieName, + value: {}, + operation: "write", + expires: 1, + }), "*"); + } } addPersonalDetailsSummary() { var _a; @@ -125,6 +136,7 @@ export class WelcomeBack { .querySelector(options.anchor)) === null || _a === void 0 ? void 0 : _a.insertAdjacentElement(options.placement, personalDetailsSummary); } addEventListeners() { + // Add listener for "Not you?" link in welcome message document .querySelectorAll(".engrid-reset-welcome-back") .forEach((element) => { @@ -132,6 +144,14 @@ export class WelcomeBack { this.resetWelcomeBack(); }); }); + // Add listener for "Change" button in personal details summary + document + .querySelectorAll(".engrid-welcome-back-clear") + .forEach((element) => { + element.addEventListener("click", () => { + this.resetWelcomeBack(); + }); + }); this._form.onValidate.subscribe(this.enOnValidate.bind(this)); this._form.onValidate.subscribe(() => { window.setTimeout(this.doubleCheckValidation.bind(this), 150); diff --git a/packages/scripts/src/welcome-back.ts b/packages/scripts/src/welcome-back.ts index 35e0975a..5cafa773 100644 --- a/packages/scripts/src/welcome-back.ts +++ b/packages/scripts/src/welcome-back.ts @@ -94,23 +94,38 @@ export class WelcomeBack { } private resetWelcomeBack() { - const inputs = document.querySelectorAll( - ".fast-personal-details .en__field__input" - ) as NodeListOf; - - inputs.forEach((input: HTMLInputElement) => { - if (input.type === "checkbox" || input.type === "radio") { - input.checked = false; - } else { - input.value = ""; - } - }); - + const clearAutofillLink = document.getElementById("clear-autofill-data") as HTMLAnchorElement; + if (clearAutofillLink) { + clearAutofillLink.click(); + } this.supporterDetails = {}; ENGrid.setBodyData("hide-fast-personal-details", false); cookie.remove("engrid-autofill"); + this.removeAutoFillWithIframe(); + } + + private removeAutoFillWithIframe() { + const rememberMeOptions = ENGrid.getOption("RememberMe"); + const iframe = document.querySelector('iframe[title="Remember Me iframe"]') as HTMLIFrameElement; + + if (rememberMeOptions && iframe && iframe.contentWindow) { + const cookieName = typeof rememberMeOptions === "object" && rememberMeOptions.cookieName + ? rememberMeOptions.cookieName + : "engrid-autofill"; + + + iframe.contentWindow.postMessage( + JSON.stringify({ + key: cookieName, + value: {}, + operation: "write", + expires: 1, + }), + "*" + ); + } } private addPersonalDetailsSummary() { @@ -134,16 +149,14 @@ export class WelcomeBack { "beforeend", `

- ${this.supporterDetails["firstName"]} ${ - this.supporterDetails["lastName"] + ${this.supporterDetails["firstName"]} ${this.supporterDetails["lastName"] }
${this.supporterDetails["emailAddress"]} - ${ - this.supporterDetails["mobilePhone"] - ? `
${this.supporterDetails["mobilePhone"]}` - : "" - } + ${this.supporterDetails["mobilePhone"] + ? `
${this.supporterDetails["mobilePhone"]}` + : "" + }

` ); @@ -180,6 +193,7 @@ export class WelcomeBack { } private addEventListeners() { + // Add listener for "Not you?" link in welcome message document .querySelectorAll(".engrid-reset-welcome-back") .forEach((element) => { @@ -187,6 +201,16 @@ export class WelcomeBack { this.resetWelcomeBack(); }); }); + + // Add listener for "Change" button in personal details summary + document + .querySelectorAll(".engrid-welcome-back-clear") + .forEach((element) => { + element.addEventListener("click", () => { + this.resetWelcomeBack(); + }); + }); + this._form.onValidate.subscribe(this.enOnValidate.bind(this)); this._form.onValidate.subscribe(() => { window.setTimeout(this.doubleCheckValidation.bind(this), 150);