{"version":3,"sources":["components/SideBarNavigation/SideBarNavigation.tsx","utilities/SuccessErrorDialog.tsx","components/ConfirmDialog/ConfirmDialog.tsx","components/ConfirmDialog/ESITermsDialog.tsx","components/ConfirmDialog/ConfirmCodeDialog.tsx","components/PreferredInfo/PreferredInfo.tsx","components/ConfirmDialog/WorkEmailChangeDialog.tsx","pages/Preference/Preferences.tsx","assets/images/Language.svg","assets/images/Profile_CountryRegion.svg","assets/images/Country.svg","assets/images/Role.svg","assets/images/ProfileData1.svg","assets/images/Profile_Acct.svg","components/ConfirmDialog/CompletionDialog.tsx"],"names":["SideBarNavigation","carditemlist","activeLearningPlanId","profile","profileIsSSOEnabled","isSSOServerError","serverErrorMessage","useSelector","state","LearningPathStore","learningPathCards","UserStore","ssoprofile","isDomainEligibleForSso","isSSOError","customErrorMessage","shallowEqual","disableSSOFeatureFlag","FeatureFlagValues","disableLearnSSOForLandingPageAndNavs","disableSSO","history","useHistory","getProfile","getLearningPathCards","getSSOStatus","useEndpointActions","GetProfileActions","GetLearningPathCardActions","GetSSOStatusActions","account","useAuthenticatedUser","tenantId","userEmail","sessionStorage","getItem","QueryStringParam","WorkEmailAddress","useEffect","userDomain","Helper","getDomain","friendlyError","description","toString","errorCode","method","page","ai","appInsights","trackException","exception","Error","severityLevel","SeverityLevel","properties","signOutPrompt","push","error","hascarditemlist","Array","isArray","React","createElement","Fragment","NavLink","to","className","dir","FormattedMessage","id","defaultMessage","map","carditem","index","key","cardlink","includes","href","GetUrlWithRole","roleName","target","rel","onClick","handleLearnRedirectEvent","concat","imagename","Image","src","imagesSVG","alt","cardtitle","FontIcon","iconName","aria-label","memo","SuccessErrorDialog","props","textMessage","isOpen","onDone","buttonText","isSuccess","labelId","useId","dialogContentProps","type","DialogType","close","closeButtonAriaLabel","subText","modalProps","titleAriaId","containerClassName","topOffsetFixed","labelText","Dialog","hidden","onDismiss","DialogFooter","PrimaryButton","text","ConfirmDialog","textToDisplay","onNextStepClick","heading","onNextStepText","checkBoxlLabelText","checkboxDisplay","textToDisplayOnCancel","isChecked","setIsChecked","useState","isBtnDisabed","setIsBtnDisabed","cancelText","onCancel","title","aria-hidden","Checkbox","label","checked","required","onChange","onTosCheckboxChange","DefaultButton","disabled","values","span","chunks","onContinue","ESITermsDialog","titleToDisplay","intl","useIntl","locale","useLocale","esiAgreementSuportedLanguage","setEsiAgreementSuportedLanguage","selectedLanguage","setSelectedLanguage","suportedlanguageDropdown","useRef","getESIAgreement","GetESIAgreementActions","store","EnrollmentPlanStore","esiAgreementMess","esiAgreement","lxpProgramGuidelinesTitle","setClarityCustomTag","lxpTermsConditionsTitle","length","indexLxpTerms","findIndex","x","pageName","lxpTermsConditions","supportedLanguages","suportedLanguage","JSON","parse","lang","esiLanguagecode","esiName","setSupportedLanguageOption","useCallback","event","option","prev","htmlFor","tabIndex","ComboBox","placeholder","formatMessage","allowFreeform","autoComplete","options","selectedKey","componentRef","useComboBoxAsMenuWidth","calloutProps","directionalHint","directionalHintFixed","calloutMaxHeight","dangerouslySetInnerHTML","__html","DOMPurify","sanitize","ariaLabel","ConfirmCodeDialog","_localStorage$getItem","value","textboxDisplay","textboxlabelText","hashCodeTextboxDisplay","isPreferredEmail","localStorage","newWorkEmailRef","createRef","workemailAddress","NewWorkEmailUpdate","preferredEmailAddress","PreferredEmailUpdate","oldWorkemailAddress","workEmail","oldPreferredEmailAddress","VerifyWorkEmailAddress","VerifyWorkEmailAddressActions","emailVerification","EmailVerificationActions","isVerified","isVerificationError","document","getElementById","style","display","isFetching","email","LoaderSection","TextField","role","validateOnFocusOut","validateOnLoad","_newWorkEmailRef$curr","emailAddress","current","Link","reSendCode","params","newWorkEmailAddress","existingWorkEmailAddress","trackTrace","message","Information","applicationName","process","eventId","defaultValue","PreferredInfo","info","isReturningUser","changeContactInfo","addEmailText","submessage","WorkEmailChangeDialog","compareError","existingEmailError","isValidEmailError","newEmailRef","compareEmailRef","preferredEmail","setEmailAddress","emailAddressError","setEmailAddressError","compareEmailAddress","setCompareEmailAddress","compareEmailAddressError","setCompareEmailAddressError","invalidEmailMessage","unmatchedEmailMessage","existingEmailMessage","updateErrorMessage","emailAddressTest","test","compareErrorMessage","existingEmailErrorMessage","isEmailAddressValidRegex","_newEmailRef$current","_newEmailRef$current2","_compareEmailRef$curr","_compareEmailRef$curr2","fullEmailAddress","substring","lastIndexOf","fullCompareEmailAddress","requiredAriaLabel","isDisabled","aria-describedby","errorMessage","suffix","e","currentTarget","trim","onBlur","Preferences","_location$state","username","isEmailSentForWorkEmail","isWorkEmailUpdate","isEmailSendForWorkEmail","isEmailSent","isEmailSend","userlocale","useTitle","selectedRole","selectedTimezone","selectedCountry","isUpdateProfile","isTOSAccepted","isProfileExists","isProfileCompleted","isKoreaPrivacyAccepted","setIsOpen","isTermsDialogOpen","setTermsDialogOpen","isGuidelinesDialogOpen","setGuidelinesDialogOpen","isUnlinkAcctClose","setIsUnlinkAcctClose","isCodeVerificationDialogOpen","setCodeVerificationDialogOpen","isCodeVerificationPreferredEmailDialogOpen","setCodeVerificationPreferredEmailDialogOpen","isSuccessErrorDialogOpen","setSuccessErrorDialogOpen","isCompletionDialogOpen","setCompletionDialogOpen","isCompletionPreferredEmailDialogOpen","setCompletionPreferredEmaiDialogOpen","isContactInfoDialogOpen","setContactInfoDialogOpen","isCompareError","setCompareError","isExistingError","setExistingError","setIsValidEmailError","selectedRoleItem","setSelectedRoleItem","selectedLanguageItem","setSelectedLanguageItem","selectedTimeZoneItem","setSelectedTimeZoneItem","selectedCountryItem","setSelectedCountryItem","newWorkEmailAddressUpdate","setNewWorkEmailAddressUpdate","isTosChecked","setTosChecked","submitButtonText","setsubmitButtonText","location","useLocation","dispatch","useDispatch","isESITerms","IsESITermsAccepted","getLanguages","getTimezones","getRoles","getCountries","GetLanguagesActions","GetTimeZonesActions","GetRolesActions","GetCountryActions","updateProfile","CreateProfileActions","deleteProfile","DeleteAccountActions","languageDropdown","signout","useLogout","isProfileFetching","isProfileFetched","hasLinkedAccounts","isOrgIdExist","isAad","isMSA","_state$UserStore","isFetched","AccountLinkingStore","linkedAccounts","hasLinkedAccount","getEmailProfileOrgId","emailprofile","newPreferredEmailAddressUpdate","setPreferredEmailAddressUpdate","newPreferredEmailUpdate","setPreferredEmailUpdate","workEmailAddress","isError","customErrorCode","userEmailAddress","acctType","newEmailAddress","_state$UserStore$cust","_state$UserStore$cust2","_state$UserStore$cust3","_state$UserStore$cust4","_state$UserStore$cust5","_state$UserStore$cust6","response","accountUnlinkingResponse","isRedirectToHome","setRedirectHome","isPreferredEmailUpdated","setPreferredEmailUpdated","isPreferredEmailVerified","setPreferredEmailVerified","isSkipValidation","setIsSkipValidation","isChinaSelected","setChinaToBeSelected","isKoreaSelected","setKoreaToBeSelected","koreaConsent","setKoreaConsent","isConsentRequired","setConsentRequired","isServerError","_state$UserStore$resp","data","NO_LEARNER_INFO_ERROR","isSigninDisable","disableEsiTerms","supportLinkLogging","supportLinkVisitLog","closeDialog","KEY_TO_CHINA","KEY_TO_KOREA_SOUTH","termsConditionsHtml","setTermsConditionsHtml","programGuidelinesHtml","setProgramGuidelinesHtml","Id","PageName","firstName","indexguideLinesMessage","item","lxpProgramGuidelines","setItem","statusCode","status","languages","timezones","roles","countries","getElementsByClassName","pointerEvents","cursor","clear","window","wnd","register","lpid","acceptedToS","language","timezone","country","lastName","termsAcceptedDateTime","esiTerms","isESITermsAccepted","acceptedDateTime","Date","toUTCString","languageId","languageName","timezoneId","timezoneName","roleId","countryId","countryName","setLanguageOption","setTimeZoneOption","setRoleOption","setCountryOption","setacceptedToS","ev","accountLinkingSuccessMsg","accountLinkingErrorMsg","accountLinkingDialogContent","onDismissUnlinkAcct","Clear","openUnlinkAcctModal","openManageCookiesModal","manageConsent","onDismissCodeVerification","onDismissCompletion","onDismissUpdateContactInfo","onDismissPreferredEmailCodeVerification","onDismissPreferredEmailCompletion","onDeleteAccount","UpdateWorkEmailAddress","UpdateWorkEmailAddressActions","VerificationCode","VerificationCodeActions","VerifyUpdatedEmail","SendUpdatedWorkEmail","hashCode","oldWorkEmailAddress","VerifyPreferredEmail","isValidCompareEmailError","SendUpdatedPreferredEmail","accessCode","unLinkNextSteps","saveChangesText","agreeAndContinueText","localizedSaveButtonText","preferredEmailInfo","preferredEmailCheckboxTest","handleKoreaCheck","KoreaPrivacyMessage","ChinaPIPLMessage","link","Redirect","Language","width","Country","Timezone","Role","ProfileData1","b","AccountManagement","ariaDescription","data-testid","CompletionDialog","textToDisplayContent","openESITerms","openProgramGuideLine","targe","allowDisabledFocus","module","exports","useMemo","congratsHeading"],"mappings":"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","file":"static/js/5.20ab3c4d.chunk.js","sourcesContent":["import { FontIcon, Image } from '@fluentui/react';\r\nimport React, { useEffect } from 'react';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\nimport { NavLink, useHistory } from 'react-router-dom';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\nimport { FormattedMessage } from 'react-intl';\r\n\r\nimport { ILearningPathCard, ICustomErrorMessage } from '../../models';\r\nimport { IApplicationState } from '../../store';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport { GetProfileActions, GetSSOStatusActions } from '../../store/stores/user';\r\nimport { GetLearningPathCardActions } from '../../store/stores/learningPath';\r\nimport { ai } from '../ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser';\r\nimport { QueryStringParam } from '../../utilities/QueryStrings';\r\nimport { Helper } from '../../utilities/Helper';\r\nimport FeatureFlagValues from '../../utilities/featureFlagValues';\r\nimport { imagesSVG } from '../../utilities/imagesSVG';\r\n\r\nimport './SideBarNavigation.scss';\r\n\r\nexport const SideBarNavigation: React.FunctionComponent = () => {\r\n const [carditemlist, activeLearningPlanId, profile, profileIsSSOEnabled, isSSOServerError, serverErrorMessage] = useSelector(\r\n (state: IApplicationState) => [\r\n state.LearningPathStore.learningPathCards,\r\n state.UserStore.profile.activeLearningPlanId,\r\n state.UserStore.profile,\r\n state.UserStore.ssoprofile.isDomainEligibleForSso,\r\n state.UserStore.isSSOError,\r\n state.UserStore.customErrorMessage\r\n ],\r\n shallowEqual\r\n );\r\n const disableSSOFeatureFlag = FeatureFlagValues().disableLearnSSOForLandingPageAndNavs;\r\n const disableSSO = !profileIsSSOEnabled || disableSSOFeatureFlag;\r\n const history = useHistory();\r\n const [getProfile, getLearningPathCards, getSSOStatus] = useEndpointActions([\r\n GetProfileActions,\r\n GetLearningPathCardActions,\r\n GetSSOStatusActions\r\n ]);\r\n const account = useAuthenticatedUser();\r\n const tenantId = account?.tenantId;\r\n\r\n const userEmail = sessionStorage.getItem(QueryStringParam.WorkEmailAddress);\r\n useEffect(() => {\r\n if (!activeLearningPlanId) {\r\n getProfile(userEmail);\r\n const userDomain = Helper.getDomain(userEmail);\r\n if (userDomain != null) {\r\n getSSOStatus(userDomain);\r\n }\r\n }\r\n }, [activeLearningPlanId, getProfile, getSSOStatus, userEmail]);\r\n\r\n useEffect(() => {\r\n if (isSSOServerError) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description: serverErrorMessage?.toString(),\r\n errorCode: serverErrorMessage?.toString(),\r\n method: 'UseEffect-Servererror',\r\n page: 'SidebarNavigation'\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, isSSOServerError }\r\n });\r\n }\r\n }\r\n }, [isSSOServerError, serverErrorMessage]);\r\n\r\n useEffect(() => {\r\n if (activeLearningPlanId) {\r\n getLearningPathCards(activeLearningPlanId);\r\n } else {\r\n const friendlyError: ICustomErrorMessage = {\r\n description: 'defaultlpidissue',\r\n signOutPrompt: true,\r\n method: 'useEffect-defaultlpidissue',\r\n page: 'SidebarNavigation'\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, activeLearningPlanId, tenantId }\r\n });\r\n }\r\n history.push('/about/', {\r\n error: friendlyError\r\n });\r\n return;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activeLearningPlanId]);\r\n const hascarditemlist = Array.isArray(carditemlist);\r\n return (\r\n <React.Fragment>\r\n {hascarditemlist && (\r\n <ul>\r\n <li>\r\n <div>\r\n <NavLink to=\"/landing\">\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row\">\r\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\">\r\n <h2 className=\"home\">\r\n <FormattedMessage defaultMessage=\"Home\" />\r\n </h2>\r\n </div>\r\n </div>\r\n </div>\r\n </NavLink>\r\n </div>\r\n </li>\r\n {carditemlist.map((carditem: ILearningPathCard, index: number) => (\r\n <li key={index}>\r\n <div className=\"sideBarContentNav\">\r\n {carditem.cardlink.includes('http') && (\r\n <a\r\n href={Helper.GetUrlWithRole(carditem, profile?.roleName)}\r\n target=\"_blank\" // eslint-disable-line react/jsx-no-target-blank\r\n rel=\"noopener\"\r\n onClick={Helper.handleLearnRedirectEvent(\r\n disableSSO,\r\n Helper.GetUrlWithRole(carditem, profile?.roleName),\r\n '_blank',\r\n 'noopener'\r\n )}\r\n >\r\n <div className=\"ms-Grid \" dir=\"ltr\">\r\n <div className=\"ms-Grid-row gridDiv\">\r\n <div className=\"ms-Grid-col ms-sm1 ms-md1 ms-lg1\">\r\n <div className={`${carditem.imagename} selectedItemMarker`}></div>\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm1 ms-md1 ms-lg1\">\r\n <Image src={imagesSVG[carditem.imagename]} alt=\"Navigation icon\" className=\"iconStyle\" />\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm10 ms-md10 ms-lg10\">\r\n <div className=\"space ms-fontWeight-semibold\">\r\n {carditem.cardtitle} \r\n <FontIcon iconName=\"NavigateExternalInline\" aria-label=\"opens in new window\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n )}\r\n {!carditem.cardlink.includes('http') && (\r\n <NavLink to={carditem.cardlink}>\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row gridDiv\">\r\n <div className=\"ms-Grid-col ms-sm12 ms-md1 ms-lg1\">\r\n <div className={`${carditem.imagename} selectedItemMarker`}></div>\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm12 ms-md1 ms-lg1\">\r\n <Image src={imagesSVG[carditem.imagename]} alt=\"Navigation icon\" className=\"iconStyle\" />\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm12 ms-md10 ms-lg10\">\r\n <div className=\"space\">{carditem.cardtitle}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </NavLink>\r\n )}\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\nexport default React.memo(SideBarNavigation);\r\n","import * as React from 'react';\r\nimport { Dialog, DialogFooter, DialogType, PrimaryButton } from '@fluentui/react';\r\nimport { useId } from '@uifabric/react-hooks';\r\nimport './SuccessErrorDialog.scss';\r\n\r\ninterface ISuccessErrorProps {\r\n textMessage: string | undefined;\r\n isSuccess: boolean;\r\n isOpen: boolean;\r\n onDone?: () => void;\r\n buttonText: string;\r\n}\r\n\r\nexport const SuccessErrorDialog: React.FunctionComponent<ISuccessErrorProps> = props => {\r\n const { textMessage, isOpen, onDone, buttonText, isSuccess } = props;\r\n const labelId: string = useId('dialogLabel');\r\n\r\n const dialogContentProps = {\r\n type: DialogType.close,\r\n closeButtonAriaLabel: 'Close',\r\n subText: textMessage\r\n };\r\n const modalProps = React.useMemo(\r\n () => ({\r\n titleAriaId: labelId,\r\n containerClassName: 'dialogContent',\r\n topOffsetFixed: true\r\n }),\r\n [labelId]\r\n );\r\n\r\n const labelText = isSuccess ? 'Success' : 'Error';\r\n\r\n return (\r\n <>\r\n <label id={labelId} className=\"ms-screenReaderOnly\">\r\n {`Account Unlinking ${labelText} Modal Opens`}\r\n </label>\r\n <Dialog\r\n className={`modalUnLinking ${!isSuccess ? 'error' : ''}`}\r\n hidden={!isOpen}\r\n onDismiss={onDone}\r\n dialogContentProps={dialogContentProps}\r\n modalProps={modalProps}\r\n >\r\n <DialogFooter className=\"modalFooter\">\r\n <PrimaryButton onClick={onDone} text={buttonText} className=\"okayBtn\" />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { Checkbox, DefaultButton, Dialog, DialogType, PrimaryButton } from '@fluentui/react';\r\n\r\nimport './ConfirmDialog.scss';\r\nimport '../../styles/actions.scss';\r\nimport '../../index.scss';\r\n\r\ninterface IComponentProps {\r\n isOpen: boolean;\r\n onDismiss: () => void;\r\n onNextStepClick: () => void;\r\n heading: string;\r\n subText?: string;\r\n onNextStepText: string;\r\n checkboxDisplay?: boolean;\r\n checkBoxlLabelText?: string;\r\n className?: string;\r\n textToDisplay?: string;\r\n textToDisplayOnCancel?: string;\r\n}\r\n\r\nexport const ConfirmDialog: React.FunctionComponent<IComponentProps> = props => {\r\n const {\r\n isOpen,\r\n onDismiss,\r\n textToDisplay,\r\n onNextStepClick,\r\n heading,\r\n subText,\r\n onNextStepText,\r\n checkBoxlLabelText,\r\n checkboxDisplay,\r\n className,\r\n textToDisplayOnCancel\r\n } = props;\r\n const [isChecked, setIsChecked] = useState(false);\r\n const [isBtnDisabed, setIsBtnDisabed] = useState(true);\r\n const cancelText = textToDisplayOnCancel ? textToDisplayOnCancel : 'Cancel';\r\n\r\n const onTosCheckboxChange = () => {\r\n setIsChecked(!isChecked);\r\n setIsBtnDisabed(!isBtnDisabed);\r\n };\r\n\r\n const onCancel = () => {\r\n setIsChecked(false);\r\n setIsBtnDisabed(true);\r\n onDismiss();\r\n };\r\n\r\n const onContinue = () => {\r\n setIsChecked(false);\r\n setIsBtnDisabed(true);\r\n onNextStepClick();\r\n };\r\n\r\n const dialogContentProps = {\r\n type: DialogType.close,\r\n title: heading,\r\n closeButtonAriaLabel: 'Close',\r\n subText: subText\r\n };\r\n\r\n const modalProps = {\r\n containerClassName: 'dialogContent'\r\n };\r\n return (\r\n <Dialog\r\n className={`confirmDialog ${className}`}\r\n hidden={isOpen}\r\n onDismiss={onCancel}\r\n dialogContentProps={dialogContentProps}\r\n modalProps={modalProps}\r\n >\r\n <div className=\"modalContent\"></div>\r\n {textToDisplay}\r\n {checkboxDisplay && (\r\n <div className=\"required\" aria-hidden={true}>\r\n *<FormattedMessage defaultMessage=\"Required\" />\r\n </div>\r\n )}\r\n {checkboxDisplay && (\r\n <>\r\n <Checkbox\r\n label={checkBoxlLabelText}\r\n className=\"agreeCheckbox ms-font-semibold\"\r\n checked={isChecked}\r\n required={true}\r\n onChange={onTosCheckboxChange}\r\n />\r\n </>\r\n )}\r\n <div className=\"ms-Grid actions\">\r\n <div className=\"ms-Grid-row actionsWrapper\">\r\n <div className=\"ms-Grid-col ms-sm12 ms-md6 ms-lg6\">\r\n <DefaultButton onClick={onCancel} disabled={checkboxDisplay ? isBtnDisabed : false}>\r\n <FormattedMessage\r\n defaultMessage=\"<span>{cancelText}</span>\"\r\n values={{\r\n span: (chunks: React.ReactNode) => <>{chunks}</>,\r\n cancelText\r\n }}\r\n />\r\n </DefaultButton>\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm12 ms-md6 ms-lg6\">\r\n <PrimaryButton onClick={onContinue} text={onNextStepText} disabled={checkboxDisplay ? isBtnDisabed : false} />\r\n </div>\r\n </div>\r\n </div>\r\n </Dialog>\r\n );\r\n};\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { DefaultButton, Dialog, DialogType, ComboBox, IComboBoxOption, IComboBox } from '@fluentui/react';\r\nimport DOMPurify from 'dompurify';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\n\r\nimport { useLocale } from '../../components/LocalizationProvider/LocalizationProvider';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport { GetESIAgreementActions } from '../../store/stores/enrollmentPlan';\r\nimport { IApplicationState } from '../../store';\r\nimport { Helper, lxpProgramGuidelinesTitle, lxpTermsConditionsTitle, lxpTermsConditions } from '../../utilities';\r\nimport { ISupportedLanguages } from '../../models/ESIAgreement';\r\n\r\nimport './ESITermsDialog.scss';\r\n\r\ninterface IComponentProps {\r\n isOpen: boolean;\r\n textToDisplay: string;\r\n titleToDisplay?: string;\r\n className: string;\r\n onDismiss: () => void;\r\n}\r\n\r\nexport const ESITermsDialog: React.FunctionComponent<IComponentProps> = props => {\r\n const { isOpen, textToDisplay, titleToDisplay, className, onDismiss } = props;\r\n const intl = useIntl();\r\n const { locale } = useLocale();\r\n const [esiAgreementSuportedLanguage, setEsiAgreementSuportedLanguage] = useState([{ key: '', text: '' }]);\r\n const [selectedLanguage, setSelectedLanguage] = useState(locale);\r\n const suportedlanguageDropdown = useRef<IComboBox>(null);\r\n const [getESIAgreement] = useEndpointActions([GetESIAgreementActions]);\r\n const [store] = useSelector((state: IApplicationState) => [state.EnrollmentPlanStore], shallowEqual);\r\n const esiAgreementMess = store.esiAgreement;\r\n\r\n const onCancel = () => {\r\n onDismiss();\r\n };\r\n\r\n const dialogContentProps = {\r\n type: DialogType.close,\r\n title: titleToDisplay,\r\n closeButtonAriaLabel: 'Close',\r\n subText: ''\r\n };\r\n\r\n const modalProps = {\r\n containerClassName: 'dialogContent'\r\n };\r\n\r\n useEffect(() => {\r\n titleToDisplay === lxpProgramGuidelinesTitle && Helper.setClarityCustomTag('esiTerms', `Reading Program Guideline on Profile Page`);\r\n\r\n titleToDisplay === lxpTermsConditionsTitle && Helper.setClarityCustomTag('esiTerms', `Reading ESI Terms On Profile Page`);\r\n }, [titleToDisplay]);\r\n\r\n useEffect(() => {\r\n if (esiAgreementMess && esiAgreementMess.length > 0) {\r\n const indexLxpTerms = esiAgreementMess.findIndex(x => x.pageName === lxpTermsConditions);\r\n\r\n if (esiAgreementMess[indexLxpTerms].supportedLanguages) {\r\n const jsonLangString: ISupportedLanguages[] = JSON.parse(esiAgreementMess[indexLxpTerms].supportedLanguages);\r\n\r\n const suportedLanguage = jsonLangString.map(lang => ({\r\n key: lang.esiLanguagecode,\r\n text: lang.esiName\r\n }));\r\n\r\n setEsiAgreementSuportedLanguage(suportedLanguage);\r\n setSelectedLanguage(selectedLanguage);\r\n getESIAgreement(selectedLanguage);\r\n\r\n titleToDisplay === lxpTermsConditionsTitle &&\r\n Helper.setClarityCustomTag('esiTerms', `Supportive Language Feature Used On Profile Page`);\r\n }\r\n }\r\n //eslint-disable-next-line\r\n }, [selectedLanguage]);\r\n\r\n const setSupportedLanguageOption = React.useCallback((event: React.FormEvent<IComboBox>, option: IComboBoxOption | undefined): void => {\r\n if (option && option.key) {\r\n const key = option.key.toString();\r\n setSelectedLanguage(prev => key);\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n <Dialog className={className} hidden={isOpen} onDismiss={onCancel} dialogContentProps={dialogContentProps} modalProps={modalProps}>\r\n <label id=\"esiTerms\" htmlFor={className} className=\"ms-screenReaderOnly\">\r\n <FormattedMessage\r\n defaultMessage=\"{titleToDisplay}\"\r\n values={{\r\n span: (chunks: React.ReactNode) => <>{chunks}</>,\r\n titleToDisplay\r\n }}\r\n />\r\n </label>\r\n <div>\r\n {className === 'termsAndConditionsDialog' && !isOpen && esiAgreementSuportedLanguage.length > 1 && (\r\n //eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex,jsx-a11y/tabindex-no-positive\r\n <div tabIndex={1} className=\"focusRemove settingOptionText\">\r\n <ComboBox\r\n placeholder={intl.formatMessage({\r\n defaultMessage: 'Select a preferred language'\r\n })}\r\n allowFreeform\r\n autoComplete=\"on\"\r\n options={esiAgreementSuportedLanguage}\r\n onChange={setSupportedLanguageOption}\r\n className=\"dropdownWidth\"\r\n required={true}\r\n selectedKey={selectedLanguage}\r\n componentRef={suportedlanguageDropdown}\r\n useComboBoxAsMenuWidth={true}\r\n calloutProps={{ directionalHint: 5, directionalHintFixed: true, calloutMaxHeight: 350 }}\r\n />\r\n </div>\r\n )}\r\n <div\r\n //eslint-disable-next-line\r\n tabIndex={0}\r\n className=\"dialogTermsBoxOuter\"\r\n >\r\n <div className=\"dialogTermsBoxInner\">\r\n <div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(textToDisplay) }} />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"ms-Dialog-actions\">\r\n <DefaultButton ariaLabel=\"Close\" onClick={onCancel} text={intl.formatMessage({ defaultMessage: 'Close' })} />\r\n </div>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { Checkbox, Dialog, DialogType, PrimaryButton, TextField, ITextField, Link, FontIcon } from '@fluentui/react';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\n\r\nimport { IApplicationState } from '../../store';\r\nimport { IEmailVerificationRequest, IUpdateEmailVerificationRequest } from '../../models';\r\nimport { ai } from '../ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { QueryStringParam } from '../../utilities';\r\nimport { VerifyWorkEmailAddressActions, EmailVerificationActions } from '../../store/stores/user/actions';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport { LoaderSection } from '../Loading/LoaderSection';\r\nimport './ConfirmDialog.scss';\r\nimport './WorkEmailChangeDialog.scss';\r\nimport './ConfirmCodeDialog.scss';\r\n\r\ninterface IComponentProps {\r\n isOpen: boolean;\r\n value: string | null;\r\n onDismiss: () => void;\r\n onNextStepClick?: (newWorkEmailAddress: string) => void;\r\n subText?: string;\r\n onNextStepText: string;\r\n checkboxDisplay?: boolean;\r\n checkBoxlLabelText?: string;\r\n textboxDisplay?: boolean;\r\n textboxlabelText?: string;\r\n className?: string;\r\n textToDisplay?: string;\r\n hashCodeTextboxDisplay?: boolean;\r\n isPreferredEmail?: boolean;\r\n placeholder: string;\r\n}\r\n\r\nexport const ConfirmCodeDialog: React.FunctionComponent<IComponentProps> = props => {\r\n const {\r\n isOpen,\r\n value,\r\n onDismiss,\r\n textToDisplay,\r\n onNextStepClick,\r\n subText,\r\n onNextStepText,\r\n checkBoxlLabelText,\r\n checkboxDisplay,\r\n textboxDisplay,\r\n textboxlabelText,\r\n className,\r\n hashCodeTextboxDisplay,\r\n isPreferredEmail,\r\n placeholder\r\n } = props;\r\n const applicationName: string = process.env.REACT_APP_API_ACCESSCODE_APPLICATIONNAME + '';\r\n const locale: string = localStorage.getItem('locale') ?? 'en-US';\r\n const eventId: string = process.env.REACT_APP_API_ACCESSCODE_EVENTID + '';\r\n const intl = useIntl();\r\n const [isChecked, setIsChecked] = useState(false);\r\n const [isBtnDisabed, setIsBtnDisabed] = useState(true);\r\n const newWorkEmailRef = React.createRef<ITextField>();\r\n const workemailAddress = sessionStorage.getItem(QueryStringParam.NewWorkEmailUpdate);\r\n const preferredEmailAddress = sessionStorage.getItem(QueryStringParam.PreferredEmailUpdate);\r\n const [oldWorkemailAddress] = useSelector((state: IApplicationState) => [state.UserStore.profile.workEmail], shallowEqual);\r\n const [oldPreferredEmailAddress] = useSelector(\r\n (state: IApplicationState) => [state.UserStore.profile.preferredEmailAddress],\r\n shallowEqual\r\n );\r\n\r\n const onTosCheckboxChange = () => {\r\n setIsChecked(!isChecked);\r\n setIsBtnDisabed(!isBtnDisabed);\r\n };\r\n const [VerifyWorkEmailAddress] = useEndpointActions([VerifyWorkEmailAddressActions]);\r\n const [emailVerification] = useEndpointActions([EmailVerificationActions]);\r\n\r\n const [isVerified] = useSelector((state: IApplicationState) => [state.UserStore.isVerified], shallowEqual);\r\n const isVerificationError = useSelector((state: IApplicationState) => {\r\n if (state.UserStore.isVerificationError && !isVerified) {\r\n if (document.getElementById('errorDiv')) {\r\n document.getElementById('errorDiv')!.style.display = 'inline-flex';\r\n }\r\n return true;\r\n } else return false;\r\n });\r\n const isFetching = useSelector<IApplicationState, boolean>(state => state.UserStore.isFetching, shallowEqual);\r\n const onCancel = () => {\r\n setIsChecked(false);\r\n setIsBtnDisabed(true);\r\n onDismiss();\r\n };\r\n\r\n const onContinue = () => {\r\n setIsChecked(false);\r\n setIsBtnDisabed(true);\r\n const emailAddress = newWorkEmailRef.current?.value;\r\n if (emailAddress) {\r\n if (onNextStepClick) {\r\n onNextStepClick(emailAddress);\r\n }\r\n }\r\n };\r\n const reSendCode = () => {\r\n if (workemailAddress && !isPreferredEmail) {\r\n const params: IUpdateEmailVerificationRequest = {\r\n newWorkEmailAddress: workemailAddress,\r\n existingWorkEmailAddress: oldWorkemailAddress\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Step1: Email Verification',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n params\r\n }\r\n });\r\n }\r\n\r\n VerifyWorkEmailAddress(params);\r\n } else if (preferredEmailAddress && isPreferredEmail) {\r\n const params: IEmailVerificationRequest = {\r\n email: preferredEmailAddress,\r\n applicationName: applicationName,\r\n locale: locale,\r\n eventId: eventId\r\n };\r\n if (ai.appInsights) {\r\n let message = `Preference: Email Verification for new preferred email updation ${preferredEmailAddress}`;\r\n if (oldPreferredEmailAddress && oldPreferredEmailAddress !== preferredEmailAddress) {\r\n message = `${message} , oldPreferredEmailAddress : ${oldPreferredEmailAddress}`;\r\n }\r\n ai.appInsights.trackTrace({\r\n message,\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n params\r\n }\r\n });\r\n }\r\n emailVerification(params);\r\n }\r\n };\r\n\r\n const dialogContentProps = {\r\n type: DialogType.close,\r\n closeButtonAriaLabel: 'Close',\r\n subText: subText\r\n };\r\n\r\n const modalProps = {\r\n containerClassName: 'dialogContent'\r\n };\r\n\r\n const email = value;\r\n\r\n return (\r\n <Dialog\r\n className={`confirmDialog ${className} confirmCodeDialog`}\r\n hidden={isOpen}\r\n onDismiss={onCancel}\r\n dialogContentProps={dialogContentProps}\r\n modalProps={modalProps}\r\n >\r\n {isFetching && <LoaderSection />}\r\n <div className=\"confirmCodeDialogContent\">\r\n <div className=\"confirmCodeDialogText\">\r\n <span>\r\n <FormattedMessage defaultMessage=\"Please enter the verification code sent to\" />{' '}\r\n <span className=\"ms-fontWeight-semibold\"> {email}.</span>\r\n </span>\r\n </div>\r\n {textToDisplay}\r\n {checkboxDisplay && (\r\n <span className=\"required\" aria-hidden={true}>\r\n *<FormattedMessage defaultMessage=\"Required\" />\r\n </span>\r\n )}\r\n {textboxDisplay && (\r\n <span className=\"required\" aria-hidden={true}>\r\n *<FormattedMessage defaultMessage=\"Required\" />\r\n </span>\r\n )}\r\n {hashCodeTextboxDisplay && (\r\n <>\r\n <div className=\"ms-Grid enterCodeContainer\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row enterCodeWrapper gridDiv\">\r\n <div className=\"ms-Grid-col ms-sm12 ms-lg8\">\r\n <TextField\r\n role=\"textbox\"\r\n className=\"enterCodeTextbox\"\r\n id=\"newEmailAddress\"\r\n placeholder={placeholder}\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n componentRef={newWorkEmailRef}\r\n />\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm12 ms-md8 ms-lg4 confirmCodeButton\">\r\n <PrimaryButton onClick={onContinue} text={onNextStepText} disabled={checkboxDisplay ? isBtnDisabed : false} />\r\n </div>\r\n </div>\r\n </div>\r\n {isVerificationError && (\r\n <div id=\"errorDiv\" role=\"alert\" className=\"errorBlock\">\r\n <span className=\"errorImage\">\r\n <FontIcon className=\"infoIcon\" iconName=\"Info\" />\r\n </span>\r\n <span role=\"alert\" className=\"errorText\">\r\n {intl.formatMessage({ defaultMessage: 'The verification code entered is incorrect. Please try again.' })}\r\n </span>\r\n </div>\r\n )}\r\n <p className=\"resendMessage\">\r\n <FormattedMessage defaultMessage=\"Having trouble?\" />{' '}\r\n <Link className=\"linkText\" onClick={reSendCode}>\r\n <FormattedMessage defaultMessage=\"Resend code\" />\r\n </Link>\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n {checkboxDisplay && (\r\n <>\r\n <Checkbox\r\n label={checkBoxlLabelText}\r\n className=\"agreeCheckbox ms-font-semibold\"\r\n checked={isChecked}\r\n required={true}\r\n onChange={onTosCheckboxChange}\r\n />\r\n </>\r\n )}\r\n {textboxDisplay && (\r\n <>\r\n <p className=\"modalContent\">\r\n <TextField\r\n role=\"textbox\"\r\n className=\"agreeCheckbox\"\r\n defaultValue={textboxlabelText}\r\n id=\"newEmailAddress\"\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n componentRef={newWorkEmailRef}\r\n />\r\n <span aria-hidden={true}>\r\n <FormattedMessage defaultMessage=\"To confirm ownership of the account, we will send a verification code by email\" />\r\n </span>\r\n <br></br>\r\n </p>\r\n </>\r\n )}\r\n </Dialog>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport { Link } from '@fluentui/react';\r\n\r\nimport './PreferredInfo.scss';\r\nimport '../../index.scss';\r\n\r\ninterface IComponentProps {\r\n info: string;\r\n value: string | Readonly<boolean> | null;\r\n isReturningUser: boolean;\r\n changeContactInfo: () => void;\r\n}\r\n\r\nexport const PreferredInfo: React.FunctionComponent<IComponentProps> = props => {\r\n const { info, value, isReturningUser, changeContactInfo } = props;\r\n const intl = useIntl();\r\n\r\n const addEmailText = intl.formatMessage({\r\n defaultMessage: 'Add my email'\r\n });\r\n\r\n const submessage = intl.formatMessage({\r\n defaultMessage: 'Add the email address that you want Microsoft to use for communication with you'\r\n });\r\n\r\n return (\r\n <div className=\"ms-fontSize-15 ms-fontWeight-semibold preferredInfoItem\">\r\n <span className=\"preferredInfoItemTitle\">{info}</span>\r\n <span aria-label=\"requiredAriaLabel\" className=\"required ms-font-size-12\">\r\n *\r\n </span>\r\n <p className=\"ms-fontWeight-regular\">{submessage}.</p>\r\n <div className=\"preferredInfoContainer\">\r\n <p>{value}</p>\r\n {isReturningUser ? (\r\n <Link className=\"contactInfoButton\" onClick={changeContactInfo} target=\"_self\" aria-label=\"Change contact info\">\r\n <FormattedMessage defaultMessage=\"Update my email address\" />\r\n </Link>\r\n ) : (\r\n <Link className=\"contactInfoButton\" onClick={changeContactInfo} target=\"_self\" aria-label={addEmailText}>\r\n <FormattedMessage defaultMessage=\"Add my email address\" />\r\n </Link>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React, { useCallback, useState } from 'react';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { Dialog, DialogType, TextField, ITextField, DefaultButton, PrimaryButton, Checkbox } from '@fluentui/react';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\n\r\nimport { LoaderSection } from '../Loading/LoaderSection';\r\nimport { IApplicationState } from '../../store';\r\n\r\nimport './ConfirmDialog.scss';\r\nimport './WorkEmailChangeDialog.scss';\r\nimport '../../styles/actions.scss';\r\nimport '../../index.scss';\r\nimport '../../buttons.scss';\r\n\r\ninterface IComponentProps {\r\n isOpen: boolean;\r\n isPreferredEmail: boolean;\r\n value: string | null;\r\n onDismiss: () => void;\r\n onNextStepClick?: (\r\n newWorkEmailAddress: string,\r\n compareWorkEmailAddress: string,\r\n isValidEmailError: boolean,\r\n isValidCompareEmailError: boolean\r\n ) => void;\r\n heading: string;\r\n subText?: string;\r\n onNextStepText: string;\r\n checkboxDisplay?: boolean;\r\n checkBoxlLabelText?: string;\r\n textboxDisplay?: boolean;\r\n textboxlabelText?: string;\r\n className?: string;\r\n textToDisplay?: string;\r\n hashCodeTextboxDisplay?: boolean;\r\n compareError: boolean;\r\n existingEmailError: boolean;\r\n isValidEmailError: boolean;\r\n}\r\n\r\nexport const WorkEmailChangeDialog: React.FunctionComponent<IComponentProps> = props => {\r\n const {\r\n isOpen,\r\n isPreferredEmail,\r\n value,\r\n onDismiss,\r\n onNextStepClick,\r\n heading,\r\n subText,\r\n onNextStepText,\r\n checkboxDisplay,\r\n checkBoxlLabelText,\r\n textboxDisplay,\r\n textboxlabelText,\r\n className,\r\n hashCodeTextboxDisplay,\r\n compareError,\r\n existingEmailError,\r\n isValidEmailError\r\n } = props;\r\n const intl = useIntl();\r\n const newEmailRef = React.createRef<ITextField>();\r\n const compareEmailRef = React.createRef<ITextField>();\r\n\r\n const preferredEmail = useSelector((state: IApplicationState) => {\r\n return value;\r\n });\r\n\r\n const [isChecked, setIsChecked] = useState(false);\r\n const [emailAddress, setEmailAddress] = useState(preferredEmail ? preferredEmail : '');\r\n const [emailAddressError, setEmailAddressError] = useState('');\r\n const [compareEmailAddress, setCompareEmailAddress] = useState(preferredEmail ? preferredEmail : '');\r\n const [compareEmailAddressError, setCompareEmailAddressError] = useState('');\r\n\r\n const invalidEmailMessage = intl.formatMessage({ defaultMessage: 'Please enter a valid email address.' });\r\n const unmatchedEmailMessage = intl.formatMessage({ defaultMessage: 'The two entered emails do not match.' });\r\n const existingEmailMessage = intl.formatMessage({ defaultMessage: 'Your account is already linked with this email address.' });\r\n\r\n const updateErrorMessage = useCallback((): void => {\r\n //eslint-disable-next-line\r\n const isEmailAddressValidRegex = /^([a-zA-Z0-9_\\-\\+'])+(\\.[a-zA-Z0-9_\\-\\+']+)*\\@((([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,15}))\\s*$/i;\r\n const emailAddressTest = isEmailAddressValidRegex.test(emailAddress);\r\n\r\n if (emailAddress === '') {\r\n setEmailAddressError(invalidEmailMessage);\r\n } else if (compareEmailAddress === '') {\r\n setCompareEmailAddress(invalidEmailMessage);\r\n } else if (emailAddressTest) {\r\n if (emailAddress === preferredEmail) {\r\n setEmailAddressError(existingEmailMessage);\r\n setCompareEmailAddressError('');\r\n } else if (emailAddress === compareEmailAddress) {\r\n setEmailAddressError('');\r\n setCompareEmailAddressError('');\r\n } else {\r\n setEmailAddressError('');\r\n setCompareEmailAddressError(unmatchedEmailMessage);\r\n }\r\n } else {\r\n setEmailAddressError(invalidEmailMessage);\r\n setCompareEmailAddressError('');\r\n }\r\n }, [emailAddress, compareEmailAddress, invalidEmailMessage, unmatchedEmailMessage, existingEmailMessage, preferredEmail]);\r\n\r\n const onCancel = () => {\r\n setIsChecked(false);\r\n onDismiss();\r\n setEmailAddressError('');\r\n setCompareEmailAddressError('');\r\n };\r\n const onTosCheckboxChange = () => {\r\n updateErrorMessage();\r\n setIsChecked(!isChecked);\r\n };\r\n const isFetching = useSelector<IApplicationState, boolean>(state => state.UserStore.isFetching, shallowEqual);\r\n const compareErrorMessage = compareError ? intl.formatMessage({ defaultMessage: 'The two entered emails do not match.' }) : '';\r\n const existingEmailErrorMessage = existingEmailError\r\n ? intl.formatMessage({ defaultMessage: 'Your account is already linked with this email address.' })\r\n : isValidEmailError\r\n ? intl.formatMessage({ defaultMessage: 'Please enter a valid email address.' })\r\n : '';\r\n //eslint-disable-next-line\r\n const isEmailAddressValidRegex = /^([a-zA-Z0-9_\\-\\+'])+(\\.[a-zA-Z0-9_\\-\\+']+)*\\@((([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,15}))\\s*$/i;\r\n\r\n const onContinue = () => {\r\n setIsChecked(!isChecked);\r\n const emailAddress = newEmailRef.current?.value ? newEmailRef.current?.value : '';\r\n const compareEmailAddress = compareEmailRef.current?.value ? compareEmailRef.current?.value : '';\r\n let fullEmailAddress = emailAddress + textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'));\r\n let fullCompareEmailAddress = compareEmailAddress + textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'));\r\n if (isPreferredEmail) {\r\n fullEmailAddress = emailAddress;\r\n fullCompareEmailAddress = compareEmailAddress;\r\n }\r\n const isValidEmailError = !isEmailAddressValidRegex.test(fullEmailAddress);\r\n const isValidCompareEmailError = fullEmailAddress !== fullCompareEmailAddress;\r\n\r\n if (onNextStepClick) {\r\n onNextStepClick(fullEmailAddress, fullCompareEmailAddress, isValidEmailError, isValidCompareEmailError);\r\n }\r\n };\r\n\r\n const dialogContentProps = {\r\n type: DialogType.close,\r\n title: heading,\r\n closeButtonAriaLabel: 'Close',\r\n subText: subText\r\n };\r\n\r\n const modalProps = {\r\n containerClassName: 'dialogContent'\r\n };\r\n\r\n const email = (() => {\r\n if (isPreferredEmail && preferredEmail) {\r\n return preferredEmail;\r\n } else if (isPreferredEmail && !preferredEmail) {\r\n intl.formatMessage({ defaultMessage: 'Preferred email address' });\r\n } else {\r\n return textboxlabelText?.substring(0, textboxlabelText.lastIndexOf('@'));\r\n }\r\n })();\r\n\r\n const requiredAriaLabel = intl.formatMessage({\r\n defaultMessage: 'Required'\r\n });\r\n\r\n const isDisabled = !isChecked || emailAddressError !== '' || compareEmailAddressError !== '';\r\n\r\n return (\r\n <Dialog\r\n className={`${className} workEmailChangeDialog`}\r\n hidden={isOpen}\r\n onDismiss={onCancel}\r\n dialogContentProps={dialogContentProps}\r\n modalProps={modalProps}\r\n >\r\n {isFetching && <LoaderSection />}\r\n {textboxDisplay && (\r\n <>\r\n <p className=\"modalContent\">\r\n <div aria-label={requiredAriaLabel} className=\"required ms-font-size-12\">\r\n *<FormattedMessage defaultMessage=\"Required\" />\r\n </div>\r\n <span className=\"subheader ms-font-size-14 ms-fontWeight-semibold\">\r\n {!isPreferredEmail && (\r\n <FormattedMessage defaultMessage=\"Enter a valid work email address\" aria-label=\"Enter a valid work email address\" />\r\n )}\r\n </span>\r\n {!isPreferredEmail && (\r\n <TextField\r\n label={intl.formatMessage({ defaultMessage: 'New email address' })}\r\n title=\"Please enter user name only\"\r\n aria-describedby=\"workemailInfo\"\r\n role=\"textbox\"\r\n className=\"workEmailTextbox\"\r\n defaultValue={email}\r\n id=\"newEmailAddress\"\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n componentRef={newEmailRef}\r\n errorMessage={existingEmailErrorMessage}\r\n suffix={textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'))}\r\n />\r\n )}\r\n {isPreferredEmail && (\r\n <TextField\r\n label={intl.formatMessage({ defaultMessage: 'Preferred email address' })}\r\n title=\"Please enter user name only\"\r\n aria-describedby=\"workemailInfo\"\r\n aria-label={requiredAriaLabel}\r\n role=\"textbox\"\r\n className=\"workEmailTextbox\"\r\n required={true}\r\n defaultValue={email}\r\n //eslint-disable-next-line\r\n onChange={e => setEmailAddress(e.currentTarget.value.trim())}\r\n id=\"newEmailAddress\"\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n componentRef={newEmailRef}\r\n errorMessage={emailAddressError}\r\n onBlur={updateErrorMessage}\r\n suffix={textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'))}\r\n />\r\n )}\r\n {!isPreferredEmail && (\r\n <TextField\r\n label={intl.formatMessage({ defaultMessage: 'Confirm new email address' })}\r\n title=\"Please confirm user name only\"\r\n aria-describedby=\"confirmWorkemailInfo\"\r\n role=\"textbox\"\r\n className=\"workEmailTextbox\"\r\n defaultValue={email}\r\n id=\"confirmEmailAddress\"\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n errorMessage={compareErrorMessage}\r\n componentRef={compareEmailRef}\r\n suffix={textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'))}\r\n />\r\n )}\r\n {isPreferredEmail && (\r\n <TextField\r\n label={intl.formatMessage({ defaultMessage: 'Confirm email address' })}\r\n title=\"Please confirm user name only\"\r\n aria-describedby=\"confirmWorkemailInfo\"\r\n aria-label={requiredAriaLabel}\r\n role=\"textbox\"\r\n className=\"workEmailTextbox\"\r\n required={true}\r\n defaultValue={email}\r\n //eslint-disable-next-line\r\n onChange={e => setCompareEmailAddress(e.currentTarget.value.trim())}\r\n id=\"confirmEmailAddress\"\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n errorMessage={compareEmailAddressError}\r\n onBlur={updateErrorMessage}\r\n componentRef={compareEmailRef}\r\n suffix={textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'))}\r\n />\r\n )}\r\n {checkboxDisplay && (\r\n <>\r\n <Checkbox\r\n label={checkBoxlLabelText}\r\n className=\"agreeCheckbox ms-font-semibold\"\r\n checked={isChecked}\r\n required={true}\r\n onChange={onTosCheckboxChange}\r\n />\r\n </>\r\n )}\r\n <span className=\"ms-font-size-14 ms-fontWeight-semibold\">\r\n {isPreferredEmail ? (\r\n <FormattedMessage\r\n defaultMessage=\"We will send a verification code to your preferred email address for confirmation.\"\r\n aria-label=\"We will send a verification code to your preferred email address for confirmation\"\r\n />\r\n ) : (\r\n <FormattedMessage\r\n defaultMessage=\"To confirm ownership of the account, we will send a verification code by email.\"\r\n aria-label=\"To confirm ownership of the account, we will send a verification code by email\"\r\n />\r\n )}\r\n </span>\r\n <br></br>\r\n <p className=\"disablediv\" id=\"workemailInfo\">\r\n enter email address (alias only) for your {textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'))} account\r\n </p>\r\n <p className=\"disablediv\" id=\"confirmWorkemailInfo\">\r\n confirm email address (alias only) for your {textboxlabelText?.substring(textboxlabelText.lastIndexOf('@'))} account\r\n </p>\r\n </p>\r\n </>\r\n )}\r\n {hashCodeTextboxDisplay && (\r\n <>\r\n <p className=\"modalContent \">\r\n <TextField\r\n role=\"textbox\"\r\n className=\"workEmailTextbox\"\r\n id=\"verifyEmailAddress\"\r\n validateOnFocusOut\r\n validateOnLoad={false}\r\n componentRef={newEmailRef}\r\n />\r\n <br></br>\r\n </p>\r\n </>\r\n )}\r\n <div className=\"ms-Grid actions\">\r\n <div className=\"ms-Grid-row actionsWrapper\">\r\n <div className=\"ms-Grid-col ms-sm12 ms-md6 ms-lg6\">\r\n <DefaultButton onClick={onCancel} text={intl.formatMessage({ defaultMessage: 'Cancel' })} />\r\n </div>\r\n {!isPreferredEmail && (\r\n <div className=\"ms-Grid-col ms-sm12 ms-md6 ms-lg6\">\r\n <PrimaryButton\r\n onClick={onContinue}\r\n text={onNextStepText}\r\n //disabled={existingEmailErrorMessage !== '' || compareErrorMessage !== ''}\r\n />\r\n </div>\r\n )}\r\n {isPreferredEmail && (\r\n <div className=\"ms-Grid-col ms-sm12 ms-md6 ms-lg6\">\r\n <PrimaryButton\r\n onClick={onContinue}\r\n text={onNextStepText}\r\n disabled={isDisabled}\r\n className={isDisabled ? 'primaryButtonDisabled' : ''}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </Dialog>\r\n );\r\n};\r\n","import React, { useEffect, useCallback, useState, useRef, ReactElement } from 'react';\r\nimport { Checkbox, ComboBox, IComboBoxOption, IComboBox, DialogFooter, Image, Link, DefaultButton, PrimaryButton } from '@fluentui/react';\r\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\r\nimport { useLocation, useHistory, Redirect } from 'react-router-dom';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\n\r\nimport { IApplicationState } from '../../store';\r\nimport { useEndpointActions } from '../../store/endpoint';\r\nimport {\r\n GetLanguagesActions,\r\n GetTimeZonesActions,\r\n GetRolesActions,\r\n GetCountryActions,\r\n GetESIAgreementActions\r\n} from '../../store/stores/enrollmentPlan';\r\nimport Language from '../../assets/images/Language.svg';\r\nimport Country from '../../assets/images/Profile_CountryRegion.svg';\r\nimport Timezone from '../../assets/images/Country.svg';\r\nimport Role from '../../assets/images/Role.svg';\r\nimport ProfileData1 from '../../assets/images/ProfileData1.svg';\r\nimport AccountManagement from '../../assets/images/Profile_Acct.svg';\r\nimport { Helper, lxpProgramGuidelines, lxpTermsConditions, QueryStringParam } from '../../utilities';\r\nimport {\r\n ICreateProfileRequest,\r\n ICustomErrorMessage,\r\n IWorkEmailVerificationCodeRequest,\r\n RouteEmailState,\r\n IVerificationCodeRequest,\r\n IUpdateEmailVerificationRequest,\r\n IEmailVerificationRequest\r\n} from '../../models';\r\nimport {\r\n CreateProfileActions,\r\n DeleteAccountActions,\r\n VerifyWorkEmailAddressActions,\r\n UpdateWorkEmailAddressActions,\r\n EmailVerificationActions,\r\n VerificationCodeActions\r\n} from '../../store/stores/user';\r\nimport { ConfirmCodeDialog } from '../../components/ConfirmDialog/ConfirmCodeDialog';\r\nimport { CompletionDialog } from '../../components/ConfirmDialog/CompletionDialog';\r\nimport { PreferredInfo } from '../../components/PreferredInfo/PreferredInfo';\r\nimport { ai } from '../../components/ApplicationInsightsProvider/ApplicationInsightsService';\r\nimport { SideBarNavigation } from '../../components/SideBarNavigation/SideBarNavigation';\r\nimport { ConfirmDialog } from '../../components/ConfirmDialog/ConfirmDialog';\r\nimport { WorkEmailChangeDialog } from '../../components/ConfirmDialog/WorkEmailChangeDialog';\r\nimport { useTitle, useLogout } from '../../hooks';\r\nimport { SuccessErrorDialog } from '../../utilities/SuccessErrorDialog';\r\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser';\r\nimport { LoaderSection } from '../../components/Loading/LoaderSection';\r\nimport { useLocale } from '../../components/LocalizationProvider/LocalizationProvider';\r\nimport FeatureFlagValues from '../../utilities/featureFlagValues';\r\nimport { KEY_TO_CHINA, KEY_TO_KOREA_SOUTH, NO_LEARNER_INFO_ERROR } from './constants';\r\nimport { ESITermsDialog } from '../../components/ConfirmDialog/ESITermsDialog';\r\nimport { IESITerms } from '../../models/ESITerms';\r\n\r\nimport './Preferences.scss';\r\nimport '../../styles/commonStyles.scss';\r\nimport '../../buttons.scss';\r\n\r\ninterface IComponentProps {\r\n /** The cou\r\n * nt of shimmer items to show in the list */\r\n\r\n isUpdateProfile: boolean;\r\n selectedRole: string;\r\n selectedLanguage: string;\r\n selectedTimezone: string;\r\n isTOSAccepted: boolean;\r\n isProfileCompleted: boolean;\r\n isProfileExists: boolean;\r\n selectedCountry: string;\r\n selectedPreferredEmail: string;\r\n isKoreaPrivacyAccepted: boolean;\r\n}\r\n\r\nexport const Preferences: React.FunctionComponent<IComponentProps> = props => {\r\n const account = useAuthenticatedUser();\r\n const emailAddress = account?.username;\r\n const [isEmailSentForWorkEmail, isWorkEmailUpdate] = useSelector(\r\n (state: IApplicationState) => [state.UserStore.isEmailSendForWorkEmail, state.UserStore.isWorkEmailUpdate],\r\n shallowEqual\r\n );\r\n\r\n const [isEmailSent] = useSelector((state: IApplicationState) => [state.UserStore.isEmailSend], shallowEqual);\r\n\r\n const tenantId = account?.tenantId;\r\n const applicationName: string = process.env.REACT_APP_API_ACCESSCODE_APPLICATIONNAME + '';\r\n const userlocale: string = localStorage.getItem('locale') ?? 'en-US';\r\n const eventId: string = process.env.REACT_APP_API_ACCESSCODE_EVENTID + '';\r\n useTitle(process.env.REACT_APP_SITE_NAME + ': Settings');\r\n const { selectedRole, selectedLanguage, selectedTimezone, selectedCountry } = props;\r\n const { isUpdateProfile, isTOSAccepted, isProfileExists, isProfileCompleted, isKoreaPrivacyAccepted } = props;\r\n const [store] = useSelector((state: IApplicationState) => [state.EnrollmentPlanStore], shallowEqual);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const [isTermsDialogOpen, setTermsDialogOpen] = useState(false);\r\n const [isGuidelinesDialogOpen, setGuidelinesDialogOpen] = useState(false);\r\n\r\n const [isUnlinkAcctClose, setIsUnlinkAcctClose] = useState(true);\r\n const [isCodeVerificationDialogOpen, setCodeVerificationDialogOpen] = useState(true);\r\n const [isCodeVerificationPreferredEmailDialogOpen, setCodeVerificationPreferredEmailDialogOpen] = useState(true);\r\n const [isSuccessErrorDialogOpen, setSuccessErrorDialogOpen] = useState(false);\r\n const [isCompletionDialogOpen, setCompletionDialogOpen] = useState(true);\r\n const [isCompletionPreferredEmailDialogOpen, setCompletionPreferredEmaiDialogOpen] = useState(true);\r\n const [isContactInfoDialogOpen, setContactInfoDialogOpen] = useState(true);\r\n const [isCompareError, setCompareError] = useState(false);\r\n const [isExistingError, setExistingError] = useState(false);\r\n const [isValidEmailError, setIsValidEmailError] = useState(false);\r\n const [selectedRoleItem, setSelectedRoleItem] = useState<string>(selectedRole);\r\n const [selectedLanguageItem, setSelectedLanguageItem] = useState<string>(selectedLanguage);\r\n const [selectedTimeZoneItem, setSelectedTimeZoneItem] = useState<string>(selectedTimezone);\r\n const [selectedCountryItem, setSelectedCountryItem] = useState<string>(selectedCountry);\r\n const [newWorkEmailAddressUpdate, setNewWorkEmailAddressUpdate] = useState<string>('');\r\n const [isTosChecked, setTosChecked] = useState(isTOSAccepted);\r\n const [submitButtonText, setsubmitButtonText] = useState<string>('Save Changes');\r\n const location = useLocation<RouteEmailState>();\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const userEmail = location.state?.emailAddress || sessionStorage.getItem(QueryStringParam.WorkEmailAddress) || '';\r\n const isESITerms = sessionStorage.getItem(QueryStringParam.IsESITermsAccepted) === 'yes';\r\n const [getLanguages, getTimezones, getRoles, getCountries] = useEndpointActions([\r\n GetLanguagesActions,\r\n GetTimeZonesActions,\r\n GetRolesActions,\r\n GetCountryActions\r\n ]);\r\n const [updateProfile] = useEndpointActions([CreateProfileActions]);\r\n const [deleteProfile] = useEndpointActions([DeleteAccountActions]);\r\n const languageDropdown = useRef<IComboBox>(null);\r\n const signout = useLogout();\r\n const { locale } = useLocale();\r\n\r\n const [isProfileFetching, isProfileFetched, hasLinkedAccounts, isOrgIdExist, isAad, isMSA] = useSelector(\r\n (state: IApplicationState) => [\r\n state.UserStore.isFetching,\r\n state.UserStore.isFetched,\r\n state.AccountLinkingStore.linkedAccounts.length > 0 || state.UserStore?.profile?.hasLinkedAccount,\r\n Helper.getEmailProfileOrgId(state.UserStore.emailprofile) !== '',\r\n state.UserStore.emailprofile.isAad,\r\n state.UserStore.emailprofile.isMSA\r\n ],\r\n shallowEqual\r\n );\r\n const [preferredEmailAddress] = useSelector((state: IApplicationState) => [state.UserStore.profile.preferredEmailAddress], shallowEqual);\r\n const [newPreferredEmailAddressUpdate, setPreferredEmailAddressUpdate] = useState<string>(preferredEmailAddress);\r\n const [newPreferredEmailUpdate, setPreferredEmailUpdate] = useState<string>('');\r\n\r\n const workEmailAddress = sessionStorage.getItem(QueryStringParam.WorkEmailAddress);\r\n\r\n const [isError, customErrorMessage, customErrorCode, workEmail, userEmailAddress, acctType, newEmailAddress] = useSelector(\r\n (state: IApplicationState) => [\r\n state.UserStore.isError,\r\n state.UserStore.customErrorMessage?.description,\r\n state.UserStore.customErrorMessage?.errorCode,\r\n state.UserStore.customErrorMessage?.workEmail,\r\n state.UserStore.customErrorMessage?.emailAddress,\r\n state.UserStore.customErrorMessage?.acctType,\r\n state.UserStore.customErrorMessage?.newEmailAddress\r\n ],\r\n shallowEqual\r\n );\r\n const [response] = useSelector((state: IApplicationState) => [state.UserStore.response], shallowEqual);\r\n const [isVerified] = useSelector((state: IApplicationState) => [state.UserStore.isVerified], shallowEqual);\r\n const [accountUnlinkingResponse] = useSelector((state: IApplicationState) => [state.UserStore.accountUnlinkingResponse], shallowEqual);\r\n const [isRedirectToHome, setRedirectHome] = useState(false);\r\n const [isPreferredEmailUpdated, setPreferredEmailUpdated] = useState(false);\r\n const [isPreferredEmailVerified, setPreferredEmailVerified] = useState(false);\r\n const [isSkipValidation, setIsSkipValidation] = useState(false);\r\n const [isChinaSelected, setChinaToBeSelected] = useState(false);\r\n const [isKoreaSelected, setKoreaToBeSelected] = useState(false);\r\n const [koreaConsent, setKoreaConsent] = useState(isKoreaPrivacyAccepted);\r\n const [isConsentRequired, setConsentRequired] = useState(false);\r\n const isServerError = useSelector((state: IApplicationState) => {\r\n if (state.UserStore.response?.data && state.UserStore.response.data['customError'] === NO_LEARNER_INFO_ERROR && isProfileFetched) {\r\n return true;\r\n } else return false;\r\n });\r\n\r\n const isSigninDisable = FeatureFlagValues().isSigninDisable;\r\n const disableEsiTerms = FeatureFlagValues().disableEsiTerms;\r\n const intl = useIntl();\r\n const [profile] = useSelector((state: IApplicationState) => [state.UserStore.profile], shallowEqual);\r\n const supportLinkLogging = () => {\r\n Helper.supportLinkVisitLog('Preferences', profile.workEmail, profile.id);\r\n };\r\n\r\n const openProgramGuideLine = () => {\r\n setGuidelinesDialogOpen(true);\r\n };\r\n\r\n const openESITerms = () => {\r\n setTermsDialogOpen(true);\r\n };\r\n\r\n const closeDialog = () => {\r\n if (isTermsDialogOpen) setTermsDialogOpen(false);\r\n else if (isGuidelinesDialogOpen) {\r\n setGuidelinesDialogOpen(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (selectedCountry === KEY_TO_CHINA) {\r\n setChinaToBeSelected(true);\r\n } else if (selectedCountry === KEY_TO_KOREA_SOUTH) {\r\n setKoreaToBeSelected(true);\r\n }\r\n }, [selectedCountry]);\r\n const [termsConditionsHtml, setTermsConditionsHtml] = useState('');\r\n const [getESIAgreement] = useEndpointActions([GetESIAgreementActions]);\r\n const esiAgreementMess = store.esiAgreement;\r\n const [programGuidelinesHtml, setProgramGuidelinesHtml] = useState('');\r\n\r\n useEffect(() => {\r\n if (!disableEsiTerms && store.esiAgreement && store.esiAgreement.length === 0) {\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'getting esi terms HTML in setting page',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n locale\r\n }\r\n });\r\n }\r\n getESIAgreement(locale);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [disableEsiTerms, locale, store.esiAgreement]);\r\n\r\n useEffect(() => {\r\n if (!disableEsiTerms && esiAgreementMess && esiAgreementMess.length > 0) {\r\n const indexLxpTerms = esiAgreementMess.findIndex(x => x.pageName === lxpTermsConditions);\r\n if (indexLxpTerms !== -1) {\r\n setTermsConditionsHtml(esiAgreementMess[indexLxpTerms].message);\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'terms GUID and PageName',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n Id: esiAgreementMess[indexLxpTerms].Id,\r\n PageName: profile.firstName\r\n }\r\n });\r\n }\r\n Helper.setClarityCustomTag(\r\n 'termsContentIDAndPageName',\r\n `${esiAgreementMess[indexLxpTerms].Id}-${esiAgreementMess[indexLxpTerms].pageName}`\r\n );\r\n }\r\n const indexguideLinesMessage = esiAgreementMess.findIndex(item => item.pageName === lxpProgramGuidelines);\r\n if (indexguideLinesMessage !== -1) setProgramGuidelinesHtml(esiAgreementMess[indexguideLinesMessage].message);\r\n }\r\n }, [disableEsiTerms, esiAgreementMess, profile.firstName]);\r\n useEffect(() => {\r\n if (isSigninDisable) {\r\n history.push('/');\r\n }\r\n if (isEmailSentForWorkEmail && !isCompareError && !isExistingError && !isValidEmailError) {\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Preference: Step1: Step2',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n workEmailAddress,\r\n isEmailSentForWorkEmail\r\n }\r\n });\r\n }\r\n sessionStorage.setItem(QueryStringParam.NewWorkEmailUpdate, newWorkEmailAddressUpdate);\r\n setIsUnlinkAcctClose(true);\r\n setCodeVerificationDialogOpen(false);\r\n setCompletionDialogOpen(true);\r\n }\r\n }, [\r\n isEmailSentForWorkEmail,\r\n workEmailAddress,\r\n isVerified,\r\n isValidEmailError,\r\n isCompareError,\r\n isExistingError,\r\n newWorkEmailAddressUpdate,\r\n isSigninDisable,\r\n history\r\n ]);\r\n\r\n useEffect(() => {\r\n if (newPreferredEmailUpdate === workEmailAddress && !isSkipValidation) {\r\n setContactInfoDialogOpen(true);\r\n setCodeVerificationPreferredEmailDialogOpen(true);\r\n setCompletionPreferredEmaiDialogOpen(false);\r\n setIsSkipValidation(true);\r\n } else {\r\n if (isEmailSent && isPreferredEmailUpdated) {\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Preference: Step1:Step2',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n workEmailAddress,\r\n isEmailSent\r\n }\r\n });\r\n }\r\n setContactInfoDialogOpen(true);\r\n setCodeVerificationPreferredEmailDialogOpen(false);\r\n setCompletionDialogOpen(true);\r\n setIsSkipValidation(false);\r\n } else {\r\n if (isError && !isServerError) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description: customErrorMessage?.toString(),\r\n signOutPrompt: false,\r\n method: 'UseEffect-serverError',\r\n page: 'Preference: step1'\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, isServerError, workEmailAddress }\r\n });\r\n }\r\n history.push('/about/', {\r\n error: friendlyError\r\n });\r\n return;\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isEmailSent, isPreferredEmailUpdated]);\r\n\r\n useEffect(() => {\r\n if (isError && !isServerError && !isProfileFetching) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description: customErrorMessage?.toString(),\r\n errorCode: customErrorCode?.toString(),\r\n signOutPrompt: true,\r\n statusCode: response.status,\r\n method: 'UseEffect-serverError',\r\n page: 'Preferences'\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, isServerError, isError, tenantId }\r\n });\r\n }\r\n history.push('/about/', {\r\n error: friendlyError\r\n });\r\n return;\r\n } else {\r\n if (isRedirectToHome && !isProfileFetching && !isError) {\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Preference: goto landing',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n isRedirectToHome,\r\n isProfileFetching,\r\n isError,\r\n tenantId\r\n }\r\n });\r\n }\r\n setRedirectHome(true);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isServerError, isProfileFetching, history, isRedirectToHome, isError, customErrorMessage, customErrorCode, response?.status]);\r\n\r\n useEffect(() => {\r\n if (!store.languages.length) {\r\n getLanguages();\r\n }\r\n if (!store.timezones.length) {\r\n getTimezones();\r\n }\r\n if (!store.roles.length) {\r\n getRoles();\r\n }\r\n if (!store.countries.length) {\r\n getCountries();\r\n }\r\n if (!isUpdateProfile && isRedirectToHome) {\r\n setsubmitButtonText('Agree & Continue');\r\n if (document.getElementsByClassName('headerSiteName')) {\r\n document.getElementById('headerSiteName')!.style.pointerEvents = 'none';\r\n document.getElementById('headerSiteName')!.style.cursor = 'default';\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [store.timezones.length, store.languages.length, store.roles.length, isUpdateProfile, store.countries.length, isRedirectToHome]);\r\n\r\n useEffect(() => {\r\n if (isWorkEmailUpdate) {\r\n setCodeVerificationDialogOpen(true);\r\n setCompletionDialogOpen(false);\r\n }\r\n }, [isWorkEmailUpdate, isVerified]);\r\n\r\n useEffect(() => {\r\n if (isAad !== null) {\r\n if (!hasLinkedAccounts && !isAad && !isProfileFetching && isProfileFetched && !isMSA) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description:\r\n intl.formatMessage({\r\n defaultMessage: 'It looks like there is another/different signin email linked with your'\r\n }) +\r\n ' ' +\r\n workEmailAddress +\r\n intl.formatMessage({\r\n defaultMessage: 'account'\r\n }),\r\n signOutPrompt: true,\r\n method: 'UseEffect-activeSession',\r\n page: 'Preferences'\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, hasLinkedAccounts, isError, tenantId }\r\n });\r\n }\r\n history.push('/about/', {\r\n error: friendlyError\r\n });\r\n return;\r\n }\r\n } else if (!(isProfileFetched && userEmail !== '')) {\r\n sessionStorage.clear();\r\n history.push('/');\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n hasLinkedAccounts,\r\n history,\r\n intl,\r\n isAad,\r\n isError,\r\n isProfileFetched,\r\n isProfileFetching,\r\n isOrgIdExist,\r\n userEmail,\r\n workEmailAddress,\r\n isMSA\r\n ]);\r\n\r\n useEffect(() => {\r\n if (typeof window !== 'undefined') {\r\n const wnd = window as any;\r\n if (typeof wnd['siteConsent'] !== 'undefined') {\r\n setConsentRequired(!!wnd['siteConsent'].isConsentRequired);\r\n }\r\n }\r\n }, []);\r\n\r\n const register = useCallback(() => {\r\n const params: ICreateProfileRequest = {\r\n lpid: '',\r\n acceptedToS: isTosChecked,\r\n role: selectedRoleItem,\r\n language: selectedLanguageItem,\r\n timezone: selectedTimeZoneItem,\r\n workEmailAddress: userEmail,\r\n country: selectedCountryItem,\r\n firstName: account?.firstName || '',\r\n lastName: account?.lastName || '',\r\n preferredEmailAddress: newPreferredEmailUpdate ? newPreferredEmailUpdate : preferredEmailAddress,\r\n isKoreaPrivacyAccepted: koreaConsent\r\n };\r\n if (!disableEsiTerms && store.esiAgreement && store.esiAgreement.length > 0) {\r\n if (isESITerms) {\r\n const indexLxpTerms = store.esiAgreement.findIndex(x => x.pageName == lxpTermsConditions);\r\n if (indexLxpTerms != -1) {\r\n let termsAcceptedDateTime = null;\r\n\r\n if (profile.esiTerms && profile.esiTerms.isESITermsAccepted && profile.esiTerms.acceptedDateTime) {\r\n termsAcceptedDateTime = profile.esiTerms.acceptedDateTime;\r\n } else {\r\n termsAcceptedDateTime = new Date(new Date().toUTCString());\r\n }\r\n\r\n const esiTerms: IESITerms = {\r\n isESITermsAccepted: isESITerms,\r\n acceptedDateTime: termsAcceptedDateTime,\r\n id: store.esiAgreement[indexLxpTerms].Id\r\n };\r\n params.esiTerms = esiTerms;\r\n }\r\n }\r\n }\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Preference: update profile sethome',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n params\r\n }\r\n });\r\n }\r\n updateProfile(params);\r\n setRedirectHome(true);\r\n }, [\r\n isTosChecked,\r\n selectedRoleItem,\r\n selectedLanguageItem,\r\n selectedTimeZoneItem,\r\n userEmail,\r\n selectedCountryItem,\r\n account,\r\n newPreferredEmailUpdate,\r\n preferredEmailAddress,\r\n koreaConsent,\r\n profile.esiTerms,\r\n disableEsiTerms,\r\n store.esiAgreement,\r\n updateProfile,\r\n isESITerms\r\n ]);\r\n\r\n const languages = store.languages.map(lang => ({\r\n key: lang.languageId,\r\n text: lang.languageName\r\n }));\r\n const timezones = store.timezones.map(timezone => ({\r\n key: timezone.timezoneId,\r\n text: timezone.timezoneName\r\n }));\r\n const roles = store.roles.map(role => ({\r\n key: role.roleId,\r\n text: role.roleName\r\n }));\r\n const countries = store.countries.map(country => ({\r\n key: country.countryId,\r\n text: country.countryName\r\n }));\r\n\r\n const setLanguageOption = React.useCallback(\r\n (event: React.FormEvent<IComboBox>, option: IComboBoxOption | undefined): void => {\r\n if (option && option.key) {\r\n setSelectedLanguageItem(option.key.toString());\r\n }\r\n },\r\n [setSelectedLanguageItem]\r\n );\r\n const setTimeZoneOption = React.useCallback(\r\n (event: React.FormEvent<IComboBox>, option: IComboBoxOption | undefined): void => {\r\n if (option && option.key) {\r\n setSelectedTimeZoneItem(option.key.toString());\r\n }\r\n },\r\n [setSelectedTimeZoneItem]\r\n );\r\n const setRoleOption = React.useCallback(\r\n (event: React.FormEvent<IComboBox>, option: IComboBoxOption | undefined): void => {\r\n if (option && option.key) {\r\n setSelectedRoleItem(option.key.toString());\r\n }\r\n },\r\n [setSelectedRoleItem]\r\n );\r\n const setCountryOption = React.useCallback((event: React.FormEvent<IComboBox>, option: IComboBoxOption | undefined): void => {\r\n if (option && option.key) {\r\n setSelectedCountryItem(option.key.toString());\r\n if (option.key.toString() === KEY_TO_CHINA) {\r\n setChinaToBeSelected(true);\r\n } else {\r\n setChinaToBeSelected(false);\r\n }\r\n if (option.key.toString() === KEY_TO_KOREA_SOUTH) {\r\n setKoreaToBeSelected(true);\r\n } else {\r\n setKoreaToBeSelected(false);\r\n }\r\n }\r\n }, []);\r\n\r\n const setacceptedToS = useCallback((ev?: React.FormEvent<HTMLElement>, isChecked?: boolean) => {\r\n setTosChecked(!!isChecked);\r\n setIsOpen(!isChecked);\r\n }, []);\r\n\r\n const onDismiss = useCallback(() => {\r\n setIsOpen(false);\r\n setTosChecked(true);\r\n }, []);\r\n\r\n const accountLinkingSuccessMsg = intl.formatMessage({\r\n defaultMessage: 'Your account has now been unlinked and will now be signed out of Lxp'\r\n });\r\n const accountLinkingErrorMsg =\r\n intl.formatMessage({\r\n defaultMessage: 'Error:'\r\n }) +\r\n accountUnlinkingResponse?.description +\r\n intl.formatMessage({\r\n defaultMessage: 'We are unable to process this request. Please try again.For help or assistance, please contact ESI Support.'\r\n });\r\n\r\n const accountLinkingDialogContent = intl.formatMessage({\r\n defaultMessage: `By removing your account, you will no longer be able to access Learning Experience portal and your information will no longer be shared with your organization.\r\n\r\nYou will need to link a different personal email to your work account to access LxP.\r\n\r\nNote: Your course completion status will be retained as it is tied to your work account and you can see them once you register with a new login account `\r\n });\r\n\r\n const onContinue = useCallback(() => {\r\n setIsOpen(false);\r\n }, []);\r\n\r\n const data = { languages: languages, timezones: timezones, roles: roles, country: countries };\r\n\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Preference: Display name and data',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n data,\r\n tenantId\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n if (accountUnlinkingResponse?.statusCode) {\r\n setSuccessErrorDialogOpen(true);\r\n }\r\n }, [accountUnlinkingResponse]);\r\n\r\n const onDismissUnlinkAcct = useCallback(() => {\r\n setIsUnlinkAcctClose(true);\r\n setCompareError(false);\r\n setExistingError(false);\r\n setIsValidEmailError(false);\r\n setCodeVerificationDialogOpen(true);\r\n setCompletionDialogOpen(true);\r\n dispatch(VerifyWorkEmailAddressActions.Clear());\r\n }, [dispatch]);\r\n const openUnlinkAcctModal = useCallback(() => {\r\n setIsUnlinkAcctClose(false);\r\n dispatch(VerifyWorkEmailAddressActions.Clear());\r\n }, [dispatch]);\r\n\r\n const openManageCookiesModal = useCallback(() => {\r\n // Manage User Cookie Consent\r\n if (typeof window !== 'undefined') {\r\n const wnd = window as any;\r\n if (typeof wnd['siteConsent'] !== 'undefined') {\r\n wnd['siteConsent'].manageConsent();\r\n }\r\n }\r\n }, []);\r\n\r\n const onDismissCodeVerification = useCallback(() => {\r\n setCodeVerificationDialogOpen(true);\r\n dispatch(VerifyWorkEmailAddressActions.Clear());\r\n setCompareError(false);\r\n setExistingError(false);\r\n setIsValidEmailError(false);\r\n setIsUnlinkAcctClose(true);\r\n setCompletionDialogOpen(true);\r\n }, [dispatch]);\r\n const onDismissCompletion = useCallback(() => {\r\n signout();\r\n }, [signout]);\r\n\r\n const onDismissUpdateContactInfo = useCallback(() => {\r\n setContactInfoDialogOpen(true);\r\n setCompareError(false);\r\n setExistingError(false);\r\n setIsValidEmailError(false);\r\n }, []);\r\n const onDismissPreferredEmailCodeVerification = useCallback(() => {\r\n setCodeVerificationDialogOpen(true);\r\n dispatch(EmailVerificationActions.Clear(!isReturningUser));\r\n setCompareError(false);\r\n setExistingError(false);\r\n setIsValidEmailError(false);\r\n setCodeVerificationPreferredEmailDialogOpen(true);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch]);\r\n const onDismissPreferredEmailCompletion = useCallback(() => {\r\n setPreferredEmailAddressUpdate(newPreferredEmailUpdate);\r\n setCompletionPreferredEmaiDialogOpen(true);\r\n setCodeVerificationPreferredEmailDialogOpen(true);\r\n setPreferredEmailUpdated(false);\r\n setPreferredEmailVerified(false);\r\n }, [newPreferredEmailUpdate]);\r\n\r\n const onDeleteAccount = useCallback(() => {\r\n deleteProfile();\r\n setIsUnlinkAcctClose(true);\r\n }, [deleteProfile]);\r\n\r\n const [UpdateWorkEmailAddress] = useEndpointActions([UpdateWorkEmailAddressActions]);\r\n const [VerifyWorkEmailAddress] = useEndpointActions([VerifyWorkEmailAddressActions]);\r\n const [VerificationCode] = useEndpointActions([VerificationCodeActions]);\r\n\r\n const VerifyUpdatedEmail = useCallback(\r\n (newWorkEmailAddress: string, compareEmailAddress: string, isValidEmailError: boolean) => {\r\n if (isValidEmailError) {\r\n setIsValidEmailError(isValidEmailError);\r\n setExistingError(false);\r\n setCompareError(false);\r\n } else if (newWorkEmailAddress && compareEmailAddress) {\r\n setIsValidEmailError(isValidEmailError);\r\n setExistingError(newWorkEmailAddress === workEmailAddress);\r\n setCompareError(newWorkEmailAddress !== compareEmailAddress);\r\n if (newWorkEmailAddress === compareEmailAddress && newWorkEmailAddress !== workEmailAddress) {\r\n const params: IUpdateEmailVerificationRequest = {\r\n newWorkEmailAddress: newWorkEmailAddress,\r\n existingWorkEmailAddress: userEmail\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: intl.formatMessage({\r\n defaultMessage: 'Preference: Email Verification for preferred email updation'\r\n }),\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n params\r\n }\r\n });\r\n }\r\n setNewWorkEmailAddressUpdate(newWorkEmailAddress);\r\n sessionStorage.setItem(QueryStringParam.NewWorkEmailUpdate, newWorkEmailAddress);\r\n VerifyWorkEmailAddress(params);\r\n }\r\n } else {\r\n return;\r\n }\r\n },\r\n [VerifyWorkEmailAddress, intl, userEmail, workEmailAddress]\r\n );\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const SendUpdatedWorkEmail = useCallback(\r\n (hashCode: string) => {\r\n if (hashCode) {\r\n const params: IWorkEmailVerificationCodeRequest = {\r\n oldWorkEmailAddress: userEmail,\r\n newWorkEmailAddress: newWorkEmailAddressUpdate,\r\n hashCode: hashCode\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: intl.formatMessage({\r\n defaultMessage: 'Preference: work email updation'\r\n }),\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n params\r\n }\r\n });\r\n }\r\n\r\n UpdateWorkEmailAddress(params);\r\n }\r\n },\r\n [UpdateWorkEmailAddress, intl, newWorkEmailAddressUpdate, userEmail]\r\n );\r\n\r\n const [emailVerification] = useEndpointActions([EmailVerificationActions]);\r\n\r\n const VerifyPreferredEmail = useCallback(\r\n (newEmailAddress: string, compareEmailAddress: string, isValidEmailError: boolean, isValidCompareEmailError: boolean) => {\r\n if (isValidEmailError) {\r\n setIsValidEmailError(isValidEmailError);\r\n setExistingError(false);\r\n setCompareError(false);\r\n } else if (isValidCompareEmailError) {\r\n setCompareError(true);\r\n setIsValidEmailError(isValidEmailError);\r\n } else if (newEmailAddress && compareEmailAddress) {\r\n setIsValidEmailError(isValidEmailError);\r\n setExistingError(preferredEmailAddress === newEmailAddress && newPreferredEmailAddressUpdate === newEmailAddress);\r\n setCompareError(newEmailAddress !== compareEmailAddress);\r\n if (newEmailAddress === compareEmailAddress && newEmailAddress !== newPreferredEmailAddressUpdate) {\r\n const params: IEmailVerificationRequest = {\r\n email: newEmailAddress,\r\n applicationName: applicationName,\r\n locale: userlocale,\r\n eventId: eventId\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: intl.formatMessage({\r\n defaultMessage: 'Preference: Email Verification for preferred email updation'\r\n }),\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n params\r\n }\r\n });\r\n }\r\n setPreferredEmailUpdate(newEmailAddress);\r\n setPreferredEmailUpdated(true);\r\n if (newEmailAddress !== workEmailAddress) {\r\n sessionStorage.setItem(QueryStringParam.PreferredEmailUpdate, newEmailAddress);\r\n emailVerification(params);\r\n }\r\n }\r\n } else {\r\n return;\r\n }\r\n },\r\n [preferredEmailAddress, newPreferredEmailAddressUpdate, applicationName, userlocale, eventId, workEmailAddress, intl, emailVerification]\r\n );\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const SendUpdatedPreferredEmail = useCallback(\r\n (hashCode: string) => {\r\n if (hashCode) {\r\n const params: IVerificationCodeRequest = {\r\n email: newPreferredEmailUpdate,\r\n accessCode: hashCode,\r\n applicationName: applicationName\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Preference: preferred email updation',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n params\r\n }\r\n });\r\n }\r\n dispatch(VerifyWorkEmailAddressActions.Clear());\r\n VerificationCode(params);\r\n setPreferredEmailVerified(true);\r\n }\r\n },\r\n [newPreferredEmailUpdate, applicationName, dispatch, VerificationCode]\r\n );\r\n\r\n const isVerificationError = useSelector((state: IApplicationState) => {\r\n if (state.UserStore.isVerificationError && !isVerified) {\r\n if (document.getElementById('errorDiv')) {\r\n document.getElementById('errorDiv')!.style.display = 'inline-flex';\r\n }\r\n return true;\r\n } else return false;\r\n });\r\n useEffect(() => {\r\n if (!isServerError && !isVerificationError && !isVerified && isError) {\r\n const friendlyError: ICustomErrorMessage = {\r\n description: customErrorMessage?.toString(),\r\n errorCode: customErrorCode?.toString(),\r\n signOutPrompt: false,\r\n method: 'UseEffect-serverError',\r\n page: 'Preference: step2',\r\n acctType: acctType?.toString(),\r\n workEmail: workEmail?.toString(),\r\n emailAddress: userEmailAddress?.toString(),\r\n newEmailAddress: newEmailAddress?.toString()\r\n };\r\n if (ai.appInsights) {\r\n ai.appInsights.trackException({\r\n exception: new Error('ESIUI'),\r\n severityLevel: SeverityLevel.Error,\r\n properties: { friendlyError, isServerError, isVerificationError, isVerified, workEmailAddress }\r\n });\r\n }\r\n history.push('/about/', {\r\n error: friendlyError\r\n });\r\n return;\r\n } else if (isVerified && isPreferredEmailUpdated && isPreferredEmailVerified) {\r\n if (ai.appInsights) {\r\n ai.appInsights.trackTrace({\r\n message: 'Preference: preferred email completion',\r\n severityLevel: SeverityLevel.Information,\r\n properties: {\r\n isVerified,\r\n workEmailAddress\r\n }\r\n });\r\n }\r\n setCodeVerificationPreferredEmailDialogOpen(true);\r\n setPreferredEmailAddressUpdate(newPreferredEmailUpdate);\r\n setCompletionPreferredEmaiDialogOpen(false);\r\n } else {\r\n // TODO: show error message.\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isVerified, isServerError, isVerificationError, isPreferredEmailVerified]);\r\n\r\n const unLinkNextSteps = () => {\r\n if (accountUnlinkingResponse?.statusCode !== 200) {\r\n setSuccessErrorDialogOpen(false);\r\n } else {\r\n signout();\r\n }\r\n };\r\n\r\n const saveChangesText = intl.formatMessage({\r\n defaultMessage: 'Save Changes'\r\n });\r\n const agreeAndContinueText = intl.formatMessage({\r\n defaultMessage: 'Agree and Continue'\r\n });\r\n const localizedSaveButtonText = submitButtonText === 'Save Changes' ? saveChangesText : agreeAndContinueText;\r\n\r\n const isReturningUser = useSelector((state: IApplicationState) => {\r\n if (state.UserStore.profile.preferredEmailAddress) {\r\n return true;\r\n } else return false;\r\n });\r\n\r\n const preferredEmailInfo = intl.formatMessage({\r\n defaultMessage: 'Your preferred email address'\r\n });\r\n\r\n const changeContactInfo = () => {\r\n setContactInfoDialogOpen(false);\r\n };\r\n\r\n const preferredEmailCheckboxTest = intl.formatMessage({\r\n defaultMessage:\r\n 'I consent to receive communications from Microsoft to the email provided above related to my participation in the Enterprise Skills Initiative.'\r\n });\r\n\r\n const handleKoreaCheck = () => {\r\n setKoreaConsent(!koreaConsent);\r\n };\r\n\r\n const KoreaPrivacyMessage = () => {\r\n return (\r\n <div className=\"privacyMessage\">\r\n <label>\r\n <input className=\"ms-Checkbox-checkbox privacyCheckbox\" type=\"checkbox\" checked={koreaConsent} onChange={handleKoreaCheck} />\r\n <FormattedMessage\r\n defaultMessage=\"I\r\n agree to the collection and use of my personal information (required)*:\"\r\n />\r\n </label>\r\n <div className=\"pointContainer\">\r\n <ul className=\"points\">\r\n <li>\r\n <FormattedMessage defaultMessage=\"Items of Personal Information to be Collected: First Name, Last Name, Email Address, Phone Number, Company name and size, Job Title, Country/Region of residence, and any other fields visible on this form.\" />\r\n </li>\r\n <li>\r\n <FormattedMessage defaultMessage=\"Purpose of Collection and Use: Microsoft will use the data for the purpose described on this form.\" />\r\n </li>\r\n <li>\r\n <FormattedMessage description=\"link\" defaultMessage=\"Retention/Use Period of Personal Information:\" />\r\n <b>\r\n {' '}\r\n <FormattedMessage defaultMessage=\"As long as needed to provide the service(s) you are requesting.\" />\r\n </b>\r\n </li>\r\n </ul>\r\n </div>\r\n <p>\r\n <FormattedMessage defaultMessage=\"You have the right to refuse the collection and use of your personal information as set forth above. However, if you refuse, you may not be able to receive the benefits described under Purpose of Collection & Use.\" />\r\n\r\n <span className=\"privacyLink\">\r\n <Link href=\"https://privacy.microsoft.com/en-us/privacystatement\">\r\n <FormattedMessage description=\"link\" defaultMessage=\"Privacy Statement\" />\r\n </Link>\r\n </span>\r\n </p>\r\n\r\n {/* <label><input type='checkbox' checked={koreaConsent} onChange={handleKoreaCheck} /> I Agree</label> */}\r\n </div>\r\n );\r\n };\r\n\r\n const ChinaPIPLMessage = () => {\r\n return (\r\n <div className=\"privacyMessage\">\r\n <FormattedMessage defaultMessage=\"Participation requires transferring your personal data to other countries in which Microsoft operates, including the United States. By submitting this form, you agree to the transfer of your data outside of China.\" />\r\n <p>\r\n <FormattedMessage\r\n defaultMessage=\"{link}\"\r\n values={{\r\n link: <a href=\"https://privacy.microsoft.com/en-us/privacystatement\">Privacy Statement</a>\r\n }}\r\n />\r\n </p>\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n <div className=\"container\">\r\n <div className=\"preferencePage page\">\r\n {isProfileFetching && <LoaderSection />}\r\n {isRedirectToHome && !isProfileFetching && !isError && <Redirect to=\"/landing\" />}\r\n <div className=\"pageWrapper\">\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row\">\r\n <div\r\n className={\r\n isUpdateProfile ? 'ms-Grid-col ms-lg3 sideDivSpacing' : 'ms-Grid-col ms-lg2 ms-hiddenSm ms-hiddenMd ms-hiddenLg'\r\n }\r\n />\r\n {isUpdateProfile && selectedRole && selectedLanguage && selectedTimezone && selectedCountry && (\r\n <div className=\"ms-Grid-col ms-lg1 middleDivSpacing ms-hiddenLgDown\"></div>\r\n )}\r\n {isUpdateProfile && (\r\n <div className=\"ms-Grid-col contentDivSpacing\">\r\n <h1 className=\"headerColorPreference ms-fontSize-24 ms-fontWeight-semilight\">\r\n <FormattedMessage defaultMessage=\"Settings\" />\r\n </h1>\r\n </div>\r\n )}\r\n <div\r\n className={\r\n isUpdateProfile\r\n ? 'ms-Grid-col ms-lg3 sideDivSpacing sbmargin'\r\n : 'ms-Grid-col ms-lg2 ms-hiddenSm ms-hiddenMd ms-hiddenLg'\r\n }\r\n >\r\n {isUpdateProfile && selectedRole && selectedLanguage && selectedTimezone && selectedCountry && (\r\n <div>\r\n <SideBarNavigation></SideBarNavigation>\r\n </div>\r\n )}\r\n </div>\r\n {isUpdateProfile && selectedRole && selectedLanguage && selectedTimezone && selectedCountry && (\r\n <div className=\"ms-Grid-col ms-lg1 middleDivSpacing ms-hiddenLgDown\"></div>\r\n )}\r\n <div className=\"ms-Grid-col contentDivSpacing\">\r\n {!isUpdateProfile && (\r\n <div className=\"preferencesPage preferencesPageHeader\">\r\n <div className=\"welcomeContainer\">\r\n <div className=\"ms-fontWeight-light\">\r\n <h1 className=\"welcomeHeaderWrap\">\r\n <span className=\"welcomeText\">\r\n <FormattedMessage defaultMessage=\"Welcome\" />\r\n </span>\r\n \r\n <span className=\"welcomeUser ms-fontWeight-semibold\">\r\n {account?.firstName !== 'undefined' && account?.firstName}!\r\n </span>\r\n </h1>\r\n </div>\r\n <div className=\"ms-fontWeight-light welcomeTextPadding\">\r\n {!isProfileCompleted && !isProfileExists && (\r\n <div className=\"ms-fontWeight-light welcomeTextPadding\">\r\n <FormattedMessage defaultMessage=\"Select your learning preferences to get started.\" />\r\n </div>\r\n )}\r\n {!isProfileCompleted && isProfileExists && (\r\n <div className=\"ms-fontWeight-light welcomeTextPadding\">\r\n <FormattedMessage defaultMessage=\"Please update your learning preferences, as some options may have changed since your previous selection.\" />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n <div className=\"cardSurface\">\r\n <div>\r\n <ul className=\"preferenceQandA\">\r\n {isUpdateProfile && (\r\n <li>\r\n <div className=\"preferencesPage preferencesPageHeader headerTitle ms-fontWeight-regular\">\r\n <FormattedMessage defaultMessage=\"Select and save your preferred language, time zone, and learning role.\" />\r\n </div>\r\n </li>\r\n )}\r\n\r\n <li>\r\n <div className=\"preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Language\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\">\r\n <Image src={Language} alt=\"\" width=\"100%\" />\r\n </div>\r\n <div className=\"focusRemove settingOptionText\">\r\n <ComboBox\r\n aria-label={intl.formatMessage({\r\n defaultMessage: 'list language Select a preferred Language Asterisk denotes Required'\r\n })}\r\n placeholder={intl.formatMessage({\r\n defaultMessage: 'Select an option'\r\n })}\r\n allowFreeform\r\n autoComplete=\"on\"\r\n label={intl.formatMessage({\r\n defaultMessage: 'Select a preferred Language'\r\n })}\r\n options={data['languages']}\r\n onChange={setLanguageOption}\r\n className=\"dropdownWidth\"\r\n required={true}\r\n selectedKey={selectedLanguageItem}\r\n componentRef={languageDropdown}\r\n useComboBoxAsMenuWidth={true}\r\n calloutProps={{ directionalHint: 5, directionalHintFixed: true, calloutMaxHeight: 350 }}\r\n />\r\n </div>\r\n </div>\r\n </li>\r\n <li>\r\n <div className=\"preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Country\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\">\r\n <Image src={Country} alt=\"\" width=\"100%\" />\r\n </div>\r\n <div className=\"focusRemove settingOptionText\">\r\n <div className=\"languageMessage\">\r\n <div className=\"dropDown\">\r\n <ComboBox\r\n aria-label={intl.formatMessage({\r\n defaultMessage: 'list Country Select a learning Country Asterisk denotes Required'\r\n })}\r\n placeholder={intl.formatMessage({\r\n defaultMessage: 'Select an option'\r\n })}\r\n allowFreeform\r\n autoComplete=\"on\"\r\n label={intl.formatMessage({\r\n defaultMessage: 'Select a learning Country'\r\n })}\r\n options={data['country']}\r\n onChange={setCountryOption}\r\n className=\"dropdownWidth\"\r\n required={true}\r\n selectedKey={selectedCountryItem}\r\n useComboBoxAsMenuWidth={true}\r\n calloutProps={{ directionalHint: 5, directionalHintFixed: true, calloutMaxHeight: 350 }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"privacyMessage\">\r\n <span>{isChinaSelected ? <ChinaPIPLMessage /> : null}</span>\r\n </div>\r\n <div className=\"privacyMessage\">\r\n <span>{isKoreaSelected ? <KoreaPrivacyMessage /> : null}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n <li>\r\n <div className=\"preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Time zone\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\">\r\n <Image src={Timezone} alt=\"\" width=\"100%\" />\r\n </div>\r\n <div className=\"focusRemove settingOptionText\">\r\n <ComboBox\r\n aria-label={intl.formatMessage({\r\n defaultMessage: 'list location Select your time zone Asterisk denotes Required'\r\n })}\r\n placeholder={intl.formatMessage({\r\n defaultMessage: 'Select an option'\r\n })}\r\n allowFreeform\r\n autoComplete=\"on\"\r\n label={intl.formatMessage({\r\n defaultMessage: 'Select your time zone'\r\n })}\r\n options={data['timezones']}\r\n onChange={setTimeZoneOption}\r\n className=\"dropdownWidth\"\r\n required={true}\r\n selectedKey={selectedTimeZoneItem}\r\n useComboBoxAsMenuWidth={true}\r\n calloutProps={{ directionalHint: 5, directionalHintFixed: true, calloutMaxHeight: 350 }}\r\n />\r\n </div>\r\n </div>\r\n </li>\r\n <li>\r\n <div className=\"preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Role\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\">\r\n <Image src={Role} alt=\"\" width=\"100%\" />\r\n </div>\r\n <div className=\"focusRemove settingOptionText\">\r\n <ComboBox\r\n aria-label={intl.formatMessage({\r\n defaultMessage: 'list role Select a learning role Asterisk denotes Required'\r\n })}\r\n placeholder={intl.formatMessage({\r\n defaultMessage: 'Select an option'\r\n })}\r\n allowFreeform\r\n autoComplete=\"on\"\r\n label={intl.formatMessage({\r\n defaultMessage: 'Select a learning role'\r\n })}\r\n options={data['roles']}\r\n onChange={setRoleOption}\r\n className=\"dropdownWidth\"\r\n required={true}\r\n selectedKey={selectedRoleItem}\r\n useComboBoxAsMenuWidth={true}\r\n calloutProps={{ directionalHint: 5, directionalHintFixed: true, calloutMaxHeight: 350 }}\r\n />\r\n </div>\r\n </div>\r\n </li>\r\n\r\n <li>\r\n <div className=\"preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Your Learning Data\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\">\r\n <Image src={ProfileData1} alt=\"\" width=\"100%\" />\r\n </div>\r\n <div className=\"focusRemove settingOptionTextLearn\">\r\n <div className=\"yourLearnData\">\r\n <FormattedMessage defaultMessage=\"Microsoft has a variety of learning experiences which will track your learning activity under the organizational account\" />\r\n ({emailAddress}) \r\n <FormattedMessage\r\n defaultMessage=\"you’ve provided. By using your organizational account, you <b>understand and acknowledge</b> that your email address as well as past and new learning and certification information will be shared with your organization.\"\r\n values={{\r\n b: (chunks: React.ReactNode) => <b>{chunks}</b>\r\n }}\r\n />\r\n </div>\r\n\r\n {isUpdateProfile && (\r\n <div className=\"focusRemove divStyle\">\r\n <Checkbox\r\n ariaLabel={`I agree Microsoft has a variety of learning experiences which will track your learning activity under the\r\n organizational account (${emailAddress}) you’ve provided. By using your organizational account,\r\n you understand and acknowledge that your email address as well as past and new learning and certification\r\n information will be shared with your organization.`}\r\n required={true}\r\n label={intl.formatMessage({\r\n defaultMessage: 'I agree'\r\n })}\r\n checked={isTosChecked}\r\n onChange={setacceptedToS}\r\n className=\"focusRemove checkboxPadding ms-fontWeight-semibold\"\r\n />\r\n <ConfirmDialog\r\n isOpen={!isOpen}\r\n onDismiss={onDismiss}\r\n onNextStepClick={onContinue}\r\n heading={intl.formatMessage({\r\n defaultMessage: 'Discontinue Sharing Information?',\r\n description: 'title'\r\n })}\r\n textToDisplay={intl.formatMessage({\r\n defaultMessage:\r\n 'By continuing, you understand that your name, email address, learning and certification information will no longer be provided to your employer/organization. Please contact your employer regarding any information that was transferred prior to your request to Discontinue sharing your information.',\r\n description: 'subText'\r\n })}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Continue' })}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </li>\r\n\r\n {isUpdateProfile && !isAad && !isMSA && (\r\n <li>\r\n <div className=\"accountManagement preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Account Management\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\">\r\n <Image src={AccountManagement} alt=\"\" width=\"100%\" />\r\n </div>\r\n <div className=\"focusRemove settingOptionTextLearn\">\r\n <div>\r\n <span className=\"ms-fontWeight-semibold signinAccount\">\r\n <FormattedMessage defaultMessage=\"You are signed in as\" />\r\n </span>\r\n <DefaultButton\r\n title={emailAddress}\r\n text={emailAddress}\r\n className=\"ms-fontSize-15 ms-fontWeight-semibold customButton signinDiv\"\r\n ></DefaultButton>\r\n\r\n <DefaultButton\r\n className=\"ms-fontWeight-semibold accountSupport unlinkAccount\"\r\n onClick={openUnlinkAcctModal}\r\n ariaDescription={`Remove ${emailAddress}`}\r\n target=\"_self\"\r\n >\r\n <FormattedMessage defaultMessage=\"Remove\" />\r\n </DefaultButton>\r\n <ConfirmDialog\r\n className=\"acctUnlinkDialog\"\r\n isOpen={isUnlinkAcctClose}\r\n onDismiss={onDismissUnlinkAcct}\r\n onNextStepClick={onDeleteAccount}\r\n checkboxDisplay={true}\r\n checkBoxlLabelText={intl.formatMessage({\r\n defaultMessage: 'I have read the above and agree to remove my linked personal account.'\r\n })}\r\n heading={intl.formatMessage({\r\n defaultMessage: 'Remove your linked personal account?',\r\n description: 'title'\r\n })}\r\n textToDisplay={accountLinkingDialogContent}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Remove' })}\r\n />\r\n <SuccessErrorDialog\r\n isOpen={isSuccessErrorDialogOpen}\r\n onDone={unLinkNextSteps}\r\n isSuccess={accountUnlinkingResponse?.statusCode === 200}\r\n textMessage={\r\n accountUnlinkingResponse?.statusCode !== 200 ? accountLinkingErrorMsg : accountLinkingSuccessMsg\r\n }\r\n buttonText={intl.formatMessage({\r\n defaultMessage: 'OK'\r\n })}\r\n />\r\n </div>\r\n <div className=\"linkedAccountDiv\">\r\n <span className=\"ms-fontWeight-semibold linkedAccount\">\r\n <FormattedMessage defaultMessage=\"Linked work account\" />\r\n </span>\r\n <DefaultButton\r\n title={userEmail}\r\n text={userEmail}\r\n className=\"ms-fontSize-15 ms-fontWeight-semibold customButton signinDiv\"\r\n ></DefaultButton>\r\n </div>\r\n <div className=\"updateAccount\">\r\n <FormattedMessage\r\n description=\"link\"\r\n defaultMessage=\"To update linked accounts, contact <Link>ESI Support</Link>\"\r\n values={{\r\n Link: (chunks: ReactElement) => (\r\n <Link\r\n target=\"_blank\"\r\n className=\"ms-fontWeight-semibold accountSupport\"\r\n href={process.env.REACT_APP_SUPPORT_EMAIL_LINK + locale}\r\n onClick={supportLinkLogging}\r\n >\r\n {chunks}\r\n </Link>\r\n )\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n )}\r\n {isUpdateProfile && isAad && (\r\n <li>\r\n <div className=\"accountManagement preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Account Management\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\">\r\n <Image src={AccountManagement} alt=\"\" width=\"100%\" />\r\n </div>\r\n <div className=\"focusRemove settingOptionTextLearn\">\r\n <div className=\"linkedAccountDivAAD\">\r\n <span className=\"ms-fontWeight-semibold linkedAccount\">\r\n <FormattedMessage defaultMessage=\"You are signed in as\" />\r\n </span>\r\n <DefaultButton\r\n title={userEmail}\r\n text={userEmail}\r\n className=\"ms-fontSize-15 ms-fontWeight-semibold customButton signinDiv\"\r\n ></DefaultButton>\r\n <Link\r\n className=\"ms-fontWeight-semibold changeaccount\"\r\n data-testid=\"changeEmail-link\"\r\n onClick={openUnlinkAcctModal}\r\n target=\"_self\"\r\n >\r\n <FormattedMessage defaultMessage=\"Update my linked work email address\" />\r\n </Link>\r\n <WorkEmailChangeDialog\r\n className=\"workEmailChangeDialog\"\r\n isOpen={isUnlinkAcctClose}\r\n isPreferredEmail={false}\r\n value=\"\"\r\n onDismiss={onDismissUnlinkAcct}\r\n onNextStepClick={VerifyUpdatedEmail}\r\n checkboxDisplay={false}\r\n textboxDisplay={true}\r\n textboxlabelText={userEmail}\r\n heading={intl.formatMessage({\r\n defaultMessage: 'Update my linked work email address',\r\n description: 'title'\r\n })}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Continue' })}\r\n compareError={isCompareError}\r\n existingEmailError={isExistingError}\r\n isValidEmailError={isValidEmailError}\r\n />\r\n <ConfirmCodeDialog\r\n className=\"workEmailChangeDialog\"\r\n isOpen={isCodeVerificationDialogOpen}\r\n value={newWorkEmailAddressUpdate}\r\n onDismiss={onDismissCodeVerification}\r\n onNextStepClick={SendUpdatedWorkEmail}\r\n hashCodeTextboxDisplay={true}\r\n isPreferredEmail={false}\r\n placeholder={intl.formatMessage({\r\n defaultMessage: 'Verification code'\r\n })}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Verify Code' })}\r\n />\r\n <CompletionDialog\r\n className=\"workEmailChangeDialog\"\r\n isOpen={isCompletionDialogOpen}\r\n onDismiss={onDismissCompletion}\r\n textToDisplay={intl.formatMessage({\r\n defaultMessage: 'Your work email address has been updated'\r\n })}\r\n textToDisplayContent={intl.formatMessage({\r\n defaultMessage: 'Please sign out and then sign in with your new work email address'\r\n })}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Sign out' })}\r\n />\r\n <SuccessErrorDialog\r\n isOpen={isSuccessErrorDialogOpen}\r\n onDone={unLinkNextSteps}\r\n isSuccess={accountUnlinkingResponse?.statusCode === 200}\r\n textMessage={\r\n accountUnlinkingResponse?.statusCode !== 200 ? accountLinkingErrorMsg : accountLinkingSuccessMsg\r\n }\r\n buttonText={intl.formatMessage({\r\n defaultMessage: 'OK'\r\n })}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n )}\r\n\r\n {isConsentRequired && (\r\n <li>\r\n <div className=\"preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Cookie Management\" />\r\n </div>\r\n <div className=\"focusRemove imageSize\"> </div>\r\n <div className=\"focusRemove settingOptionText\">\r\n <Link\r\n className=\"ms-fontWeight-semibold changeaccount\"\r\n data-testid=\"manageCookies-link\"\r\n onClick={openManageCookiesModal}\r\n target=\"_self\"\r\n >\r\n <FormattedMessage defaultMessage=\"Manage cookie preferences\" />\r\n </Link>\r\n </div>\r\n </div>\r\n </li>\r\n )}\r\n {!disableEsiTerms && (\r\n <li className=\"termsSectionContainer\">\r\n <div className=\"preferenceListItem\">\r\n <div className=\"focusRemove ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Terms & Conditions\" />\r\n </div>\r\n <div className=\"focusRemove termsConditionsText\">\r\n <div className=\"yourLearnData\">\r\n <FormattedMessage defaultMessage=\"Your use of the LxP and participation in and use of ESI training, testing, learning opportunities and content is governed by the \" />\r\n <Link className=\"termsConditionLink\" data-testid=\"terms-link\" onClick={openESITerms} target=\"_self\">\r\n <FormattedMessage defaultMessage=\"ESI Learning Opportunities Agreement\" />\r\n </Link>{' '}\r\n &\r\n <Link\r\n className=\"termsConditionLink\"\r\n data-testid=\"terms-guidelines\"\r\n onClick={openProgramGuideLine}\r\n targe=\"_self\"\r\n >\r\n <FormattedMessage defaultMessage=\"ESI Program Guidelines.\" />\r\n </Link>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n )}\r\n <li className=\"contactInfoSectionContainer\">\r\n <div className=\"contactInfo\">\r\n <div className=\"ms-fontSize-15 ms-fontWeight-semibold settingOption\">\r\n <FormattedMessage defaultMessage=\"Contact Information\" />\r\n </div>\r\n <div className=\"contactInfoSection\">\r\n <PreferredInfo\r\n info={preferredEmailInfo}\r\n value={newPreferredEmailAddressUpdate}\r\n isReturningUser={isReturningUser}\r\n changeContactInfo={changeContactInfo}\r\n />\r\n <WorkEmailChangeDialog\r\n className=\"workEmailChangeDialog\"\r\n isOpen={isContactInfoDialogOpen}\r\n isPreferredEmail={true}\r\n value={newPreferredEmailAddressUpdate}\r\n onDismiss={onDismissUpdateContactInfo}\r\n onNextStepClick={VerifyPreferredEmail}\r\n textboxDisplay={true}\r\n heading={\r\n isReturningUser\r\n ? intl.formatMessage({\r\n defaultMessage: 'Change my preferred email address',\r\n description: 'title'\r\n })\r\n : intl.formatMessage({\r\n defaultMessage: 'Add my preferred email address',\r\n description: 'title'\r\n })\r\n }\r\n checkboxDisplay={true}\r\n checkBoxlLabelText={preferredEmailCheckboxTest}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Continue' })}\r\n compareError={isCompareError}\r\n existingEmailError={isExistingError}\r\n isValidEmailError={isValidEmailError}\r\n />\r\n <ConfirmCodeDialog\r\n className=\"workEmailChangeDialog\"\r\n isOpen={isCodeVerificationPreferredEmailDialogOpen}\r\n value={newPreferredEmailUpdate}\r\n onDismiss={onDismissPreferredEmailCodeVerification}\r\n onNextStepClick={SendUpdatedPreferredEmail}\r\n hashCodeTextboxDisplay={true}\r\n isPreferredEmail={true}\r\n placeholder={intl.formatMessage({\r\n defaultMessage: 'Please enter the verification code'\r\n })}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Verify Code' })}\r\n />\r\n <CompletionDialog\r\n className=\"workEmailChangeDialog\"\r\n isOpen={isCompletionPreferredEmailDialogOpen}\r\n onDismiss={onDismissPreferredEmailCompletion}\r\n textToDisplay={intl.formatMessage({\r\n defaultMessage: 'Your preferred email address has been updated'\r\n })}\r\n onNextStepText={intl.formatMessage({ defaultMessage: 'Done' })}\r\n />\r\n <SuccessErrorDialog\r\n isOpen={isSuccessErrorDialogOpen}\r\n onDone={unLinkNextSteps}\r\n isSuccess={accountUnlinkingResponse?.statusCode === 200}\r\n textMessage={\r\n accountUnlinkingResponse?.statusCode !== 200 ? accountLinkingErrorMsg : accountLinkingSuccessMsg\r\n }\r\n buttonText={intl.formatMessage({\r\n defaultMessage: 'OK'\r\n })}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"focusRemove buttonContainer\">\r\n <DialogFooter>\r\n <PrimaryButton\r\n disabled={\r\n !selectedLanguageItem ||\r\n !selectedRoleItem ||\r\n !selectedTimeZoneItem ||\r\n !selectedCountryItem ||\r\n !newPreferredEmailAddressUpdate ||\r\n (isPreferredEmailUpdated && !isVerified) ||\r\n (isKoreaSelected && !koreaConsent)\r\n }\r\n allowDisabledFocus={true}\r\n text={localizedSaveButtonText}\r\n onClick={register}\r\n className={\r\n !selectedLanguageItem ||\r\n !selectedRoleItem ||\r\n !selectedTimeZoneItem ||\r\n !selectedCountryItem ||\r\n !newPreferredEmailAddressUpdate ||\r\n (isPreferredEmailUpdated && !isVerified) ||\r\n (isKoreaSelected && !koreaConsent)\r\n ? 'primaryButtonDisabled customButton'\r\n : 'ms-fontWeight-semibold customButton'\r\n }\r\n />\r\n </DialogFooter>\r\n </div>\r\n </li>\r\n </ul>\r\n {!disableEsiTerms && isTermsDialogOpen && (\r\n <ESITermsDialog\r\n isOpen={!isTermsDialogOpen}\r\n titleToDisplay=\"ESI Learning Opportunities Agreement\"\r\n textToDisplay={termsConditionsHtml}\r\n className=\"termsAndConditionsDialog\"\r\n onDismiss={closeDialog}\r\n />\r\n )}\r\n\r\n {!disableEsiTerms && isGuidelinesDialogOpen && (\r\n <ESITermsDialog\r\n isOpen={!isGuidelinesDialogOpen}\r\n titleToDisplay=\"ESI Program Guidelines\"\r\n textToDisplay={programGuidelinesHtml}\r\n className=\"guideLineDialog\"\r\n onDismiss={closeDialog}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n );\r\n};\r\nexport default Preferences;\r\n","module.exports = __webpack_public_path__ + \"static/media/Language.353c0ffd.svg\";","module.exports = __webpack_public_path__ + \"static/media/Profile_CountryRegion.038051cd.svg\";","module.exports = __webpack_public_path__ + \"static/media/Country.16ed14f8.svg\";","module.exports = __webpack_public_path__ + \"static/media/Role.4ee6ffa8.svg\";","module.exports = __webpack_public_path__ + \"static/media/ProfileData1.75ae7a8f.svg\";","module.exports = __webpack_public_path__ + \"static/media/Profile_Acct.4e2e70c1.svg\";","import React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport { Dialog, DialogType, PrimaryButton } from '@fluentui/react';\r\nimport './ConfirmDialog.scss';\r\nimport './WorkEmailChangeDialog.scss';\r\nimport './CompletionDialog.scss';\r\nimport { useId } from '@uifabric/react-hooks';\r\nimport { shallowEqual, useSelector } from 'react-redux';\r\n\r\nimport { LoaderSection } from '../Loading/LoaderSection';\r\nimport { IApplicationState } from '../../store';\r\n\r\ninterface IComponentProps {\r\n isOpen: boolean;\r\n onDismiss: () => void;\r\n subText?: string;\r\n onNextStepText: string;\r\n checkboxDisplay?: boolean;\r\n checkBoxlLabelText?: string;\r\n textboxDisplay?: boolean;\r\n textboxlabelText?: string;\r\n className?: string;\r\n textToDisplay?: string;\r\n textToDisplayContent?: string;\r\n}\r\n\r\nexport const CompletionDialog: React.FunctionComponent<IComponentProps> = props => {\r\n const { isOpen, onDismiss, subText, onNextStepText, className, textToDisplay, textToDisplayContent } = props;\r\n const intl = useIntl();\r\n const isFetching = useSelector<IApplicationState, boolean>(state => state.UserStore.isFetching, shallowEqual);\r\n const onCancel = () => {\r\n onDismiss();\r\n };\r\n\r\n const onContinue = () => {\r\n onDismiss();\r\n };\r\n\r\n const dialogContentProps = {\r\n type: DialogType.close,\r\n closeButtonAriaLabel: 'Close',\r\n subText: subText\r\n };\r\n const labelId: string = useId('dialogLabelCongrats');\r\n const modalProps = React.useMemo(\r\n () => ({\r\n containerClassName: 'dialogContent',\r\n titleAriaId: labelId\r\n }),\r\n [labelId]\r\n );\r\n const congratsHeading = intl.formatMessage({ defaultMessage: 'Congratulations!' });\r\n return (\r\n <>\r\n <Dialog\r\n className={`confirmDialog ${className} completionDialog`}\r\n hidden={isOpen}\r\n onDismiss={onCancel}\r\n dialogContentProps={dialogContentProps}\r\n modalProps={modalProps}\r\n >\r\n {isFetching && <LoaderSection />}\r\n <div className=\"completionDialogContent\">\r\n <h2 className=\"ms-fontWeight-semibold completionDialogHeader\">\r\n {congratsHeading}\r\n <label id={labelId} className=\"ms-screenReaderOnly hideScreenReader \" aria-hidden={true}>\r\n {congratsHeading}\r\n </label>\r\n </h2>\r\n <span>\r\n {textToDisplay}\r\n <span className=\"ms-fontWeight-bold\">{textToDisplayContent}</span>\r\n </span>\r\n <div className=\"ms-Grid actions\">\r\n <div className=\"ms-Grid-row\">\r\n <div className=\"ms-Grid-col ms-sm12 doneButtonMargin\">\r\n <PrimaryButton onClick={onContinue} text={onNextStepText} />\r\n </div>{' '}\r\n </div>\r\n </div>\r\n </div>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n"],"sourceRoot":""}