@aws-amplify/ui 5.8.1 → 6.0.0
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/esm/helpers/accountSettings/utils.mjs +33 -1
- package/dist/esm/helpers/accountSettings/validator.mjs +120 -1
- package/dist/esm/helpers/authenticator/actor.mjs +20 -1
- package/dist/esm/helpers/authenticator/constants.mjs +144 -1
- package/dist/esm/helpers/authenticator/defaultAuthHubHandler.mjs +52 -0
- package/dist/esm/helpers/authenticator/facade.mjs +137 -1
- package/dist/esm/helpers/authenticator/form.mjs +43 -1
- package/dist/esm/helpers/authenticator/formFields/defaults.mjs +132 -1
- package/dist/esm/helpers/authenticator/formFields/formFields.mjs +62 -1
- package/dist/esm/helpers/authenticator/formFields/utils.mjs +35 -0
- package/dist/esm/helpers/authenticator/getRoute.mjs +47 -0
- package/dist/esm/helpers/authenticator/textUtil.mjs +112 -1
- package/dist/esm/helpers/authenticator/utils.mjs +38 -1
- package/dist/esm/helpers/utils.mjs +5 -1
- package/dist/esm/i18n/country-dial-codes.mjs +210 -1
- package/dist/esm/i18n/dictionaries/authenticator/de.mjs +87 -1
- package/dist/esm/i18n/dictionaries/authenticator/defaultTexts.mjs +83 -1
- package/dist/esm/i18n/dictionaries/authenticator/en.mjs +74 -1
- package/dist/esm/i18n/dictionaries/authenticator/es.mjs +83 -1
- package/dist/esm/i18n/dictionaries/authenticator/fr.mjs +92 -1
- package/dist/esm/i18n/dictionaries/authenticator/he.mjs +54 -1
- package/dist/esm/i18n/dictionaries/authenticator/id.mjs +96 -1
- package/dist/esm/i18n/dictionaries/authenticator/it.mjs +82 -1
- package/dist/esm/i18n/dictionaries/authenticator/ja.mjs +86 -1
- package/dist/esm/i18n/dictionaries/authenticator/kr.mjs +71 -1
- package/dist/esm/i18n/dictionaries/authenticator/nb.mjs +95 -1
- package/dist/esm/i18n/dictionaries/authenticator/nl.mjs +67 -1
- package/dist/esm/i18n/dictionaries/authenticator/pl.mjs +71 -1
- package/dist/esm/i18n/dictionaries/authenticator/pt.mjs +61 -1
- package/dist/esm/i18n/dictionaries/authenticator/ru.mjs +61 -1
- package/dist/esm/i18n/dictionaries/authenticator/sv.mjs +82 -1
- package/dist/esm/i18n/dictionaries/authenticator/tr.mjs +76 -1
- package/dist/esm/i18n/dictionaries/authenticator/ua.mjs +84 -1
- package/dist/esm/i18n/dictionaries/authenticator/zh.mjs +74 -1
- package/dist/esm/i18n/dictionaries/index.mjs +47 -1
- package/dist/esm/i18n/translations.mjs +67 -1
- package/dist/esm/index.mjs +28 -1
- package/dist/esm/machines/authenticator/actions.mjs +188 -1
- package/dist/esm/machines/authenticator/actors/forgotPassword.mjs +184 -0
- package/dist/esm/machines/authenticator/actors/signIn.mjs +328 -1
- package/dist/esm/machines/authenticator/actors/signOut.mjs +28 -1
- package/dist/esm/machines/authenticator/actors/signUp.mjs +295 -0
- package/dist/esm/machines/authenticator/actors/verifyUserAttributes.mjs +106 -0
- package/dist/esm/machines/authenticator/defaultServices.mjs +102 -1
- package/dist/esm/machines/authenticator/guards.mjs +70 -0
- package/dist/esm/machines/authenticator/index.mjs +368 -1
- package/dist/esm/machines/authenticator/utils.mjs +71 -0
- package/dist/esm/theme/breakpoints.mjs +14 -1
- package/dist/esm/theme/createTheme.mjs +156 -1
- package/dist/esm/theme/defaultDarkModeOverride.mjs +128 -1
- package/dist/esm/theme/defaultTheme.mjs +10 -1
- package/dist/esm/theme/tokens/borderWidths.mjs +7 -1
- package/dist/esm/theme/tokens/colors.mjs +166 -1
- package/dist/esm/theme/tokens/components/accordion.mjs +47 -0
- package/dist/esm/theme/tokens/components/alert.mjs +35 -1
- package/dist/esm/theme/tokens/components/authenticator.mjs +39 -1
- package/dist/esm/theme/tokens/components/autocomplete.mjs +42 -1
- package/dist/esm/theme/tokens/components/badge.mjs +44 -1
- package/dist/esm/theme/tokens/components/breadcrumbs.mjs +34 -1
- package/dist/esm/theme/tokens/components/button.mjs +685 -1
- package/dist/esm/theme/tokens/components/card.mjs +27 -1
- package/dist/esm/theme/tokens/components/checkbox.mjs +87 -1
- package/dist/esm/theme/tokens/components/checkboxField.mjs +8 -1
- package/dist/esm/theme/tokens/components/collection.mjs +72 -1
- package/dist/esm/theme/tokens/components/copy.mjs +18 -1
- package/dist/esm/theme/tokens/components/dialCodeSelect.mjs +7 -1
- package/dist/esm/theme/tokens/components/divider.mjs +22 -1
- package/dist/esm/theme/tokens/components/dropZone.mjs +46 -1
- package/dist/esm/theme/tokens/components/field.mjs +20 -1
- package/dist/esm/theme/tokens/components/fieldControl.mjs +131 -1
- package/dist/esm/theme/tokens/components/fieldGroup.mjs +11 -1
- package/dist/esm/theme/tokens/components/fieldMessages.mjs +13 -1
- package/dist/esm/theme/tokens/components/fieldset.mjs +40 -1
- package/dist/esm/theme/tokens/components/flex.mjs +9 -1
- package/dist/esm/theme/tokens/components/heading.mjs +30 -1
- package/dist/esm/theme/tokens/components/highlightMatch.mjs +7 -1
- package/dist/esm/theme/tokens/components/icon.mjs +6 -1
- package/dist/esm/theme/tokens/components/image.mjs +8 -1
- package/dist/esm/theme/tokens/components/inAppMessaging.mjs +23 -1
- package/dist/esm/theme/tokens/components/index.mjs +111 -1
- package/dist/esm/theme/tokens/components/input.mjs +12 -1
- package/dist/esm/theme/tokens/components/link.mjs +9 -1
- package/dist/esm/theme/tokens/components/liveness.mjs +7 -1
- package/dist/esm/theme/tokens/components/loader.mjs +42 -1
- package/dist/esm/theme/tokens/components/menu.mjs +27 -1
- package/dist/esm/theme/tokens/components/message.mjs +102 -1
- package/dist/esm/theme/tokens/components/pagination.mjs +40 -1
- package/dist/esm/theme/tokens/components/passwordField.mjs +38 -1
- package/dist/esm/theme/tokens/components/phoneNumberField.mjs +10 -1
- package/dist/esm/theme/tokens/components/placeholder.mjs +18 -1
- package/dist/esm/theme/tokens/components/radio.mjs +67 -1
- package/dist/esm/theme/tokens/components/radioGroup.mjs +19 -1
- package/dist/esm/theme/tokens/components/rating.mjs +9 -1
- package/dist/esm/theme/tokens/components/searchField.mjs +39 -1
- package/dist/esm/theme/tokens/components/select.mjs +63 -1
- package/dist/esm/theme/tokens/components/selectField.mjs +16 -1
- package/dist/esm/theme/tokens/components/sliderField.mjs +70 -1
- package/dist/esm/theme/tokens/components/stepperField.mjs +33 -1
- package/dist/esm/theme/tokens/components/storagemanager.mjs +97 -1
- package/dist/esm/theme/tokens/components/switchField.mjs +61 -1
- package/dist/esm/theme/tokens/components/table.mjs +105 -1
- package/dist/esm/theme/tokens/components/tabs.mjs +59 -1
- package/dist/esm/theme/tokens/components/text.mjs +28 -1
- package/dist/esm/theme/tokens/components/textAreaField.mjs +11 -1
- package/dist/esm/theme/tokens/components/textField.mjs +12 -1
- package/dist/esm/theme/tokens/components/toggleButton.mjs +96 -1
- package/dist/esm/theme/tokens/components/toggleButtonGroup.mjs +7 -1
- package/dist/esm/theme/tokens/fontSizes.mjs +14 -1
- package/dist/esm/theme/tokens/fontWeights.mjs +13 -1
- package/dist/esm/theme/tokens/fonts.mjs +19 -1
- package/dist/esm/theme/tokens/index.mjs +65 -1
- package/dist/esm/theme/tokens/lineHeights.mjs +7 -1
- package/dist/esm/theme/tokens/opacities.mjs +15 -1
- package/dist/esm/theme/tokens/outlineOffsets.mjs +7 -1
- package/dist/esm/theme/tokens/outlineWidths.mjs +7 -1
- package/dist/esm/theme/tokens/radii.mjs +11 -1
- package/dist/esm/theme/tokens/shadows.mjs +28 -1
- package/dist/esm/theme/tokens/space.mjs +29 -1
- package/dist/esm/theme/tokens/time.mjs +7 -1
- package/dist/esm/theme/tokens/transforms.mjs +10 -1
- package/dist/esm/theme/utils.mjs +81 -1
- package/dist/esm/types/authenticator/attributes.mjs +41 -1
- package/dist/esm/types/authenticator/user.mjs +18 -1
- package/dist/esm/types/authenticator/utils.mjs +5 -1
- package/dist/esm/types/primitives/componentClassName.mjs +164 -1
- package/dist/esm/utils/classNames.mjs +39 -0
- package/dist/esm/utils/setUserAgent/constants.mjs +43 -0
- package/dist/esm/utils/setUserAgent/setUserAgent.mjs +65 -0
- package/dist/esm/utils/utils.mjs +227 -0
- package/dist/esm/validators/index.mjs +19 -1
- package/dist/index.js +8396 -1
- package/dist/styles/StorageManager.css +138 -0
- package/dist/styles/StorageManager.layer.css +140 -0
- package/dist/styles/_fieldControl.css +0 -0
- package/dist/styles/_fieldControl.layer.css +3 -0
- package/dist/styles/accordion.css +64 -0
- package/dist/styles/accordion.layer.css +66 -0
- package/dist/styles/alert.css +44 -0
- package/dist/styles/alert.layer.css +46 -0
- package/dist/styles/authenticator.css +72 -0
- package/dist/styles/authenticator.layer.css +74 -0
- package/dist/styles/autocomplete.css +48 -0
- package/dist/styles/autocomplete.layer.css +50 -0
- package/dist/styles/badge.css +35 -0
- package/dist/styles/badge.layer.css +37 -0
- package/dist/styles/base.css +1491 -0
- package/dist/styles/base.layer.css +1493 -0
- package/dist/styles/breadcrumbs.css +40 -0
- package/dist/styles/breadcrumbs.layer.css +42 -0
- package/dist/styles/button.css +1122 -0
- package/dist/styles/button.layer.css +1124 -0
- package/dist/styles/card.css +26 -0
- package/dist/styles/card.layer.css +28 -0
- package/dist/styles/checkbox.css +95 -0
- package/dist/styles/checkbox.layer.css +97 -0
- package/dist/styles/checkboxField.css +6 -0
- package/dist/styles/checkboxField.layer.css +8 -0
- package/dist/styles/collection.css +70 -0
- package/dist/styles/collection.layer.css +72 -0
- package/dist/styles/copy.css +27 -0
- package/dist/styles/copy.layer.css +29 -0
- package/dist/styles/dialCodeSelect.css +3 -0
- package/dist/styles/dialCodeSelect.layer.css +5 -0
- package/dist/styles/divider.css +47 -0
- package/dist/styles/divider.layer.css +49 -0
- package/dist/styles/dropZone.css +45 -0
- package/dist/styles/dropZone.layer.css +47 -0
- package/dist/styles/field.css +17 -0
- package/dist/styles/field.layer.css +19 -0
- package/dist/styles/fieldGroup.css +130 -0
- package/dist/styles/fieldGroup.layer.css +132 -0
- package/dist/styles/fieldMessages.css +10 -0
- package/dist/styles/fieldMessages.layer.css +12 -0
- package/dist/styles/fieldModifiers.css +15 -0
- package/dist/styles/fieldModifiers.layer.css +17 -0
- package/dist/styles/fieldset.css +37 -0
- package/dist/styles/fieldset.layer.css +39 -0
- package/dist/styles/flex.css +8 -0
- package/dist/styles/flex.layer.css +10 -0
- package/dist/styles/grid.css +3 -0
- package/dist/styles/grid.layer.css +5 -0
- package/dist/styles/heading.css +40 -0
- package/dist/styles/heading.layer.css +42 -0
- package/dist/styles/highlightMatch.css +3 -0
- package/dist/styles/highlightMatch.layer.css +5 -0
- package/dist/styles/icon.css +14 -0
- package/dist/styles/icon.layer.css +16 -0
- package/dist/styles/image.css +9 -0
- package/dist/styles/image.layer.css +11 -0
- package/dist/styles/inAppMessaging.css +179 -0
- package/dist/styles/inAppMessaging.layer.css +181 -0
- package/dist/styles/input.css +83 -0
- package/dist/styles/input.layer.css +85 -0
- package/dist/styles/link.css +26 -0
- package/dist/styles/link.layer.css +28 -0
- package/dist/styles/liveness.css +374 -0
- package/dist/styles/liveness.layer.css +376 -0
- package/dist/styles/loader.css +108 -0
- package/dist/styles/loader.layer.css +110 -0
- package/dist/styles/menu.css +54 -0
- package/dist/styles/menu.layer.css +56 -0
- package/dist/styles/message.css +111 -0
- package/dist/styles/message.layer.css +113 -0
- package/dist/styles/pagination.css +41 -0
- package/dist/styles/pagination.layer.css +43 -0
- package/dist/styles/passwordField.css +49 -0
- package/dist/styles/passwordField.layer.css +51 -0
- package/dist/styles/phoneNumberField.css +30 -0
- package/dist/styles/phoneNumberField.layer.css +32 -0
- package/dist/styles/placeholder.css +31 -0
- package/dist/styles/placeholder.layer.css +33 -0
- package/dist/styles/radio.css +82 -0
- package/dist/styles/radio.layer.css +84 -0
- package/dist/styles/radioGroupField.css +25 -0
- package/dist/styles/radioGroupField.layer.css +27 -0
- package/dist/styles/radiogroup.css +5 -0
- package/dist/styles/radiogroup.layer.css +7 -0
- package/dist/styles/rating.css +33 -0
- package/dist/styles/rating.layer.css +35 -0
- package/dist/styles/reset.css +76 -0
- package/dist/styles/reset.layer.css +78 -0
- package/dist/styles/scrollView.css +4 -0
- package/dist/styles/scrollView.layer.css +6 -0
- package/dist/styles/searchField.css +29 -0
- package/dist/styles/searchField.layer.css +31 -0
- package/dist/styles/select.css +128 -0
- package/dist/styles/select.layer.css +130 -0
- package/dist/styles/selectField.css +18 -0
- package/dist/styles/selectField.layer.css +20 -0
- package/dist/styles/sliderField.css +143 -0
- package/dist/styles/sliderField.layer.css +145 -0
- package/dist/styles/stepperField.css +77 -0
- package/dist/styles/stepperField.layer.css +79 -0
- package/dist/styles/switchField.css +76 -0
- package/dist/styles/switchField.layer.css +78 -0
- package/dist/styles/table.css +146 -0
- package/dist/styles/table.layer.css +148 -0
- package/dist/styles/tabs.css +87 -0
- package/dist/styles/tabs.layer.css +89 -0
- package/dist/styles/text.css +40 -0
- package/dist/styles/text.layer.css +42 -0
- package/dist/styles/textArea.css +71 -0
- package/dist/styles/textArea.layer.css +73 -0
- package/dist/styles/textAreaField.css +12 -0
- package/dist/styles/textAreaField.layer.css +14 -0
- package/dist/styles/textField.css +14 -0
- package/dist/styles/textField.layer.css +16 -0
- package/dist/styles/toggleButton.css +280 -0
- package/dist/styles/toggleButton.layer.css +282 -0
- package/dist/styles/toggleButtonGroup.css +31 -0
- package/dist/styles/toggleButtonGroup.layer.css +33 -0
- package/dist/styles/visuallyHidden.css +12 -0
- package/dist/styles/visuallyHidden.layer.css +14 -0
- package/dist/styles.css +298 -684
- package/dist/styles.layer.css +6115 -0
- package/dist/theme.css +93 -156
- package/dist/types/helpers/accountSettings/utils.d.ts +1 -3
- package/dist/types/helpers/authenticator/actor.d.ts +1 -1
- package/dist/types/helpers/authenticator/constants.d.ts +5 -0
- package/dist/types/helpers/authenticator/defaultAuthHubHandler.d.ts +15 -0
- package/dist/types/helpers/authenticator/facade.d.ts +35 -6
- package/dist/types/helpers/authenticator/formFields/defaults.d.ts +3 -1
- package/dist/types/helpers/authenticator/formFields/formFields.d.ts +2 -1
- package/dist/types/helpers/authenticator/formFields/index.d.ts +1 -1
- package/dist/types/helpers/authenticator/formFields/{util.d.ts → utils.d.ts} +2 -0
- package/dist/types/helpers/authenticator/getRoute.d.ts +2 -0
- package/dist/types/helpers/authenticator/index.d.ts +2 -1
- package/dist/types/helpers/authenticator/textUtil.d.ts +8 -7
- package/dist/types/{types/authenticator/stateMachine/authMachine.d.ts → helpers/authenticator/types.d.ts} +5 -5
- package/dist/types/helpers/authenticator/utils.d.ts +0 -25
- package/dist/types/helpers/index.d.ts +0 -1
- package/dist/types/helpers/utils.d.ts +2 -2
- package/dist/types/i18n/translations.d.ts +2 -3
- package/dist/types/machines/authenticator/actions.d.ts +4 -62
- package/dist/types/machines/authenticator/actors/{resetPassword.d.ts → forgotPassword.d.ts} +3 -3
- package/dist/types/machines/authenticator/actors/index.d.ts +3 -1
- package/dist/types/machines/authenticator/actors/signIn.d.ts +3 -3
- package/dist/types/machines/authenticator/actors/signOut.d.ts +2 -2
- package/dist/types/machines/authenticator/{signUp.d.ts → actors/signUp.d.ts} +3 -3
- package/dist/types/machines/authenticator/actors/verifyUserAttributes.d.ts +5 -0
- package/dist/types/machines/authenticator/defaultServices.d.ts +208 -28
- package/dist/types/machines/authenticator/getAuthenticatorConfig.d.ts +14 -0
- package/dist/types/machines/authenticator/guards.d.ts +4 -0
- package/dist/types/machines/authenticator/index.d.ts +4 -2
- package/dist/types/machines/authenticator/types.d.ts +125 -0
- package/dist/types/machines/authenticator/utils.d.ts +7 -0
- package/dist/types/machines/index.d.ts +1 -0
- package/dist/types/theme/tokens/borderWidths.d.ts +2 -2
- package/dist/types/theme/tokens/colors.d.ts +7 -9
- package/dist/types/theme/tokens/components/accordion.d.ts +12 -0
- package/dist/types/theme/tokens/components/index.d.ts +2 -4
- package/dist/types/theme/tokens/components/radioGroup.d.ts +1 -1
- package/dist/types/theme/tokens/components/storagemanager.d.ts +18 -3
- package/dist/types/theme/tokens/components/tabs.d.ts +4 -3
- package/dist/types/theme/tokens/fontSizes.d.ts +2 -2
- package/dist/types/theme/tokens/fontWeights.d.ts +2 -2
- package/dist/types/theme/tokens/fonts.d.ts +2 -2
- package/dist/types/theme/tokens/lineHeights.d.ts +2 -2
- package/dist/types/theme/tokens/opacities.d.ts +2 -2
- package/dist/types/theme/tokens/outlineOffsets.d.ts +2 -2
- package/dist/types/theme/tokens/outlineWidths.d.ts +2 -2
- package/dist/types/theme/tokens/radii.d.ts +2 -2
- package/dist/types/theme/tokens/shadows.d.ts +2 -2
- package/dist/types/theme/tokens/space.d.ts +2 -2
- package/dist/types/theme/tokens/time.d.ts +2 -2
- package/dist/types/theme/tokens/types/designToken.d.ts +12 -6
- package/dist/types/theme/types.d.ts +5 -1
- package/dist/types/types/authenticator/attributes.d.ts +10 -4
- package/dist/types/types/authenticator/form.d.ts +7 -6
- package/dist/types/types/authenticator/index.d.ts +0 -1
- package/dist/types/types/authenticator/user.d.ts +3 -29
- package/dist/types/types/authenticator/validator.d.ts +2 -2
- package/dist/types/types/displayText.d.ts +84 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/primitives/componentClassName.d.ts +162 -180
- package/dist/types/types/util.d.ts +0 -5
- package/dist/types/utils/classNames.d.ts +4 -0
- package/dist/types/utils/index.d.ts +3 -135
- package/dist/types/utils/setUserAgent/constants.d.ts +7 -0
- package/dist/types/utils/setUserAgent/index.d.ts +1 -0
- package/dist/types/utils/setUserAgent/setUserAgent.d.ts +19 -0
- package/dist/types/utils/utils.d.ts +147 -0
- package/dist/types/validators/index.d.ts +2 -2
- package/package.json +5 -19
- package/dist/esm/helpers/authenticator/context.mjs +0 -1
- package/dist/esm/helpers/authenticator/formFields/util.mjs +0 -1
- package/dist/esm/helpers/storage/fileUploader/utils/uploader.mjs +0 -1
- package/dist/esm/machines/authenticator/actors/resetPassword.mjs +0 -1
- package/dist/esm/machines/authenticator/signUp.mjs +0 -1
- package/dist/esm/theme/tokens/components/expander.mjs +0 -1
- package/dist/esm/theme/tokens/components/fileUploader.mjs +0 -1
- package/dist/esm/utils/index.mjs +0 -1
- package/dist/types/helpers/authenticator/context.d.ts +0 -13
- package/dist/types/helpers/storage/fileUploader/index.d.ts +0 -1
- package/dist/types/helpers/storage/fileUploader/utils/index.d.ts +0 -1
- package/dist/types/helpers/storage/fileUploader/utils/uploader.d.ts +0 -28
- package/dist/types/helpers/storage/index.d.ts +0 -1
- package/dist/types/theme/tokens/components/expander.d.ts +0 -22
- package/dist/types/theme/tokens/components/fileUploader.d.ts +0 -23
- package/dist/types/types/authenticator/stateMachine/context.d.ts +0 -109
- package/dist/types/types/authenticator/stateMachine/event.d.ts +0 -17
- package/dist/types/types/authenticator/stateMachine/index.d.ts +0 -4
- package/dist/types/types/authenticator/stateMachine/state.d.ts +0 -10
|
@@ -1 +1,132 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { getActorState } from '../actor.mjs';
|
|
2
|
+
import { defaultFormFieldOptions } from '../constants.mjs';
|
|
3
|
+
import { isAuthFieldWithDefaults } from '../form.mjs';
|
|
4
|
+
import { getPrimaryAlias } from './utils.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This file contains helpers that generate default formFields for each screen
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_COUNTRY_CODE = '+1';
|
|
10
|
+
/** Helper function that gets the default formField for given field name */
|
|
11
|
+
const getDefaultFormField = (fieldName) => {
|
|
12
|
+
let options = defaultFormFieldOptions[fieldName];
|
|
13
|
+
const { type } = options;
|
|
14
|
+
if (type === 'tel') {
|
|
15
|
+
options = { ...options, dialCode: DEFAULT_COUNTRY_CODE };
|
|
16
|
+
}
|
|
17
|
+
return options;
|
|
18
|
+
};
|
|
19
|
+
// Helper function that returns default form field for configured primary alias
|
|
20
|
+
const getAliasDefaultFormField = (state) => {
|
|
21
|
+
const primaryAlias = getPrimaryAlias(state);
|
|
22
|
+
return {
|
|
23
|
+
...getDefaultFormField(primaryAlias),
|
|
24
|
+
autocomplete: 'username',
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
/** Reusable confirmation code form fields. */
|
|
28
|
+
const getConfirmationCodeFormFields = (state) => ({
|
|
29
|
+
confirmation_code: {
|
|
30
|
+
...getDefaultFormField('confirmation_code'),
|
|
31
|
+
label: 'Code *',
|
|
32
|
+
placeholder: 'Code',
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
const getSignInFormFields = (state) => ({
|
|
36
|
+
username: { ...getAliasDefaultFormField(state) },
|
|
37
|
+
password: {
|
|
38
|
+
...getDefaultFormField('password'),
|
|
39
|
+
autocomplete: 'current-password',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const getSignUpFormFields = (state) => {
|
|
43
|
+
const { loginMechanisms, signUpAttributes } = state.context.config;
|
|
44
|
+
const primaryAlias = getPrimaryAlias(state);
|
|
45
|
+
/**
|
|
46
|
+
* @migration signUp Fields created here
|
|
47
|
+
*/
|
|
48
|
+
const fieldNames = Array.from(new Set([
|
|
49
|
+
...loginMechanisms,
|
|
50
|
+
'password',
|
|
51
|
+
'confirm_password',
|
|
52
|
+
...signUpAttributes,
|
|
53
|
+
]));
|
|
54
|
+
const formField = {};
|
|
55
|
+
for (const fieldName of fieldNames) {
|
|
56
|
+
if (isAuthFieldWithDefaults(fieldName)) {
|
|
57
|
+
const fieldAttrs = fieldName === primaryAlias
|
|
58
|
+
? getAliasDefaultFormField(state)
|
|
59
|
+
: getDefaultFormField(fieldName);
|
|
60
|
+
formField[fieldName] = { ...fieldAttrs };
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// There's a `custom:*` attribute or one we don't already have an implementation for
|
|
64
|
+
console.debug(`Authenticator does not have a default implementation for ${fieldName}. Customize SignUp FormFields to add your own.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return formField;
|
|
68
|
+
};
|
|
69
|
+
const getConfirmSignUpFormFields = (state) => ({
|
|
70
|
+
confirmation_code: {
|
|
71
|
+
...getDefaultFormField('confirmation_code'),
|
|
72
|
+
placeholder: 'Enter your code',
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
const getForgotPasswordFormFields = (state) => {
|
|
76
|
+
const primaryAlias = getPrimaryAlias(state);
|
|
77
|
+
const { label } = defaultFormFieldOptions[primaryAlias];
|
|
78
|
+
return {
|
|
79
|
+
username: {
|
|
80
|
+
...getAliasDefaultFormField(state),
|
|
81
|
+
label: `Enter your ${label.toLowerCase()}`,
|
|
82
|
+
placeholder: `Enter your ${label.toLowerCase()}`,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
const getConfirmResetPasswordFormFields = (state) => ({
|
|
87
|
+
...getConfirmationCodeFormFields(),
|
|
88
|
+
password: {
|
|
89
|
+
...getDefaultFormField('password'),
|
|
90
|
+
label: 'New Password',
|
|
91
|
+
placeholder: 'New Password',
|
|
92
|
+
},
|
|
93
|
+
confirm_password: {
|
|
94
|
+
...getDefaultFormField('confirm_password'),
|
|
95
|
+
label: 'Confirm Password',
|
|
96
|
+
placeholder: 'Confirm Password',
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
const getForceNewPasswordFormFields = (state) => {
|
|
100
|
+
const actorState = getActorState(state);
|
|
101
|
+
const { missingAttributes } = actorState.context;
|
|
102
|
+
const fieldNames = Array.from(new Set([
|
|
103
|
+
'password',
|
|
104
|
+
'confirm_password',
|
|
105
|
+
...(missingAttributes ?? []),
|
|
106
|
+
]));
|
|
107
|
+
const formField = {};
|
|
108
|
+
for (const fieldName of fieldNames) {
|
|
109
|
+
if (isAuthFieldWithDefaults(fieldName)) {
|
|
110
|
+
formField[fieldName] = { ...getDefaultFormField(fieldName) };
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// There's a `custom:*` attribute or one we don't already have an implementation for
|
|
114
|
+
console.debug(`Authenticator does not have a default implementation for ${fieldName}. Customize ForceNewPassword FormFields to add your own.`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return formField;
|
|
118
|
+
};
|
|
119
|
+
/** Collect all the defaultFormFields getters */
|
|
120
|
+
const defaultFormFieldsGetters = {
|
|
121
|
+
signIn: getSignInFormFields,
|
|
122
|
+
signUp: getSignUpFormFields,
|
|
123
|
+
confirmSignUp: getConfirmSignUpFormFields,
|
|
124
|
+
confirmSignIn: getConfirmationCodeFormFields,
|
|
125
|
+
forceNewPassword: getForceNewPasswordFormFields,
|
|
126
|
+
forgotPassword: getForgotPasswordFormFields,
|
|
127
|
+
confirmResetPassword: getConfirmResetPasswordFormFields,
|
|
128
|
+
confirmVerifyUser: getConfirmationCodeFormFields,
|
|
129
|
+
setupTotp: getConfirmationCodeFormFields,
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export { DEFAULT_COUNTRY_CODE, defaultFormFieldsGetters, getAliasDefaultFormField };
|
|
@@ -1 +1,62 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '../../../types/authenticator/user.mjs';
|
|
2
|
+
import { isAuthFieldsWithDefaults } from '../../../types/authenticator/attributes.mjs';
|
|
3
|
+
import { getActorContext } from '../actor.mjs';
|
|
4
|
+
import { defaultFormFieldOptions } from '../constants.mjs';
|
|
5
|
+
import { defaultFormFieldsGetters, getAliasDefaultFormField } from './defaults.mjs';
|
|
6
|
+
import { applyTranslation, sortFormFields } from './utils.mjs';
|
|
7
|
+
|
|
8
|
+
// Gets the default formFields for given route
|
|
9
|
+
const getDefaultFormFields = (route, state) => {
|
|
10
|
+
const formFieldGetter = defaultFormFieldsGetters[route];
|
|
11
|
+
return formFieldGetter(state);
|
|
12
|
+
};
|
|
13
|
+
// Gets custom formFields, and applies default values
|
|
14
|
+
const getCustomFormFields = (route, state) => {
|
|
15
|
+
const customFormFields = getActorContext(state)?.formFields?.[route];
|
|
16
|
+
if (!customFormFields || Object.keys(customFormFields).length === 0) {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
return Object.entries(customFormFields).reduce((acc, [fieldName, customOptions]) => {
|
|
20
|
+
if ((route === 'signIn' || route === 'forgotPassword') &&
|
|
21
|
+
fieldName === 'username') {
|
|
22
|
+
// Unlike other screens, `signIn` and `forgotPassword` screens default login
|
|
23
|
+
// alias field names to "username", even if it's a phone number or email.
|
|
24
|
+
// In this case, we get the default formFieldOptions based on loginMechanism.
|
|
25
|
+
const defaultOptions = getAliasDefaultFormField(state);
|
|
26
|
+
// apply default to fill any gaps that are not present in customOptions
|
|
27
|
+
const mergedOptions = { ...defaultOptions, ...customOptions };
|
|
28
|
+
return { ...acc, [fieldName]: mergedOptions };
|
|
29
|
+
}
|
|
30
|
+
else if (isAuthFieldsWithDefaults(fieldName)) {
|
|
31
|
+
// if this field is a known auth attribute that we have defaults for,
|
|
32
|
+
// apply defaults to customOptions.
|
|
33
|
+
const defaultOptions = defaultFormFieldOptions[fieldName];
|
|
34
|
+
const mergedOptions = { ...defaultOptions, ...customOptions };
|
|
35
|
+
return { ...acc, [fieldName]: mergedOptions };
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// if this is not a known field, use customOptions as is.
|
|
39
|
+
return { ...acc, [fieldName]: customOptions };
|
|
40
|
+
}
|
|
41
|
+
}, {});
|
|
42
|
+
};
|
|
43
|
+
const getFormFields = (route, state) => {
|
|
44
|
+
const defaultFormFields = getDefaultFormFields(route, state);
|
|
45
|
+
const customFormFields = getCustomFormFields(route, state);
|
|
46
|
+
const formFields = { ...defaultFormFields, ...customFormFields };
|
|
47
|
+
delete formFields['QR'];
|
|
48
|
+
return applyTranslation(formFields);
|
|
49
|
+
};
|
|
50
|
+
const removeOrderKeys = (formFields) => formFields.map((field) => {
|
|
51
|
+
const key = field[0];
|
|
52
|
+
// Drop order key to prevent passing to form field UI components
|
|
53
|
+
const values = { ...field[1], order: undefined };
|
|
54
|
+
return [key, values];
|
|
55
|
+
});
|
|
56
|
+
/** Calls `getFormFields` above, then sorts it into an indexed array */
|
|
57
|
+
const getSortedFormFields = (route, state) => {
|
|
58
|
+
const formFields = getFormFields(route, state);
|
|
59
|
+
return removeOrderKeys(sortFormFields(formFields));
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export { getCustomFormFields, getDefaultFormFields, getFormFields, getSortedFormFields, removeOrderKeys };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { translate } from '../../../i18n/translations.mjs';
|
|
2
|
+
|
|
3
|
+
const getPrimaryAlias = (state) => {
|
|
4
|
+
const loginMechanisms = state?.context.config?.loginMechanisms;
|
|
5
|
+
/**
|
|
6
|
+
* @migration this is where we grab only the first index of `aws_cognito_username_attributes`
|
|
7
|
+
*/
|
|
8
|
+
const [primaryAlias] = loginMechanisms ?? ['username'];
|
|
9
|
+
return primaryAlias;
|
|
10
|
+
};
|
|
11
|
+
/** Applies translations to label and placeholder */
|
|
12
|
+
const applyTranslation = (formFields) => {
|
|
13
|
+
const newFormFields = { ...formFields };
|
|
14
|
+
for (const [name, options] of Object.entries(formFields)) {
|
|
15
|
+
const { label, placeholder } = options;
|
|
16
|
+
newFormFields[name] = {
|
|
17
|
+
...options,
|
|
18
|
+
label: label ? translate(label) : undefined,
|
|
19
|
+
placeholder: placeholder ? translate(placeholder) : undefined,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return newFormFields;
|
|
23
|
+
};
|
|
24
|
+
/** Sorts formFields according to their `order`. */
|
|
25
|
+
const sortFormFields = (formFields) => {
|
|
26
|
+
return Object.entries(formFields)
|
|
27
|
+
.sort((a, b) => {
|
|
28
|
+
const orderA = a[1].order || Number.MAX_VALUE;
|
|
29
|
+
const orderB = b[1].order || Number.MAX_VALUE;
|
|
30
|
+
return orderA - orderB;
|
|
31
|
+
})
|
|
32
|
+
.filter((formFieldEntry) => formFieldEntry[1] !== undefined);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export { applyTranslation, getPrimaryAlias, sortFormFields };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const getRoute = (state, actorState) => {
|
|
2
|
+
switch (true) {
|
|
3
|
+
case state.matches('idle'):
|
|
4
|
+
return 'idle';
|
|
5
|
+
case state.matches('setup'):
|
|
6
|
+
return 'setup';
|
|
7
|
+
case state.matches('signOut'):
|
|
8
|
+
return 'signOut';
|
|
9
|
+
case state.matches('authenticated'):
|
|
10
|
+
return 'authenticated';
|
|
11
|
+
case actorState?.matches('confirmSignUp'):
|
|
12
|
+
case actorState?.matches('confirmSignUp.resendConfirmationCode'):
|
|
13
|
+
return 'confirmSignUp';
|
|
14
|
+
case actorState?.matches('confirmSignIn'):
|
|
15
|
+
return 'confirmSignIn';
|
|
16
|
+
case actorState?.matches('setupTotp.edit'):
|
|
17
|
+
case actorState?.matches('setupTotp.submit'):
|
|
18
|
+
return 'setupTotp';
|
|
19
|
+
case actorState?.matches('signIn'):
|
|
20
|
+
return 'signIn';
|
|
21
|
+
case actorState?.matches('signUp'):
|
|
22
|
+
return 'signUp';
|
|
23
|
+
case actorState?.matches('forceChangePassword'):
|
|
24
|
+
return 'forceNewPassword';
|
|
25
|
+
case actorState?.matches('forgotPassword'):
|
|
26
|
+
return 'forgotPassword';
|
|
27
|
+
case actorState?.matches('confirmResetPassword'):
|
|
28
|
+
return 'confirmResetPassword';
|
|
29
|
+
case actorState?.matches('selectUserAttributes'):
|
|
30
|
+
return 'verifyUser';
|
|
31
|
+
case actorState?.matches('confirmVerifyUserAttribute'):
|
|
32
|
+
return 'confirmVerifyUser';
|
|
33
|
+
case state.matches('getCurrentUser'):
|
|
34
|
+
case actorState.matches('fetchUserAttributes'):
|
|
35
|
+
/**
|
|
36
|
+
* This route is needed for autoSignIn to capture both the
|
|
37
|
+
* autoSignIn.pending and the resolved states when the
|
|
38
|
+
* signIn actor is running.
|
|
39
|
+
*/
|
|
40
|
+
return 'transition';
|
|
41
|
+
default:
|
|
42
|
+
console.debug('Cannot infer `route` from Authenticator state:', state.value);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { getRoute };
|
|
@@ -1 +1,112 @@
|
|
|
1
|
-
import{translate
|
|
1
|
+
import { translate, DefaultTexts } from '../../i18n/translations.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ConfirmSignIn
|
|
5
|
+
*/
|
|
6
|
+
const getChallengeText = (challengeName) => {
|
|
7
|
+
switch (challengeName) {
|
|
8
|
+
case 'SMS_MFA':
|
|
9
|
+
return translate(DefaultTexts.CONFIRM_SMS);
|
|
10
|
+
case 'SOFTWARE_TOKEN_MFA':
|
|
11
|
+
return translate(DefaultTexts.CONFIRM_TOTP);
|
|
12
|
+
default:
|
|
13
|
+
throw new Error(`${translate('Unexpected challengeName encountered in ConfirmSignIn:')} ${challengeName}`);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* ConfirmSignUp
|
|
18
|
+
*/
|
|
19
|
+
const getDeliveryMessageText = (codeDeliveryDetails) => {
|
|
20
|
+
const { DeliveryMedium, Destination } = codeDeliveryDetails ?? {};
|
|
21
|
+
const isEmailMessage = DeliveryMedium === 'EMAIL';
|
|
22
|
+
const isTextMessage = DeliveryMedium === 'SMS';
|
|
23
|
+
const arrivalMessage = translate(DefaultTexts.CODE_ARRIVAL);
|
|
24
|
+
if (!(isEmailMessage || isTextMessage)) {
|
|
25
|
+
return `${translate(DefaultTexts.CODE_SENT)}. ${arrivalMessage}.`;
|
|
26
|
+
}
|
|
27
|
+
const instructionMessage = isEmailMessage
|
|
28
|
+
? translate(DefaultTexts.CODE_EMAILED)
|
|
29
|
+
: translate(DefaultTexts.CODE_TEXTED);
|
|
30
|
+
return `${instructionMessage} ${Destination}. ${arrivalMessage}.`;
|
|
31
|
+
};
|
|
32
|
+
const getDeliveryMethodText = (codeDeliveryDetails) => {
|
|
33
|
+
const { DeliveryMedium } = codeDeliveryDetails ?? {};
|
|
34
|
+
const isEmailMessage = DeliveryMedium === 'EMAIL';
|
|
35
|
+
const isTextMessage = DeliveryMedium === 'SMS';
|
|
36
|
+
if (!isEmailMessage && isTextMessage) {
|
|
37
|
+
return translate(DefaultTexts.WE_SENT_CODE);
|
|
38
|
+
}
|
|
39
|
+
return isEmailMessage
|
|
40
|
+
? translate(DefaultTexts.WE_EMAILED)
|
|
41
|
+
: translate(DefaultTexts.WE_TEXTED);
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* FederatedSignIn
|
|
45
|
+
*/
|
|
46
|
+
const providerNameMap = {
|
|
47
|
+
amazon: 'Amazon',
|
|
48
|
+
apple: 'Apple',
|
|
49
|
+
facebook: 'Facebook',
|
|
50
|
+
google: 'Google',
|
|
51
|
+
};
|
|
52
|
+
const getSignInWithFederationText = (route, provider) => {
|
|
53
|
+
const isSignIn = route === 'signIn';
|
|
54
|
+
return translate(`Sign ${isSignIn ? 'In' : 'Up'} with ${providerNameMap[provider]}`);
|
|
55
|
+
};
|
|
56
|
+
const authenticatorTextUtil = {
|
|
57
|
+
/** Shared */
|
|
58
|
+
getBackToSignInText: () => translate(DefaultTexts.BACK_SIGN_IN),
|
|
59
|
+
getChangePasswordText: () => translate(DefaultTexts.CHANGE_PASSWORD),
|
|
60
|
+
getChangingText: () => translate(DefaultTexts.CHANGING_PASSWORD),
|
|
61
|
+
getConfirmText: () => translate(DefaultTexts.CONFIRM),
|
|
62
|
+
getConfirmingText: () => translate(DefaultTexts.CONFIRMING),
|
|
63
|
+
getCopyText: () => translate(DefaultTexts.UPPERCASE_COPY),
|
|
64
|
+
getHidePasswordText: () => translate(DefaultTexts.HIDE_PASSWORD),
|
|
65
|
+
getLoadingText: () => translate(DefaultTexts.LOADING),
|
|
66
|
+
getOrText: () => translate(DefaultTexts.OR),
|
|
67
|
+
getResendCodeText: () => translate(DefaultTexts.RESEND_CODE),
|
|
68
|
+
getSendCodeText: () => translate(DefaultTexts.SEND_CODE),
|
|
69
|
+
getSendingText: () => translate(DefaultTexts.SENDING),
|
|
70
|
+
getShowPasswordText: () => translate(DefaultTexts.SHOW_PASSWORD),
|
|
71
|
+
getSubmitText: () => translate(DefaultTexts.SUBMIT),
|
|
72
|
+
getSubmittingText: () => translate(DefaultTexts.SUBMITTING),
|
|
73
|
+
/** SignInSignUpTabs */
|
|
74
|
+
getSignInTabText: () => translate(DefaultTexts.SIGN_IN_TAB),
|
|
75
|
+
getSignUpTabText: () => translate(DefaultTexts.CREATE_ACCOUNT),
|
|
76
|
+
/** SignIn */
|
|
77
|
+
getForgotPasswordText: (shortVersion) => translate(shortVersion
|
|
78
|
+
? DefaultTexts.FORGOT_PASSWORD
|
|
79
|
+
: DefaultTexts.FORGOT_YOUR_PASSWORD),
|
|
80
|
+
getSigningInText: () => translate(DefaultTexts.SIGNING_IN_BUTTON),
|
|
81
|
+
getSignInText: () => translate(DefaultTexts.SIGN_IN_BUTTON),
|
|
82
|
+
/** SignUp */
|
|
83
|
+
getCreatingAccountText: () => translate(DefaultTexts.CREATING_ACCOUNT),
|
|
84
|
+
getCreateAccountText: () => translate(DefaultTexts.CREATE_ACCOUNT),
|
|
85
|
+
/** ConfirmSignUp */
|
|
86
|
+
getDeliveryMessageText,
|
|
87
|
+
getDeliveryMethodText,
|
|
88
|
+
/** ConfirmSignIn */
|
|
89
|
+
getChallengeText,
|
|
90
|
+
/** ResetPassword */
|
|
91
|
+
getResetYourPasswordText: () => translate(DefaultTexts.RESET_PASSWORD),
|
|
92
|
+
/** SetupTotp */
|
|
93
|
+
getSetupTotpText: () => translate(DefaultTexts.SETUP_TOTP),
|
|
94
|
+
// TODO: add defaultText for below
|
|
95
|
+
getSetupTotpInstructionsText: () => translate('Copy and paste the secret key below into an authenticator app and then enter the code in the text field below.'),
|
|
96
|
+
// TODO: add defaultText for "COPIED"
|
|
97
|
+
getCopiedText: () => translate('COPIED'),
|
|
98
|
+
/** FederatedSignIn */
|
|
99
|
+
getSignInWithFederationText,
|
|
100
|
+
/** VerifyUser */
|
|
101
|
+
getSkipText: () => translate(DefaultTexts.SKIP),
|
|
102
|
+
getVerifyText: () => translate(DefaultTexts.VERIFY),
|
|
103
|
+
getVerifyContactText: () => translate(DefaultTexts.VERIFY_CONTACT),
|
|
104
|
+
getAccountRecoveryInfoText: () => translate(DefaultTexts.VERIFY_HEADING),
|
|
105
|
+
/** Validations */
|
|
106
|
+
// TODO: add defaultText
|
|
107
|
+
getInvalidEmailText: () => translate('Please enter a valid email'),
|
|
108
|
+
// TODO: add defaultText
|
|
109
|
+
getRequiredFieldText: () => translate('This field is required'),
|
|
110
|
+
}; // using `as const` so that keys are strongly typed
|
|
111
|
+
|
|
112
|
+
export { authenticatorTextUtil };
|
|
@@ -1 +1,38 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ALLOWED_SPECIAL_CHARACTERS, emailRegex } from './constants.mjs';
|
|
2
|
+
|
|
3
|
+
// replaces all characters in a string with '*', except for the first and last char
|
|
4
|
+
const censorAllButFirstAndLast = (value) => {
|
|
5
|
+
const split = value.trim().split('');
|
|
6
|
+
for (let i = 0; i < split.length; i++) {
|
|
7
|
+
if (i > 0 && i < split.length - 1) {
|
|
8
|
+
split[i] = '*';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return split.join('');
|
|
12
|
+
};
|
|
13
|
+
// censors all but the last four characters of a phone number
|
|
14
|
+
const censorPhoneNumber = (val) => {
|
|
15
|
+
if (val.length < 4) {
|
|
16
|
+
return val;
|
|
17
|
+
}
|
|
18
|
+
const split = val.split('');
|
|
19
|
+
for (let i = 0; i < split.length - 4; i++) {
|
|
20
|
+
split[i] = '*';
|
|
21
|
+
}
|
|
22
|
+
return split.join('');
|
|
23
|
+
};
|
|
24
|
+
const hasSpecialChars = (password) => ALLOWED_SPECIAL_CHARACTERS.some((char) => password.includes(char));
|
|
25
|
+
const getTotpCodeURL = (issuer, username, secret) => encodeURI(`otpauth://totp/${issuer}:${username}?secret=${secret}&issuer=${issuer}`);
|
|
26
|
+
function trimValues(values, ...ignored) {
|
|
27
|
+
return Object.entries(values).reduce((acc, [name, value]) => ({
|
|
28
|
+
...acc,
|
|
29
|
+
[name]: ignored.includes(name) ? value : value?.trim(),
|
|
30
|
+
}), {});
|
|
31
|
+
}
|
|
32
|
+
const isValidEmail = (value) => {
|
|
33
|
+
if (!value)
|
|
34
|
+
return false;
|
|
35
|
+
return emailRegex.test(value);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { censorAllButFirstAndLast, censorPhoneNumber, getTotpCodeURL, hasSpecialChars, isValidEmail, trimValues };
|
|
@@ -1 +1,210 @@
|
|
|
1
|
-
const
|
|
1
|
+
const countryDialCodes = [
|
|
2
|
+
'+1',
|
|
3
|
+
'+7',
|
|
4
|
+
'+20',
|
|
5
|
+
'+27',
|
|
6
|
+
'+30',
|
|
7
|
+
'+31',
|
|
8
|
+
'+32',
|
|
9
|
+
'+33',
|
|
10
|
+
'+34',
|
|
11
|
+
'+36',
|
|
12
|
+
'+39',
|
|
13
|
+
'+40',
|
|
14
|
+
'+41',
|
|
15
|
+
'+43',
|
|
16
|
+
'+44',
|
|
17
|
+
'+45',
|
|
18
|
+
'+46',
|
|
19
|
+
'+47',
|
|
20
|
+
'+48',
|
|
21
|
+
'+49',
|
|
22
|
+
'+51',
|
|
23
|
+
'+52',
|
|
24
|
+
'+53',
|
|
25
|
+
'+54',
|
|
26
|
+
'+55',
|
|
27
|
+
'+56',
|
|
28
|
+
'+57',
|
|
29
|
+
'+58',
|
|
30
|
+
'+60',
|
|
31
|
+
'+61',
|
|
32
|
+
'+62',
|
|
33
|
+
'+63',
|
|
34
|
+
'+64',
|
|
35
|
+
'+65',
|
|
36
|
+
'+66',
|
|
37
|
+
'+81',
|
|
38
|
+
'+82',
|
|
39
|
+
'+84',
|
|
40
|
+
'+86',
|
|
41
|
+
'+90',
|
|
42
|
+
'+91',
|
|
43
|
+
'+92',
|
|
44
|
+
'+93',
|
|
45
|
+
'+94',
|
|
46
|
+
'+95',
|
|
47
|
+
'+98',
|
|
48
|
+
'+212',
|
|
49
|
+
'+213',
|
|
50
|
+
'+216',
|
|
51
|
+
'+218',
|
|
52
|
+
'+220',
|
|
53
|
+
'+221',
|
|
54
|
+
'+222',
|
|
55
|
+
'+223',
|
|
56
|
+
'+224',
|
|
57
|
+
'+225',
|
|
58
|
+
'+226',
|
|
59
|
+
'+227',
|
|
60
|
+
'+228',
|
|
61
|
+
'+229',
|
|
62
|
+
'+230',
|
|
63
|
+
'+231',
|
|
64
|
+
'+232',
|
|
65
|
+
'+233',
|
|
66
|
+
'+234',
|
|
67
|
+
'+235',
|
|
68
|
+
'+236',
|
|
69
|
+
'+237',
|
|
70
|
+
'+238',
|
|
71
|
+
'+239',
|
|
72
|
+
'+240',
|
|
73
|
+
'+241',
|
|
74
|
+
'+242',
|
|
75
|
+
'+243',
|
|
76
|
+
'+244',
|
|
77
|
+
'+245',
|
|
78
|
+
'+246',
|
|
79
|
+
'+248',
|
|
80
|
+
'+249',
|
|
81
|
+
'+250',
|
|
82
|
+
'+251',
|
|
83
|
+
'+252',
|
|
84
|
+
'+253',
|
|
85
|
+
'+254',
|
|
86
|
+
'+255',
|
|
87
|
+
'+256',
|
|
88
|
+
'+257',
|
|
89
|
+
'+258',
|
|
90
|
+
'+260',
|
|
91
|
+
'+261',
|
|
92
|
+
'+262',
|
|
93
|
+
'+263',
|
|
94
|
+
'+264',
|
|
95
|
+
'+265',
|
|
96
|
+
'+266',
|
|
97
|
+
'+267',
|
|
98
|
+
'+268',
|
|
99
|
+
'+269',
|
|
100
|
+
'+290',
|
|
101
|
+
'+291',
|
|
102
|
+
'+297',
|
|
103
|
+
'+298',
|
|
104
|
+
'+299',
|
|
105
|
+
'+345',
|
|
106
|
+
'+350',
|
|
107
|
+
'+351',
|
|
108
|
+
'+352',
|
|
109
|
+
'+353',
|
|
110
|
+
'+354',
|
|
111
|
+
'+355',
|
|
112
|
+
'+356',
|
|
113
|
+
'+357',
|
|
114
|
+
'+358',
|
|
115
|
+
'+359',
|
|
116
|
+
'+370',
|
|
117
|
+
'+371',
|
|
118
|
+
'+372',
|
|
119
|
+
'+373',
|
|
120
|
+
'+374',
|
|
121
|
+
'+375',
|
|
122
|
+
'+376',
|
|
123
|
+
'+377',
|
|
124
|
+
'+378',
|
|
125
|
+
'+379',
|
|
126
|
+
'+380',
|
|
127
|
+
'+381',
|
|
128
|
+
'+382',
|
|
129
|
+
'+385',
|
|
130
|
+
'+386',
|
|
131
|
+
'+387',
|
|
132
|
+
'+389',
|
|
133
|
+
'+420',
|
|
134
|
+
'+421',
|
|
135
|
+
'+423',
|
|
136
|
+
'+500',
|
|
137
|
+
'+501',
|
|
138
|
+
'+502',
|
|
139
|
+
'+503',
|
|
140
|
+
'+504',
|
|
141
|
+
'+505',
|
|
142
|
+
'+506',
|
|
143
|
+
'+507',
|
|
144
|
+
'+508',
|
|
145
|
+
'+509',
|
|
146
|
+
'+537',
|
|
147
|
+
'+590',
|
|
148
|
+
'+591',
|
|
149
|
+
'+593',
|
|
150
|
+
'+594',
|
|
151
|
+
'+595',
|
|
152
|
+
'+596',
|
|
153
|
+
'+597',
|
|
154
|
+
'+598',
|
|
155
|
+
'+599',
|
|
156
|
+
'+670',
|
|
157
|
+
'+672',
|
|
158
|
+
'+673',
|
|
159
|
+
'+674',
|
|
160
|
+
'+675',
|
|
161
|
+
'+676',
|
|
162
|
+
'+677',
|
|
163
|
+
'+678',
|
|
164
|
+
'+679',
|
|
165
|
+
'+680',
|
|
166
|
+
'+681',
|
|
167
|
+
'+682',
|
|
168
|
+
'+683',
|
|
169
|
+
'+685',
|
|
170
|
+
'+686',
|
|
171
|
+
'+687',
|
|
172
|
+
'+688',
|
|
173
|
+
'+689',
|
|
174
|
+
'+690',
|
|
175
|
+
'+691',
|
|
176
|
+
'+692',
|
|
177
|
+
'+850',
|
|
178
|
+
'+852',
|
|
179
|
+
'+853',
|
|
180
|
+
'+855',
|
|
181
|
+
'+856',
|
|
182
|
+
'+872',
|
|
183
|
+
'+880',
|
|
184
|
+
'+886',
|
|
185
|
+
'+960',
|
|
186
|
+
'+961',
|
|
187
|
+
'+962',
|
|
188
|
+
'+963',
|
|
189
|
+
'+964',
|
|
190
|
+
'+965',
|
|
191
|
+
'+966',
|
|
192
|
+
'+967',
|
|
193
|
+
'+968',
|
|
194
|
+
'+970',
|
|
195
|
+
'+971',
|
|
196
|
+
'+972',
|
|
197
|
+
'+973',
|
|
198
|
+
'+974',
|
|
199
|
+
'+975',
|
|
200
|
+
'+976',
|
|
201
|
+
'+977',
|
|
202
|
+
'+992',
|
|
203
|
+
'+993',
|
|
204
|
+
'+994',
|
|
205
|
+
'+995',
|
|
206
|
+
'+996',
|
|
207
|
+
'+998',
|
|
208
|
+
];
|
|
209
|
+
|
|
210
|
+
export { countryDialCodes };
|