@4site/engrid-scripts 0.22.14 → 0.22.15
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.
|
@@ -8,6 +8,13 @@ export declare class FrequencyUpsell {
|
|
|
8
8
|
private _form;
|
|
9
9
|
private modalSeen;
|
|
10
10
|
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Select the proper options (single config or A/B variant) and return a concrete FrequencyUpsellOptions object.
|
|
13
|
+
* If an A/B test config is provided (abTest: true, options: [...]) a random variant is chosen and stored
|
|
14
|
+
* in a 1-day cookie so subsequent visits get the same variant.
|
|
15
|
+
*/
|
|
16
|
+
private selectOptions;
|
|
17
|
+
private randomIndex;
|
|
11
18
|
/**
|
|
12
19
|
* Check if the FrequencyUpsell should run:
|
|
13
20
|
* - Check if the FrequencyUpsell is enabled in the window object
|
package/dist/frequency-upsell.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* See FrequencyUpsellOptions for more details.
|
|
6
6
|
*/
|
|
7
7
|
import { DonationAmount, DonationFrequency, EnForm, EngridLogger, FrequencyUpsellModal, FrequencyUpsellOptionsDefaults, ProcessingFees, } from ".";
|
|
8
|
+
import * as cookie from "./cookie";
|
|
8
9
|
export class FrequencyUpsell {
|
|
9
10
|
constructor() {
|
|
10
11
|
this.logger = new EngridLogger("FrequencyUpsell", "lightgray", "darkblue", "🏦");
|
|
@@ -19,12 +20,55 @@ export class FrequencyUpsell {
|
|
|
19
20
|
this.logger.log("FrequencyUpsell not running");
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
|
-
this.options =
|
|
23
|
+
this.options = this.selectOptions(window.EngridFrequencyUpsell);
|
|
23
24
|
this.logger.log("FrequencyUpsell initialized", this.options);
|
|
24
25
|
this.upsellModal = new FrequencyUpsellModal(this.options);
|
|
25
26
|
this.createFrequencyField();
|
|
26
27
|
this.addEventListeners();
|
|
27
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Select the proper options (single config or A/B variant) and return a concrete FrequencyUpsellOptions object.
|
|
31
|
+
* If an A/B test config is provided (abTest: true, options: [...]) a random variant is chosen and stored
|
|
32
|
+
* in a 1-day cookie so subsequent visits get the same variant.
|
|
33
|
+
*/
|
|
34
|
+
selectOptions(config) {
|
|
35
|
+
// Simple (non AB) case
|
|
36
|
+
if (!config.abTest) {
|
|
37
|
+
return Object.assign(Object.assign({}, FrequencyUpsellOptionsDefaults), config);
|
|
38
|
+
}
|
|
39
|
+
const abConfig = config;
|
|
40
|
+
const cookieName = abConfig.cookieName || "engrid_frequency_upsell_variant";
|
|
41
|
+
const existing = cookie.get(cookieName);
|
|
42
|
+
let index;
|
|
43
|
+
if (existing !== undefined) {
|
|
44
|
+
const parsed = parseInt(existing, 10);
|
|
45
|
+
if (!isNaN(parsed) && parsed >= 0 && parsed < abConfig.options.length) {
|
|
46
|
+
index = parsed;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
index = this.randomIndex(abConfig.options.length);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
index = this.randomIndex(abConfig.options.length);
|
|
54
|
+
}
|
|
55
|
+
// Persist for configured duration
|
|
56
|
+
const duration = abConfig.cookieDurationDays || 1;
|
|
57
|
+
cookie.set(cookieName, index.toString(), { expires: duration });
|
|
58
|
+
const chosen = abConfig.options[index];
|
|
59
|
+
// Push variant info to dataLayer if available
|
|
60
|
+
if (window.dataLayer) {
|
|
61
|
+
window.dataLayer.push({
|
|
62
|
+
event: "frequency_upsell_ab_variant",
|
|
63
|
+
frequencyUpsellVariantIndex: index,
|
|
64
|
+
frequencyUpsellVariantTitle: chosen.title,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return Object.assign(Object.assign({}, FrequencyUpsellOptionsDefaults), chosen);
|
|
68
|
+
}
|
|
69
|
+
randomIndex(length) {
|
|
70
|
+
return Math.floor(Math.random() * length);
|
|
71
|
+
}
|
|
28
72
|
/**
|
|
29
73
|
* Check if the FrequencyUpsell should run:
|
|
30
74
|
* - Check if the FrequencyUpsell is enabled in the window object
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { Options, OptionsDefaults } from "./interfaces/options";
|
|
|
3
3
|
export { UpsellOptions, UpsellOptionsDefaults, } from "./interfaces/upsell-options";
|
|
4
4
|
export { TranslateOptions, TranslateOptionsDefaults, } from "./interfaces/translate-options";
|
|
5
5
|
export { ExitIntentOptions, ExitIntentOptionsDefaults, } from "./interfaces/exit-intent-options";
|
|
6
|
-
export { FrequencyUpsellOptions, FrequencyUpsellOptionsDefaults, } from "./interfaces/frequency-upsell-options";
|
|
6
|
+
export { FrequencyUpsellOptions, FrequencyUpsellOptionsDefaults, FrequencyUpsellABTestConfig, FrequencyUpsellConfig, } from "./interfaces/frequency-upsell-options";
|
|
7
7
|
export * from "./loader";
|
|
8
8
|
export * from "./app";
|
|
9
9
|
export * from "./amount-label";
|
|
@@ -11,4 +11,11 @@ export interface FrequencyUpsellOptions {
|
|
|
11
11
|
onAccept: () => void;
|
|
12
12
|
onDecline: () => void;
|
|
13
13
|
}
|
|
14
|
+
export interface FrequencyUpsellABTestConfig {
|
|
15
|
+
abTest: true;
|
|
16
|
+
options: FrequencyUpsellOptions[];
|
|
17
|
+
cookieName?: string;
|
|
18
|
+
cookieDurationDays?: number;
|
|
19
|
+
}
|
|
20
|
+
export type FrequencyUpsellConfig = FrequencyUpsellOptions | FrequencyUpsellABTestConfig;
|
|
14
21
|
export declare const FrequencyUpsellOptionsDefaults: FrequencyUpsellOptions;
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const AppVersion = "0.22.
|
|
1
|
+
export declare const AppVersion = "0.22.15";
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const AppVersion = "0.22.
|
|
1
|
+
export const AppVersion = "0.22.15";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4site/engrid-scripts",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.15",
|
|
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": "
|
|
28
|
+
"gitHead": "d7b50bd7dee71910c245dc7508132b69ddcc6f91",
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"nodemon": "^2.0.20"
|
|
31
31
|
}
|