@4site/engrid-scripts 0.20.4 → 0.20.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -138,6 +138,11 @@ export interface Options {
138
138
  placement: "beforebegin" | "afterbegin" | "beforeend" | "afterend";
139
139
  };
140
140
  };
141
+ OptInLadder?: false | {
142
+ iframeUrl: string;
143
+ placementQuerySelector?: string | null;
144
+ excludePageIDs?: string[];
145
+ };
141
146
  onLoad?: () => void;
142
147
  onResize?: () => void;
143
148
  onSubmit?: () => void;
@@ -38,6 +38,7 @@ export const OptionsDefaults = {
38
38
  PostalCodeValidator: false,
39
39
  CountryRedirect: false,
40
40
  WelcomeBack: false,
41
+ OptInLadder: false,
41
42
  PageLayouts: [
42
43
  "leftleft1col",
43
44
  "centerleft1col",
@@ -19,20 +19,62 @@ export class OptInLadder {
19
19
  }
20
20
  }
21
21
  runAsParent() {
22
- // Grab all the checkboxes with the name starting with "supporter.questions"
23
- const checkboxes = document.querySelectorAll('input[name^="supporter.questions"]');
24
- if (checkboxes.length === 0) {
25
- this.logger.log("No checkboxes found");
26
- return;
27
- }
28
- this._form.onSubmit.subscribe(() => {
29
- // Save the checkbox values to sessionStorage
30
- this.saveOptInsToSessionStorage("parent");
31
- });
32
22
  this.logger.log("Running as Parent");
33
- if (ENGrid.getPageNumber() === 1) {
34
- // Delete items from sessionStorage
35
- this.clearSessionStorage();
23
+ if (ENGrid.getPageNumber() === ENGrid.getPageCount()) {
24
+ // We are on the Thank You Page as a Parent
25
+ // Check autoinject iFrame
26
+ const optInLadderOptions = ENGrid.getOption("OptInLadder");
27
+ if (!optInLadderOptions || !optInLadderOptions.iframeUrl) {
28
+ this.logger.log("Options not found");
29
+ return;
30
+ }
31
+ // Create an iFrame
32
+ const iframe = document.createElement("iframe");
33
+ iframe.src = optInLadderOptions.iframeUrl;
34
+ iframe.style.width = "100%";
35
+ iframe.style.height = "0";
36
+ iframe.scrolling = "no";
37
+ iframe.frameBorder = "0";
38
+ iframe.allowFullscreen = true;
39
+ iframe.allow = "payment";
40
+ iframe.classList.add("opt-in-ladder-iframe");
41
+ iframe.classList.add("engrid-iframe");
42
+ // If the page already has an iFrame with the same class, we don't need to add another one
43
+ const existingIframe = document.querySelector(".opt-in-ladder-iframe");
44
+ if (existingIframe) {
45
+ this.logger.log("iFrame already exists");
46
+ return;
47
+ }
48
+ // Check if the current page is part of the excludePageIDs
49
+ if (optInLadderOptions.excludePageIDs &&
50
+ optInLadderOptions.excludePageIDs.includes(ENGrid.getPageID())) {
51
+ this.logger.log("Current page is excluded");
52
+ return;
53
+ }
54
+ // Append the iFrame to the proper placement
55
+ const placementQuerySelector = optInLadderOptions.placementQuerySelector || ".body-top";
56
+ const placement = document.querySelector(placementQuerySelector);
57
+ if (!placement) {
58
+ this.logger.error("Placement not found");
59
+ return;
60
+ }
61
+ placement.appendChild(iframe);
62
+ }
63
+ else {
64
+ // Grab all the checkboxes with the name starting with "supporter.questions"
65
+ const checkboxes = document.querySelectorAll('input[name^="supporter.questions"]');
66
+ if (checkboxes.length === 0) {
67
+ this.logger.log("No checkboxes found");
68
+ return;
69
+ }
70
+ this._form.onSubmit.subscribe(() => {
71
+ // Save the checkbox values to sessionStorage
72
+ this.saveOptInsToSessionStorage("parent");
73
+ });
74
+ if (ENGrid.getPageNumber() === 1) {
75
+ // Delete items from sessionStorage
76
+ this.clearSessionStorage();
77
+ }
36
78
  }
37
79
  }
38
80
  runAsChildRegular() {
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const AppVersion = "0.20.4";
1
+ export declare const AppVersion = "0.20.5";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const AppVersion = "0.20.4";
1
+ export const AppVersion = "0.20.5";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@4site/engrid-scripts",
3
- "version": "0.20.4",
3
+ "version": "0.20.5",
4
4
  "description": "Scripts for the ENGRID Project",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -25,7 +25,7 @@
25
25
  "strongly-typed-events": "^2.0.9"
26
26
  },
27
27
  "homepage": "https://github.com/4site-interactive-studios/engrid#readme",
28
- "gitHead": "11e6a1d7af282dc9f3601368f16ac82616aa5e3c",
28
+ "gitHead": "71f471c85a474226a7929a40b1c0374cd83ac58e",
29
29
  "devDependencies": {
30
30
  "nodemon": "^2.0.20"
31
31
  }