@saasquatch/mint-components 1.12.0-1 → 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
@@ -12,7 +12,7 @@ const JSS = require('./JSS-8503a151.js');
12
12
  const utils = require('./utils-6847bc06.js');
13
13
  const sqmTextSpanView = require('./sqm-text-span-view-e1cd9bd3.js');
14
14
  const keys = require('./keys-cff24974.js');
15
- const useEmailVerification = require('./useEmailVerification-30a1c7f6.js');
15
+ const useVerificationEmail = require('./useVerificationEmail-6aacdb71.js');
16
16
 
17
17
  const style = {
18
18
  Wrapper: {
@@ -96,7 +96,16 @@ function WidgetCodeVerificationView(props) {
96
96
  id: "resendCodeText",
97
97
  defaultMessage: text.resendCodeText,
98
98
  }, {
99
- resendCodeLink: (index.h("a", { href: text.resendCodeLink, target: "_blank", style: { textDecoration: "none" } }, text.resendCodeLabel)),
99
+ resendCodeLink: (index.h("a", { href: "", style: { textDecoration: "none" }, onClick: (e) => {
100
+ e.preventDefault();
101
+ callbacks.resendEmail();
102
+ } }, text.resendCodeLabel)),
103
+ });
104
+ const codeResentSuccessfully = global.intl.formatMessage({
105
+ id: "codeResentSuccessfully",
106
+ defaultMessage: text.codeResentSuccessfullyText,
107
+ }, {
108
+ email: states.email,
100
109
  });
101
110
  const inputClass = states.verifyFailed
102
111
  ? sheet.classes.CodeInputError
@@ -107,11 +116,14 @@ function WidgetCodeVerificationView(props) {
107
116
  styleString),
108
117
  index.h("div", { class: sheet.classes.Wrapper },
109
118
  index.h("div", { class: sheet.classes.HeaderContainer },
110
- index.h(sqmTextSpanView.TextSpanView, { type: "p" }, states.verifyFailed
111
- ? text.reverifyCodeHeaderText
112
- : text.verifyCodeHeaderText)),
113
- states.codeResent && (index.h("sqm-form-message", { type: "success", exportparts: "successalert-icon" },
114
- index.h("b", null, text.codeResentSuccessfullyText))),
119
+ index.h(sqmTextSpanView.TextSpanView, { type: "p" }, global.intl.formatMessage({
120
+ id: `emailHeaderText`,
121
+ defaultMessage: states.verifyFailed
122
+ ? text.reverifyCodeHeaderText
123
+ : text.verifyCodeHeaderText,
124
+ }, { email: states.email }))),
125
+ states.emailResent && (index.h("sqm-form-message", { type: "success", exportparts: "successalert-icon" },
126
+ index.h("b", null, codeResentSuccessfully))),
115
127
  index.h("div", { class: sheet.classes.InputsContainer },
116
128
  index.h("div", { ref: refs.codeWrapperRef, class: sheet.classes.CodeInputContainer },
117
129
  index.h("sl-input", { class: inputClass, name: "code" }),
@@ -121,45 +133,22 @@ function WidgetCodeVerificationView(props) {
121
133
  index.h("sl-input", { class: inputClass, name: "code" }),
122
134
  index.h("sl-input", { class: inputClass, name: "code" })),
123
135
  states.verifyFailed && (index.h("p", { class: sheet.classes.ErrorText }, text.invalidCodeText)),
124
- index.h("sl-button", { class: sheet.classes.ContinueButton, onClick: callbacks.submitCode, loading: states.loading, exportparts: "base: primarybutton-base", type: "primary" }, text.verifyText)),
136
+ index.h("sl-button", { class: sheet.classes.ContinueButton, onClick: callbacks.submitCode, disabled: states.loading || states.initialiseLoading, loading: states.loading || states.initialiseLoading, exportparts: "base: primarybutton-base", type: "primary" }, text.verifyText)),
125
137
  index.h("div", { class: sheet.classes.FooterContainer },
126
- index.h(sqmTextSpanView.TextSpanView, { type: "p" }, resendCodeText),
127
- index.h(sqmTextSpanView.TextSpanView, { type: "p" },
128
- index.h("a", { href: "/", style: { textDecoration: "none" } }, text.useDifferentEmailText))))));
138
+ index.h(sqmTextSpanView.TextSpanView, { type: "p" }, resendCodeText)))));
129
139
  }
130
140
 
131
- // TODO: Move to component-boilerplate
132
141
  const VerifyEmailWithCodeMutation = index_module.dist.gql `
133
- mutation verifyUserEmail($user: UserIdInput!, $code: String!) {
134
- verifyUserEmail(user: $user, code: $code) {
142
+ mutation submitImpactPublisherEmail2FACode(
143
+ $user: UserIdInput!
144
+ $code: String!
145
+ ) {
146
+ submitImpactPublisherEmail2FACode(user: $user, code: $code) {
135
147
  verifiedEmail
136
148
  accessKey
137
149
  }
138
150
  }
139
151
  `;
140
- function useCodeVerificationMutation() {
141
- const user = index_module.K();
142
- const [request, { loading, data, errors }] = index_module.xe(VerifyEmailWithCodeMutation);
143
- const verifyUserWithCodeMutation = async (code) => {
144
- try {
145
- const result = await request({
146
- user: {
147
- id: user.id,
148
- accountId: user.accountId,
149
- },
150
- code,
151
- });
152
- if (result instanceof Error || !result)
153
- throw new Error();
154
- return result;
155
- }
156
- catch (e) {
157
- console.error("Failed to verify user", e);
158
- return null;
159
- }
160
- };
161
- return [verifyUserWithCodeMutation, { loading, data, errors }];
162
- }
163
152
  function useWidgetCodeVerification(props) {
164
153
  const host = stencilHooks_module.l();
165
154
  const [_, setShowCode] = index_module.Mn(keys.SHOW_CODE_NAMESPACE);
@@ -168,9 +157,8 @@ function useWidgetCodeVerification(props) {
168
157
  const [emailResent, setEmailResent] = stencilHooks_module.useState(false);
169
158
  const [codeRef, setCodeRef] = stencilHooks_module.useState(null);
170
159
  const [validationError, setValidationError] = stencilHooks_module.useState(false);
171
- // TODO: Need to handle error states for these errors
172
- const [verifyUser, { loading: verifyLoading, errors: verifyErrors }] = useCodeVerificationMutation();
173
- const [request, { loading: resendLoading, data, errors: resendErrors }] = useEmailVerification.useVerificationEmailMutation();
160
+ const [emailError, setEmailError] = stencilHooks_module.useState(false);
161
+ const { initialized, send: [sendEmail, { loading: sendLoading, errors: sendErrors }], verify: [verifyEmail, { loading: verifyLoading, errors: verifyErrors }], } = useVerificationEmail.useVerificationEmail();
174
162
  stencilHooks_module.useEffect(() => {
175
163
  if (!codeRef)
176
164
  return;
@@ -186,7 +174,7 @@ function useWidgetCodeVerification(props) {
186
174
  }
187
175
  });
188
176
  element.addEventListener("input", (e) => {
189
- const input = e.target.value;
177
+ const input = e.data;
190
178
  if (!input)
191
179
  return;
192
180
  if (idx === codeElements.length - 1) {
@@ -196,8 +184,10 @@ function useWidgetCodeVerification(props) {
196
184
  if (input.length > 1) {
197
185
  const rest = input.slice(1);
198
186
  e.target.value = input.slice(0, 1);
199
- codeElements[idx + 1].value = rest;
200
- codeElements[idx + 1].dispatchEvent(new Event("input"));
187
+ codeElements[idx + 1].dispatchEvent(new InputEvent("input", {
188
+ inputType: "insertFromPaste",
189
+ data: rest,
190
+ }));
201
191
  }
202
192
  codeElements[idx + 1].focus();
203
193
  });
@@ -208,14 +198,16 @@ function useWidgetCodeVerification(props) {
208
198
  setValidationError(false);
209
199
  };
210
200
  const resendEmail = async () => {
211
- // TODO: Error checks, depends on what mutation is set up as
212
- const result = await request();
213
- if (emailSent) {
214
- setEmailResent(true);
215
- setTimeout(() => {
216
- setEmailResent(false);
217
- }, 500);
201
+ // UI should only allow this to be called if initialized, but checking just in case
202
+ if (!initialized)
203
+ return;
204
+ const result = await sendEmail();
205
+ if (!result) {
206
+ setEmailError(true);
207
+ return;
218
208
  }
209
+ if (emailSent)
210
+ setEmailResent(true);
219
211
  setEmailSent(true);
220
212
  };
221
213
  const submitCode = async () => {
@@ -229,16 +221,13 @@ function useWidgetCodeVerification(props) {
229
221
  codeElements.forEach((element) => {
230
222
  code = `${code}${element.value}`;
231
223
  });
224
+ // UI should only allow this to be called if initialized, but checking just in case
225
+ if (!initialized)
226
+ return;
232
227
  setValidationError(false);
233
- // Only 123456 passes for a valid code rn
234
- const res = await verifyUser(code);
235
- if (res) {
236
- const event = new CustomEvent(keys.VERIFICATION_EVENT_KEY, {
237
- detail: { token: res.verifyUserEmail.accessKey },
238
- composed: true,
239
- bubbles: true,
240
- });
241
- host.dispatchEvent(event);
228
+ const res = await verifyEmail(code);
229
+ if (res === null || res === void 0 ? void 0 : res.success) {
230
+ props.onVerification(res.accessKey);
242
231
  reset();
243
232
  }
244
233
  else {
@@ -246,10 +235,15 @@ function useWidgetCodeVerification(props) {
246
235
  }
247
236
  };
248
237
  stencilHooks_module.useEffect(() => {
238
+ // Wait for mutations to be determined from user lookup
239
+ if (!initialized)
240
+ return;
249
241
  // email should already exist if user has completed email-verification
250
242
  if (!email)
251
243
  resendEmail();
252
- }, []);
244
+ else
245
+ setEmailSent(true);
246
+ }, [initialized]);
253
247
  return {
254
248
  refs: {
255
249
  codeWrapperRef: setCodeRef,
@@ -257,7 +251,9 @@ function useWidgetCodeVerification(props) {
257
251
  states: {
258
252
  email,
259
253
  emailResent,
260
- loading: verifyLoading || resendLoading,
254
+ resendError: sendErrors || verifyErrors,
255
+ initialiseLoading: !initialized,
256
+ loading: sendLoading || verifyLoading,
261
257
  verifyFailed: !!validationError,
262
258
  },
263
259
  callbacks: {
@@ -274,7 +270,7 @@ const WidgetCodeVerification = class {
274
270
  /**
275
271
  * @uiName Verify code widget header text
276
272
  */
277
- this.verifyCodeHeaderText = "Enter the code sent to email@example.com from our referral provider, impact.com.";
273
+ this.verifyCodeHeaderText = "Enter the code sent to {email} from our referral provider, impact.com.";
278
274
  /**
279
275
  * @uiName Reverify code widget header text
280
276
  */
@@ -289,27 +285,16 @@ const WidgetCodeVerification = class {
289
285
  * @uiName Resend code label
290
286
  */
291
287
  this.resendCodeLabel = "Resend code";
292
- /**
293
- * The link that appears in the resend code link
294
- * @uiName Resend code link
295
- */
296
- // AL: TODO connect route to resend verification code
297
- this.resendCodeLink = "/resend-code";
298
288
  /**
299
289
  * Link text displayed under verify button
300
290
  * @uiName Resend code text
301
291
  */
302
292
  this.codeResentSuccessfullyText = "Another code has been sent to {email}";
303
- /**
304
- * Link text displayed under the verify button
305
- * @uiName Use different email text
306
- */
307
- this.useDifferentEmailText = "Use a different email";
308
293
  /**
309
294
  * Error text displayed under verification input
310
295
  * @uiName Invalid code text
311
296
  */
312
- this.invalidCodeText = " Please check your code and try again. If you’re still having trouble, try resending your code.";
297
+ this.invalidCodeText = "Please check your code and try again. If you’re still having trouble, try resending your code.";
313
298
  /**
314
299
  * @uiName Verify code button text
315
300
  */
@@ -333,17 +318,22 @@ const WidgetCodeVerification = class {
333
318
  }
334
319
  };
335
320
  function useDemoWidgetCodeVerification(props) {
321
+ const [emailResent, setEmailResent] = stencilHooks_module.useState(false);
322
+ const setVerifiedContext = index_module.Sn(keys.VERIFICATION_PARENT_NAMESPACE);
336
323
  return cjs.cjs({
337
324
  states: {
338
325
  loading: false,
339
- email: "",
340
- verifyFailed: false,
326
+ email: "test@example.com",
327
+ emailResent,
328
+ resendError: true,
329
+ verifyFailed: true,
341
330
  },
342
331
  refs: {
343
332
  codeWrapperRef: () => { },
344
333
  },
345
334
  callbacks: {
346
- submitCode: async () => { },
335
+ resendEmail: async () => setEmailResent(true),
336
+ submitCode: async () => setVerifiedContext(true),
347
337
  },
348
338
  text: props.getTextProps(),
349
339
  }, props.demoData || {}, { arrayMerge: (_, a) => a });
@@ -9,8 +9,130 @@ const cjs = require('./cjs-1066ec21.js');
9
9
  const JSS = require('./JSS-8503a151.js');
10
10
  const utils = require('./utils-6847bc06.js');
11
11
  const sqmTextSpanView = require('./sqm-text-span-view-e1cd9bd3.js');
12
- require('./keys-cff24974.js');
13
- const useEmailVerification = require('./useEmailVerification-30a1c7f6.js');
12
+ const keys = require('./keys-cff24974.js');
13
+ const useVerificationEmail = require('./useVerificationEmail-6aacdb71.js');
14
+
15
+ const UpsertUserEmailMutation = index_module.dist.gql `
16
+ mutation upsertUser($userInput: UserInput!) {
17
+ user(userInput: $userInput) {
18
+ id
19
+ accountId
20
+ email
21
+ }
22
+ }
23
+ `;
24
+ const UserLookupQuery = index_module.dist.gql `
25
+ query user {
26
+ viewer {
27
+ ... on User {
28
+ id
29
+ accountId
30
+ email
31
+ impactConnection {
32
+ user {
33
+ id
34
+ email
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ `;
41
+ function useUpsertUserEmail() {
42
+ const user = index_module.K();
43
+ const [request, { loading: loading, data, errors }] = index_module.xe(UpsertUserEmailMutation);
44
+ const upsertUserEmail = async (email) => {
45
+ try {
46
+ const result = await request({
47
+ user: {
48
+ id: user.id,
49
+ accountId: user.accountId,
50
+ email,
51
+ },
52
+ });
53
+ if (result instanceof Error || !result)
54
+ throw new Error();
55
+ return result;
56
+ }
57
+ catch (e) {
58
+ console.error("Could not set email on user", e);
59
+ return undefined;
60
+ }
61
+ };
62
+ return [
63
+ upsertUserEmail,
64
+ {
65
+ loading,
66
+ data,
67
+ errors,
68
+ },
69
+ ];
70
+ }
71
+ function useWidgetEmailVerification(props) {
72
+ const [_, setShowCode] = index_module.Mn(keys.SHOW_CODE_NAMESPACE);
73
+ const [email, setEmail] = index_module.Mn(keys.VERIFICATION_EMAIL_NAMESPACE);
74
+ const [emailExists, setEmailExists] = stencilHooks_module.useState(false);
75
+ const [error, setError] = stencilHooks_module.useState(false);
76
+ const [mutationError, setMutationError] = stencilHooks_module.useState(false);
77
+ const { initialized, send: [sendEmail, { loading: sendLoading, errors }], } = useVerificationEmail.useVerificationEmail();
78
+ const [upsertUserEmail] = useUpsertUserEmail();
79
+ const [loading, setLoading] = stencilHooks_module.useState(true);
80
+ const { data, loading: initialLoading } = index_module.En(UserLookupQuery, {});
81
+ const emailRegex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
82
+ stencilHooks_module.useEffect(() => {
83
+ if (!(data === null || data === void 0 ? void 0 : data.viewer))
84
+ return;
85
+ setEmailExists(!!data.viewer.email);
86
+ }, [data]);
87
+ stencilHooks_module.useEffect(() => {
88
+ if (initialized)
89
+ setLoading(false);
90
+ }, [initialized]);
91
+ const submitEmail = async (e) => {
92
+ e.preventDefault();
93
+ if (!(data === null || data === void 0 ? void 0 : data.viewer))
94
+ return;
95
+ setLoading(true);
96
+ const toAddress = data.viewer.email;
97
+ if (!toAddress) {
98
+ // If no email on the user, set one
99
+ const formData = e.detail.formData;
100
+ const newEmail = formData.get("email").toString();
101
+ if (!emailRegex.test(newEmail)) {
102
+ setError(true);
103
+ return;
104
+ }
105
+ const result = await upsertUserEmail(newEmail);
106
+ if (!result || !result.user.email)
107
+ setError(true);
108
+ }
109
+ // UI should not allow this call til initialisation is done
110
+ if (!initialized)
111
+ return;
112
+ const result = await sendEmail();
113
+ if (!result || !result.success)
114
+ setMutationError(true);
115
+ else {
116
+ // This is used to let the code verification widget know an email was already sent
117
+ setEmail(toAddress);
118
+ setShowCode(true);
119
+ }
120
+ setLoading(false);
121
+ };
122
+ return {
123
+ callbacks: {
124
+ submitEmail,
125
+ },
126
+ states: {
127
+ loading,
128
+ initialLoading: initialLoading && !initialized,
129
+ error,
130
+ email: data === null || data === void 0 ? void 0 : data.viewer.email,
131
+ sendCodeError: mutationError,
132
+ },
133
+ text: props.getTextProps(),
134
+ };
135
+ }
14
136
 
15
137
  const style = {
16
138
  Wrapper: {
@@ -26,6 +148,16 @@ const style = {
26
148
  flexDirection: "column",
27
149
  maxWidth: "320px",
28
150
  },
151
+ ErrorAlertContainer: {
152
+ "&::part(base)": {
153
+ backgroundColor: "var(--sl-color-red-100)",
154
+ borderTop: "none",
155
+ },
156
+ "&::part(message)": {
157
+ display: "flex",
158
+ flexDirection: "column",
159
+ },
160
+ },
29
161
  ContinueButton: {
30
162
  width: "100%",
31
163
  maxWidth: "100px",
@@ -74,15 +206,18 @@ function WidgetEmailVerificationView(props) {
74
206
  index.h("style", { type: "text/css" },
75
207
  vanillaStyle,
76
208
  styleString),
77
- states.loading ? (renderLoadingSkeleton()) : (index.h("div", { class: sheet.classes.Wrapper },
78
- " ",
209
+ states.sendCodeError && (index.h("sl-alert", { exportparts: "base: alert-base, icon:alert-icon", type: "danger", class: sheet.classes.ErrorAlertContainer, open: true },
210
+ index.h("sl-icon", { slot: "icon", name: "exclamation-octagon" }),
211
+ index.h("b", null, text.sendCodeErrorHeader),
212
+ text.sendCodeErrorDescription)),
213
+ states.initialLoading ? (renderLoadingSkeleton()) : (index.h("div", { class: sheet.classes.Wrapper },
79
214
  index.h(sqmTextSpanView.TextSpanView, { type: "p" }, text.verifyEmailHeaderText),
80
215
  index.h("sl-form", { "onSl-submit": callbacks.submitEmail },
81
216
  index.h("div", { class: sheet.classes.InputsContainer },
82
- index.h("sl-input", Object.assign({ exportparts: "label: input-label, base: input-base", label: text.emailLabel, value: states.email, type: "email", id: "email", name: "email", required: true }, (states.error
217
+ index.h("sl-input", Object.assign({ exportparts: "label: input-label, base: input-base", label: text.emailLabel, value: states.email, type: "email", id: "email", name: "email", disabled: !!states.email || states.loading }, (states.error
83
218
  ? {
84
219
  class: sheet.classes.ErrorInput,
85
- helpText: "Please enter a valid email",
220
+ helpText: text.emailValidationErrorText,
86
221
  }
87
222
  : {}))),
88
223
  index.h("sl-button", { submit: true, class: sheet.classes.ContinueButton, loading: states.loading, exportparts: "base: primarybutton-base", type: "primary" }, text.sendCodeText)))))));
@@ -96,9 +231,13 @@ const WidgetEmailVerification = class {
96
231
  */
97
232
  this.verifyEmailHeaderText = "Start by verifying your email. We’ll send you a code through our referral provider, impact.com.";
98
233
  /**
99
- * @uiName Verify email error text
234
+ * @uiName Send code to email alert header
235
+ */
236
+ this.sendCodeErrorHeader = "There was an error sending your code.";
237
+ /**
238
+ * @uiName Send code to email alert description
100
239
  */
101
- this.errorText = "Failed to send an email. If this continues, contact Support with impact.com";
240
+ this.sendCodeErrorDescription = "Please try again. If this problem continues, contact our program support team.";
102
241
  /**
103
242
  * @uiName Email input label
104
243
  */
@@ -107,6 +246,10 @@ const WidgetEmailVerification = class {
107
246
  * @uiName Send code button text
108
247
  */
109
248
  this.sendCodeText = "Send code";
249
+ /**
250
+ * @uiName Send code button text
251
+ */
252
+ this.emailValidationErrorText = "Please enter a valid email";
110
253
  stencilHooks_module.h$1(this);
111
254
  }
112
255
  disconnectedCallback() { }
@@ -116,19 +259,22 @@ const WidgetEmailVerification = class {
116
259
  render() {
117
260
  const props = index_module.isDemo()
118
261
  ? useDemoWidgetEmailVerification(this)
119
- : useEmailVerification.useWidgetEmailVerification(this);
262
+ : useWidgetEmailVerification(this);
120
263
  return index.h(WidgetEmailVerificationView, Object.assign({}, props));
121
264
  }
122
265
  };
123
266
  function useDemoWidgetEmailVerification(props) {
267
+ const setShowCode = index_module.Sn(keys.SHOW_CODE_NAMESPACE);
124
268
  return cjs.cjs({
125
269
  states: {
126
- error: "",
270
+ error: true,
271
+ initialLoading: false,
127
272
  loading: false,
128
- email: "",
273
+ email: "test@example.com",
274
+ sendCodeError: true,
129
275
  },
130
276
  callbacks: {
131
- submitEmail: async () => { },
277
+ submitEmail: async () => setShowCode(true),
132
278
  },
133
279
  text: props.getTextProps(),
134
280
  }, props.demoData || {}, { arrayMerge: (_, a) => a });