@saasquatch/mint-components 1.12.0-0 → 1.12.0-10
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.
- package/dist/cjs/{ShadowViewAddon-88821c64.js → ShadowViewAddon-040cffad.js} +6 -3
- package/dist/cjs/extractProps-fd93ba62.js +21 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mint-components.cjs.js +1 -1
- package/dist/cjs/sqm-banking-info-form_16.cjs.entry.js +91 -72
- package/dist/cjs/sqm-big-stat_39.cjs.entry.js +128 -63
- package/dist/cjs/sqm-code-verification.cjs.entry.js +67 -77
- package/dist/cjs/sqm-email-verification.cjs.entry.js +158 -12
- package/dist/cjs/{sqm-invoice-table-view-ce9a34ac.js → sqm-invoice-table-view-c58966f8.js} +79 -0
- package/dist/cjs/sqm-stencilbook.cjs.entry.js +56 -14
- package/dist/cjs/sqm-widget-verification-internal.cjs.entry.js +81 -11
- package/dist/cjs/sqm-widget-verification.cjs.entry.js +102 -19
- package/dist/cjs/usePayoutStatus-b9fb7399.js +70 -0
- package/dist/cjs/useVerificationEmail-6aacdb71.js +169 -0
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/sqm-big-stat/useBigStat.js +6 -3
- package/dist/collection/components/sqm-payout-button-scroll/PayoutButtonScroll.stories.js +1 -2
- package/dist/collection/components/sqm-payout-button-scroll/sqm-payout-button-scroll-view.js +1 -0
- package/dist/collection/components/sqm-payout-button-scroll/sqm-payout-button-scroll.js +16 -3
- package/dist/collection/components/sqm-widget-verification/sqm-code-verification/WidgetCodeVerification.stories.js +9 -2
- package/dist/collection/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification-view.js +20 -10
- package/dist/collection/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification.js +34 -63
- package/dist/collection/components/sqm-widget-verification/sqm-code-verification/useCodeVerification.js +38 -29
- package/dist/collection/components/sqm-widget-verification/sqm-email-verification/WidgetEmailVerification.stories.js +23 -3
- package/dist/collection/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification-view.js +17 -4
- package/dist/collection/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification.js +65 -11
- package/dist/collection/components/sqm-widget-verification/sqm-email-verification/useEmailVerification.js +76 -20
- package/dist/collection/components/sqm-widget-verification/sqm-widget-verification-internal.js +327 -15
- package/dist/collection/components/sqm-widget-verification/sqm-widget-verification.js +447 -22
- package/dist/collection/components/sqm-widget-verification/useVerificationEmail.js +165 -0
- package/dist/collection/components/tax-and-cash/BankingForm.stories.js +1 -0
- package/dist/collection/components/tax-and-cash/TaxForm.stories.js +78 -0
- package/dist/collection/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form.js +2 -1
- package/dist/collection/components/tax-and-cash/sqm-banking-info-form/useBankingInfoForm.js +7 -0
- package/dist/collection/components/tax-and-cash/sqm-docusign-form/docusign-iframe/DocusignIframe.js +0 -1
- package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.js +10 -0
- package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert-view.js +72 -13
- package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert.js +146 -9
- package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.js +30 -15
- package/dist/collection/components/tax-and-cash/sqm-tax-and-cash/data.js +6 -0
- package/dist/collection/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.js +8 -8
- package/dist/collection/components/tax-and-cash/sqm-tax-and-cash/useTaxAndCash.js +2 -2
- package/dist/collection/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.js +22 -16
- package/dist/collection/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.js +99 -88
- package/dist/collection/components/tax-and-cash/sqm-tax-and-cash-dashboard/useTaxAndCashDashboard.js +8 -1
- package/dist/collection/components/tax-and-cash/sqm-user-info-form/useUserInfoForm.js +16 -11
- package/dist/esm/{ShadowViewAddon-65c8679e.js → ShadowViewAddon-69b61037.js} +6 -3
- package/dist/esm/extractProps-ae1afbb3.js +19 -0
- package/dist/esm/{keys-a1496e39.js → keys-db1897ae.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/mint-components.js +1 -1
- package/dist/esm/sqm-banking-info-form_16.entry.js +91 -72
- package/dist/esm/sqm-big-stat_39.entry.js +127 -62
- package/dist/esm/sqm-code-verification.entry.js +69 -79
- package/dist/esm/sqm-email-verification.entry.js +159 -13
- package/dist/esm/{sqm-invoice-table-view-08c03ba7.js → sqm-invoice-table-view-d1cfdaf4.js} +79 -0
- package/dist/esm/sqm-stencilbook.entry.js +56 -14
- package/dist/esm/sqm-widget-verification-internal.entry.js +84 -14
- package/dist/esm/sqm-widget-verification.entry.js +104 -21
- package/dist/esm/usePayoutStatus-1a635054.js +67 -0
- package/dist/esm/useVerificationEmail-c32696ba.js +167 -0
- package/dist/esm-es5/ShadowViewAddon-69b61037.js +1 -0
- package/dist/esm-es5/extractProps-ae1afbb3.js +1 -0
- package/dist/esm-es5/{keys-a1496e39.js → keys-db1897ae.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mint-components.js +1 -1
- package/dist/esm-es5/sqm-banking-info-form_16.entry.js +1 -1
- package/dist/esm-es5/sqm-big-stat_39.entry.js +1 -1
- package/dist/esm-es5/sqm-code-verification.entry.js +1 -1
- package/dist/esm-es5/sqm-email-verification.entry.js +1 -1
- package/dist/esm-es5/sqm-invoice-table-view-d1cfdaf4.js +1 -0
- package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
- package/dist/esm-es5/sqm-widget-verification-internal.entry.js +1 -1
- package/dist/esm-es5/sqm-widget-verification.entry.js +1 -1
- package/dist/esm-es5/usePayoutStatus-1a635054.js +1 -0
- package/dist/esm-es5/useVerificationEmail-c32696ba.js +1 -0
- package/dist/mint-components/mint-components.esm.js +1 -1
- package/dist/mint-components/p-15c7a1d2.system.entry.js +1 -0
- package/dist/mint-components/p-1712a9fd.entry.js +11 -0
- package/dist/mint-components/p-1e616d45.system.js +1 -0
- package/dist/mint-components/{p-721a89c6.entry.js → p-24092973.entry.js} +2 -2
- package/dist/mint-components/p-26468242.js +1 -0
- package/dist/mint-components/p-331d060e.entry.js +223 -0
- package/dist/mint-components/p-39840341.js +1 -0
- package/dist/mint-components/p-4364001c.entry.js +12 -0
- package/dist/mint-components/p-4bd7a472.js +1 -0
- package/dist/mint-components/p-517224ef.js +19 -0
- package/dist/mint-components/p-5a23b560.system.entry.js +1 -0
- package/dist/mint-components/p-8300d8c8.system.js +1 -0
- package/dist/mint-components/p-8bddb468.system.entry.js +1 -0
- package/dist/mint-components/p-9596e97c.system.entry.js +1 -0
- package/dist/mint-components/p-974070c4.system.entry.js +1 -0
- package/dist/mint-components/{p-b651706a.js → p-9eae245f.js} +6 -3
- package/dist/mint-components/p-a8645c1b.system.js +1 -0
- package/dist/mint-components/p-b2a99637.system.js +1 -0
- package/dist/mint-components/{p-66a04cca.system.entry.js → p-b62faaa5.system.entry.js} +1 -1
- package/dist/mint-components/p-c41e1df8.entry.js +195 -0
- package/dist/mint-components/p-c510fb88.entry.js +1 -0
- package/dist/mint-components/p-ca809fdd.system.js +1 -1
- package/dist/mint-components/p-d7806f31.js +48 -0
- package/dist/mint-components/p-e01ac27c.system.js +1 -0
- package/dist/mint-components/p-e45a8501.system.entry.js +1 -0
- package/dist/mint-components/p-e990dc21.system.js +1 -0
- package/dist/mint-components/p-f340214f.entry.js +25 -0
- package/dist/types/components/sqm-payout-button-scroll/PayoutButtonScroll.stories.d.ts +0 -1
- package/dist/types/components/sqm-payout-button-scroll/sqm-payout-button-scroll.d.ts +7 -0
- package/dist/types/components/sqm-widget-verification/sqm-code-verification/WidgetCodeVerification.stories.d.ts +1 -0
- package/dist/types/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification-view.d.ts +3 -3
- package/dist/types/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification.d.ts +4 -10
- package/dist/types/components/sqm-widget-verification/sqm-code-verification/useCodeVerification.d.ts +2 -0
- package/dist/types/components/sqm-widget-verification/sqm-email-verification/WidgetEmailVerification.stories.d.ts +4 -1
- package/dist/types/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification-view.d.ts +6 -1
- package/dist/types/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification.d.ts +10 -2
- package/dist/types/components/sqm-widget-verification/sqm-email-verification/useEmailVerification.d.ts +3 -2
- package/dist/types/components/sqm-widget-verification/sqm-widget-verification-internal.d.ts +15 -0
- package/dist/types/components/sqm-widget-verification/sqm-widget-verification.d.ts +79 -0
- package/dist/types/components/sqm-widget-verification/useVerificationEmail.d.ts +14 -0
- package/dist/types/components/tax-and-cash/TaxForm.stories.d.ts +1 -0
- package/dist/types/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.d.ts +1 -0
- package/dist/types/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.d.ts +2 -0
- package/dist/types/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert-view.d.ts +12 -0
- package/dist/types/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert.d.ts +41 -0
- package/dist/types/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.d.ts +12 -0
- package/dist/types/components/tax-and-cash/sqm-tax-and-cash/data.d.ts +6 -0
- package/dist/types/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.d.ts +2 -2
- package/dist/types/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.d.ts +10 -3
- package/dist/types/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.d.ts +19 -18
- package/dist/types/components.d.ts +366 -92
- package/docs/docs.docx +0 -0
- package/docs/raisins.json +1 -1
- package/grapesjs/grapesjs.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/useEmailVerification-30a1c7f6.js +0 -75
- package/dist/collection/components/sqm-widget-verification/useWidgetVerification.js +0 -3
- package/dist/esm/useEmailVerification-7135732c.js +0 -72
- package/dist/esm-es5/ShadowViewAddon-65c8679e.js +0 -1
- package/dist/esm-es5/sqm-invoice-table-view-08c03ba7.js +0 -1
- package/dist/esm-es5/useEmailVerification-7135732c.js +0 -1
- package/dist/mint-components/p-117b4705.system.js +0 -1
- package/dist/mint-components/p-1bd0cda8.system.entry.js +0 -1
- package/dist/mint-components/p-1ee62d9f.system.entry.js +0 -1
- package/dist/mint-components/p-1f9a9b70.system.entry.js +0 -1
- package/dist/mint-components/p-23fdd44e.entry.js +0 -1
- package/dist/mint-components/p-36f7caec.system.entry.js +0 -1
- package/dist/mint-components/p-39397731.entry.js +0 -1
- package/dist/mint-components/p-39af4acd.entry.js +0 -240
- package/dist/mint-components/p-4c9b6fbe.system.js +0 -1
- package/dist/mint-components/p-65e2c043.system.js +0 -1
- package/dist/mint-components/p-663303b7.entry.js +0 -8
- package/dist/mint-components/p-6cae44d7.js +0 -1
- package/dist/mint-components/p-7f5c7bf7.system.entry.js +0 -1
- package/dist/mint-components/p-8a337864.js +0 -7
- package/dist/mint-components/p-a02afa72.system.js +0 -1
- package/dist/mint-components/p-a5a9aa07.entry.js +0 -189
- package/dist/mint-components/p-c763c0b2.js +0 -1
- package/dist/mint-components/p-e93e5740.entry.js +0 -1
- package/dist/mint-components/p-e9ca48fc.system.entry.js +0 -1
- package/dist/types/components/sqm-widget-verification/useWidgetVerification.d.ts +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { useParentState } from "@saasquatch/component-boilerplate";
|
|
2
|
-
import {
|
|
2
|
+
import { withHooks } from "@saasquatch/stencil-hooks";
|
|
3
3
|
import { useCallback, useEffect, useState } from "@saasquatch/universal-hooks";
|
|
4
|
-
import { Component, h, Host } from "@stencil/core";
|
|
4
|
+
import { Component, h, Host, Prop } from "@stencil/core";
|
|
5
5
|
import debugFn from "debug";
|
|
6
|
-
import {
|
|
6
|
+
import { VERIFICATION_PARENT_NAMESPACE } from "./keys";
|
|
7
|
+
import { getProps } from "../../utils/utils";
|
|
7
8
|
const debug = debugFn("sq:widget-verification");
|
|
8
9
|
function useTemplateChildren({ parent, callback }) {
|
|
9
10
|
const parentObserver = new MutationObserver(listenForTemplateChanges);
|
|
@@ -33,24 +34,110 @@ function useTemplateChildren({ parent, callback }) {
|
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* @uiName Widget Verification Gate
|
|
37
|
+
* @slots [{"name":"not-verified","title":"Not verified template"},{"name":"verified","title":"Verified template"}]
|
|
38
|
+
* @canvasRenderer always-replace
|
|
39
|
+
* @exampleGroup Widget Verification
|
|
40
|
+
* @example Widget Verification Gate - <sqm-widget-verification><template slot="verified"><sqm-tax-and-cash></sqm-tax-and-cash></template></sqm-widget-verification>
|
|
36
41
|
*/
|
|
37
42
|
export class WidgetVerification {
|
|
43
|
+
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
44
|
+
CODE STEP PROPS
|
|
45
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
38
46
|
constructor() {
|
|
47
|
+
// ! Any updated must be reflected in sqm-widget-verification-internal AND sqm-email-verification AND sqm-code-verification
|
|
48
|
+
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
49
|
+
EMAIL STEP PROPS
|
|
50
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
51
|
+
/**
|
|
52
|
+
* @uiName Verify email widget header text
|
|
53
|
+
* @uiGroup Email Verification Step
|
|
54
|
+
*/
|
|
55
|
+
this.emailStep_verifyEmailHeaderText = "Start by verifying your email. We’ll send you a code through our referral provider, impact.com.";
|
|
56
|
+
/**
|
|
57
|
+
* @uiName Send code to email alert header
|
|
58
|
+
* @uiGroup Email Verification Step
|
|
59
|
+
*/
|
|
60
|
+
this.emailStep_sendCodeErrorHeader = "There was an error sending your code.";
|
|
61
|
+
/**
|
|
62
|
+
* @uiName Send code to email alert description
|
|
63
|
+
* @uiGroup Email Verification Step
|
|
64
|
+
*/
|
|
65
|
+
this.emailStep_sendCodeErrorDescription = "Please try again. If this problem continues, contact our program support team.";
|
|
66
|
+
/**
|
|
67
|
+
* @uiName Email input label
|
|
68
|
+
* @uiGroup Email Verification Step
|
|
69
|
+
*/
|
|
70
|
+
this.emailStep_emailLabel = "Email";
|
|
71
|
+
/**
|
|
72
|
+
* @uiName Send code button text
|
|
73
|
+
* @uiGroup Email Verification Step
|
|
74
|
+
*/
|
|
75
|
+
this.emailStep_sendCodeText = "Send code";
|
|
76
|
+
/**
|
|
77
|
+
* @uiName Send code button text
|
|
78
|
+
* @uiGroup Email Verification Step
|
|
79
|
+
*/
|
|
80
|
+
this.emailStep_emailValidationErrorText = "Please enter a valid email";
|
|
81
|
+
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
82
|
+
EMAIL STEP PROPS
|
|
83
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
84
|
+
/**
|
|
85
|
+
* @uiName Verify code widget header text
|
|
86
|
+
* @uiGroup Code Verification Step
|
|
87
|
+
*/
|
|
88
|
+
this.codeStep_verifyCodeHeaderText = "Enter the code sent to {email} from our referral provider, impact.com.";
|
|
89
|
+
/**
|
|
90
|
+
* @uiName Reverify code widget header text
|
|
91
|
+
* @uiGroup Code Verification Step
|
|
92
|
+
*/
|
|
93
|
+
this.codeStep_reverifyCodeHeaderText = "Enter the code sent to {email} from our referral provider, impact.com.";
|
|
94
|
+
/**
|
|
95
|
+
* Text displayed under verify button
|
|
96
|
+
* @uiName Resend code text
|
|
97
|
+
* @uiGroup Code Verification Step
|
|
98
|
+
*/
|
|
99
|
+
this.codeStep_resendCodeText = "Didn't receive your code? {resendCodeLink}";
|
|
100
|
+
/**
|
|
101
|
+
* The link that appears in the resend code link
|
|
102
|
+
* @uiName Resend code label
|
|
103
|
+
* @uiGroup Code Verification Step
|
|
104
|
+
*/
|
|
105
|
+
this.codeStep_resendCodeLabel = "Resend code";
|
|
106
|
+
/**
|
|
107
|
+
* Link text displayed under verify button
|
|
108
|
+
* @uiName Resend code text
|
|
109
|
+
* @uiGroup Code Verification Step
|
|
110
|
+
*/
|
|
111
|
+
this.codeStep_codeResentSuccessfullyText = "Another code has been sent to {email}";
|
|
112
|
+
/**
|
|
113
|
+
* Error text displayed under verification input
|
|
114
|
+
* @uiName Invalid code text
|
|
115
|
+
* @uiGroup Code Verification Step
|
|
116
|
+
*/
|
|
117
|
+
this.codeStep_invalidCodeText = "Please check your code and try again. If you’re still having trouble, try resending your code.";
|
|
118
|
+
/**
|
|
119
|
+
* @uiName Verify code button text
|
|
120
|
+
* @uiGroup Code Verification Step
|
|
121
|
+
*/
|
|
122
|
+
this.codeStep_verifyText = "Verify";
|
|
123
|
+
/**
|
|
124
|
+
* Displayed when the email verification fails due to a network error. The participant can try refreshing the page.
|
|
125
|
+
* @uiName Network error message
|
|
126
|
+
* @uiGroup Code Verification Step
|
|
127
|
+
*/
|
|
128
|
+
this.codeStep_networkErrorMessage = "An error occurred while verifying your email. Please refresh the page and try again.";
|
|
39
129
|
withHooks(this);
|
|
40
130
|
}
|
|
41
131
|
disconnectedCallback() { }
|
|
42
132
|
render() {
|
|
43
133
|
const [context, setContext] = useParentState({
|
|
44
134
|
namespace: VERIFICATION_PARENT_NAMESPACE,
|
|
45
|
-
initialValue:
|
|
135
|
+
initialValue: false,
|
|
46
136
|
});
|
|
47
|
-
const authToken = context === null || context === void 0 ? void 0 : context.token;
|
|
48
137
|
const [container, setContainer] = useState(undefined);
|
|
49
138
|
const [slot, setSlot] = useState(undefined);
|
|
50
|
-
if (!authToken)
|
|
51
|
-
debug("No user identity available");
|
|
52
139
|
const updateTemplates = useCallback(() => {
|
|
53
|
-
const isAuth =
|
|
140
|
+
const isAuth = context;
|
|
54
141
|
const templates = slot.querySelectorAll(`template`);
|
|
55
142
|
const template = Array.from(templates).find((t) => t.slot === (isAuth ? "verified" : "not-verified"));
|
|
56
143
|
if (template) {
|
|
@@ -98,7 +185,7 @@ export class WidgetVerification {
|
|
|
98
185
|
target.style.height = "25px";
|
|
99
186
|
});
|
|
100
187
|
}
|
|
101
|
-
}, [container, slot,
|
|
188
|
+
}, [container, slot, context]);
|
|
102
189
|
useEffect(() => {
|
|
103
190
|
if (!container || !slot) {
|
|
104
191
|
debug("DOM not ready:");
|
|
@@ -107,26 +194,364 @@ export class WidgetVerification {
|
|
|
107
194
|
// Run on first render
|
|
108
195
|
updateTemplates();
|
|
109
196
|
return useTemplateChildren({ parent: slot, callback: updateTemplates });
|
|
110
|
-
}, [slot, container,
|
|
111
|
-
useEffect(() => {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}, []);
|
|
197
|
+
}, [slot, container, context]);
|
|
198
|
+
// useEffect(() => {
|
|
199
|
+
// const host = useHost();
|
|
200
|
+
// const callback = (e: CustomEvent) => {
|
|
201
|
+
// e.stopPropagation();
|
|
202
|
+
// setContext({ token: e.detail.token });
|
|
203
|
+
// };
|
|
204
|
+
// host.addEventListener(VERIFICATION_EVENT_KEY, callback);
|
|
205
|
+
// return () => {
|
|
206
|
+
// host.removeEventListener(VERIFICATION_EVENT_KEY, callback);
|
|
207
|
+
// };
|
|
208
|
+
// }, []);
|
|
122
209
|
return (h(Host, null,
|
|
123
210
|
h("div", { ref: setSlot, style: { display: "contents" } },
|
|
124
211
|
h("template", { slot: "not-verified" },
|
|
125
|
-
h("sqm-widget-verification-internal",
|
|
212
|
+
h("sqm-widget-verification-internal", Object.assign({}, getProps(this)))),
|
|
126
213
|
h("slot", { name: "not-verified" }),
|
|
127
214
|
h("slot", { name: "verified" })),
|
|
128
215
|
h("div", { ref: setContainer },
|
|
129
216
|
h("slot", { name: "shown" }))));
|
|
130
217
|
}
|
|
131
218
|
static get is() { return "sqm-widget-verification"; }
|
|
219
|
+
static get properties() { return {
|
|
220
|
+
"emailStep_verifyEmailHeaderText": {
|
|
221
|
+
"type": "string",
|
|
222
|
+
"mutable": false,
|
|
223
|
+
"complexType": {
|
|
224
|
+
"original": "string",
|
|
225
|
+
"resolved": "string",
|
|
226
|
+
"references": {}
|
|
227
|
+
},
|
|
228
|
+
"required": false,
|
|
229
|
+
"optional": false,
|
|
230
|
+
"docs": {
|
|
231
|
+
"tags": [{
|
|
232
|
+
"text": "Verify email widget header text",
|
|
233
|
+
"name": "uiName"
|
|
234
|
+
}, {
|
|
235
|
+
"text": "Email Verification Step",
|
|
236
|
+
"name": "uiGroup"
|
|
237
|
+
}],
|
|
238
|
+
"text": ""
|
|
239
|
+
},
|
|
240
|
+
"attribute": "email-step_verify-email-header-text",
|
|
241
|
+
"reflect": false,
|
|
242
|
+
"defaultValue": "\"Start by verifying your email. We\u2019ll send you a code through our referral provider, impact.com.\""
|
|
243
|
+
},
|
|
244
|
+
"emailStep_sendCodeErrorHeader": {
|
|
245
|
+
"type": "string",
|
|
246
|
+
"mutable": false,
|
|
247
|
+
"complexType": {
|
|
248
|
+
"original": "string",
|
|
249
|
+
"resolved": "string",
|
|
250
|
+
"references": {}
|
|
251
|
+
},
|
|
252
|
+
"required": false,
|
|
253
|
+
"optional": false,
|
|
254
|
+
"docs": {
|
|
255
|
+
"tags": [{
|
|
256
|
+
"text": "Send code to email alert header",
|
|
257
|
+
"name": "uiName"
|
|
258
|
+
}, {
|
|
259
|
+
"text": "Email Verification Step",
|
|
260
|
+
"name": "uiGroup"
|
|
261
|
+
}],
|
|
262
|
+
"text": ""
|
|
263
|
+
},
|
|
264
|
+
"attribute": "email-step_send-code-error-header",
|
|
265
|
+
"reflect": false,
|
|
266
|
+
"defaultValue": "\"There was an error sending your code.\""
|
|
267
|
+
},
|
|
268
|
+
"emailStep_sendCodeErrorDescription": {
|
|
269
|
+
"type": "string",
|
|
270
|
+
"mutable": false,
|
|
271
|
+
"complexType": {
|
|
272
|
+
"original": "string",
|
|
273
|
+
"resolved": "string",
|
|
274
|
+
"references": {}
|
|
275
|
+
},
|
|
276
|
+
"required": false,
|
|
277
|
+
"optional": false,
|
|
278
|
+
"docs": {
|
|
279
|
+
"tags": [{
|
|
280
|
+
"text": "Send code to email alert description",
|
|
281
|
+
"name": "uiName"
|
|
282
|
+
}, {
|
|
283
|
+
"text": "Email Verification Step",
|
|
284
|
+
"name": "uiGroup"
|
|
285
|
+
}],
|
|
286
|
+
"text": ""
|
|
287
|
+
},
|
|
288
|
+
"attribute": "email-step_send-code-error-description",
|
|
289
|
+
"reflect": false,
|
|
290
|
+
"defaultValue": "\"Please try again. If this problem continues, contact our program support team.\""
|
|
291
|
+
},
|
|
292
|
+
"emailStep_emailLabel": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"mutable": false,
|
|
295
|
+
"complexType": {
|
|
296
|
+
"original": "string",
|
|
297
|
+
"resolved": "string",
|
|
298
|
+
"references": {}
|
|
299
|
+
},
|
|
300
|
+
"required": false,
|
|
301
|
+
"optional": false,
|
|
302
|
+
"docs": {
|
|
303
|
+
"tags": [{
|
|
304
|
+
"text": "Email input label",
|
|
305
|
+
"name": "uiName"
|
|
306
|
+
}, {
|
|
307
|
+
"text": "Email Verification Step",
|
|
308
|
+
"name": "uiGroup"
|
|
309
|
+
}],
|
|
310
|
+
"text": ""
|
|
311
|
+
},
|
|
312
|
+
"attribute": "email-step_email-label",
|
|
313
|
+
"reflect": false,
|
|
314
|
+
"defaultValue": "\"Email\""
|
|
315
|
+
},
|
|
316
|
+
"emailStep_sendCodeText": {
|
|
317
|
+
"type": "string",
|
|
318
|
+
"mutable": false,
|
|
319
|
+
"complexType": {
|
|
320
|
+
"original": "string",
|
|
321
|
+
"resolved": "string",
|
|
322
|
+
"references": {}
|
|
323
|
+
},
|
|
324
|
+
"required": false,
|
|
325
|
+
"optional": false,
|
|
326
|
+
"docs": {
|
|
327
|
+
"tags": [{
|
|
328
|
+
"text": "Send code button text",
|
|
329
|
+
"name": "uiName"
|
|
330
|
+
}, {
|
|
331
|
+
"text": "Email Verification Step",
|
|
332
|
+
"name": "uiGroup"
|
|
333
|
+
}],
|
|
334
|
+
"text": ""
|
|
335
|
+
},
|
|
336
|
+
"attribute": "email-step_send-code-text",
|
|
337
|
+
"reflect": false,
|
|
338
|
+
"defaultValue": "\"Send code\""
|
|
339
|
+
},
|
|
340
|
+
"emailStep_emailValidationErrorText": {
|
|
341
|
+
"type": "string",
|
|
342
|
+
"mutable": false,
|
|
343
|
+
"complexType": {
|
|
344
|
+
"original": "string",
|
|
345
|
+
"resolved": "string",
|
|
346
|
+
"references": {}
|
|
347
|
+
},
|
|
348
|
+
"required": false,
|
|
349
|
+
"optional": false,
|
|
350
|
+
"docs": {
|
|
351
|
+
"tags": [{
|
|
352
|
+
"text": "Send code button text",
|
|
353
|
+
"name": "uiName"
|
|
354
|
+
}, {
|
|
355
|
+
"text": "Email Verification Step",
|
|
356
|
+
"name": "uiGroup"
|
|
357
|
+
}],
|
|
358
|
+
"text": ""
|
|
359
|
+
},
|
|
360
|
+
"attribute": "email-step_email-validation-error-text",
|
|
361
|
+
"reflect": false,
|
|
362
|
+
"defaultValue": "\"Please enter a valid email\""
|
|
363
|
+
},
|
|
364
|
+
"codeStep_verifyCodeHeaderText": {
|
|
365
|
+
"type": "string",
|
|
366
|
+
"mutable": false,
|
|
367
|
+
"complexType": {
|
|
368
|
+
"original": "string",
|
|
369
|
+
"resolved": "string",
|
|
370
|
+
"references": {}
|
|
371
|
+
},
|
|
372
|
+
"required": false,
|
|
373
|
+
"optional": false,
|
|
374
|
+
"docs": {
|
|
375
|
+
"tags": [{
|
|
376
|
+
"text": "Verify code widget header text",
|
|
377
|
+
"name": "uiName"
|
|
378
|
+
}, {
|
|
379
|
+
"text": "Code Verification Step",
|
|
380
|
+
"name": "uiGroup"
|
|
381
|
+
}],
|
|
382
|
+
"text": ""
|
|
383
|
+
},
|
|
384
|
+
"attribute": "code-step_verify-code-header-text",
|
|
385
|
+
"reflect": false,
|
|
386
|
+
"defaultValue": "\"Enter the code sent to {email} from our referral provider, impact.com.\""
|
|
387
|
+
},
|
|
388
|
+
"codeStep_reverifyCodeHeaderText": {
|
|
389
|
+
"type": "string",
|
|
390
|
+
"mutable": false,
|
|
391
|
+
"complexType": {
|
|
392
|
+
"original": "string",
|
|
393
|
+
"resolved": "string",
|
|
394
|
+
"references": {}
|
|
395
|
+
},
|
|
396
|
+
"required": false,
|
|
397
|
+
"optional": false,
|
|
398
|
+
"docs": {
|
|
399
|
+
"tags": [{
|
|
400
|
+
"text": "Reverify code widget header text",
|
|
401
|
+
"name": "uiName"
|
|
402
|
+
}, {
|
|
403
|
+
"text": "Code Verification Step",
|
|
404
|
+
"name": "uiGroup"
|
|
405
|
+
}],
|
|
406
|
+
"text": ""
|
|
407
|
+
},
|
|
408
|
+
"attribute": "code-step_reverify-code-header-text",
|
|
409
|
+
"reflect": false,
|
|
410
|
+
"defaultValue": "\"Enter the code sent to {email} from our referral provider, impact.com.\""
|
|
411
|
+
},
|
|
412
|
+
"codeStep_resendCodeText": {
|
|
413
|
+
"type": "string",
|
|
414
|
+
"mutable": false,
|
|
415
|
+
"complexType": {
|
|
416
|
+
"original": "string",
|
|
417
|
+
"resolved": "string",
|
|
418
|
+
"references": {}
|
|
419
|
+
},
|
|
420
|
+
"required": false,
|
|
421
|
+
"optional": false,
|
|
422
|
+
"docs": {
|
|
423
|
+
"tags": [{
|
|
424
|
+
"text": "Resend code text",
|
|
425
|
+
"name": "uiName"
|
|
426
|
+
}, {
|
|
427
|
+
"text": "Code Verification Step",
|
|
428
|
+
"name": "uiGroup"
|
|
429
|
+
}],
|
|
430
|
+
"text": "Text displayed under verify button"
|
|
431
|
+
},
|
|
432
|
+
"attribute": "code-step_resend-code-text",
|
|
433
|
+
"reflect": false,
|
|
434
|
+
"defaultValue": "\"Didn't receive your code? {resendCodeLink}\""
|
|
435
|
+
},
|
|
436
|
+
"codeStep_resendCodeLabel": {
|
|
437
|
+
"type": "string",
|
|
438
|
+
"mutable": false,
|
|
439
|
+
"complexType": {
|
|
440
|
+
"original": "string",
|
|
441
|
+
"resolved": "string",
|
|
442
|
+
"references": {}
|
|
443
|
+
},
|
|
444
|
+
"required": false,
|
|
445
|
+
"optional": false,
|
|
446
|
+
"docs": {
|
|
447
|
+
"tags": [{
|
|
448
|
+
"text": "Resend code label",
|
|
449
|
+
"name": "uiName"
|
|
450
|
+
}, {
|
|
451
|
+
"text": "Code Verification Step",
|
|
452
|
+
"name": "uiGroup"
|
|
453
|
+
}],
|
|
454
|
+
"text": "The link that appears in the resend code link"
|
|
455
|
+
},
|
|
456
|
+
"attribute": "code-step_resend-code-label",
|
|
457
|
+
"reflect": false,
|
|
458
|
+
"defaultValue": "\"Resend code\""
|
|
459
|
+
},
|
|
460
|
+
"codeStep_codeResentSuccessfullyText": {
|
|
461
|
+
"type": "string",
|
|
462
|
+
"mutable": false,
|
|
463
|
+
"complexType": {
|
|
464
|
+
"original": "string",
|
|
465
|
+
"resolved": "string",
|
|
466
|
+
"references": {}
|
|
467
|
+
},
|
|
468
|
+
"required": false,
|
|
469
|
+
"optional": false,
|
|
470
|
+
"docs": {
|
|
471
|
+
"tags": [{
|
|
472
|
+
"text": "Resend code text",
|
|
473
|
+
"name": "uiName"
|
|
474
|
+
}, {
|
|
475
|
+
"text": "Code Verification Step",
|
|
476
|
+
"name": "uiGroup"
|
|
477
|
+
}],
|
|
478
|
+
"text": "Link text displayed under verify button"
|
|
479
|
+
},
|
|
480
|
+
"attribute": "code-step_code-resent-successfully-text",
|
|
481
|
+
"reflect": false,
|
|
482
|
+
"defaultValue": "\"Another code has been sent to {email}\""
|
|
483
|
+
},
|
|
484
|
+
"codeStep_invalidCodeText": {
|
|
485
|
+
"type": "string",
|
|
486
|
+
"mutable": false,
|
|
487
|
+
"complexType": {
|
|
488
|
+
"original": "string",
|
|
489
|
+
"resolved": "string",
|
|
490
|
+
"references": {}
|
|
491
|
+
},
|
|
492
|
+
"required": false,
|
|
493
|
+
"optional": false,
|
|
494
|
+
"docs": {
|
|
495
|
+
"tags": [{
|
|
496
|
+
"text": "Invalid code text",
|
|
497
|
+
"name": "uiName"
|
|
498
|
+
}, {
|
|
499
|
+
"text": "Code Verification Step",
|
|
500
|
+
"name": "uiGroup"
|
|
501
|
+
}],
|
|
502
|
+
"text": "Error text displayed under verification input"
|
|
503
|
+
},
|
|
504
|
+
"attribute": "code-step_invalid-code-text",
|
|
505
|
+
"reflect": false,
|
|
506
|
+
"defaultValue": "\"Please check your code and try again. If you\u2019re still having trouble, try resending your code.\""
|
|
507
|
+
},
|
|
508
|
+
"codeStep_verifyText": {
|
|
509
|
+
"type": "string",
|
|
510
|
+
"mutable": false,
|
|
511
|
+
"complexType": {
|
|
512
|
+
"original": "string",
|
|
513
|
+
"resolved": "string",
|
|
514
|
+
"references": {}
|
|
515
|
+
},
|
|
516
|
+
"required": false,
|
|
517
|
+
"optional": false,
|
|
518
|
+
"docs": {
|
|
519
|
+
"tags": [{
|
|
520
|
+
"text": "Verify code button text",
|
|
521
|
+
"name": "uiName"
|
|
522
|
+
}, {
|
|
523
|
+
"text": "Code Verification Step",
|
|
524
|
+
"name": "uiGroup"
|
|
525
|
+
}],
|
|
526
|
+
"text": ""
|
|
527
|
+
},
|
|
528
|
+
"attribute": "code-step_verify-text",
|
|
529
|
+
"reflect": false,
|
|
530
|
+
"defaultValue": "\"Verify\""
|
|
531
|
+
},
|
|
532
|
+
"codeStep_networkErrorMessage": {
|
|
533
|
+
"type": "string",
|
|
534
|
+
"mutable": false,
|
|
535
|
+
"complexType": {
|
|
536
|
+
"original": "string",
|
|
537
|
+
"resolved": "string",
|
|
538
|
+
"references": {}
|
|
539
|
+
},
|
|
540
|
+
"required": false,
|
|
541
|
+
"optional": false,
|
|
542
|
+
"docs": {
|
|
543
|
+
"tags": [{
|
|
544
|
+
"text": "Network error message",
|
|
545
|
+
"name": "uiName"
|
|
546
|
+
}, {
|
|
547
|
+
"text": "Code Verification Step",
|
|
548
|
+
"name": "uiGroup"
|
|
549
|
+
}],
|
|
550
|
+
"text": "Displayed when the email verification fails due to a network error. The participant can try refreshing the page."
|
|
551
|
+
},
|
|
552
|
+
"attribute": "code-step_network-error-message",
|
|
553
|
+
"reflect": false,
|
|
554
|
+
"defaultValue": "\"An error occurred while verifying your email. Please refresh the page and try again.\""
|
|
555
|
+
}
|
|
556
|
+
}; }
|
|
132
557
|
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { useLazyQuery, useMutation, useUserIdentity, } from "@saasquatch/component-boilerplate";
|
|
2
|
+
import { useEffect, useState } from "@saasquatch/universal-hooks";
|
|
3
|
+
import { gql } from "graphql-request";
|
|
4
|
+
const UserLookupQuery = gql `
|
|
5
|
+
query userLookup {
|
|
6
|
+
viewer {
|
|
7
|
+
... on User {
|
|
8
|
+
id
|
|
9
|
+
accountId
|
|
10
|
+
email
|
|
11
|
+
impactConnection {
|
|
12
|
+
user {
|
|
13
|
+
id
|
|
14
|
+
email
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
const ParticipantVerificationEmailMutation = gql `
|
|
22
|
+
mutation requestUserEmailVerification($user: UserIdInput!) {
|
|
23
|
+
requestUserEmailVerification(user: $user) {
|
|
24
|
+
success
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
const ImpactVerificationEmailMutation = gql `
|
|
29
|
+
mutation requestImpactPublisherEmail2FA($user: UserIdInput!) {
|
|
30
|
+
requestImpactPublisherEmail2FA(user: $user) {
|
|
31
|
+
success
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
`;
|
|
35
|
+
const VerifyUserEmailMutation = gql `
|
|
36
|
+
mutation verifyUserEmail($user: UserIdInput!, $code: String!) {
|
|
37
|
+
verifyUserEmail(user: $user, code: $code) {
|
|
38
|
+
id
|
|
39
|
+
accountId
|
|
40
|
+
email
|
|
41
|
+
emailVerified
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
const SubmitImpactCodeMutation = gql `
|
|
46
|
+
mutation submitImpactPublisherEmail2FACode(
|
|
47
|
+
$user: UserIdInput!
|
|
48
|
+
$code: String!
|
|
49
|
+
) {
|
|
50
|
+
submitImpactPublisherEmail2FACode(user: $user, code: $code) {
|
|
51
|
+
verifiedEmail
|
|
52
|
+
accessKey
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
`;
|
|
56
|
+
// ! It's important when using this hook to ensure initialisation
|
|
57
|
+
// ! is done before calling any mutations
|
|
58
|
+
export function useVerificationEmail() {
|
|
59
|
+
const userIdentity = useUserIdentity();
|
|
60
|
+
const [hasEmails, setHasEmails] = useState({
|
|
61
|
+
participant: false,
|
|
62
|
+
impact: false,
|
|
63
|
+
});
|
|
64
|
+
const [fetch] = useLazyQuery(UserLookupQuery);
|
|
65
|
+
// Send mutations
|
|
66
|
+
const [sendParticipantEmail, { loading: participantEmailLoading, errors: participantEmailErrors },] = useMutation(ParticipantVerificationEmailMutation);
|
|
67
|
+
const [sendImpactEmail, { loading: impactEmailLoading, errors: impactEmailErrors },] = useMutation(ImpactVerificationEmailMutation);
|
|
68
|
+
const sendLoading = participantEmailLoading || impactEmailLoading;
|
|
69
|
+
const sendErrors = participantEmailErrors || impactEmailErrors;
|
|
70
|
+
// Verification mutations
|
|
71
|
+
const [verifyUserEmail, { loading: verifyMutationLoading, errors: verifyMutationErrors },] = useMutation(VerifyUserEmailMutation);
|
|
72
|
+
const [submitImpactCode, { loading: submitImpactCodeLoading, errors: submitImpactCodeErrors },] = useMutation(SubmitImpactCodeMutation);
|
|
73
|
+
const verifyLoading = verifyMutationLoading || submitImpactCodeLoading;
|
|
74
|
+
const verifyErrors = verifyMutationErrors || submitImpactCodeErrors;
|
|
75
|
+
const [initialized, setInitialized] = useState(false);
|
|
76
|
+
const initialise = async () => {
|
|
77
|
+
var _a, _b, _c, _d;
|
|
78
|
+
try {
|
|
79
|
+
const lookup = await fetch({});
|
|
80
|
+
if (!lookup || lookup instanceof Error)
|
|
81
|
+
throw new Error();
|
|
82
|
+
setHasEmails({
|
|
83
|
+
participant: !!((_a = lookup === null || lookup === void 0 ? void 0 : lookup.viewer) === null || _a === void 0 ? void 0 : _a.email),
|
|
84
|
+
impact: !!((_d = (_c = (_b = lookup === null || lookup === void 0 ? void 0 : lookup.viewer) === null || _b === void 0 ? void 0 : _b.impactConnection) === null || _c === void 0 ? void 0 : _c.user) === null || _d === void 0 ? void 0 : _d.email),
|
|
85
|
+
});
|
|
86
|
+
setInitialized(true);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
console.error("Could not initialise verification", e);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const sendVerificationEmail = async () => {
|
|
93
|
+
let result = null;
|
|
94
|
+
if (!initialized)
|
|
95
|
+
return result;
|
|
96
|
+
if (!hasEmails.participant && !hasEmails.impact)
|
|
97
|
+
return result;
|
|
98
|
+
try {
|
|
99
|
+
const request = hasEmails.impact ? sendImpactEmail : sendParticipantEmail;
|
|
100
|
+
const res = await request({
|
|
101
|
+
user: {
|
|
102
|
+
id: userIdentity.id,
|
|
103
|
+
accountId: userIdentity.accountId,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
if (res instanceof Error || !res)
|
|
107
|
+
throw new Error();
|
|
108
|
+
result = hasEmails.impact
|
|
109
|
+
? res.requestImpactPublisherEmail2FA
|
|
110
|
+
: res.requestUserEmailVerification;
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.error("Could not send verification email", e);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const verifyVerificationEmail = async (code) => {
|
|
120
|
+
var _a;
|
|
121
|
+
let result = null;
|
|
122
|
+
if (!initialized)
|
|
123
|
+
return result;
|
|
124
|
+
if (!hasEmails.participant && !hasEmails.impact)
|
|
125
|
+
return result;
|
|
126
|
+
try {
|
|
127
|
+
const request = hasEmails.impact ? submitImpactCode : verifyUserEmail;
|
|
128
|
+
const res = await request({
|
|
129
|
+
user: {
|
|
130
|
+
id: userIdentity.id,
|
|
131
|
+
accountId: userIdentity.accountId,
|
|
132
|
+
},
|
|
133
|
+
code,
|
|
134
|
+
});
|
|
135
|
+
if (res instanceof Error || !res)
|
|
136
|
+
throw new Error();
|
|
137
|
+
result = {
|
|
138
|
+
success: true,
|
|
139
|
+
accessKey: hasEmails.impact
|
|
140
|
+
? (_a = res.submitImpactPublisherEmail2FACode) === null || _a === void 0 ? void 0 : _a.accessKey : undefined,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
console.error("Could not verify email", e);
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
useEffect(() => {
|
|
151
|
+
if (!initialized)
|
|
152
|
+
initialise();
|
|
153
|
+
}, []);
|
|
154
|
+
return {
|
|
155
|
+
initialized,
|
|
156
|
+
send: [
|
|
157
|
+
sendVerificationEmail,
|
|
158
|
+
{ loading: sendLoading, errors: sendErrors },
|
|
159
|
+
],
|
|
160
|
+
verify: [
|
|
161
|
+
verifyVerificationEmail,
|
|
162
|
+
{ loading: verifyLoading, errors: verifyErrors },
|
|
163
|
+
],
|
|
164
|
+
};
|
|
165
|
+
}
|