@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.
Files changed (158) hide show
  1. package/dist/cjs/{ShadowViewAddon-88821c64.js → ShadowViewAddon-040cffad.js} +6 -3
  2. package/dist/cjs/extractProps-fd93ba62.js +21 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/mint-components.cjs.js +1 -1
  5. package/dist/cjs/sqm-banking-info-form_16.cjs.entry.js +91 -72
  6. package/dist/cjs/sqm-big-stat_39.cjs.entry.js +128 -63
  7. package/dist/cjs/sqm-code-verification.cjs.entry.js +67 -77
  8. package/dist/cjs/sqm-email-verification.cjs.entry.js +158 -12
  9. package/dist/cjs/{sqm-invoice-table-view-ce9a34ac.js → sqm-invoice-table-view-c58966f8.js} +79 -0
  10. package/dist/cjs/sqm-stencilbook.cjs.entry.js +56 -14
  11. package/dist/cjs/sqm-widget-verification-internal.cjs.entry.js +81 -11
  12. package/dist/cjs/sqm-widget-verification.cjs.entry.js +102 -19
  13. package/dist/cjs/usePayoutStatus-b9fb7399.js +70 -0
  14. package/dist/cjs/useVerificationEmail-6aacdb71.js +169 -0
  15. package/dist/collection/collection-manifest.json +1 -1
  16. package/dist/collection/components/sqm-big-stat/useBigStat.js +6 -3
  17. package/dist/collection/components/sqm-payout-button-scroll/PayoutButtonScroll.stories.js +1 -2
  18. package/dist/collection/components/sqm-payout-button-scroll/sqm-payout-button-scroll-view.js +1 -0
  19. package/dist/collection/components/sqm-payout-button-scroll/sqm-payout-button-scroll.js +16 -3
  20. package/dist/collection/components/sqm-widget-verification/sqm-code-verification/WidgetCodeVerification.stories.js +9 -2
  21. package/dist/collection/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification-view.js +20 -10
  22. package/dist/collection/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification.js +34 -63
  23. package/dist/collection/components/sqm-widget-verification/sqm-code-verification/useCodeVerification.js +38 -29
  24. package/dist/collection/components/sqm-widget-verification/sqm-email-verification/WidgetEmailVerification.stories.js +23 -3
  25. package/dist/collection/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification-view.js +17 -4
  26. package/dist/collection/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification.js +65 -11
  27. package/dist/collection/components/sqm-widget-verification/sqm-email-verification/useEmailVerification.js +76 -20
  28. package/dist/collection/components/sqm-widget-verification/sqm-widget-verification-internal.js +327 -15
  29. package/dist/collection/components/sqm-widget-verification/sqm-widget-verification.js +447 -22
  30. package/dist/collection/components/sqm-widget-verification/useVerificationEmail.js +165 -0
  31. package/dist/collection/components/tax-and-cash/BankingForm.stories.js +1 -0
  32. package/dist/collection/components/tax-and-cash/TaxForm.stories.js +78 -0
  33. package/dist/collection/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form.js +2 -1
  34. package/dist/collection/components/tax-and-cash/sqm-banking-info-form/useBankingInfoForm.js +7 -0
  35. package/dist/collection/components/tax-and-cash/sqm-docusign-form/docusign-iframe/DocusignIframe.js +0 -1
  36. package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.js +10 -0
  37. package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert-view.js +72 -13
  38. package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert.js +146 -9
  39. package/dist/collection/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.js +30 -15
  40. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash/data.js +6 -0
  41. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.js +8 -8
  42. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash/useTaxAndCash.js +2 -2
  43. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.js +22 -16
  44. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.js +99 -88
  45. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash-dashboard/useTaxAndCashDashboard.js +8 -1
  46. package/dist/collection/components/tax-and-cash/sqm-user-info-form/useUserInfoForm.js +16 -11
  47. package/dist/esm/{ShadowViewAddon-65c8679e.js → ShadowViewAddon-69b61037.js} +6 -3
  48. package/dist/esm/extractProps-ae1afbb3.js +19 -0
  49. package/dist/esm/{keys-a1496e39.js → keys-db1897ae.js} +1 -1
  50. package/dist/esm/loader.js +1 -1
  51. package/dist/esm/mint-components.js +1 -1
  52. package/dist/esm/sqm-banking-info-form_16.entry.js +91 -72
  53. package/dist/esm/sqm-big-stat_39.entry.js +127 -62
  54. package/dist/esm/sqm-code-verification.entry.js +69 -79
  55. package/dist/esm/sqm-email-verification.entry.js +159 -13
  56. package/dist/esm/{sqm-invoice-table-view-08c03ba7.js → sqm-invoice-table-view-d1cfdaf4.js} +79 -0
  57. package/dist/esm/sqm-stencilbook.entry.js +56 -14
  58. package/dist/esm/sqm-widget-verification-internal.entry.js +84 -14
  59. package/dist/esm/sqm-widget-verification.entry.js +104 -21
  60. package/dist/esm/usePayoutStatus-1a635054.js +67 -0
  61. package/dist/esm/useVerificationEmail-c32696ba.js +167 -0
  62. package/dist/esm-es5/ShadowViewAddon-69b61037.js +1 -0
  63. package/dist/esm-es5/extractProps-ae1afbb3.js +1 -0
  64. package/dist/esm-es5/{keys-a1496e39.js → keys-db1897ae.js} +1 -1
  65. package/dist/esm-es5/loader.js +1 -1
  66. package/dist/esm-es5/mint-components.js +1 -1
  67. package/dist/esm-es5/sqm-banking-info-form_16.entry.js +1 -1
  68. package/dist/esm-es5/sqm-big-stat_39.entry.js +1 -1
  69. package/dist/esm-es5/sqm-code-verification.entry.js +1 -1
  70. package/dist/esm-es5/sqm-email-verification.entry.js +1 -1
  71. package/dist/esm-es5/sqm-invoice-table-view-d1cfdaf4.js +1 -0
  72. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  73. package/dist/esm-es5/sqm-widget-verification-internal.entry.js +1 -1
  74. package/dist/esm-es5/sqm-widget-verification.entry.js +1 -1
  75. package/dist/esm-es5/usePayoutStatus-1a635054.js +1 -0
  76. package/dist/esm-es5/useVerificationEmail-c32696ba.js +1 -0
  77. package/dist/mint-components/mint-components.esm.js +1 -1
  78. package/dist/mint-components/p-15c7a1d2.system.entry.js +1 -0
  79. package/dist/mint-components/p-1712a9fd.entry.js +11 -0
  80. package/dist/mint-components/p-1e616d45.system.js +1 -0
  81. package/dist/mint-components/{p-721a89c6.entry.js → p-24092973.entry.js} +2 -2
  82. package/dist/mint-components/p-26468242.js +1 -0
  83. package/dist/mint-components/p-331d060e.entry.js +223 -0
  84. package/dist/mint-components/p-39840341.js +1 -0
  85. package/dist/mint-components/p-4364001c.entry.js +12 -0
  86. package/dist/mint-components/p-4bd7a472.js +1 -0
  87. package/dist/mint-components/p-517224ef.js +19 -0
  88. package/dist/mint-components/p-5a23b560.system.entry.js +1 -0
  89. package/dist/mint-components/p-8300d8c8.system.js +1 -0
  90. package/dist/mint-components/p-8bddb468.system.entry.js +1 -0
  91. package/dist/mint-components/p-9596e97c.system.entry.js +1 -0
  92. package/dist/mint-components/p-974070c4.system.entry.js +1 -0
  93. package/dist/mint-components/{p-b651706a.js → p-9eae245f.js} +6 -3
  94. package/dist/mint-components/p-a8645c1b.system.js +1 -0
  95. package/dist/mint-components/p-b2a99637.system.js +1 -0
  96. package/dist/mint-components/{p-66a04cca.system.entry.js → p-b62faaa5.system.entry.js} +1 -1
  97. package/dist/mint-components/p-c41e1df8.entry.js +195 -0
  98. package/dist/mint-components/p-c510fb88.entry.js +1 -0
  99. package/dist/mint-components/p-ca809fdd.system.js +1 -1
  100. package/dist/mint-components/p-d7806f31.js +48 -0
  101. package/dist/mint-components/p-e01ac27c.system.js +1 -0
  102. package/dist/mint-components/p-e45a8501.system.entry.js +1 -0
  103. package/dist/mint-components/p-e990dc21.system.js +1 -0
  104. package/dist/mint-components/p-f340214f.entry.js +25 -0
  105. package/dist/types/components/sqm-payout-button-scroll/PayoutButtonScroll.stories.d.ts +0 -1
  106. package/dist/types/components/sqm-payout-button-scroll/sqm-payout-button-scroll.d.ts +7 -0
  107. package/dist/types/components/sqm-widget-verification/sqm-code-verification/WidgetCodeVerification.stories.d.ts +1 -0
  108. package/dist/types/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification-view.d.ts +3 -3
  109. package/dist/types/components/sqm-widget-verification/sqm-code-verification/sqm-code-verification.d.ts +4 -10
  110. package/dist/types/components/sqm-widget-verification/sqm-code-verification/useCodeVerification.d.ts +2 -0
  111. package/dist/types/components/sqm-widget-verification/sqm-email-verification/WidgetEmailVerification.stories.d.ts +4 -1
  112. package/dist/types/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification-view.d.ts +6 -1
  113. package/dist/types/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification.d.ts +10 -2
  114. package/dist/types/components/sqm-widget-verification/sqm-email-verification/useEmailVerification.d.ts +3 -2
  115. package/dist/types/components/sqm-widget-verification/sqm-widget-verification-internal.d.ts +15 -0
  116. package/dist/types/components/sqm-widget-verification/sqm-widget-verification.d.ts +79 -0
  117. package/dist/types/components/sqm-widget-verification/useVerificationEmail.d.ts +14 -0
  118. package/dist/types/components/tax-and-cash/TaxForm.stories.d.ts +1 -0
  119. package/dist/types/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.d.ts +1 -0
  120. package/dist/types/components/tax-and-cash/sqm-payout-status-alert/PayoutStatusAlert.stories.d.ts +2 -0
  121. package/dist/types/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert-view.d.ts +12 -0
  122. package/dist/types/components/tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert.d.ts +41 -0
  123. package/dist/types/components/tax-and-cash/sqm-payout-status-alert/usePayoutStatus.d.ts +12 -0
  124. package/dist/types/components/tax-and-cash/sqm-tax-and-cash/data.d.ts +6 -0
  125. package/dist/types/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.d.ts +2 -2
  126. package/dist/types/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.d.ts +10 -3
  127. package/dist/types/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.d.ts +19 -18
  128. package/dist/types/components.d.ts +366 -92
  129. package/docs/docs.docx +0 -0
  130. package/docs/raisins.json +1 -1
  131. package/grapesjs/grapesjs.js +1 -1
  132. package/package.json +1 -1
  133. package/dist/cjs/useEmailVerification-30a1c7f6.js +0 -75
  134. package/dist/collection/components/sqm-widget-verification/useWidgetVerification.js +0 -3
  135. package/dist/esm/useEmailVerification-7135732c.js +0 -72
  136. package/dist/esm-es5/ShadowViewAddon-65c8679e.js +0 -1
  137. package/dist/esm-es5/sqm-invoice-table-view-08c03ba7.js +0 -1
  138. package/dist/esm-es5/useEmailVerification-7135732c.js +0 -1
  139. package/dist/mint-components/p-117b4705.system.js +0 -1
  140. package/dist/mint-components/p-1bd0cda8.system.entry.js +0 -1
  141. package/dist/mint-components/p-1ee62d9f.system.entry.js +0 -1
  142. package/dist/mint-components/p-1f9a9b70.system.entry.js +0 -1
  143. package/dist/mint-components/p-23fdd44e.entry.js +0 -1
  144. package/dist/mint-components/p-36f7caec.system.entry.js +0 -1
  145. package/dist/mint-components/p-39397731.entry.js +0 -1
  146. package/dist/mint-components/p-39af4acd.entry.js +0 -240
  147. package/dist/mint-components/p-4c9b6fbe.system.js +0 -1
  148. package/dist/mint-components/p-65e2c043.system.js +0 -1
  149. package/dist/mint-components/p-663303b7.entry.js +0 -8
  150. package/dist/mint-components/p-6cae44d7.js +0 -1
  151. package/dist/mint-components/p-7f5c7bf7.system.entry.js +0 -1
  152. package/dist/mint-components/p-8a337864.js +0 -7
  153. package/dist/mint-components/p-a02afa72.system.js +0 -1
  154. package/dist/mint-components/p-a5a9aa07.entry.js +0 -189
  155. package/dist/mint-components/p-c763c0b2.js +0 -1
  156. package/dist/mint-components/p-e93e5740.entry.js +0 -1
  157. package/dist/mint-components/p-e9ca48fc.system.entry.js +0 -1
  158. 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 { useHost, withHooks } from "@saasquatch/stencil-hooks";
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 { VERIFICATION_EVENT_KEY, VERIFICATION_PARENT_NAMESPACE } from "./keys";
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: undefined,
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 = !!authToken;
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, authToken]);
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, authToken]);
111
- useEffect(() => {
112
- const host = useHost();
113
- const callback = (e) => {
114
- e.stopPropagation();
115
- setContext({ token: e.detail.token });
116
- };
117
- host.addEventListener(VERIFICATION_EVENT_KEY, callback);
118
- return () => {
119
- host.removeEventListener(VERIFICATION_EVENT_KEY, callback);
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", null)),
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
+ }
@@ -21,6 +21,7 @@ const bankingFormProps = {
21
21
  loadingError: false,
22
22
  },
23
23
  callbacks: {
24
+ onVerification: () => { },
24
25
  onSubmit: async () => console.log("Submit"),
25
26
  setPaymentMethodChecked: () => { },
26
27
  setPaymentScheduleChecked: () => { },