@oneblink/apps-react 4.0.0-beta.5 → 4.0.0-beta.7

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 (138) hide show
  1. package/README.md +2 -8
  2. package/dist/OneBlinkAutoSaveForm.d.ts +25 -5
  3. package/dist/OneBlinkAutoSaveForm.js +12 -0
  4. package/dist/OneBlinkAutoSaveForm.js.map +1 -1
  5. package/dist/OneBlinkForm.d.ts +558 -8
  6. package/dist/OneBlinkForm.js +546 -0
  7. package/dist/OneBlinkForm.js.map +1 -1
  8. package/dist/OneBlinkFormBase.d.ts +51 -6
  9. package/dist/OneBlinkFormBase.js.map +1 -1
  10. package/dist/OneBlinkReadOnlyForm.d.ts +83 -6
  11. package/dist/OneBlinkReadOnlyForm.js +79 -0
  12. package/dist/OneBlinkReadOnlyForm.js.map +1 -1
  13. package/dist/PaymentReceipt.d.ts +59 -0
  14. package/dist/PaymentReceipt.js +49 -0
  15. package/dist/PaymentReceipt.js.map +1 -1
  16. package/dist/components/formStore/FormStoreTableProvider.js +23 -1
  17. package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
  18. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.d.ts +5 -0
  19. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js +5 -0
  20. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -1
  21. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.d.ts +5 -0
  22. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js +5 -0
  23. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js.map +1 -1
  24. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.d.ts +5 -0
  25. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +5 -0
  26. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
  27. package/dist/components/formStore/OneBlinkFormStoreProvider.d.ts +5 -0
  28. package/dist/components/formStore/OneBlinkFormStoreProvider.js +5 -0
  29. package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
  30. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.d.ts +5 -0
  31. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js +5 -0
  32. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js.map +1 -1
  33. package/dist/components/formStore/OneBlinkFormStoreTable.d.ts +4 -0
  34. package/dist/components/formStore/OneBlinkFormStoreTable.js +4 -0
  35. package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
  36. package/dist/components/pickers/V4CompatibleDatePicker.d.ts +5 -0
  37. package/dist/components/pickers/V4CompatibleDatePicker.js +5 -0
  38. package/dist/components/pickers/V4CompatibleDatePicker.js.map +1 -1
  39. package/dist/components/pickers/V4CompatibleDateTimePicker.d.ts +5 -0
  40. package/dist/components/pickers/V4CompatibleDateTimePicker.js +5 -0
  41. package/dist/components/pickers/V4CompatibleDateTimePicker.js.map +1 -1
  42. package/dist/components/pickers/V4CompatibleTimePicker.d.ts +5 -0
  43. package/dist/components/pickers/V4CompatibleTimePicker.js +5 -0
  44. package/dist/components/pickers/V4CompatibleTimePicker.js.map +1 -1
  45. package/dist/components/renderer/LookupNotification.js +11 -2
  46. package/dist/components/renderer/LookupNotification.js.map +1 -1
  47. package/dist/components/renderer/OneBlinkFormElements.d.ts +3 -3
  48. package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
  49. package/dist/components/renderer/PageFormElements.d.ts +3 -3
  50. package/dist/components/renderer/PageFormElements.js.map +1 -1
  51. package/dist/components/renderer/ProgressBar.d.ts +7 -3
  52. package/dist/components/renderer/ProgressBar.js +5 -0
  53. package/dist/components/renderer/ProgressBar.js.map +1 -1
  54. package/dist/form-elements/FormElementCalculation.js.map +1 -1
  55. package/dist/form-elements/FormElementForm.d.ts +4 -4
  56. package/dist/form-elements/FormElementForm.js.map +1 -1
  57. package/dist/form-elements/FormElementRepeatableSet.d.ts +4 -4
  58. package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
  59. package/dist/form-elements/FormElementSummary.js.map +1 -1
  60. package/dist/hooks/useAuth.d.ts +81 -6
  61. package/dist/hooks/useAuth.js +54 -0
  62. package/dist/hooks/useAuth.js.map +1 -1
  63. package/dist/hooks/useBooleanState.d.ts +42 -5
  64. package/dist/hooks/useBooleanState.js +36 -0
  65. package/dist/hooks/useBooleanState.js.map +1 -1
  66. package/dist/hooks/useClickOutsideElement.d.ts +40 -0
  67. package/dist/hooks/useClickOutsideElement.js +40 -0
  68. package/dist/hooks/useClickOutsideElement.js.map +1 -1
  69. package/dist/hooks/useConditionalLogic.d.ts +2 -3
  70. package/dist/hooks/useConditionalLogic.js.map +1 -1
  71. package/dist/hooks/useDrafts.d.ts +63 -1
  72. package/dist/hooks/useDrafts.js +58 -11
  73. package/dist/hooks/useDrafts.js.map +1 -1
  74. package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +18 -5
  75. package/dist/hooks/useFormSubmissionAutoSaveState.js +10 -0
  76. package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
  77. package/dist/hooks/useFormSubmissionModelContext.d.ts +4 -4
  78. package/dist/hooks/useFormSubmissionModelContext.js.map +1 -1
  79. package/dist/hooks/useFormSubmissionState.d.ts +45 -5
  80. package/dist/hooks/useFormSubmissionState.js +37 -0
  81. package/dist/hooks/useFormSubmissionState.js.map +1 -1
  82. package/dist/hooks/useFormValidation.d.ts +3 -3
  83. package/dist/hooks/useFormValidation.js.map +1 -1
  84. package/dist/hooks/useInjectPages.d.ts +2 -3
  85. package/dist/hooks/useInjectPages.js.map +1 -1
  86. package/dist/hooks/useIsMounted.d.ts +20 -0
  87. package/dist/hooks/useIsMounted.js +19 -0
  88. package/dist/hooks/useIsMounted.js.map +1 -1
  89. package/dist/hooks/useIsOffline.d.ts +54 -0
  90. package/dist/hooks/useIsOffline.js +54 -0
  91. package/dist/hooks/useIsOffline.js.map +1 -1
  92. package/dist/hooks/useLoadDataState.d.ts +46 -3
  93. package/dist/hooks/useLoadDataState.js +41 -0
  94. package/dist/hooks/useLoadDataState.js.map +1 -1
  95. package/dist/hooks/useLogin.d.ts +400 -13
  96. package/dist/hooks/useLogin.js +300 -0
  97. package/dist/hooks/useLogin.js.map +1 -1
  98. package/dist/hooks/useLookups.d.ts +3 -3
  99. package/dist/hooks/useLookups.js.map +1 -1
  100. package/dist/hooks/useNullableState.d.ts +46 -1
  101. package/dist/hooks/useNullableState.js +42 -1
  102. package/dist/hooks/useNullableState.js.map +1 -1
  103. package/dist/hooks/usePendingSubmissions.d.ts +103 -0
  104. package/dist/hooks/usePendingSubmissions.js +195 -0
  105. package/dist/hooks/usePendingSubmissions.js.map +1 -0
  106. package/dist/hooks/useSignUp.d.ts +5 -0
  107. package/dist/hooks/useSignUp.js +5 -0
  108. package/dist/hooks/useSignUp.js.map +1 -1
  109. package/dist/index.d.ts +6 -4
  110. package/dist/index.js +4 -2
  111. package/dist/index.js.map +1 -1
  112. package/dist/services/checkBsbsAreInvalid.d.ts +2 -3
  113. package/dist/services/checkBsbsAreInvalid.js.map +1 -1
  114. package/dist/services/checkIfAttachmentsExist.d.ts +2 -3
  115. package/dist/services/checkIfAttachmentsExist.js.map +1 -1
  116. package/dist/services/checkIfBsbsAreValidating.d.ts +2 -3
  117. package/dist/services/checkIfBsbsAreValidating.js.map +1 -1
  118. package/dist/services/cleanFormSubmissionModel.d.ts +4 -4
  119. package/dist/services/cleanFormSubmissionModel.js +2 -1
  120. package/dist/services/cleanFormSubmissionModel.js.map +1 -1
  121. package/dist/services/form-validation.d.ts +3 -3
  122. package/dist/services/form-validation.js.map +1 -1
  123. package/dist/services/generate-default-data.d.ts +2 -3
  124. package/dist/services/generate-default-data.js +3 -1
  125. package/dist/services/generate-default-data.js.map +1 -1
  126. package/dist/services/generateFreshdeskDependentFieldElements.js.map +1 -1
  127. package/dist/services/getDateRangeConfiguration.d.ts +2 -3
  128. package/dist/services/getDateRangeConfiguration.js.map +1 -1
  129. package/dist/services/getRepeatableSetEntriesConfiguration.d.ts +2 -3
  130. package/dist/services/getRepeatableSetEntriesConfiguration.js.map +1 -1
  131. package/dist/styles/receipt.scss +1 -1
  132. package/dist/styles/repeatable-set.scss +2 -2
  133. package/dist/typedoc.d.ts +2 -0
  134. package/dist/typedoc.js +3 -0
  135. package/dist/typedoc.js.map +1 -0
  136. package/dist/types/form.d.ts +5 -6
  137. package/dist/types/form.js.map +1 -1
  138. package/package.json +9 -3
@@ -1,49 +1,436 @@
1
+ /**
2
+ * This function is a react hook to help writing your own login screen.
3
+ *
4
+ * ## Example
5
+ *
6
+ * ```jsx
7
+ * import * as React from 'react'
8
+ * import { useHistory } from 'react-router-dom'
9
+ * import { useLogin } from '@oneblink/apps-react'
10
+ *
11
+ * function App() {
12
+ * const history = useHistory()
13
+ *
14
+ * const [username, setUsername] = React.useState('')
15
+ * const [password, setPassword] = React.useState('')
16
+ * const [newPasswordConfirmed, setNewPasswordConfirmed] = React.useState('')
17
+ * const [newPassword, setNewPassword] = React.useState('')
18
+ * const [code, setCode] = React.useState('')
19
+ *
20
+ * const onLogin = React.useCallback(() => {
21
+ * history.push('/')
22
+ * }, [history])
23
+ *
24
+ * const {
25
+ * // Login
26
+ * loginWithGoogle,
27
+ * loginWithUsernamePassword,
28
+ * isLoggingIn,
29
+ * // Reset Temp Password
30
+ * isPasswordTemporary,
31
+ * isResettingTemporaryPassword,
32
+ * resetTemporaryPassword,
33
+ * // MFA Password
34
+ * isMfaCodeRequired,
35
+ * isSubmittingMfaCode,
36
+ * submitMfaCode,
37
+ * // Login Errors
38
+ * loginError,
39
+ * clearLoginError,
40
+ * // Showing Forgot Password
41
+ * isShowingForgotPassword,
42
+ * showForgotPassword,
43
+ * hideForgotPassword,
44
+ * // Sending Forgot Password Code
45
+ * isSendingForgotPasswordCode,
46
+ * sendForgotPasswordCode,
47
+ * // Resetting Forgotten Password
48
+ * hasSentForgotPasswordCode,
49
+ * isResettingForgottenPassword,
50
+ * resetForgottenPassword,
51
+ * // Forgot Password Errors
52
+ * forgotPasswordError,
53
+ * clearForgotPasswordError,
54
+ * // Validation
55
+ * usernameValidation,
56
+ * passwordValidation,
57
+ * codeValidation,
58
+ * newPasswordValidation,
59
+ * newPasswordConfirmedValidation,
60
+ * } = useLogin({
61
+ * username,
62
+ * password,
63
+ * newPassword,
64
+ * newPasswordConfirmed,
65
+ * code,
66
+ * onLogin,
67
+ * })
68
+ *
69
+ * if (hasSentForgotPasswordCode) {
70
+ * return (
71
+ * <form
72
+ * onSubmit={(e) => {
73
+ * e.preventDefault()
74
+ * resetForgottenPassword()
75
+ * }}
76
+ * >
77
+ * <p>We have sent you a password reset code via email. Enter it below to reset your password.</p>
78
+ *
79
+ * <input
80
+ * type="password"
81
+ * placeholder="Code"
82
+ * value={code}
83
+ * onChange={(e) => setCode(e.target.value)}
84
+ * />
85
+ *
86
+ * <input
87
+ * type="password"
88
+ * placeholder="New Password"
89
+ * value={newPassword}
90
+ * onChange={(e) => setNewPassword(e.target.value)}
91
+ * />
92
+ *
93
+ * <input
94
+ * type="password"
95
+ * placeholder="Confirm Password"
96
+ * value={newPassword}
97
+ * onChange={(e) => setNewPasswordConfirmed(e.target.value)}
98
+ * />
99
+ *
100
+ * <button
101
+ * type="submit"
102
+ * disabled={isResettingForgottenPassword || codeValidation.isInvalid || newPasswordValidation.isInvalid || newPasswordConfirmedValidation.isInvalid}
103
+ * >
104
+ * Change Password
105
+ * </button>
106
+ *
107
+ * <p>Password Requirements</p>
108
+ * <p>Contains a lowercase letter: {validation.hasLowercaseLetter ? 'Yes' : 'No'}</p>
109
+ * <p>Contains an upper case letter: {validation.hasUpperCaseLetter ? 'Yes' : 'No'}</p>
110
+ * <p>Contains a number: {validation.hasNumber ? 'Yes' : 'No'}</p>
111
+ * <p>Contains a special character: {validation.hasSpecialCharacter ? 'Yes' : 'No'}</p>
112
+ * <p>Contains at least 8 characters: {validation.hasMinLength ? 'Yes' : 'No'}</p>
113
+ *
114
+ * {forgotPasswordError && (
115
+ * <p>{forgotPasswordError.message}</p>
116
+ * <button type="button" onClick={clearForgotPasswordError}>Clear Error</button>
117
+ * )}
118
+ * </form>
119
+ * )
120
+ * }
121
+ *
122
+ * if (isShowingForgotPassword) {
123
+ * return (
124
+ * <form
125
+ * onSubmit={(e) => {
126
+ * e.preventDefault()
127
+ * sendForgotPasswordCode()
128
+ * }}
129
+ * >
130
+ * <p>Enter your email address and we will send you a code to reset your password.</p>
131
+ *
132
+ * <input
133
+ * type="email"
134
+ * placeholder="Email Address"
135
+ * value={username}
136
+ * onChange={(e) => setUsername(e.target.value)}
137
+ * />
138
+ *
139
+ * <p>
140
+ * <a onClick={hideForgotPassword}>Remembered your password?</a>
141
+ * </p>
142
+ *
143
+ * <button
144
+ * type="submit"
145
+ * disabled={isSendingForgotPasswordCode || usernameValidation.isInvalid}
146
+ * >
147
+ * Reset Password
148
+ * </button>
149
+ *
150
+ * {forgotPasswordError && (
151
+ * <p>{forgotPasswordError.message}</p>
152
+ * <button type="button" onClick={clearForgotPasswordError}>Clear Error</button>
153
+ * )}
154
+ * </form>
155
+ * )
156
+ * }
157
+ *
158
+ * if (isPasswordTemporary) {
159
+ * return (
160
+ * <form
161
+ * onSubmit={(e) => {
162
+ * e.preventDefault()
163
+ * resetTemporaryPassword()
164
+ * }}
165
+ * >
166
+ * <p>The password you entered was only temporary and must be reset for security purposes. Please enter your new password below to continue.</p>
167
+ *
168
+ * <input
169
+ * type="password"
170
+ * placeholder="New Password"
171
+ * value={newPassword}
172
+ * onChange={(e) => setNewPassword(e.target.value)}
173
+ * />
174
+ *
175
+ * <input
176
+ * type="password"
177
+ * placeholder="Confirm Password"
178
+ * value={newPassword}
179
+ * onChange={(e) => setNewPasswordConfirmed(e.target.value)}
180
+ * />
181
+ *
182
+ * <button
183
+ * type="submit"
184
+ * disabled={isResettingTemporaryPassword || newPasswordValidation.isInvalid || newPasswordConfirmedValidation.isInvalid}
185
+ * >
186
+ * Change Password &amp; Sign In
187
+ * </button>
188
+ *
189
+ * <p>Password Requirements</p>
190
+ * <p>Contains a lowercase letter: {validation.hasLowercaseLetter ? 'Yes' : 'No'}</p>
191
+ * <p>Contains an upper case letter: {validation.hasUpperCaseLetter ? 'Yes' : 'No'}</p>
192
+ * <p>Contains a number: {validation.hasNumber ? 'Yes' : 'No'}</p>
193
+ * <p>Contains a special character: {validation.hasSpecialCharacter ? 'Yes' : 'No'}</p>
194
+ * <p>Contains at least 8 characters: {validation.hasMinLength ? 'Yes' : 'No'}</p>
195
+ *
196
+ * {loginError && (
197
+ * <p>{loginError.message}</p>
198
+ * <button type="button" onClick={clearLoginError}>Clear Error</button>
199
+ * )}
200
+ * </form>
201
+ * )
202
+ * }
203
+ *
204
+ * if (isMfaCodeRequired) {
205
+ * return (
206
+ * <form
207
+ * onSubmit={(e) => {
208
+ * e.preventDefault()
209
+ * submitMfaCode()
210
+ * }}
211
+ * >
212
+ * <p>Enter the 6-digit code found in your authenticator app.</p>
213
+ *
214
+ * <input
215
+ * type="password"
216
+ * placeholder="Code"
217
+ * value={code}
218
+ * onChange={(e) => setCode(e.target.value)}
219
+ * />
220
+ *
221
+ * <button
222
+ * type="submit"
223
+ * disabled={isSubmittingMfaCode || codeValidation.isInvalid}
224
+ * >
225
+ * Sign In
226
+ * </button>
227
+ *
228
+ * {loginError && (
229
+ * <p>{loginError.message}</p>
230
+ * <button type="button" onClick={clearLoginError}>Clear Error</button>
231
+ * )}
232
+ * </form>
233
+ * )
234
+ * }
235
+ *
236
+ * return (
237
+ * <form
238
+ * onSubmit={(e) => {
239
+ * e.preventDefault()
240
+ * loginWithUsernamePassword()
241
+ * }}
242
+ * >
243
+ * <p>Sign in with your email address and password.</p>
244
+ * <input
245
+ * type="email"
246
+ * placeholder="Email Address"
247
+ * value={username}
248
+ * onChange={(e) => setUsername(e.target.value)}
249
+ * />
250
+ *
251
+ * <input
252
+ * type="password"
253
+ * placeholder="New Password"
254
+ * value={newPassword}
255
+ * onChange={(e) => setNewPassword(e.target.value)}
256
+ * />
257
+ *
258
+ * <p>
259
+ * <a onClick={showForgotPassword}>Forgot your password?</a>
260
+ * </p>
261
+ *
262
+ * <button
263
+ * type="submit"
264
+ * disabled={isLoggingIn || usernameValidation.isInvalid || passwordValidation.isInvalid}
265
+ * >
266
+ * {children}
267
+ * </button>
268
+ *
269
+ * <p>or</p>
270
+ *
271
+ * <button
272
+ * type="button"
273
+ * onClick={loginWithGoogle}
274
+ * >
275
+ * <img
276
+ * alt="Google"
277
+ * src="google-sign-in.png"
278
+ * />
279
+ * <span>Sign in with Google</span>
280
+ * </button>
281
+ *
282
+ * {loginError && (
283
+ * <p>{loginError.message}</p>
284
+ * <button type="button" onClick={clearLoginError}>Clear Error</button>
285
+ * )}
286
+ * </form>
287
+ * )
288
+ * }
289
+ *
290
+ * const root = document.getElementById('root')
291
+ * if (root) {
292
+ * ReactDOM.render(<App />, root)
293
+ * }
294
+ * ```
295
+ *
296
+ * @param options
297
+ * @returns
298
+ * @group Hooks
299
+ */
1
300
  export default function useLogin({ username, password, newPassword, newPasswordConfirmed, code, }: {
301
+ /** The email address entered by the user. */
2
302
  username: string;
303
+ /** The password entered by the user. */
3
304
  password: string;
305
+ /** The new password entered by the user if changing their password. */
4
306
  newPassword: string;
307
+ /**
308
+ * The new password repeated by the user if changing their password to ensure
309
+ * they do type it in wrong.
310
+ */
5
311
  newPasswordConfirmed: string;
312
+ /**
313
+ * The code sent to the user after requesting a password reset by starting the
314
+ * "forgot password" process.
315
+ */
6
316
  code: string;
7
- }): {
317
+ }): UseLoginValue;
318
+ export interface UseLoginValue {
319
+ /** Open redirect user to the Google sign-in page. */
8
320
  loginWithGoogle: () => void;
9
- loginWithUsernamePassword: () => Promise<void>;
321
+ /**
322
+ * Attempt to use the `username` and `password` arguments to create a session.
323
+ * Will call `onLogin()` if successful, otherwise will set `loginError`.
324
+ */
325
+ loginWithUsernamePassword: () => void;
326
+ /** `true` while processing `loginWithUsernamePassword()`. */
10
327
  isLoggingIn: boolean;
328
+ /**
329
+ * `true` if the user logged in using a temporary password. Prompt the user
330
+ * for a new password and call `resetTemporaryPassword()`.
331
+ */
332
+ isPasswordTemporary: boolean;
333
+ /**
334
+ * Attempt to use `newPassword` and `newPasswordConfirmed` arguments to reset
335
+ * the user's password and create a session. Will call `onLogin()` if
336
+ * successful, otherwise will set `loginError`.
337
+ */
338
+ resetTemporaryPassword: () => void;
339
+ /**
340
+ * Set if an error occurs while processing `loginWithUsernamePassword()` or
341
+ * `resetTemporaryPassword()`.
342
+ */
11
343
  loginError: Error | null;
344
+ /** Set `loginError` back to `null`. */
12
345
  clearLoginError: () => void;
13
- isPasswordTemporary: boolean;
346
+ /** `true` while processing `resetTemporaryPassword()`. */
14
347
  isResettingTemporaryPassword: boolean;
15
- resetTemporaryPassword: () => Promise<void>;
16
- isMfaCodeRequired: boolean;
17
- isSubmittingMfaCode: boolean;
18
- submitMfaCode: () => Promise<void>;
348
+ /** `true` when showing the forgot password flow. */
19
349
  isShowingForgotPassword: boolean;
350
+ /** Set `isShowingForgotPassword` to `true`. */
20
351
  showForgotPassword: () => void;
352
+ /** Set `isShowingForgotPassword` to `false`. */
21
353
  hideForgotPassword: () => void;
22
- forgotPasswordError: Error | null;
23
- clearForgotPasswordError: () => void;
354
+ /**
355
+ * Attempt to use the `username` argument to start the forgot password
356
+ * process. This will send the user an email with a code to enter. A failed
357
+ * request will set `forgotPasswordError`.
358
+ */
359
+ sendForgotPasswordCode: () => void;
360
+ /** `true` while processing `sendForgotPasswordCode()`. */
24
361
  isSendingForgotPasswordCode: boolean;
25
- sendForgotPasswordCode: () => Promise<void>;
362
+ /** `true` if the forgot password code has been successfully sent to the user. */
26
363
  hasSentForgotPasswordCode: boolean;
364
+ /**
365
+ * Attempt to use the `code`, `newPassword`, and `newPasswordConfirmed`
366
+ * arguments to reset the user's password. A failed request will set
367
+ * `forgotPasswordError`.
368
+ */
369
+ resetForgottenPassword: () => void;
370
+ /** `true` while processing `resetForgottenPassword()`. */
27
371
  isResettingForgottenPassword: boolean;
28
- resetForgottenPassword: () => Promise<void>;
372
+ /**
373
+ * Set if an error occurs while processing `sendForgotPasswordCode()` or
374
+ * `resetForgottenPassword()`.
375
+ */
376
+ forgotPasswordError: Error | null;
377
+ /** Set `forgotPasswordError` back to `null`. */
378
+ clearForgotPasswordError: () => void;
29
379
  usernameValidation: {
380
+ /** `true` if the `username` argument is invalid. */
30
381
  isInvalid: boolean;
31
382
  };
32
383
  passwordValidation: {
384
+ /** `true` if the `password` argument is invalid. */
33
385
  isInvalid: boolean;
34
386
  };
35
387
  codeValidation: {
388
+ /** `true` if the `code` argument is invalid. */
36
389
  isInvalid: boolean;
37
390
  };
38
391
  newPasswordValidation: {
392
+ /** `true` if the `newPassword` argument is invalid. */
393
+ isInvalid: boolean;
394
+ /**
395
+ * `true` if the `newPassword` argument has a lowercase letter (required to
396
+ * be valid).
397
+ */
39
398
  hasLowercaseLetter: boolean;
399
+ /**
400
+ * `true` if the `newPassword` argument has an uppercase letter (required to
401
+ * be valid).
402
+ */
40
403
  hasUpperCaseLetter: boolean;
404
+ /** `true` if the `newPassword` argument has a number (required to be valid). */
41
405
  hasNumber: boolean;
406
+ /**
407
+ * `true` if the `newPassword` argument has a special character (required to
408
+ * be valid).
409
+ */
42
410
  hasSpecialCharacter: boolean;
411
+ /**
412
+ * `true` if the `newPassword` argument has at least the minimum number of
413
+ * characters (required to be valid).
414
+ */
43
415
  hasMinLength: boolean;
44
- isInvalid: boolean;
45
416
  };
46
417
  newPasswordConfirmedValidation: {
418
+ /**
419
+ * `true` if the `newPasswordConfirmed` argument is invalid (must match the
420
+ * `newPassword` argument).
421
+ */
47
422
  isInvalid: boolean;
48
423
  };
49
- };
424
+ /**
425
+ * `true` if the user logged in using MFA and a code is required to finish the
426
+ * login attempt. Prompt the user for a code and call `submitMfaCode()`.
427
+ */
428
+ isMfaCodeRequired: boolean;
429
+ /** `true` while processing `submitMfaCode()`. */
430
+ isSubmittingMfaCode: boolean;
431
+ /**
432
+ * Attempt to use `code` argument to submit the MFA code and create a session.
433
+ * Will call `onLogin()` if successful, otherwise will set `loginError`.
434
+ */
435
+ submitMfaCode: () => void;
436
+ }