{"version":3,"sources":["components/Features/public/ForgotUsername/styles.module.css","components/Features/protected/Accounts/Transactions/Contributions/AddBankAccount/CheckExample.gif","components/Features/protected/Accounts/Transactions/Contributions/GiactRejectionModal/styles.module.css","components/Features/protected/Dashboard/BeneficiaryAgeBarChart/styles.module.css","components/Features/protected/ManageData/SetupData/styles.module.css","components/Features/protected/ManageData/PortfolioDataDownload/languageConfig.js","components/Features/protected/Multifactor/2FAGraphic.png","utils/helpers/error_handler.js","components/Features/protected/ManageUsers/NewUser/styles.module.css","components/Features/protected/LPOASettings/styles.module.css","components/Features/protected/Accounts/AccountDetails/PrrCalculator/styles.module.css","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/styles.module.css","components/Features/protected/Accounts/Gifting/styles.module.css","components/Features/protected/Accounts/Transactions/styles.module.css","components/AppRoot/Navigation/Header/styles.module.css","components/Features/protected/ManageLPOA/styles.module.css","components/Features/protected/Accounts/Transactions/Transfers/AccountDetailsCard/styles.module.css","components/Features/protected/Accounts/Documents/styles.module.css","components/Features/protected/ManageData/SetupData sync /^/.//images.*$","components/Features/protected/ManageData/SetupData/images/portfolioFormats/Morningstar.png","components/Features/protected/ManageData/SetupData/images/portfolioFormats/PortfolioCenter.png","components/Features/protected/ManageData/SetupData/images/providers/Addepar.png","components/Features/protected/ManageData/SetupData/images/providers/Advyzon.png","components/Features/protected/ManageData/SetupData/images/providers/Assetbook.png","components/Features/protected/ManageData/SetupData/images/providers/BackOfficeSupportService.png","components/Features/protected/ManageData/SetupData/images/providers/BlackDiamondPerformanceReporting.png","components/Features/protected/ManageData/SetupData/images/providers/BlackDiamondPerformanceReporting_OLD.png","components/Features/protected/ManageData/SetupData/images/providers/Capitect.png","components/Features/protected/ManageData/SetupData/images/providers/EnvestnetTamarac.png","components/Features/protected/ManageData/SetupData/images/providers/FocusPartnersAdvisorSolution.png","components/Features/protected/ManageData/SetupData/images/providers/InteractiveAdvisorySoftware.png","components/Features/protected/ManageData/SetupData/images/providers/OrionAdvisorServices.png","components/Features/protected/ManageData/SetupData/images/providers/PanoramixLogoSquare.png","components/Features/protected/ManageData/SetupData/images/providers/Quovo.png","components/Features/protected/ManageData/SetupData/images/providers/RightCapital_Logo.png","components/Features/protected/ManageData/SetupData/images/providers/SummitLogo.png","components/Features/protected/ManageData/SetupData/images/providers/eMoney.png","utils/ga/analytics.js","components/Features/protected/Dashboard/DashboardMetricsToolbar/styles.module.css","components/Features/protected/MyInfo/PersistentDrawers/styles.module.css","components/Features/protected/MyInfo/Permissions/styles.module.css","components/Features/protected/Reports/RunReport/styles.module.css","components/Features/protected/AppTour/styles.module.css","components/AppRoot/Navigation/Sidenav/styles.module.css","components/Features/protected/MyInfo/NotificationToggles/styles.module.css","utils/ga/helpers.js","components/AppRoot/Navigation/Header/NameMenu/styles.module.css","components/Features/protected/BulkOptionChange/styles.module.css","utils/helpers/api_handler.js","components/Features/protected/Accounts/Transactions/Contributions/AddBankAccount/styles.module.css","components/Features/protected/Accounts/AccountDetails/PrrCalculator/LearnMore/styles.module.css","components/Features/protected/ManageUsers/PrimaryContact/styles.module.css","components/Features/protected/ManageData/PortfolioDataDownload/styles.module.css","components/Features/protected/Accounts/Transactions/Contributions/NewSpecial/styles.module.css","components/Features/protected/Accounts/AccountsList/styles.module.css","components/Features/protected/Accounts/Transactions/Contributions/TermsConditions/styles.module.css","components/Features/protected/ManageData/SetupData/BackOfficeAuthorization/styles.module.css","components/Features/protected/ManageData/SetupData/ExternalProvidersCard/styles.module.css","components/Features/protected/Accounts/Transactions/Contributions/NewRecurring/styles.module.css","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/styles.module.css","components/Features/protected/Accounts/Transactions/Contributions/NewOneTime/styles.module.css","components/Features/protected/Accounts/Transactions/Contributions/styles.module.css","components/Features/protected/Accounts/Transactions/OptionChanges/TermsAndConditions/styles.module.css","components/Features/protected/Accounts/Transactions/Withdrawals/styles.module.css","components/Features/protected/Accounts/Gifting/LearnMore/styles.module.css","components/Features/protected/Reports/ReportsList/styles.module.css","components/Features/protected/ManageData/SetupData/ProviderTile/styles.module.css","components/Features/protected/Accounts/AccountDetails/styles.module.css","components/Features/protected/Accounts/Transactions/OptionChanges/styles.module.css","components/Features/protected/Accounts/Transactions/Transfers/Transfer/styles.module.css","components/Features/protected/Accounts/Transactions/Transfers/styles.module.css","components/Features/protected/NewAccounts/NewAccountsList/BulkUploadModal/styles.module.css","components/Features/protected/NewAccounts/NewAccountReview/StaticErrorResolveModal/styles.module.css","components/Features/protected/ManageUsers/AssignAccounts/styles.module.css","components/Features/protected/MyInfo/TwoFA/styles.module.css","components/Features/protected/BulkStatementDownload/styles.module.css","components/Features/protected/MyInfo/styles.module.css","components/Features/protected/Multifactor/styles.module.css","components/AppRoot/Navigation/constants.js","components/AppRoot/Navigation/actions.js","components/Features/protected/ManageData/SetupData/images/imagePaths.js","components/Features/protected/Accounts/TransactionDetailsModal/styles.module.css","components/Features/protected/PageNotFound/styles.module.css","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/DualPushButtonSwitch/styles.module.css","components/Features/protected/Accounts/AccountInvestmentPath/styles.module.css","components/Features/protected/Accounts/styles.module.css","components/Features/protected/NewAccounts/NewAccountReview/styles.module.css","components/Features/protected/NewAccounts/AddSingleAccount/styles.module.css","components/Features/protected/Reports/ReportsList/ReportCard/styles.module.css","components/Features/protected/ManageData/AccountsToExport/styles.module.css","components/Features/protected/ManageData/SetupData/PortfolioDataCard/styles.module.css","components/AppRoot/Navigation/styles.module.css","components/Features/protected/Accounts/Transactions/Withdrawals/WithdrawalDetails/styles.module.css","utils/helpers/middleware.js","components/AppRoot/Navigation/reducer.js","components/AppRoot/StaticResources/constants.js","components/AppRoot/StaticResources/reducer.js","components/Features/protected/Accounts/constants.js","components/Features/protected/Accounts/Transactions/Contributions/constants.js","components/Features/protected/Accounts/reducer.js","components/Features/protected/Templates/constants.js","components/Features/protected/Templates/reducer.js","components/Features/protected/NewAccounts/constants.js","components/Features/protected/NewAccounts/reducer.js","components/Features/protected/Dashboard/constants.js","components/Features/protected/Dashboard/reducer.js","components/Features/protected/ManageLPOA/constants.js","components/Features/protected/ManageLPOA/reducer.js","components/Features/protected/ManageUsers/constants.js","components/Features/protected/ManageUsers/reducer.js","components/Features/protected/MyInfo/constants.js","components/Features/protected/MyInfo/reducer.js","components/Features/protected/Reports/constants.js","components/Features/protected/Reports/reducer.js","components/Features/protected/ManageData/constants.js","components/Features/protected/ManageData/reducer.js","components/Features/protected/Multifactor/constants.js","components/Features/protected/Multifactor/reducer.js","reducers.js","utils/config/constants.js","utils/config/material_ui_theme.js","utils/helpers/timer_real_time.js","components/AppRoot/Navigation/LogoutWarning.js","components/AppRoot/Navigation/ProtectedRoute.js","components/AppRoot/Navigation/PublicRoute.js","components/AppRoot/Navigation/Header/NameMenu/index.js","components/Features/protected/ManageData/actions.js","components/AppRoot/StaticResources/actions.js","utils/ga/constants.js","utils/ga/events/PageNotFound.events.js","utils/ga/events/AppTour.events.js","utils/ga/events/Navigation.events.js","utils/ga/events/CommonPackage.events.js","utils/ga/events/Transactions.events.js","utils/ga/index.js","components/AppRoot/Navigation/Header/index.js","components/AppRoot/Navigation/Sidenav/SidenavMenuOption/index.js","components/AppRoot/Navigation/Sidenav/index.js","components/Features/public/Login/Welcome/index.js","components/Features/Banner/index.js","components/Features/public/Login/index.js","components/Features/public/ActivateUser/index.js","components/Features/public/ActivateUser/actions.js","components/Features/public/ActivateUser/constants.js","components/Features/public/ForgotPassword/index.js","components/Features/public/ForgotPassword/actions.js","components/Features/public/ForgotPassword/constants.js","components/Features/public/ResetPassword/index.js","components/Features/public/ResetPassword/actions.js","components/Features/public/ResetPassword/constants.js","components/Features/public/ForgotUsername/index.js","components/Features/public/ForgotUsername/actions.js","components/Features/public/ForgotUsername/constants.js","components/Features/protected/Accounts/helpers.js","components/Features/protected/Accounts/actions.js","components/Features/protected/Accounts/TransactionDetailsModal/index.js","components/Features/protected/Accounts/AccountDetails/PrrCalculator/text.js","components/Features/protected/Accounts/AccountDetails/PrrCalculator/LearnMore/index.js","utils/helpers/form_validation.js","components/Features/protected/Accounts/AccountDetails/PrrCalculator/index.js","components/Features/protected/Accounts/AccountDetails/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/constants.js","utils/helpers/data_filters.js","components/Features/protected/Accounts/AccountsList/index.js","components/Features/protected/PageNotFound/index.js","components/Features/protected/Accounts/Transactions/Contributions/GiactRejectionModal/index.js","components/Features/protected/Accounts/Transactions/Contributions/AddBankAccount/index.js","components/Features/protected/Accounts/Transactions/Contributions/ContributionDetails/index.js","components/Features/protected/Accounts/Transactions/Contributions/TermsConditions/index.js","components/Features/protected/Accounts/Transactions/Contributions/NewOneTime/index.js","components/Features/protected/Accounts/Transactions/Contributions/NewSpecial/index.js","components/Features/protected/Accounts/Transactions/Contributions/NewRecurring/index.js","components/Features/protected/Accounts/Transactions/Contributions/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/AccountsInGroup/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/constants.js","components/Features/protected/Accounts/Transactions/OptionChanges/TermsAndConditions/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/OptionChangeDetails/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/index.js","components/Features/protected/Accounts/Transactions/AvailableBalanceInfo/index.js","components/Features/protected/Accounts/Transactions/Transfers/AccountDetailsCard/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/DualPushButtonSwitch/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/typeConstants.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TargetAccount/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferTermsAndConditions/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/index.js","components/Features/protected/Accounts/Transactions/Transfers/Dialogs/FullBalanceDialog.js","components/Features/protected/Accounts/Transactions/Transfers/Dialogs/OptionChangeDialog.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/errorConstants.js","components/Features/protected/Accounts/Transactions/Transfers/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/AccountsInGroup/index.js","utils/helpers/sanitation.js","components/Features/protected/StateDropdown/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/WithdrawalDetails/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/index.js","components/Features/protected/Accounts/Documents/index.js","components/Features/protected/Accounts/Gifting/LearnMore/index.js","components/Features/protected/Accounts/Gifting/index.js","components/Features/protected/Templates/actions.js","components/Features/protected/Templates/TemplateView/index.js","components/Features/protected/Accounts/AccountInvestmentPath/index.js","components/Features/protected/Accounts/index.js","components/Features/protected/Dashboard/DashboardHeader/index.js","components/Features/protected/Dashboard/actions.js","components/Features/protected/Dashboard/DashboardMetricsToolbar/index.js","components/Features/protected/Dashboard/BeneficiaryAgeBarChart/index.js","components/Features/protected/Dashboard/index.js","components/Features/protected/Templates/TemplatesList/TemplateAccountsList/index.js","components/Features/protected/Templates/TemplatesList/TemplateActivate/index.js","components/Features/protected/Templates/TemplatesList/TemplateDeactivate/index.js","components/Features/protected/Templates/TemplatesList/index.js","components/Features/protected/Templates/TemplateCopy/index.js","components/Features/protected/Templates/TemplateNewCustom/index.js","components/Features/protected/Templates/index.js","utils/helpers/files.js","components/Features/protected/NewAccounts/actions.js","components/Features/protected/NewAccounts/NewAccountsList/BulkUploadModal/index.js","components/Features/protected/NewAccounts/AccountStatus/index.js","components/Features/protected/NewAccounts/NewAccountsList/index.js","components/Features/protected/NewAccounts/NewAccountReview/constants.js","components/Features/protected/NewAccounts/NewAccountReview/ConflictErrorResolveModal/index.js","components/Features/protected/NewAccounts/NewAccountReview/StaticErrorResolveModal/index.js","components/Features/protected/NewAccounts/NewAccountForm/index.js","components/Features/protected/NewAccounts/NewAccountReview/index.js","components/Features/protected/NewAccounts/AddSingleAccount/index.js","components/Features/protected/NewAccounts/index.js","components/Features/protected/ManageLPOA/actions.js","utils/config/permissions_details.js","components/Features/protected/ManageLPOA/index.js","components/Features/protected/ManageUsers/actions.js","components/Features/protected/ManageUsers/UsersList/index.js","components/Features/protected/ManageUsers/AssignAccounts/index.js","components/Features/protected/ManageUsers/NewUser/index.js","components/Features/protected/ManageUsers/UserDetails/index.js","components/Features/protected/ManageUsers/PrimaryContact/index.js","components/Features/protected/ManageUsers/index.js","components/Features/protected/MyInfo/PersistentDrawers/index.js","components/Features/protected/MyInfo/Username/index.js","components/Features/protected/MyInfo/actions.js","components/Features/protected/MyInfo/Password/index.js","components/Features/protected/Multifactor/Registration/RegisterPhoneAndMethod/index.js","components/Features/protected/Multifactor/actions.js","components/Features/protected/Multifactor/SubmitToken/index.js","components/Features/protected/Multifactor/Registration/VerifySmsOrCall/index.js","components/Features/protected/Multifactor/Registration/RegisterAuthenticator/index.js","components/Features/protected/MyInfo/TwoFA/index.js","components/Features/protected/MyInfo/Email/index.js","components/Features/protected/MyInfo/PhoneNumbers/index.js","components/Features/protected/MyInfo/Permissions/index.js","components/Features/protected/MyInfo/NotificationToggles/index.js","components/Features/protected/MyInfo/NameHeaderWithEdit/index.js","components/Features/protected/MyInfo/index.js","components/Features/protected/Reports/actions.js","components/Features/protected/Reports/ReportsList/ReportCard/index.js","components/Features/protected/Reports/ReportsList/index.js","components/Features/protected/Reports/RunReport/index.js","components/Features/protected/Reports/index.js","components/Features/protected/ManageData/AccountsToExport/index.js","components/Features/protected/ManageData/SetupData/ProviderTile/index.js","components/Features/protected/ManageData/SetupData/BackOfficeAuthorization/index.js","components/Features/protected/ManageData/SetupData/ExternalProvidersCard/index.js","components/Features/protected/ManageData/SetupData/PortfolioDataCard/index.js","components/Features/protected/ManageData/SetupData/index.js","components/Features/protected/ManageData/PortfolioDataDownload/index.js","components/Features/protected/ManageData/index.js","components/Features/protected/LPOASettings/index.js","components/Features/protected/BulkOptionChange/index.js","components/Features/protected/AppTour/index.js","components/Features/protected/BulkStatementDownload/index.js","components/Features/protected/BulkStatementDownload/actions.js","components/Features/protected/BulkStatementDownload/constants.js","components/Features/protected/Multifactor/Registration/Confirmation/index.js","components/Features/protected/Multifactor/Registration/index.js","components/Features/protected/Multifactor/VerifyIdentity/index.js","components/Features/protected/Multifactor/Authentication/PhoneMethods/index.js","components/Features/protected/Multifactor/Authentication/PhoneAuthenticate/index.js","components/Features/protected/Multifactor/Authentication/index.js","components/Features/protected/Multifactor/Welcome/index.js","components/Features/protected/Multifactor/index.js","utils/helpers/title_handler.js","utils/helpers/error_boundary.js","components/AppRoot/Navigation/index.js","components/AppRoot/index.js","index.js","components/AppRoot/StaticResources/messages.js","components/Features/Banner/styles.module.css","components/Features/public/Login/styles.module.css","components/Features/public/ActivateUser/styles.module.css","components/Features/public/ResetPassword/styles.module.css","components/Features/protected/Accounts/Transactions/Contributions/ContributionDetails/styles.module.css","components/Features/protected/Dashboard/DashboardHeader/styles.module.css","components/Features/protected/Templates/TemplatesList/styles.module.css","components/Features/protected/NewAccounts/AccountStatus/styles.module.css","components/Features/protected/NewAccounts/NewAccountReview/ConflictErrorResolveModal/styles.module.css","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferTermsAndConditions/styles.module.css","components/Features/protected/Accounts/Transactions/OptionChanges/OptionChangeDetails/styles.module.css","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/styles.module.css","components/Features/protected/NewAccounts/NewAccountForm/styles.module.css","components/Features/protected/ManageUsers/UserDetails/styles.module.css","components/Features/public/ForgotPassword/styles.module.css"],"names":["module","exports","Morningstar","interfaceName","toolName","PortfolioCenter","persistClientErrors","error","state","store","getState","params","StackTrace","JSON","stringify","StateData","session","token","POSTrequest","catch","console","warn","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","ga","window","stripQuery","queryDimensionIndex","indexFilename","trailingSlash","urlFieldsFilter","fieldsObj","parseUrl","page","urlScrub","pathname","sendEvent","_ref","eventCategory","eventAction","eventLabel","sendPageView","url","bindGenerator","creator","wrappingFn","apply","this","arguments","connectGA","generators","resolvedGenerators","unresolvableKeys","forEach","key","fn","length","response","Array","fill","tryResolvingValue","push","actionKeysPartition","partition","boundGenerators","concat","join","path","match","accountRoute","replace","frontendConfig","configureRequest","apiPath","sessionStorage","getItem","axios","defaults","headers","common","Authorization","post","api","GETrequest","config","undefined","endPoint","get","then","res","err","data","PUTrequest","put","DELETErequest","delete","INITIALIZE_STORE","BROWSER_WARNING","MOBILE_WARNING","USER_LOGIN","USERNAME_CHANGE","ADVISOR_NAME_UPDATE","GET_USER_PREFERENCES","SAVE_USER_PREFERENCE","USER_PREFERENCE_KEYS","hasSeenTour","REFRESH_CLAIMS","RESET_CLAIMS","TOGGLE_SPLASH_HAS_DISPLAYED","REASONS_BLOCKED","TWO_FACTOR_REGISTRATION","TWO_FACTOR_AUTHENTICATION","TWO_FACTOR_STATUS","COMPLETED","PENDING","BYPASSED","UNAVAILABLE","REQUIRED","TWO_FACTOR_TYPES","REGISTRATION","AUTHENTICATION","PROTECTED","UPDATE","userLogin","type","payload","userLogout","setBrowserWarning","setMobileWarning","clearStore","refreshClaims","resetClaims","usernameChange","username","password","advisorNameUpdate","name","getUserPreferences","saveUserPreference","userId","value","UserId","Identifier","Value","toggleSplashHasDisplayed","1","3","6","8","10","12","15","22","25","27","29","34","38","42","apiResponse","next","action","errorMsg","warningMsg","infoMsg","inputMsg","status","location","href","request","responseType","msg","MessageType","Message","Field","dispatch","_ref2","_ref3","statusText","updatedAction","Promise","reject","notificationShow","warning","info","initialState","isValid","claims","accountBlocked","reasonBlocked","is2FABypassed","showBrowserWarning","showMobileWarning","showSideNav","splashHasDisplayed","userDetails","permissions","lpoaDetails","address","userPreferences","mapClaims","email","EmailAddress","previousLogin","LastLogin","properCase","Name","pin","Pin","lpoaNumber","AuthorizedRepresentativeNumber","firmName","AuthorizedRepresentativeName","street1","AuthorizedRepresentativeMailingStreetAddress1","street2","AuthorizedRepresentativeMailingStreetAddress2","street3","AuthorizedRepresentativeMailingStreetAddress3","city","AuthorizedRepresentativeMailingCity","AuthorizedRepresentativeMailingState","zip","AuthorizedRepresentativeMailingPostalCode","isFirmEntity","AuthorizedRepresentativeType","contributions","parse","AllowContribute","optionChanges","AllowOptionChange","transfers","AllowTransfer","withdrawals","AllowWithdraw","viewStateTaxDocs","AllowViewStateTaxDocuments","viewFedTaxDocs","AllowViewFederalTaxDocuments","adminReports","AdminReports","accountReports","AccountReports","editTemplates","TemplateEdit","setupData","DataImportSetup","downloadData","DataImport","manageUsers","AdvisorEdit","editLPOAContactInfo","EditFirmContactInfo","editLPOASettings","EditFirmAdvisorDefaults","constructClaims","reduce","result","claim","m_type","m_value","PASSWORD_REQUIREMENTS_GET","RELATIONSHIPS_GET","OPTIONS_GET","CUSTOM_OPTIONS_GET","POA_LEVELS_GET","AGE_BRACKETS_GET","ENVIRONMENT_VARIABLES_GET","STATIC_DOCUMENTS_GET","WEB_MESSAGES_GET","SET_LOADING_PUBLIC_VARS","GET_NEW_AGE_BASED_SCHEMA","GET_NEW_STATIC_SCHEMA","BANNER_LOCATIONS","LOGIN","HOME","CONTRIBUTIONS_NEW","CONTRIBUTIONS_EDIT","OPTION_CHANGES_NEW","OPTION_CHANGES_EDIT","OPTION_CHANGES_VIEW","BULK_OPTION_CHANGE","TRANSFERS_NEW","TRANSFERS_EDIT","WITHDRAWALS_NEW","NEW_ACCOUNTS","NEW_ACCOUNTS_ADD","TEMPLATE_MSG","BOSP_MSG","GIFTING_MSG","ageBrackets","environmentVars","downloadPortfolioData","oldestSelectableDate","contributionVariables","usStates","withdrawalVariables","paymentTypes","recipientTypes","sellDates","withdrawalTypes","environmentColor","AccountAccessNoFrontEndActivityTimeout","LogoutWarningTimeout","ServerDateTime","Date","AnnualGiftExclusionAmount","MaximumBeneficiaryDeposit","MaximumBenficiaryAccountValueForGift","newAgeBasedSchema","TemplateName","FundCategories","newStaticSchema","customStaticOptions","customAgeBasedOptions","options","passwordRequirements","poaLevels","relationships","documents","webMessages","values","obj","bannerLocation","loadingPublicVars","StaticResourcesReducer","newState","cloneDeep","option","formattedOption","OptionId","isCustom","IsCustom","my529Fee","AssetFeeRate","optionType","OptionType","isStaticOrEnrollment","allocations","OptionAllocations","funds","OptionAllocationFunds","fund","Fund","FundId","ticker","StockSymbol","fee","FeeRate","percentage","Percentage","convert2DCalculatorSchemaTo3D","staticOptions","ageBasedOptions","CustomTemplateHeaderId","TypeCode","CustomTemplateHeaderFunds","existingAgeBracketIndex","findIndex","minAge","MinimumAge","maxAge","sortBy","ageBasedOption","toLowerCase","staticOption","level","displayName","range","Description","slice","str","longDisplayName","MaximumAge","DocumentTypes","GiactResultTypes","ACHBankWithdrawalDelay","ACHBankWithdrawalLanguage","PortfolioDownloadAvailabilityMonths","dayjs","subtract","CurrentTradeDate","firstAvailTradeDate","format","MaximumOneTimeOnlineContribution","maxOneTimeContribution","MinimumOneTimeOnlineContribution","minOneTimeContribution","MaximumRecurringOnlineContribution","maxRecurringContribution","minRecurringContribution","ValidOneTimeContributionDates","oneTimeContributionDates","date","MaximumRecurringContributionLeadDays","recurringContributionLeadDays","MinimumOnlineWithdrawalAmount","minWithdrawal","DisbursementSignatureGuaranteeAmount","maxWithdrawal","PaymentMethods","Code","RecipientTypes","filter","messages","find","message","ValidOneTimeWithdrawalDates","TradeCutOffTime","tradeCutoff","TradeCutoffApproachingWarningMinutes","tradeCutoffWarningTime","WithdrawalTypes","USStates","abbreviation","fullName","unshift","ProfessionalServicesPhoneNumber","lpoaHelpNumber","ProfessionalServicesEmail","lpoaHelpEmail","ProfessionalServicesFaxNumber","lpoaHelpFax","WebBackgroundColor","localStorage","setItem","docs","onlineLPOAGuide","doc","FormType","Location","programDescription","form400","webMessageTypes","webMessageType","Boolean","messageType","WebsiteMessages","webMessage","WebsiteMessageURLs","websiteMessageURL","URL","Page","Body","isLoading","ACCOUNT_DETAILS_GET","ACCOUNT_TRANSACTIONS_DETAILS_GET","ACCOUNTS_SEARCH","ACCOUNTS_GET_BY_AGENT","AGENT_BANK_ACCOUNTS_GET","CONTRIBUTION_DETAILS_GET","CONTRIBUTION_EDIT_DETAILS_CLEAR","CONTRIBUTION_EDIT_DETAILS_GET","NEXT_RUN_DATE_GET","OPTION_CHANGE_DETAILS_GET","ROUTING_INFO_GET","SCHOOLS_GET","TRANSACTION_DETAILS_GET","UPCOMING_TRANSACTIONS_GET","WITHDRAWAL_DETAILS_GET","TRANSACTION_DELETE","SCHEDULED_TRANSACTION_GET","ACCOUNT_DOCUMENTS_GET","TRANSFER_ACCOUNTS_GET","ACCOUNT_INVESTMENT_PATH_GET","ACCOUNT_TRANSACTION_PREVIEW","TRANSACTION_TYPES","GET_PRR_DATES","COUNTRIES_LIST_GET","ACCT_STATUS","ANNUAL_EVENT","BIRTHDAY","DISABLED_DATES","MONTHLY","fundUnitsFormatter","Intl","NumberFormat","minimumFractionDigits","bankNameCaseExceptions","accountList","accountTransactionsDetails","agentBankAccounts","bankName","contributionDetails","agentAccounts","contribution","endDate","transactionId","contributionEditDetails","nextRunDates","monthly","day1","day2","yearly","birthday","optionChangeDetails","accounts","currentAccount","history","scheduled","postedTransactionDetailsCollection","schools","selectedAccount","beneficiary","accountOwner","successors","details","transactions","selectedAgentAccounts","selectedTransaction","schema","upcomingTransactionsByAccount","withdrawalDetails","agentAddress","postalCode","availableBalance","display","number","beneficiaryAddress","groupAccounts","totalValue","transfersByOwner","bulkOptionChangeCandidates","transactionPreviewDetails","canContinue","errors","cache","transferAccounts","investmentPath","TemplateId","pRRDates","minDate","maxDate","countries","accountFilter","accountId","AccountId","buildTransfer","TransferId","AccountGroupId","CloseAccount","Amount","TradeDate","Status","TargetAccounts","target","cachedAt","utc","AccountsReducer","_account$Agent$PhoneN","_account$Agent$PhoneN2","_account$Beneficiary$","_account$Beneficiary$2","account","beneAddress","Beneficiary","MailingAddress","accountOwnerAddress","Agent","accountGroupId","FirstName","LastName","streetAddress1","StreetAddress1","streetAddress2","StreetAddress2","streetAddress3","StreetAddress3","City","State","PostalCode","country","Country","phoneNumber1","PhoneNumber1","Number","phoneNumber2","PhoneNumber2","age","Age","primarySuccessorName","Successor","secondarySuccessorName","SecondarySuccessor","accountType","AccountType","accountNumber","AccountNumber","Option","optionChangesRemaining","OptionChangesRemaining","optionId","netPrincipal","currencyFormatter","AccountBalance","NetPrincipalContributions","ytdContributions","YTDContributions","priorContributions","PriorContributions","accountBalance","Balance","netAvailable","NetAvailable","closeDate","CloseDate","targetAllocation","actualAllocation","ActualPercentage","units","Units","unitPrice","FormattedPrice","Transactions","trans","TransactionId","PostDate","Type","basis","BasisAmount","amount","taxYear","TaxYear","OptionChange","Contribute","Transfer","Withdraw","ytdPRR","YearToDatePRR","AcctNumber","acctOption","AcctOption","agentId","AgentId","agentEmail","AgtEmail","agentName","AgtFirst","AgtLast","beneficiaryName","BenFirst","BenLast","beneficiaryBday","BenBirthDate","groupId","giftCode","GiftCode","giftCodeActive","GiftCodeActive","marketValue","AcctBalance","acct","BankAccountId","BankName","MaskedBankAccountNumber","BankAccountType","edit","contributionAmount","selectedAccountId","parseInt","bankAccount","ScheduleDate1","ScheduledDate","ScheduleDate2","EndDate","occasion","Occasion","selectedAccounts","ScheduleId","InvestmentType","frequency","meta","day","isArray","assign","AccountInfo","optionDescription","OptionName","MarketValue","accountsInGroup","optionChangeCreate","OptionChangeCreate","RemainingOptionChanges","school","fafsaId","schoolId","CollegeId","toString","accessCardNumber","AccessCard","CardNumber","bankInfo","BankAccount","bankAccountNumber","bankAccountType","basisAmount","payee","PayeeName","postDate","source","Title","Source","totalAmount","transactionDetails","TransactionDetails","TransactionDetailId","price","selectedTransactionId","omit","vdId","Frequency","TransactionType","scheduledDate","canEdit","CanEdit","canDelete","CanDelete","typeName","upcomingTransactions","transaction","accountInGroup","line1","Recipient","Line1","line2","Line2","agentAddressChanged","AgentAddressChanged","allowFullWithdrawalIndividual","AllowFullWithdrawal","allowFullWithdrawalGroup","AvailableForWithdrawal","beneficiaryAddressChanged","BeneficiaryAddressChanged","percentageOfTotalValue","schoolAddresses","SchoolAddresses","attn","Department","SchoolName","Address","SchoolId","fbo","studentIdNum","StudentId","Actions","actionId","ActionId","Schema","currentOption","CurrentOption","newOption","NewOption","predefinedOptionId","NewOptionId","optionChangeId","OptionChangeId","templateId","createdDate","document","index","DocumentType","fileType","Format","year","Year","quarter","Quarter","Url","description","additionalDocURL","Supplement","candidate","transactionType","Comments","sourceAccount","StartDate","GET_TEMPLATE","GET_TEMPLATE_ACCOUNTS","GET_TEMPLATES","activeTemplates","deactivatedTemplates","template","TemplateType","templateAccountsList","TemplatesReducer","Active","Deactivated","NEW_ACCOUNTS_LIST_GET","ACCOUNTS_UPLOAD","NEW_ACCOUNT_DETAILS_GET","NEW_ACCOUNT_UPDATE","NEW_ACCOUNT_APPROVE","BLANK_ACCOUNT_GET","statuses","warnings","formErrors","staticErrors","conflictErrors","blankAccount","allowNewAccounts","NewAccountsReducer","NewAccounts","PoaAccountApplicationId","AllowNewAccounts","FormErrors","input","StaticErrors","ssn","otherSSN","secondSsn","approvedValue","correctOption","ConflictErrors","otherOptions","CanViewFedTaxDocs","CanViewStateTaxDocs","BENEFICIARY_BAR_CHART_CHANGE","PropTypes","oneOf","selectedBeneficiaryBarChart","DashboardSettingsReducer","LPOA_SETTINGS_GET","LPOA_SETTINGS_UPDATE","LPOA_ADDRESS_UPDATE","settings","addresses","mailing","physical","fullSettingsObject","getLPOAPermissions","firm","pick","formatAddress","AddressId","ManageLPOAReducer","Address1","updatedFirm","PhysicalAddress","USERS_LIST_GET","USER_DETAILS_GET","USER_UPDATE","POA_ACCOUNTS_GET","USER_CREATE","PRIMARY_CONTACTS_ASSIGN","DEACTIVATE_USER","REACTIVATE_USER","users","poaAccounts","createdUserPin","userDataMap","user","dataComplete","_user$PhoneNumber","_user$PhoneNumber2","advisorId","FinancialAdvisorId","ActivationDate","BulkStatementDownload","DeactivationDate","POAs","poa","POAId","ownerName","AgentName","BeneName","isPrimaryContact","IsPrimaryContact","POAIds","ViewAllAccounts","IsDefaultPrimaryContact","Username","lastLogin","ManageUsersReducer","cachedUsers","ADVISOR_GET","CONTACT_INFO_UPDATE","advisor","TransactionNotifications","ClientNotifications","mapAdvisor","_advisor$PhoneNumber","_advisor$PhoneNumber2","AllowUnsubscribe","MyInfoReducer","REPORTS_GET","reports","ReportsReducer","report","ReportId","DisplayName","category","ReportCategory","ReportParams","param","ParamName","DataType","POAS_FOR_EXPORT_GET","POAS_FOR_EXPORT_UPDATE","BACK_OFFICES_GET","BACK_OFFICES_UPDATE","PORTFOLIO_PROVIDERS_GET","PORTFOLIO_PROVIDERS_UPDATE","poasForExport","backOffices","portfolioProviders","ManageDataReducer","allOptions","selectedPoaIds","selected","indexOf","updatedIds","backOfficeOptions","selectedBackOffices","allBackOffices","orderBy","office","enabledBackOffice","BackOfficeProviderId","enabled","authorizedDate","AuthorizationDate","toISOString","providerOptions","selectedProviderCodes","provider","updatedCodes","TWO_FACTOR_QRCODES","TWO_FACTOR_PREFERRED_METHOD","TWO_FACTOR_SAVE_PREFERRED_METHOD","VERIFY_PIN","REGISTER_METHODS","preferredInfo","CountryCode","PhoneNumber","AlwaysRequired","PreferredMethod","PINVerification","IdentityVerified","MultifactorReducer","appReducer","combineReducers","Claims","mappedClaims","Token","AccountBlocked","AccountBlock","TwoFactorAuthentication","preferences","preference","static","StaticResources","Accounts","notifications","Notifications","templates","Templates","newAccounts","dashboardSettings","DashboardSettings","manageLPOA","ManageLPOA","ManageUsers","myInfo","MyInfo","Reports","manageData","ManageData","multifactor","Multifactor","rootReducer","removeItem","cssValue","property","getComputedStyle","documentElement","getPropertyValue","colors","primary","accent","text","linkText","darkPrimary","lightGray","lightHeaderText","appColors","palette","main","light","lighten","dark","secondary","row","trim","hover","components","MuiButton","defaultProps","color","styleOverrides","contained","backgroundColor","outlined","borderColor","MuiCheckbox","MuiChip","root","deleteIcon","avatar","MuiFab","MuiFormLabel","MuiFormControl","variant","margin","MuiIconButton","MuiInput","underline","borderBottomColor","borderBottom","MuiMenu","anchorOrigin","vertical","horizontal","MuiRadio","padding","MuiSelect","MuiStepIcon","MuiStepper","MuiSwitch","MuiTab","indicatorColor","MuiTabs","MuiTextField","MuiTooltip","tooltip","fontSize","typography","fontFamily","breakpoints","sm","md","cbTick","cbFinish","dur","elapsedTime","currentTimer","startedAt","stopTimer","clearTimeout","update","now","setTimeout","LogoutWarning","Component","constructor","remainingTimeInMs","updateRemainingTime","setState","startWarning","callbackTick","callbackFinish","duration","props","logoutWarningInterval","onTimeout","stopWarning","onCloseContinueWithTimeout","onWarningClose","parseCountdown","secsAll","remainingMins","Math","floor","remainingSecs","round","secsFormatted","componentDidUpdate","prevProps","warningOn","componentWillUnmount","render","parseWarningMsg","modalTitle","closeButtonLabel","React","createElement","Modal","actionButtons","label","onCloseModal","show","title","msg_logged_out_inactivity_warning","time","windowEvents","ProtectedRoute","inactivityWarningOn","inactivityWarningTimer","inactivityLogout","finally","restartInactivityProcedure","noFrontEndActivityTimeoutInMs","cancelInactivityWarning","handleAccountBlocks","identityVerified","updatedPathname","componentDidMount","addEventListener","onload","allNotificationsHide","removeEventListener","component","rest","logoutWarningTimeoutInMs","Route","Redirect","to","search","withRouter","connect","PublicRoute","query","qs","ignoreQueryPrefix","referrer","NameMenu","anchorEl","logoutClickHandle","menuClose","onLogoutClick","myInfoClickHandle","lpoaSettingsClickHandle","Button","aria-owns","styles","aria-haspopup","onClick","event","currentTarget","className","NameMenu_name","Icon","NameMenu_icon","Menu","open","onClose","style","top","MenuItem","NameMenu_userDetails","NameMenu_lpoaName","NameMenu_detailRow","portfolioProvidersGet","all","passwordRequirementsGet","optionsGet","customOptionsGet","getNewAgeBasedSchema","getNewStaticSchema","getAgeBrackets","getEnvironmentVariables","getServerDateTime","HIT","pageNotFoundHit","viewAppTourStep","step","helpAccessed","resourceAccessed","resourceName","tableSearchAccessed","tableName","contributionsOneTimeStep","contributionsRecurringStep","contributionsSpecialStep","optionChangesStep","withdrawalsStep","connectedGAEvents","pageNotFoundEvents","appTourEvents","navigationEvents","commonEvents","transactionEvents","bowser","Bowser","getParser","navigator","userAgent","parsedResult","Header","loadingPrefs","showHelpInfo","showEnvMessage","hostname","prototype","hasOwnProperty","call","envWarning","environmentWarningHeader","EnvHeader","hide","warningsCompile","browser","warningMessageCompose","platform","warningType","Header_browserWarningContainer","Header_browserWarningClose","dismissWarning","clear","apiCalls","staticDocs","getStaticDocuments","getWebMessages","setLoadingPublicVars","Header_navContainer","Header_protectedNav","Header_left","Header_lighterBackground","Header_menuIcon","IconButton","aria-label","openSideNav","My529Logo","Header_sideLogo","Header_arrow","Header_pageTitle","pageTitle","Header_right","Header_helpIcon","Header_helpMenuOverlay","events","Header_helpMenu","LoadingOverlay","handleLogout","Header_publicNav","rel","paddingTop","SidenavMenuOption","showMenuOptions","dropdownMenuOptionCompose","rootMenuOptionIconName","classes","children","nestedMenuOptions","nestedMenuOptionsCompose","ListItem","button","ListItemIcon","icon","ListItemText","listItemText","Collapse","in","List","menuOptionClickHandle","link","onMenuOptionClick","externalLink","onOptionClick","normalMenuOptionCompose","isSideNavOpen","isEmpty","withStyles","theme","textTransform","fontWeight","lineHeight","appVersion","Sidenav","onMyInfoClick","onLPOASettingsClick","accountOptionsCompose","adminOptionsCompose","adminOptions","dataOptionsCompose","dataOptions","onOpen","SwipeableDrawer","Sidenav_contents","Sidenav_userDetails","Sidenav_detailRow","mobile","tablet","documentLinks","Sidenav_profileSection","Sidenav_bottom","Sidenav_help","height","Sidenav_buildVersion","Welcome","modalOpen","onModalClose","Banner","banner","bannerMessages","body","dangerouslySetInnerHTML","__html","Login","loading","formValidate","onFormSubmit","preventDefault","getElementById","blur","QSI","API","run","unload","load","onInputChange","inputName","clonedErrors","FormWrapper","onSubmit","width","TextField","onChange","disabled","fullWidth","helperText","PasswordInput","errorText","Login_button","Login_linkContainer","StyledLink","ActivateUser","taxID","passwordConfirm","initialLoading","passwordPassesValidation","userType","guid","login","password1","password2","taxId","activateUser","inputUpdate","updatedErrors","ActivateUser_passwordRequirements","PasswordRequirements","onPasswordCheck","ActivateUser_buttons","ForgotPassword","inputError","formIsValid","forgotPassword","instructions","autoFocus","ForgotPassword_buttons","ResetPassword","passwordConfirmation","postData","resetPassword","ResetPassword_divPadding","ResetPassword_buttons","ForgotUsername","lpoaNum","lpoaNumIsValid","emailIsValid","emailValidate","LPOANumber","forgotUsername","ForgotUsername_buttons","getAccountBaseRoute","getAccounts","getAccountDetails","getAccountsByAgent","optionalParam","getAccountTransactionsDetails","getAgentBankAccounts","getContributionDetails","getNextRunDate","dates","datePath","formatDate","split","joinedDates","startCase","getOptionChangeDetails","getWithdrawalDetails","getTransferAccounts","TransactionDetailsModal","fundsCompose","fundComponents","size","windowWidth","TransactionDetailsModal_fundContainer","TransactionDetailsModal_fundName","TransactionDetailsModal_fundDetailsRow","SmartTable","idKey","rows","columns","hideOn","customStyle","TableToolbar","onSearchFocus","TableContainer","maxHeight","minWidth","TableHeader","TableRows","TablePagination","TransactionDetailsModal_funds","hasDetails","getTransactionDetails","indicatorHeight","TransactionDetailsModal_container","TransactionDetailsModal_details","TransactionDetailsModal_mainDetails","TransactionDetailsModal_detailRow","TransactionDetailsModal_rowTitle","TransactionDetailsModal_rowValue","TransactionDetailsModal_payeeDetails","sizify","select","PrrCalculatorText","learn_more_title","prr_not_available","text_learn_more","text_faq","question","answer","Fragment","subtitle","rate_of_return_txt","start_date_label","end_date_label","btn_calculate","btn_learnmore","LearnMoreDrawer","Drawer","anchor","sx","zIndex","learnMoreContainer","closeIcon","IconBtnTooltip","divider","learnMoreInfoHeader","learnMoreInfo","qa","Accordion","AccordionSummary","expandIcon","Typography","AccordionDetails","required","phone_number_too_short","alphabetic_and_allowable_characters_only","allowableChars","alpha_numeric_only","alpha_numeric_and_allowable_characters_only","calendarValidator","isAfter","isBefore","date_limits","alphaNumericOnlyValidator","test","phoneHasNo10Digits","phone","emailValidator","street1Validator","field_max_length_40","cityValidator","Transition","forwardRef","ref","Slide","direction","PrrCalculator","learnMoreOpen","startDate","startDateError","endDateError","pRRInit","pRR","loadPRRDates","getPRRDates","disablePRRButtonInDetails","loadPRR","getPRR","calculateDates","resetErrorsAndPRR","onStartDateInput","onEndDateInput","validateForm","startDatePlus1Day","add","onCalculateHandler","resetStartDate","openAccountDate","previousYear","lastDateOfPreviousYear","renderNavigationButton","prrClass","prrArrowIcon","pprNotAvailable","negativeReturn","positiveReturn","Dialog","fullScreen","TransitionComponent","onCloseHandler","topBarContainer","topBar","titleColumn","closeIconColumn","Divider","prrCalculator","dataTILE","labelTILE","rorContainer","rorTitle","ppr","CountUp","start","end","separator","decimals","decimal","prefix","suffix","onEnd","onStart","NA","DatePicker","buttons","LearnMore","AccountDetails","showTransactionDetailsModal","cachedAccounts","focusedAccount","prrCalculatorShow","prrButtonDisabled","showCancelConfirmationModal","cancelTransactionLoading","reloadingUpcomingTransactionsTable","accountActionsCompile","actions","OptionChangeIcon","accountActionHandle","ContributionIcon","WithdrawalIcon","accountSelect","fundTableData","AccountDetails_fund","AccountDetails_fundName","AccountDetails_fundDetails","toFixed","AccountDetails_tableContainer","transactionDetailsShow","upcomingTransactionEditHandler","redirectRoutePrefix","getScheduledTransaction","responseObj","upcomingTransactionCancelHandler","cancelTransaction","getUpcomingTransactions","upcomingTransactionViewHandler","predefinedOptions","accountDetails","cachedAccount","isCustomOption","AccountDetails_page","AccountDetails_pageNav","Breadcrumbs","crumbs","AccountDetails_status","AccountDetails_ownerContainer","Card","AccountDetails_accountOwnerName","phoneFormatter","AccountDetails_accountSelector","Tabs","Tab","AccountDetails_accountSelectorTab","substring","AccountDetails_loading","AccountDetails_accountContainer","AccountDetails_beneficiaryCard","AccountDetails_successorsCard","AccountDetails_detailTitle","AccountDetails_detailsCard","AccountDetails_accountDetails","AccountDetails_accountNumber","AccountDetails_accountType","AccountDetails_investmentOption","AccountDetails_optionChangesRemaining","AccountDetails_age","AccountDetails_netPrincipal","AccountDetails_ytdContributions","AccountDetails_priorContributions","AccountDetails_fundsCard","AccountDetails_allocationLabel","AccountDetails_allocationValue","pprIcon","includes","buttonProps","AccountDetails_upcomingTransactionsCard","AccountDetails_upcomingTransactionsCardLoading","onSelect","showIf","AccountDetails_upcomingTransactionsEmptyMessage","AccountDetails_transactionsCard","ConfirmModal","onConfirm","FloatingActionButton","menuOptions","hasMenu","mainButtonTitle","mainIcon","mainButtonAction","isBirthdayInRange","beginning","startOf","dob","isBetween","commonMetricsWrapper","accountsByGroup","birthdayFilter","decimalRegex","accountGraphGroup","assets","sum","avgBalance","upcomingBirthdays","zeroBalances","accountsMetricTransformer","accountsByAgeBandFilter","accountsByAgeBand","groupBy","ageBracket","diff","ageBand","accountsByAgeFilter","accountsByAge","ages","uniq","from","years","filtersToSearchString","filters","ageGroup","ageGroups","upcomingBirthdaysDuration","indices","queryParser","isDuration","accountsByQueryFilters","filteredAccountList","isInAgeGroups","some","ageGroupString","isNaN","BenAge","isInAges","ageString","checkDOB","sort","accountA","accountB","nextBirthdayA","nextBirthdayB","sign","ageDiff","localeCompare","AccountsList","filterChips","showAllChips","menuItemsSelected","addFilter","filterChip","newFilters","removeFilter","renderFilterComponent","chipPartition","chip","isActive","TableToolbar_toolbarContainer","TableToolbar_iconMenu","TableToolbar_menu","TableToolbar_menuOverlay","Chip","onDelete","Avatar","ageFilter","ageGroupFilter","accountsGet","tableDataFormat","setupFilterChips","formattedAccounts","BeneficiaryName","PcName","PcFirstName","PcLastName","AcctStatus","FaLevel","customToolbarSection","PageNotFound","PageNotFound_container","PageNotFound_shrug","PageNotFound_message","GiactRejectionModal","handleCloseGiactRejectionModal","modal","maxWidth","giactText","FormHelperText","listStyleType","AddBankAccount","bankAccountLoading","confirmedBankAccountNumber","copyError","routingNumber","showGiactRejectionModal","bankAccountAdd","BankAccountNumber","RoutingNumber","addBankAccount","GiactResult","formClear","Fail","contributionDetailsGet","copyPrevent","onpaste","inputFormat","routingInfoGet","getBankRoutingInfo","confirmError","buttonType","AddBankAccount_formContainer","AddBankAccount_form","FormControl","FormLabel","AddBankAccount_radioButtonHeader","RadioGroup","FormControlLabel","control","Radio","AddBankAccount_textField","InputLabel","htmlFor","Input","inputProps","maxLength","onBlur","AddBankAccount_bankName","onInput","onFocus","AddBankAccount_checkImg","src","checkExample","alt","ContributionDetails","ContributionDetails_accountDetailsAO","ContributionDetails_detailsTitle","TermsConditions","TermsConditions_container","TermsConditions_modalHeader","TermsConditions_modalSubheader","contributionType","roman","NewOneTime","_this","step0ValidationHasRun","step1ValidationHasRun","stepIndex","termsChecked","rowIndex","accountUpdatedWithAmount","agentAccount","splice","contributionSet","addAccount","newSelectedAccounts","amountHandle","floatValue","bankAccountSelectHandle","contributionDateHandle","contributionDatesDisable","every","validContributionDate","isSame","defaultSelectedAccountSet","clone","errorGet","nextStep","_ref4","nextStepHandle","scrollTo","isEditing","prevStepHandle","removeAccount","goToPreviousPage","goBack","stepperButtonsCompose","contributionEdit","contributionCreate","createContributionLoading","cancelButton","marginRight","nextButton","marginLeft","backButton","agreeButton","printButton","print","finishButton","step0ContentCompose","NewOneTime_step0Container","NewOneTime_step0AccountsContainer","NewOneTime_accounts","Dropdown","selAccount","FormControlProps","NewOneTime_amount","CurrencyInput","NewOneTime_currencyInput","vals","NewOneTime_removeAccount","NewOneTime_hideIcon","Tooltip","placement","NewOneTime_addAccount","NewOneTime_totalAndErrorsContainer","NewOneTime_errors","NewOneTime_totalAmountStep0","val1","val2","step1ContentCompose","bankAccountsLoading","onAddBankAccountModalOpen","NewOneTime_step1Container","shouldDisableDate","NewOneTime_bankAccount","NewOneTime_addBank","step2ContentCompose","filteredAccounts","NewOneTime_reviewContainer","smallWidth","NewOneTime_reviewAccountNumber","NewOneTime_detailsTitle","NewOneTime_detail","NewOneTime_reviewBeneficiaryName","NewOneTime_reviewBankAccount","NewOneTime_reviewDate","NewOneTime_reviewAmount","NewOneTime_totalAmountStep2","NewOneTime_termsContainer","NewOneTime_terms","NewOneTime_checkbox","Checkbox","checked","step3ContentCompose","transactionsStyles","printContainer","currentTime","serverDateTime","stepperContentCompose","NewOneTime_container","NewOneTime_stepperSteps","Stepper","activeStep","orientation","Step","StepButton","NewOneTime_stepperContent","NewOneTime_stepperButtons","NewSpecial","nextRunDateLoading","accountUpdatedWithInputData","formattedDate","nextRunDateGet","nextBdayRunDate","isSameOrBefore","selectedAccountsWithBirthdays","birthdays","bday","NewSpecial_occasionSelectionContainer","NewSpecial_radioButtonLabel","NewSpecial_radioButtonsLabelText","InfoIcon","NewSpecial_annualEventDateContainer","NewSpecial_step0Container","NewSpecial_step0Birthday","NewSpecial_step0AnnualEvent","NewSpecial_accounts","InputLabelProps","shrink","NewSpecial_amount","NewSpecial_currencyInput","NewSpecial_birthdayContainer","NewSpecial_birthday","NewSpecial_birthdayLabel","NewSpecial_endDateContainer","NewSpecial_hideIcon","NewSpecial_icon","NewSpecial_removeAccount","marginTop","NewSpecial_total","NewSpecial_totalErrors","NewSpecial_totalAmountStep0","bankAccountError","NewSpecial_bankAccount","innerWidth","NewSpecial_reviewContainer","NewSpecial_reviewBeneficiaryName","NewSpecial_detailsTitle","NewSpecial_detail","NewSpecial_reviewAccountNumber","NewSpecial_reviewBankAccount","NewSpecial_reviewNextDate","NewSpecial_reviewEndDate","NewSpecial_reviewAmount","NewSpecial_totalAmountStep2","NewSpecial_termsContainer","NewSpecial_terms","NewSpecial_checkbox","NewSpecial_container","NewSpecial_stepperSteps","NewSpecial_stepperContent","NewSpecial_stepperButtons","secondDateError","NewRecurring","contributionFormat","isSameOrAfter","nextMinDateGet","momentDate","nextRunDateCompose","NewRecurring_step0Container","NewRecurring_accountContainer","marginBottom","NewRecurring_account","NewRecurring_accountLabel","NewRecurring_amount","NewRecurring_currencyInput","NewRecurring_bankAccount","NewRecurring_addButton","NewRecurring_error","NewRecurring_errorsContainer","NewRecurring_step1Container","NewRecurring_step1Date1","NewRecurring_step1Date2","maxDateMessage","NewRecurring_endDate","nextRunDate","NewRecurring_reviewContainer","NewRecurring_reviewInfoAccountNum","NewRecurring_detailsTitle","NewRecurring_detail","NewRecurring_reviewInfoBen","NewRecurring_reviewInfoSched","NewRecurring_reviewInfoNextDate","NewRecurring_reviewInfoEndDate","NewRecurring_reviewInfoAmount","NewRecurring_reviewInfoBankAccount","NewRecurring_termsAndConditions","NewRecurring_terms","NewRecurring_checkbox","firstNonDisabledDate","secondNonDisabledDate","NewRecurring_container","NewRecurring_stepperSteps","NewRecurring_stepperContent","NewRecurring_stepperButtons","Contributions","addBankAccountModalOpen","duplicateContribution","duplicateContributionMessage","duplicateContributionModalOpen","ignoreDuplicates","tabIndex","onPrintStep","formattedContribution","AccountAmounts","IgnoreDuplicates","ScheduleType","TradeDate2","createNewContribution","dupeMsgs","calledFrom","getContributionEditDetails","editContribution","defaultTabGet","onTabChange","val","clearContributionEditDetails","Contributions_container","Contributions_pageNav","Contributions_loading","Contributions_details","Contributions_newContributions","centered","AccountsInGroup","minHeight","ENROLLMENTDATE","TermsAndConditions","checkboxes","TermsAndConditions_termsAndConditions","TermsAndConditions_modalHeader","TermsAndConditions_modalSubheader","TermsAndConditions_termsAndConditionsCheckbox","box","onCheck","NewOptions","createOptionChangeLoading","loadingOnMount","customAllocationSchema","isViewing","optionCategories","selectedCategoryName","selectedOptionId","selectedOption","smallHeight","innerHeight","isOnPrintStep","matrixAllocations","calculatorErrors","showCustomized","onAllocationChange","hasAllocationAmountError","hasBracketTotalSumOver100Error","isCustomized","currSchema","populate3DCalculatorSchema","onTermsCheck","optionCategorySelectHandle","setOptionsAndSchema","optionSelectHandle","optionChangeDetailsCompose","customTemplateName","showSelectionOption","NewOptionChangeDetails","NewOptions_collapsableCustomizedName","ExpandLessIcon","ExpandMoreIcon","NewOptions_selectedOptionName","CalculatorForm","stickyHeaderTopOffset","currentDate","hideTemplateName","termsAndConditionsCompose","newOptionDetailsContainer","currentSelectionsGet","predefinedOption","nextCalculatorReviewHandler","hasAnyBracketTotalNot100Error","isCustomizedTemplates","optionCategoryMenuCompile","CustomSchema","createNewOptionChange","optionsMenuCompile","currentOptionName","filteredOptions","opt","selectFieldCompose","menuItems","additionalProps","SelectProps","step0Compose","items","optionsMenu","optionCategoryError","optionError","NewOptions_selectFields","NewOptions_customTemplatesNotAvailable","step1Compose","step2Compose","step3Compose","transactionStyles","stepperCompose","stepperStyle","promises","NewOptions_stepperContentContainer","NewOptions_stepperContent","NewOptions_stepperButtons","NewOptions_stepperStepsContainer","NewOptions_stepperSteps","updatedData","optionChange","updatedCustomSchema","convert3DCalculatorSchemaTo2D","OptionChangeDetails","accountsInGroupModalShow","OptionChangeDetails_container","OptionChangeDetails_loading","OptionChangeDetails_accountDetailsCard","OptionChangeDetails_accountDetails","OptionChangeDetails_accountDetailsAO","OptionChangeDetails_detailsTitle","OptionChangeDetails_accountDetailsBen","OptionChangeDetails_accountDetailsAcctNum","OptionChangeDetails_accountDetailsTotalVal","OptionChangeDetails_accountDetailsAcctType","OptionChangeDetails_accountDetailsAccountsInGroup","OptionChangeDetails_accountDetailsAccountsInGroupInfo","cursor","OptionChangeDetails_optionDetailsCard","OptionChangeDetails_optionDetails","OptionChangeDetails_optionDetailsCurrentOpt","OptionChangeDetails_optionDetailsRemainingOpts","OptionChangeDetails_zeroOptionChangesRemaining","OptionChanges","accountsInGroupModalOpen","optionChangeDetailsGet","OptionChanges_container","OptionChanges_pageNav","OptionChanges_optionChangeDetails","OptionChanges_newOptionChanges","AvailableBalanceInfo","AccountDetailsCard","availableBalanceMsg","AccountDetailsCard_container","AccountDetailsCard_accountDetailsCard","AccountDetailsCard_accountDetails","AccountDetailsCard_accountDetailsAO","AccountDetailsCard_detailsTitle","AccountDetailsCard_accountDetailsBen","AccountDetailsCard_accountDetailsAcctNum","AccountDetailsCard_accountDetailsTotalVal","AccountDetailsCard_accountDetailsAcctType","AccountDetailsCard_accountDetailsAvailableBalance","radioButtonStyle","OptionButton","active","borderTopRightRadius","borderBottomRightRadius","DualPushButtonSwitch","groupLabel","DualPushButtonSwitch_container","DualPushButtonSwitch_radioGroup","_","radioLabel","disableRipple","borderTopLeftRadius","borderBottomLeftRadius","TransferTypes","TransferInputTypes","noop","TargetAccount","accountOptions","inputFieldType","onAccountChange","canRemove","onRemove","accountError","Transfer_destinationRow","formatAccountDisplayText","Transfer_numberInput","callback","etc","BaseNumberInput","isNumericFormat","allowNegative","onKeyUp","showFullBalanceDialog","TransferStepOneContent","destinationAccounts","transfer","onTransferChange","onTargetChange","addTargetAccount","removeTargetAccount","getErrorForInput","Transfer_stepOneContainer","Transfer_transferTypeContainer","Transfer_transferTypeToggleContainer","Transfer_transferType_radioButtonGroup","transferType","InfoIcon_container","Transfer_accountsSelection","Transfer_sourceContainer","Transfer_sourceAccountDescription","Transfer_sourceAccountLabel","Transfer_sourceAccountName","Transfer_keepAccountOpenCheckbox","Transfer_iconContainer","Transfer_destinationColumn","transferInputType","targetAccount","accountErrorText","dest","destIndex","Transfer_destinationFooter","Transfer_addIconContainer","Transfer_amountTotal","readOnly","TransferTermsAndConditions","onTermsToggled","Transfer_termsAndConditions","Transfer_Header","Transfer_termsCheckbox","TermsAndConditionsReview","compactedTargets","pluralize","Transfer_reviewContainer","Transfer_reviewContainerCompact","Transfer_reviewCloseAccount","Transfer_reviewAccountNumber","Transfer_detailsTitle","desktop","Transfer_detail","Transfer_reviewBeneficiaryName","Transfer_reviewOptionChange","Transfer_reviewAmount","Transfer_reviewTotalAmount","isLoadingSubmit","isSmallWindow","inputKey","handlePrevStep","handleNextStep","save","TransferSetup","submitButton","cardTitle","Transfer_stepperSteps","Transfer_stepperContent","Transfer_stepperButtons","FullBalanceDialog","OptionChangeDialog","validationErrors","Transfers","editing","runValidation","showOptionChangeModal","hasSeenFullBalanceDialog","setupState","newTransfer","transfersDetailsGet","transferId","getTransfer","prepareTransferPayload","targets","transferPayload","newAccount","editTransfer","updateTransfer","createNewTransfer","stateChangeValidationWrapper","stateChanges","transferFormErrors","transferTypeToggle","targetAccountIndex","nextTarget","other","newTransferType","onContinue","nextState","totalPercentage","Transfers_transfersContainer","Transfers_pageNav","Transfers_detailsContainer","Transfers_children","onProportionalSelect","tableData","textAlign","cleanDigits","sanitizeHTML","phoneLastFour","phoneNum","cleanPhoneNum","substr","StateDropdown","states","otherProps","sellDateText","NewWithdrawals","partialBalanceWithdrawalOnly","isProportional","createNewWithdrawalLoading","duplicateWithdrawalModalOpen","duplicateWithdrawalMessage","partialWithdrawalMessageOpen","schoolSearchOpen","schoolSearchLoading","smallScreen","step2ValidationHasRun","withdrawal","amountType","leaveAccountOpen","paymentType","proportionalAmounts","recipientAddress","agent","recipient","sellDate","withdrawalType","recipientAddressDebounce","debounce","fieldName","recipientAddressHandle","withdrawalStateSet","proportionalAmountsSet","amountTypeHandle","checkAddressCompose","checkNote","NewWithdrawals_checkMailingMessage","addressChangeMsg","checkRecipient","NewWithdrawals_error","NewWithdrawals_recipientAddress","availBalance","formattedPostal","street1Error","validator","cityError","infoMessagesCompose","leaveAccountOpenHandle","paymentTypeHandle","previousStepHandle","radioButtonLabelGenerate","NewWithdrawals_radioButtonsLabel","NewWithdrawals_radioButtonsLabelText","NewWithdrawals_radioButtonsInfoIcon","formattedValue","recipientHandle","schoolSelect","schoolsGet","getSchools","sellDateHandle","toDate","warningDisplay","sellDatesDisable","validWithdrawalDate","stateSelectHandle","amountError","amountTypeError","inputStyle","withdrawalTypeError","availableBalanceIsMoreThanMax","areThereUncollectedFunds","NewWithdrawals_withdrawalType","NewWithdrawals_partialBalanceMessaging","NewWithdrawals_sellDate","withdrawalTypeHandle","fullBalanceText","recipientError","paymentTypeError","NewWithdrawals_paymentType","formFieldMargin","schoolError","NewWithdrawals_recipientAddressForm","persist","defaultValue","MenuProps","PaperProps","ZipInput","NewWithdrawals_reviewContainer","NewWithdrawals_reviewAmount","NewWithdrawals_detailsTitle","NewWithdrawals_reviewDate","NewWithdrawals_reviewType","NewWithdrawals_reviewPayment","NewWithdrawals_reviewRecipient","NewWithdrawals_termsAndConditions","NewWithdrawals_termsAndConditionsCheckbox","step4Compose","withdrawalCreate","isDisabled","ExpenseType","FullBalance","PayeeAddress","PayeeType","Proportional","School","StudentNumber","WithdrawalType","createNewWithdrawal","_ref5","NewWithdrawals_stepperButtons","DialogProps","emptyMessage","iconTitle","WithdrawalDetails","WithdrawalDetails_container","WithdrawalDetails_loading","WithdrawalDetails_accountDetailsCard","WithdrawalDetails_cardContentContainerProportional","WithdrawalDetails_accountOwner","WithdrawalDetails_detailsTitle","WithdrawalDetails_beneficiary","WithdrawalDetails_acctNum","WithdrawalDetails_acctType","WithdrawalDetails_groupAvailableBalance","WithdrawalDetails_groupAvailableBalanceInfo","WithdrawalDetails_cardContentContainerNonProportional","WithdrawalDetails_currentOpt","WithdrawalDetails_marketVal","WithdrawalDetails_availableBalance","WithdrawalDetails_availableBalanceInfo","WithdrawalDetails_availableBalanceIsZero","Withdrawals","displayWarning","userTime","warningTime","withdrawalDetailsGet","Withdrawals_container","Withdrawals_pageNav","Withdrawals_tradeCutoffWarning","Withdrawals_withdrawalDetails","Withdrawals_newWithdrawals","Documents","accountDocs","downloadLoading","openPdfStatement","documentType","pdf1099Path","downloadAccountDocumentData","statementWindow","apiCall","write","loadingAnimationHTML","QuarterlyStatement","createStatementPdfToNewWindow","AccountCertificate","createCertificatePdfToNewWindow","AccountConfirmation","createConfirmationLetterPdfToNewWindow","FederalTaxForm","pdfData","mapPdfDataFrom1099QData","get1099QPdfBytes","pdfBytes","file","Blob","fileURL","createObjectURL","UtahStateTaxForm","mapPdfDataFromTC675HData","pdfTC675HPath","TCFORM_ACCOUNT_TYPE_CODES","INDIVIDUAL","TAXFORMTC675_PATHS","INDIVIDUAL_INSTRUCTIONS","INSTITUTIONAL","INSTITUTIONAL_INSTRUCTIONS","UGMAUTMA","UGMAUTMA_INSTRUCTIONS","getTC675HPdfBytes","close","loadingErrorHTML","getCountries","accountDocumentsGet","Documents_page","Documents_container","Documents_detailsCard","Documents_details","Documents_detailsSection","Documents_details_acctOwner","Documents_details_beneficiary","Documents_details_acctNum","Documents_details_acctType","TableDataTypes","STRING","TableColumnHideOptions","PHONE","TABLET","NUMBER","TAXFORM1099_COPY_PATHS","COPY_B_MAIL_INSTRUCTIONS","canFilter","currentYear","annualGiftExclusionAmount","maximumBeneficiaryDeposit","maximumBenficiaryAccountValueForGift","GiftingLanguage","aria-controls","Gifting","showWarning","savingGifting","accountIdToChange","giftStatusToChange","ShowGiftWarning","OnGiftActiveChange","editGiftCodeStatus","renderAccountRows","acc","giftCodeColor","dashRow","acctType","letterSpacing","Link","justifySelf","Switch","paperContainer","GiftingAccountDetails_ownerContainer","hidden","GiftingAccountDetails_accountOwnerName","paperTitle","CardAligned","learnMore","getTemplate","includeZeroAllocations","TemplateView","FundName","showTemplateBreadcrumbs","isStatic","templateName","AccountInvestmentPath","getInvestmentPath","accountInvestmentPathGet","breadcrumbs","AccountInvestmentPath_page","AccountInvestmentPath_container","AccountInvestmentPath_name","showTransactionPrepModal","preparingTransaction","transactionTitle","transactionTitleSuffix","baseURL","optionChangePrepare","contributionPrepare","transferPrepare","withdrawalPrepare","process","transactionPreviewWrapper","onFulfilled","transactionPreview","previewDetails","customAgeBasedTemplates","customStaticTemplates","baseRouteURL","exact","Accounts_preparingModal","Accounts_preparingMessage","Accounts_preparingError","DashboardHeader","handleViewChange","changeBeneficiaryBarChart","Paper","elevation","DashboardHeader_container","DashboardHeader_ViewSelect","selectRoot","MenuItemProps","menuItemRoot","menuItemSelected","graphName","down","up","DashboardMetricsToolbar","cardHovering","onMouseEnterCard","onMouseLeaveCard","onClickCard","allAccountMetrics","activeIndex","dataNode","DashboardMetricsToolbar_container","DashboardMetricsToolbar_MetricCard","clickable","zDepth","onMouseEnter","onMouseLeave","actionableTitle","position","BeneficiaryAgeBarChart","onMouseMove","activeTooltipIndex","onMouseEnterBar","nonProd","onMouseLeaveBar","onMouseClickBar","chartHeight","windowHeight","BeneficiaryAgeBarChart_container","ResponsiveContainer","BarChart","right","bottom","left","CartesianGrid","XAxis","dataKey","minTickGap","YAxis","allowDecimals","content","Bar","Cell","Dashboard","setupChartData","TemplateAccountsList","templateAccountsListGet","getTemplateAccountsList","rowMenuHandle","selectedTemplate","TemplateActivate","activateModalLoading","activateModalBodyCompose","templateActivate","activateTemplate","templatesGet","TemplateDeactivate","deactivateModalLoading","deactivateModalBodyCompose","templateDeactivate","deactivateTemplate","TemplatesList","accountsViewModalLoading","accountsViewModalOpen","activateModalOpen","activeTab","canEditTemplates","copyModalOpen","deactivateModalOpen","viewTemplateModalOpen","templateSelectionCompose","TpName","fabButtonsCompose","StaticTemplateIcon","AgeBasedTemplateIcon","TpDeactivatedByAdvisor","TpCreatedByAdvisor","TpTypeDescription","getTemplates","templateModalClose","modalName","baseColumns","TemplatesList_table","TemplatesList_copyTemplate","TemplateCopy","onMount","onTemplateNameChange","onSave","newCustomTemplateTitle","isTemplateNameEditing","TemplateNewCustom","selectCurrSchema","staticSchema","ageBasedSchema","getSchemaApi","loadingOnSave","templateNameNot1To40CharsError","saveTemplate","populatedTemplate","saveFile","fileName","hiddenElement","download","appendChild","click","removeChild","revokeObjectURL","newAccountsListGet","newAccountDownload","resolveBirthdate","birthdate","rightSsn","rightBirthdate","resolveEmail","rightEmail","resolvePOALevel","poaLevel","agentSsn","beneficiarySsn","rightPOALevel","resolveSSN","correctSSN","resolveFedTax","rightFedDocs","resolveStateTax","rightStateDocs","BulkUploadModal","fileUploading","fileUpload","formData","FormData","append","accountsUpload","modalCloseHandle","onFileSelect","files","spreadsheetDownload","BulkUploadModal_body","BulkUploadModal_chooseFileButton","BulkUploadModal_fileInput","accept","BulkUploadModal_fileName","truncate","AccountStatus","statusConfig","Tippy","delay","AccountStatus_statusIndicator","NewAccountsList","showUploadModal","showDownloadedModal","downloadHandle","downloadedData","fileBlob","benName","msSaveBlob","simpleAccounts","fabOptions","order","BeneficiaryFirstName","BeneficiaryLastName","OwnerFirstName","OwnerLastName","dateLoaded","statusOrder","errorTypes","detailedErrors","ConflictErrorResolveModal","canSave","apiActions","hasEmailAndSSNConflict","resolvedSSN","resolvedEmail","resolvedPOALevel","resolvedCanViewFedTaxDocs","resolvedCanViewStateTaxDocs","approveAccount","conflictPickersCompile","conflicts","errorDetails","errorDetail","radioButtons","onRadioButtonSelect","errorOption","ConflictErrorResolveModal_conflictSection","ConflictErrorResolveModal_conflictsContainer","StaticErrorResolveModal","applyHandle","approvedValuesCompose","approvedValues","StaticErrorResolveModal_section","StaticErrorResolveModal_sectionTitle","StaticErrorResolveModal_approvedValue","StaticErrorResolveModal_container","errorTabStyles","NewAccountForm","useOwnerAddresses","activeAOAddressTab","activeBeneAddressTab","activeSuccessorTab","toggleUseOwnerAddresses","updateAccount","addressInputsCompose","addressType","overrideProps","stateInputKey","textFieldCompose","inputErrorTextGet","disableInputs","autoComplete","datePickerCompose","disableFuture","dropdownCompose","generalFormErrorsCompose","section","NewAccountForm_error","menuOptionsCompose","valueKey","primaryTextKey","item","optionAllocationsDataCompile","optionName","beneficiaryAge","BeneficiaryBirthdate","fees","activeAgeBracket","phoneInputCompose","PhoneNumberInput","toggleCompose","NewAccountForm_toggle","relationshipsGet","poaLevelsGet","BeneficiaryIsResident","BeneficiaryMailingState","OwnerIsResident","OwnerMailingState","isEqual","tabErrorCounts","aoMailing","aoPhysical","beneMailing","benePhysical","successor","ssuccessor","isBeneStateUtah","isOwnerStateUtah","beneWarningTriggered","optionAllocationsData","NewAccountForm_cards","NewAccountForm_owner","NewAccountForm_ownerForm","NewAccountForm_ownerPersonalDetails_group1","NewAccountForm_ownerPersonalDetails_group2","NewAccountForm_ownerAddresses","NewAccountForm_beneficiary","NewAccountForm_beneficiaryForm","NewAccountForm_beneficiaryPersonalDetails_group1","NewAccountForm_beneficiaryPersonalDetails_group2","NewAccountForm_beneficiaryAddresses","NewAccountForm_successors","NewAccountForm_successorsForm","NewAccountForm_settings","NewAccountForm_settingsForm","NewAccountForm_funds","NewAccountForm_fundsTable","NewAccountForm_fundsMessage","NewAccountReview","showApproveConfirmModal","approveApplicationLoading","showConflictErrorResolveModal","showStaticErrorResolveModal","showDeleteModal","deleteApplicationLoading","showResetModal","resetApplicationLoading","approveHandle","reloadAccount","newAccountDetailsGet","newAccountApprove","tabErrorsTotal","benFirstName","benLastName","deleteHandle","newAccountDelete","resetAccountHandle","newAccountReset","revertChanges","saveNewAccountChanges","tryApproving","copyOwnerAddresses","newAccountUpdate","setReloadBlock","propsAccount","onbeforeunload","updateNewAccount","newValue","updatedNewAccount","updatedFormErrors","errorIndex","OwnerEmail","updatedAccount","BeneficiaryMailingAddress1","OwnerMailingAddress1","BeneficiaryMailingAddress2","OwnerMailingAddress2","BeneficiaryMailingCity","OwnerMailingCity","BeneficiaryMailingZipCode","OwnerMailingZipCode","BeneficiaryPhysicalAddress1","OwnerPhysicalAddress1","BeneficiaryPhysicalAddress2","OwnerPhysicalAddress2","BeneficiaryPhysicalCity","OwnerPhysicalCity","BeneficiaryPhysicalState","OwnerPhysicalState","BeneficiaryPhysicalZipCode","OwnerPhysicalZipCode","fabCompose","hasMultipleOptions","NewAccountReview_page","NewAccountReview_content","NewAccountReview_navigation","Prompt","when","parseDate","isDayjs","OwnerBirthdate","SuccessorBirthdate","SSuccessorBirthDate","AddSingleAccount","createAccountHandle","singleAccountCreate","blankAccountGet","AddSingleAccount_page","AddSingleAccount_content","AddSingleAccount_navigation","lpoaSettingsGet","permissionName","permissionGet","permission","MAILING","PHYSICAL","lpoaSettingsLoading","showUpdateLPOASettingsModal","updateLPOALoading","updateAddressLoading","lpoaSettings","addressInputErrors","addressTabIndex","updateAddressesButtonDisable","stateMailing","statePhysical","addressInput","updatePermissionsButtonDisable","stateLPOASettings","updateAddressHandle","addressesValidate","addressForApiFormat","lpoaAddressUpdate","updatePermissionsHandle","updatedFullSettingsObject","lpoaSettingsUpdate","requiredFieldError","addressFormCompose","street1Name","street2Name","cityName","stateName","zipName","addressInputUpdate","ManageLPOA_toggleLabel","errorStyles","ManageLPOA_container","ManageLPOA_card","ManageLPOA_cardBody","ManageLPOA_settingToggles","ManageLPOA_settingSection","ManageLPOA_settingsSection_first","ManageLPOA_viewAccountSection","ManageLPOA_updateButton","ManageLPOA_contactTabs","ManageLPOA_errorText","lpoaSettingsObject","lpoaAddresses","usersListGet","userDetailsGet","poaAccountsGet","UsersList","selectedUserId","selectedUserName","showDeactivateConfirmationModal","deactivateUserLoading","showResendEmailModal","resendEmailLoading","showReactivateConfirmationModal","reactivateUserLoading","reactivateUserHandler","reactivateUser","reactivatedUserId","deactivateUserHandler","deactivateUser","resendActivationEmailHandle","activationEmailResend","usersPartition","MasterAdminName","deactivationDate","activationDate","AssignAccounts","accountAssignment","accountAssignmentGet","allAccountsSelected","onRadioButtonToggle","selectedButton","updatedAccounts","poaIds","AssignAccounts_container","AssignAccounts_radioButtons","AssignAccounts_count","AssignAccounts_table","selectEnabled","NewUser","Email","contactInputErrors","showPINModal","accountAssignmentChange","selectedIds","userUpdate","contactInfoValidate","lpoaSettingsMatch","userCreateHandle","userCreate","updatedUser","updateInputErrors","accountsFormat","buttonsCompose","NewUser_buttons","permissionsToggleCompose","toggleDetails","NewUser_toggleLabel","stepCompose","NewUser_contactInputs","NewUser_toggles","NewUser_toggleSection","NewUser_toggleSection_transactions","NewUser_toggleSection_taxDocs","NewUser_toggleSection_admin","NewUser_toggleSection_reports","NewUser_page","NewUser_container","NewUser_stepper","NewUser_mobileStepper","NewUser_pin","newPin","UserDetails","userChanged","showSaveConfirmModal","saveLoading","selectedPOAAccounts","inputErrors","accountAssignmentsChange","updateUser","poaAccountsCompile","selectedAccountIds","revertHandle","saveHandle","inputsValidate","UserDetails_toggleLabel","UserDetails_page","UserDetails_container","UserDetails_cards","UserDetails_contact","UserDetails_contactInputsContainer","UserDetails_nonEditableField","UserDetails_permissions","UserDetails_toggles","UserDetails_toggleSection","UserDetails_toggleSection_transactions","UserDetails_toggleSection_taxDocs","UserDetails_toggleSection_admin","UserDetails_toggleSection_reports","UserDetails_accounts","UserDetails_fab","userObject","primaryContactDescription","PrimaryContact","updateLoading","poas","updateHandle","primaryContactsAssign","poasCompile","PrimaryContact_page","PrimaryContact_breadcrumbs","PrimaryContact_assignCard","PrimaryContact_cardTitle","PrimaryContact_name","updatedPOAs","PrimaryContact_saveButton","PrimaryContact_noAccountsMessage","LeftMenuItem","LeftMenuItems","Row","RightDrawer","PersistentDrawers","rowsOpen","handleDrawerToggle","drawerIndex","isDrawerOpen","rowOpen","isOneOpen","child","drawerWidth","isDrawerFullWidth","drawerWidthCalculated","mainMarginRight","leftMenuItems","drawers","transition","transitionTimingFunction","itemsIndex","disableGutters","forMobile","leftMenuItem","itemIndex","firstColStyle","col","arrow","rightDrawer","header","closeButtonArrow","drawerHeaderItem","closeButton","drawerContent","usernameError","usernamePassword","usernamePasswordError","disableUpdateButton","usernameInputsValidate","onUsernameChange","onUsernamePasswordChange","onSubmitUsername","myInfo_right_container","myInfo_textInput","myInfo_button","passwordChange","oldpassword","newpassword1","newpassword2","advisorGet","contactInfoUpdate","Password","currentPassword","newPassword","newPasswordConfirm","currentPasswordError","newPasswordError","newPasswordConfirmError","passwordIsValid","keyName","disableSubmitButton","onSubmitPassword","passwordInputsValidate","RegisterPhoneAndMethod","phoneNumber","defaultPhoneNumber","method","defaultMethod","hasError","onPhoneChange","onMethodChange","intructionSteps_container","intructionSteps_body","methods","phoneInput","twoFactorRegistrationUpdate","regInfo","getTwoFactorToken","getPreferredMethod","savePreferredMethod","preferredMethod","SubmitToken","isSubmitting","tokenError","attemptWarning","handleTokenInput","onTokenSubmit","twoFactorTokenVerification","onVerificationFail","onVerificationSuccess","tokenValidator","sanitizedToken","AttemptsRemaining","Verified","prevState","getIsSubmitting","VerifySmsOrCall","isResubmitting","resubmitPhoneCode","lastFour","resubmitBtn","sendConfirmMsg","RegisterAuthenticator","QRCodeInfo","handleInput","getInitialTwoFactorQRCode","getTwoFactorQRCode","registerType","getQRCode","ImageUrl","QRCode","REGISTRATION_STEPS","TwoFA","isRegistrationOpen","registrationStep","logOut","onRegisterPhoneAndMethodUpdateSubmit","regParams","countryCode","emailAddress","verificationMethod","onClickPhoneNumberEdit","onClickOtherAuthenticator","twoFAPhoneNumberLastFour","useAnotherMethodButton","render2FARegistrationStep","parentStyles","IsRegistered","paddingBottom","InputProps","endAdornment","InputAdornment","myInfo_2FA_otherMethods","container","newEmail","confirmEmail","newEmailError","confirmEmailError","submitting","onEmailChange","emailInputValidate","onEmailSubmit","updatedAdvisor","PhoneNumbers","primaryPhone","alternatePhone","primaryPhoneError","alternatePhoneError","onSubmitPhoneNumbers","phoneInputsValidate","Permissions","permissionCompose","MyInfo_permission","MyInfo_permissionEnabled","MyInfo_permissionDisabled","MyInfo_permissionsTitle","MyInfo_permissionsContainer","MyInfo_permissionsColumn1","MyInfo_permissionSection","MyInfo_permissionsColumn2","NotificationToggles","togglingClientNotifications","togglingTransactionNotifications","onNotificationToggle","flexDirection","toggle","NameHeaderWithEdit","showNameEdit","firstName","lastName","firstNameError","lastNameError","onNameSubmit","onNameChange","onCancel","MasterAdmin","isMasterAdmin","myInfo_header","myInfo_nameContainer","myInfo_name","myInfo_nameEdit","myInfo_nameEditIcon","myInfo_left_container","contentLighter","reportsGet","ReportCard","hovered","ReportCard_container","borderTop","ReportCard_separator","ReportCard_description","ReportsList","reportCardCompose","ReportsList_page","ReportsList_loading","ReportsList_reports","ReportsList_section","reportsWithFilter","columnsForFiltering","RunReport","reportRunning","reportDownloading","reportHasRun","reportData","tableMapping","activeGraphDateFilter","dateFilters","filterDate","showFilter","downloadReport","paramInputsVerify","reportDownload","reportId","reportParamsCompile","blob","kebabCase","reportDetails","filterByDateRange","dateFilter","updatedParams","startDateIndex","endDateIndex","formattedParams","runReport","defaultReportData","reportRun","columnNames","ColumnNames","Data","rowData","cell","dataTableCompose","RunReport_dataTable","DataTable","tableDataMapping","onDownloadClick","showDownload","RunReport_noDataMessage","mapParams","AuthorizedRepresentativeId","paramInputsCompose","paramDateInputs","paramInputs","paramInputUpdate","setHours","dateFilterChips","isActiveChip","paramName","paramIndex","reportWithFilter","RunReport_page","RunReport_breadcrumbs","RunReport_reportDetails","RunReport_description","RunReport_form","RunReport_runButton","AccountsToExport","poasForExportUpdate","poasForExportGet","AccountsToExport_container","AccountsToExport_card","AccountsToExport_updateButton","allSelected","AllAccounts","PoaIds","ProviderTile","hovering","imagePath","imagePaths","image","require","ProviderTile_providerContainer","onTouchStart","onTouchCancel","ProviderTile_viewAuthorization","onViewAuthorizationClick","BackOfficeAuthorization","providerName","BackOfficeAuthorization_container","BackOfficeAuthorization_title","BackOfficeAuthorization_emphasize","BackOfficeAuthorization_firmName","BackOfficeAuthorization_date","ExternalProvidersCard","editingStep","showAuthorizationModal","authorizationModalProvider","enabledBackOfficesGet","firmAddressCompose","btoa","onTileClick","backOffice","updatedBackOffices","printAuthorization","printWindow","ReactDOMServer","renderToStaticMarkup","justifyContent","atob","updateBackOfficesHandle","backOfficeIds","backOfficesUpdate","afterSave","authorizationStepCompose","enabledBackOffices","ExternalProvidersCard_removeAllProviders","scrollToTop","ExternalProvidersCard_providersCard","unmountOnExit","ExternalProvidersCard_stepper","ExternalProvidersCard_providers","ExternalProvidersCard_providersGrid","ExternalProvidersCard_buttons","ids","PortfolioDataCard","providers","updatedProviders","selectedProvidersGet","updateProvidersHandle","portfolioProvidersUpdate","PortfolioDataCard_card","PortfolioDataCard_tiles","PortfolioDataCard_buttons","codes","SetupData","showUpdateAccountsModal","backOfficesGet","SetupData_page","selectedProviders","PortfolioDataDownload","selectedProvider","previousBusinessDayGet","dateRangeVerify","dateDiff","weekendCount","yesterday","i","errorMessages","downloadDataHandle","portfolioDataDownload","fr","FileReader","readAsText","enabledProvidersGet","languageCompose","languageConfig","PortfolioDataDownload_providerLanguage","dayjsDate","enabledProviders","PortfolioDataDownload_page","PortfolioDataDownload_card","PortfolioDataDownload_radioButtons","PortfolioDataDownload_singleProvider","PortfolioDataDownload_datePickers","PortfolioDataDownload_downloadButton","downloadFormat","LPOASettings","defaultPrimaryContact","DefaultPrimaryContactName","showAuthorizationInstructions","settingCompose","settingKey","settingConfig","settingEnabled","LPOASettings_setting","LPOASettings_settingEnabled","LPOASettings_settingDisabled","LPOAAuthorizationCode","LPOASettings_page","LPOASettings_lpoaSettingsCard","LPOASettings_lpoaSettingsContainer","LPOASettings_firmDetail","LPOASettings_firmDetailTitle","LPOASettings_lpoaSettingSection","LPOASettings_authorizationCard","LPOASettings_authorizationContainer","LPOASettings_authorizationCode","LPOASettings_authorizationLanguage","BulkOptionChange","isLoadingAccounts","selectableCandidates","selectedCandidateIds","accountSelection","accountGroupConflicts","optionChangePendingConflicts","optionConflicts","zeroOptionChanges","onOptionCategoryChange","onOptionChange","queryKey","getCandidatesForBulkOptionChange","prepareCandidates","candidates","newSelectableCandidates","AccountGroupConflict","OptionChangePendingConflict","OptionConflict","newSelectableIds","newSelectedIds","selectedId","accountSelectionGet","createBulkOptionChange","AccountIds","stepZeroContent","selectedCategory","alignSelf","nextSelected","nextCandidates","stepOneContent","BulkOptionChange_accountSelectionContainer","BulkOptionChange_ineligibleContainer","BulkOptionChange_ineligibleHeader","BulkOptionChange_radioButtons","BulkOptionChange_count","BulkOptionChange_tableContainer","stepTwoContent","categoryName","BulkOptionChange_container","BulkOptionChange_workflow","BulkOptionChange_contentContainer","AppTour","setUserPreference","showRowMenu","completeTour","onKeypress","stepCount","keyCode","previousStep","fabStepCompose","AppTour_step","alignItems","Fab","infoIconStepCompose","totalSteps","rowMenuStepCompose","AppTour_rowMenu","iconButtonRoot","AppTour_rowMenuFlyout","searchStepCompose","siteNavigationStepCompose","welcomeMessageCompose","tourSteps","DialogContent","AppTour_container","AppTour_nav","MobileStepper","steps","stepperRoot","dotActive","stepperDotActive","areStatementsAvailable","downloadBulkStatements","bulkStatementsAvailableGet","bulkStatementsDownloadGet","BulkStatementDownload_container","BulkStatementDownload_cardContainer","BulkStatementDownload_cardBody","BulkStatementDownload_cardActions","Confirmation","Registration","onRegisterPhoneAndMethodSubmit","twoFactorRegistration","VerifyIdentity","PIN","PINError","regMethod","onPINSubmit","sanitizedPIN","verifyPIN","LockedOut","renderPIN","Answer","PhoneMethods","selectedMethod","selectedMethodError","submitPhoneMethod","onSubmitPhoneSuccess","fourDigits","PhoneAuthenticate","reSubmitPhoneCode","msg_security_code","AUTHENTICATION_STEPS","Authentication","authenticationStep","verifiedAppCode","VerifiedAppCode","isDomestic","render2FAVerificationStep","useToken","useTextOrPhone","TwoFAGraphic","logo","getTitle","currentTitle","rootTitle","matcher","reverse","ErrorBoundary","errorInfo","componentDidCatch","stack","transform","Navigation","storedVersion","isAccountListLoaded","isAgeBracketsLoaded","showMenus","Navigation_featuresContainer","Navigation_featuresChildren","SplashScreen","isAppLoading","LegalFooter","programDescriptionLink","AppRoot","ThemeProvider","createTheme","material_ui_theme","StyledEngineProvider","injectFirst","preloadedState","host","isDevEnv","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","configureStore","reducer","middleware","promise","devTools","subscribe","throttle","serializedState","set","createRoot","Provider","BrowserRouter"],"mappings":"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","file":"static/js/main.1739603d.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"ForgotUsername_buttons\":\"styles_ForgotUsername_buttons__2ZX6t\"};","module.exports = __webpack_public_path__ + \"static/media/CheckExample.75e95803.gif\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"giactText\":\"styles_giactText__3RpZN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"BeneficiaryAgeBarChart_container\":\"styles_BeneficiaryAgeBarChart_container__miKpw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"SetupData_page\":\"styles_SetupData_page__3wKw1\"};","module.exports = {\n Morningstar: {\n interfaceName: 'Morningstar Generic Import Interface',\n toolName: 'Morningstar Office',\n },\n PortfolioCenter: {\n interfaceName: 'Portfolio Center Standard Interface',\n toolName: 'Portfolio Center',\n },\n};","module.exports = __webpack_public_path__ + \"static/media/2FAGraphic.77884859.png\";","import { POSTrequest } from './api_handler';\nimport { store } from 'index';\n\nexport function persistClientErrors(error) {\n \n const state = store.getState();\n const params = {\n StackTrace: JSON.stringify(error),\n StateData: JSON.stringify(state),\n };\n\n if (state.session.token) {\n POSTrequest('/error', params)\n .catch(() => {\n console.warn('Client Error:', params); //eslint-disable-line no-console\n });\n }\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewUser_page\":\"styles_NewUser_page___kNYA\",\"NewUser_container\":\"styles_NewUser_container__2OzlU\",\"NewUser_buttons\":\"styles_NewUser_buttons__220TR\",\"NewUser_contactInputs\":\"styles_NewUser_contactInputs__3wHxm\",\"NewUser_mobileStepper\":\"styles_NewUser_mobileStepper__3EKMV\",\"NewUser_toggles\":\"styles_NewUser_toggles__33GHP\",\"NewUser_toggleSection_transactions\":\"styles_NewUser_toggleSection_transactions__sL00s\",\"NewUser_toggleSection_taxDocs\":\"styles_NewUser_toggleSection_taxDocs__1a13N\",\"NewUser_toggleSection_admin\":\"styles_NewUser_toggleSection_admin__2jGk3\",\"NewUser_toggleSection_reports\":\"styles_NewUser_toggleSection_reports__209AH\",\"NewUser_uneditableToggle\":\"styles_NewUser_uneditableToggle__2pldH\",\"NewUser_toggleSection\":\"styles_NewUser_toggleSection__10Hxa\",\"NewUser_toggleLabel\":\"styles_NewUser_toggleLabel__2cBx0\",\"NewUser_pin\":\"styles_NewUser_pin__JErAw\",\"NewUser_stepper\":\"styles_NewUser_stepper__2UR_r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"LPOASettings_page\":\"styles_LPOASettings_page__36M4c\",\"LPOASettings_lpoaSettingsContainer\":\"styles_LPOASettings_lpoaSettingsContainer__38GMf\",\"LPOASettings_authorizationContainer\":\"styles_LPOASettings_authorizationContainer__2uui5\",\"LPOASettings_firmDetail\":\"styles_LPOASettings_firmDetail__4hsx3\",\"LPOASettings_lpoaSettingsCard\":\"styles_LPOASettings_lpoaSettingsCard__1kPAx\",\"LPOASettings_authorizationCard\":\"styles_LPOASettings_authorizationCard__tOHTd\",\"LPOASettings_firmDetailTitle\":\"styles_LPOASettings_firmDetailTitle__254rO\",\"LPOASettings_lpoaSettingSection\":\"styles_LPOASettings_lpoaSettingSection__1ATsI\",\"LPOASettings_setting\":\"styles_LPOASettings_setting__1qcUI\",\"LPOASettings_settingEnabled\":\"styles_LPOASettings_settingEnabled__3wmQk\",\"LPOASettings_settingDisabled\":\"styles_LPOASettings_settingDisabled__3tisH\",\"LPOASettings_authorizationCode\":\"styles_LPOASettings_authorizationCode__10YaJ\",\"LPOASettings_authorizationLanguage\":\"styles_LPOASettings_authorizationLanguage__A_nia\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"topBarContainer\":\"styles_topBarContainer__qHTWT\",\"topBar\":\"styles_topBar__6wTyt\",\"titleColumn\":\"styles_titleColumn__3_At2\",\"closeIconColumn\":\"styles_closeIconColumn__1lFwE\",\"prrCalculator\":\"styles_prrCalculator__3duvw\",\"beneficiary\":\"styles_beneficiary__2osR8\",\"data\":\"styles_data__FuYm9\",\"dataTILE\":\"styles_dataTILE__a8-MX\",\"label\":\"styles_label__3yXxG\",\"labelTILE\":\"styles_labelTILE__3xzLI\",\"rorContainer\":\"styles_rorContainer__1ADWW\",\"rorTitle\":\"styles_rorTitle__1OS5P\",\"ppr\":\"styles_ppr__Vre9Y\",\"positiveReturn\":\"styles_positiveReturn__allOV\",\"negativeReturn\":\"styles_negativeReturn__IJPMh\",\"pprNotAvailable\":\"styles_pprNotAvailable__2TM8H\",\"buttons\":\"styles_buttons__1XYa7\",\"NA\":\"styles_NA__1WHVy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewOptions_stepperContentContainer\":\"styles_NewOptions_stepperContentContainer__1I-lH\",\"NewOptions_stepperButtons\":\"styles_NewOptions_stepperButtons__28wQe\",\"NewOptions_stepperContent\":\"styles_NewOptions_stepperContent__2TC-h\",\"NewOptions_stepperStepsContainer\":\"styles_NewOptions_stepperStepsContainer__2GW9X\",\"NewOptions_stepperSteps\":\"styles_NewOptions_stepperSteps__2J7CS\",\"newOptionDetailsContainer\":\"styles_newOptionDetailsContainer__E4NFU\",\"NewOptions_selectFields\":\"styles_NewOptions_selectFields__2rP_t\",\"NewOptions_customTemplatesNotAvailable\":\"styles_NewOptions_customTemplatesNotAvailable__5mHOL\",\"NewOptions_collapsableCustomizedName\":\"styles_NewOptions_collapsableCustomizedName__EqrW3\",\"NewOptions_selectedOptionName\":\"styles_NewOptions_selectedOptionName__1bXBF\",\"NewOptionChangeDetails\":\"styles_NewOptionChangeDetails__31xXO\",\"NewOptions_container\":\"styles_NewOptions_container__CE6K1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"paperContainer\":\"styles_paperContainer__1dOmB\",\"paperTitle\":\"styles_paperTitle__3nJkA\",\"dashRow\":\"styles_dashRow__2VIwl\",\"beneficiary\":\"styles_beneficiary__3Mpxm\",\"code\":\"styles_code__MDezl\",\"acct\":\"styles_acct__Omash\",\"status\":\"styles_status__1PLk_\",\"label\":\"styles_label__2-JGD\",\"labelTILE\":\"styles_labelTILE__1pgq7\",\"data\":\"styles_data__L6Fev\",\"dataTILE\":\"styles_dataTILE__3gUdV\",\"acctType\":\"styles_acctType__3iqU4\",\"learnMore\":\"styles_learnMore__32bKI\",\"GiftingAccountDetails_ownerContainer\":\"styles_GiftingAccountDetails_ownerContainer__2Oru6\",\"GiftingAccountDetails_accountOwnerName\":\"styles_GiftingAccountDetails_accountOwnerName__35OmO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"currentTime\":\"styles_currentTime__3eOAt\",\"printContainer\":\"styles_printContainer__pPeF7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Header_protectedNav\":\"styles_Header_protectedNav__3IAXa\",\"Header_publicNav\":\"styles_Header_publicNav___aA3D\",\"Header_left\":\"styles_Header_left__30t_K\",\"Header_menuIcon\":\"styles_Header_menuIcon__2InYA\",\"Header_lighterBackground\":\"styles_Header_lighterBackground__2O3gn\",\"Header_browserWarningContainer\":\"styles_Header_browserWarningContainer__38j4_\",\"Header_browserWarningClose\":\"styles_Header_browserWarningClose__DLsNO\",\"Header_navContainer\":\"styles_Header_navContainer__1eD0_\",\"Header_name\":\"styles_Header_name__1qBZq\",\"Header_arrow\":\"styles_Header_arrow__3UnIm\",\"Header_pageTitle\":\"styles_Header_pageTitle__1AdZf\",\"Header_right\":\"styles_Header_right__1Zvwr\",\"Header_sideLogo\":\"styles_Header_sideLogo__2E1US\",\"Header_visibleOnPrint\":\"styles_Header_visibleOnPrint__39BVC\",\"Header_helpIcon\":\"styles_Header_helpIcon__J0Evg\",\"Header_helpMenu\":\"styles_Header_helpMenu__3AOLW\",\"show\":\"styles_show__2vauC\",\"Header_helpMenuOverlay\":\"styles_Header_helpMenuOverlay__WE2-q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ManageLPOA_container\":\"styles_ManageLPOA_container__3Q3L_\",\"ManageLPOA_cardBody\":\"styles_ManageLPOA_cardBody__1Q0sH\",\"ManageLPOA_contactInputs\":\"styles_ManageLPOA_contactInputs__1AqKy\",\"ManageLPOA_card\":\"styles_ManageLPOA_card__1MYG5\",\"ManageLPOA_contactTabs\":\"styles_ManageLPOA_contactTabs__1LY3W\",\"ManageLPOA_errorText\":\"styles_ManageLPOA_errorText__2sMAO\",\"ManageLPOA_informationLine\":\"styles_ManageLPOA_informationLine__308ap\",\"ManageLPOA_settingToggles\":\"styles_ManageLPOA_settingToggles__1X8tW\",\"ManageLPOA_toggleLabel\":\"styles_ManageLPOA_toggleLabel__17Qew\",\"ManageLPOA_updateButton\":\"styles_ManageLPOA_updateButton__3EaHN\",\"ManageLPOA_settingSection\":\"styles_ManageLPOA_settingSection__1reM0\",\"ManageLPOA_settingsSection_first\":\"styles_ManageLPOA_settingsSection_first__3lqEY\",\"ManageLPOA_viewAccountSection\":\"styles_ManageLPOA_viewAccountSection__Qm5is\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountDetailsCard_container\":\"styles_AccountDetailsCard_container__XT5l9\",\"AccountDetailsCard_accountDetailsCard\":\"styles_AccountDetailsCard_accountDetailsCard__38Wji\",\"AccountDetailsCard_loading\":\"styles_AccountDetailsCard_loading__3KD6r\",\"AccountDetailsCard_optionDetailsCard\":\"styles_AccountDetailsCard_optionDetailsCard__GteP2\",\"AccountDetailsCard_accountDetails\":\"styles_AccountDetailsCard_accountDetails__Gca55\",\"AccountDetailsCard_accountDetailsAO\":\"styles_AccountDetailsCard_accountDetailsAO__EV7Ev\",\"AccountDetailsCard_accountDetailsBen\":\"styles_AccountDetailsCard_accountDetailsBen__1a3_M\",\"AccountDetailsCard_accountDetailsAcctNum\":\"styles_AccountDetailsCard_accountDetailsAcctNum__3ItUc\",\"AccountDetailsCard_accountDetailsTotalVal\":\"styles_AccountDetailsCard_accountDetailsTotalVal__1-xPj\",\"AccountDetailsCard_accountDetailsOption\":\"styles_AccountDetailsCard_accountDetailsOption__2-BMM\",\"AccountDetailsCard_accountDetailsAcctType\":\"styles_AccountDetailsCard_accountDetailsAcctType__37kbr\",\"AccountDetailsCard_accountDetailsAvailableBalance\":\"styles_AccountDetailsCard_accountDetailsAvailableBalance__SnRC3\",\"AccountDetailsCard_detailsTitle\":\"styles_AccountDetailsCard_detailsTitle__2IWeH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Documents_page\":\"styles_Documents_page__2_BlS\",\"Documents_container\":\"styles_Documents_container__3WHYz\",\"Documents_detailsCard\":\"styles_Documents_detailsCard__2BWVo\",\"Documents_details\":\"styles_Documents_details__2zLf_\",\"Documents_detailsSection\":\"styles_Documents_detailsSection__3_ejf\",\"Documents_details_acctOwner\":\"styles_Documents_details_acctOwner__KnEqM\",\"Documents_details_beneficiary\":\"styles_Documents_details_beneficiary__3wE-Q\",\"Documents_details_acctNum\":\"styles_Documents_details_acctNum__2q5Yb\",\"Documents_details_acctType\":\"styles_Documents_details_acctType__DGGrC\"};","var map = {\n\t\"./images/imagePaths\": 543,\n\t\"./images/imagePaths.js\": 543,\n\t\"./images/portfolioFormats/Morningstar.png\": 1622,\n\t\"./images/portfolioFormats/PortfolioCenter.png\": 1623,\n\t\"./images/providers/Addepar.png\": 1624,\n\t\"./images/providers/Advyzon.png\": 1625,\n\t\"./images/providers/Assetbook.png\": 1626,\n\t\"./images/providers/BackOfficeSupportService.png\": 1627,\n\t\"./images/providers/BlackDiamondPerformanceReporting.png\": 1628,\n\t\"./images/providers/BlackDiamondPerformanceReporting_OLD.png\": 1629,\n\t\"./images/providers/Capitect.png\": 1630,\n\t\"./images/providers/EnvestnetTamarac.png\": 1631,\n\t\"./images/providers/FocusPartnersAdvisorSolution.png\": 1632,\n\t\"./images/providers/InteractiveAdvisorySoftware.png\": 1633,\n\t\"./images/providers/OrionAdvisorServices.png\": 1634,\n\t\"./images/providers/PanoramixLogoSquare.png\": 1635,\n\t\"./images/providers/Quovo.png\": 1636,\n\t\"./images/providers/RightCapital_Logo.png\": 1637,\n\t\"./images/providers/SummitLogo.png\": 1638,\n\t\"./images/providers/eMoney.png\": 1639\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1621;","module.exports = __webpack_public_path__ + \"static/media/Morningstar.e489fce4.png\";","module.exports = __webpack_public_path__ + \"static/media/PortfolioCenter.3adc6630.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Advyzon.f56786b2.png\";","module.exports = __webpack_public_path__ + \"static/media/Assetbook.38590b70.png\";","module.exports = __webpack_public_path__ + \"static/media/BackOfficeSupportService.2b16f7c4.png\";","module.exports = __webpack_public_path__ + \"static/media/BlackDiamondPerformanceReporting.2502bced.png\";","module.exports = __webpack_public_path__ + \"static/media/BlackDiamondPerformanceReporting_OLD.a61e3c1c.png\";","module.exports = __webpack_public_path__ + \"static/media/Capitect.f0a0a4e4.png\";","module.exports = __webpack_public_path__ + \"static/media/EnvestnetTamarac.53eea080.png\";","module.exports = __webpack_public_path__ + \"static/media/FocusPartnersAdvisorSolution.69ddae55.png\";","module.exports = __webpack_public_path__ + \"static/media/InteractiveAdvisorySoftware.bf82819b.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/PanoramixLogoSquare.5c199b38.png\";","module.exports = __webpack_public_path__ + \"static/media/Quovo.73e882a0.png\";","module.exports = __webpack_public_path__ + \"static/media/RightCapital_Logo.4bc281cd.png\";","module.exports = __webpack_public_path__ + \"static/media/SummitLogo.8094b2cc.png\";","module.exports = __webpack_public_path__ + \"static/media/eMoney.94ad09d5.png\";","// Google Analytics using Autotrack plugin\nimport 'autotrack/lib/plugins/event-tracker';\nimport 'autotrack/lib/plugins/url-change-tracker';\nimport 'autotrack/lib/plugins/clean-url-tracker';\n\nimport { urlScrub } from './helpers';\n\nconst ga = window.ga;\n\nga('create', 'UA-87240905-2', 'auto');\nga('require', 'eventTracker');\nga('require', 'urlChangeTracker');\nga('require', 'cleanUrlTracker', {\n stripQuery: true,\n queryDimensionIndex: 1,\n indexFilename: 'index.html',\n trailingSlash: 'remove',\n urlFieldsFilter: (fieldsObj, parseUrl) => {\n fieldsObj.page = urlScrub(parseUrl(fieldsObj.page).pathname);\n return fieldsObj;\n },\n});\nga('send', 'pageview');","// extracted by mini-css-extract-plugin\nmodule.exports = {\"DashboardMetricsToolbar_container\":\"styles_DashboardMetricsToolbar_container__2rne1\",\"DashboardMetricsToolbar_MetricCard\":\"styles_DashboardMetricsToolbar_MetricCard__1yQoI\",\"clickable\":\"styles_clickable__8GlcW\",\"actionableTitle\":\"styles_actionableTitle__1eeoZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"styles_row__1r2OA\",\"forMobile\":\"styles_forMobile__161A-\",\"col\":\"styles_col__RCnGP\",\"title\":\"styles_title__1yV4k\",\"arrow\":\"styles_arrow__306PO\",\"end\":\"styles_end__mBl4_\",\"header\":\"styles_header__3CnOj\",\"drawerHeaderItem\":\"styles_drawerHeaderItem__3ljEQ\",\"closeButton\":\"styles_closeButton__2uFUO\",\"closeButtonArrow\":\"styles_closeButtonArrow__2EliD\",\"drawerContent\":\"styles_drawerContent__2FLkq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MyInfo_permissionsTitle\":\"styles_MyInfo_permissionsTitle__QGPBM\",\"MyInfo_permissionsContainer\":\"styles_MyInfo_permissionsContainer__3f7QJ\",\"MyInfo_permissionsColumn1\":\"styles_MyInfo_permissionsColumn1__3MZx2\",\"MyInfo_permissionsColumn2\":\"styles_MyInfo_permissionsColumn2__14vRH\",\"MyInfo_permission\":\"styles_MyInfo_permission__2f7R5\",\"MyInfo_permissionSection\":\"styles_MyInfo_permissionSection__13rgV\",\"MyInfo_permissionEnabled\":\"styles_MyInfo_permissionEnabled__MDKJq\",\"MyInfo_permissionDisabled\":\"styles_MyInfo_permissionDisabled__32AyB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"RunReport_page\":\"styles_RunReport_page__at6ac\",\"RunReport_reportDetails\":\"styles_RunReport_reportDetails__2Mpwk\",\"RunReport_breadcrumbs\":\"styles_RunReport_breadcrumbs__1AE-s\",\"RunReport_description\":\"styles_RunReport_description__2bZA2\",\"RunReport_form\":\"styles_RunReport_form__2WJO-\",\"RunReport_runButton\":\"styles_RunReport_runButton__BUHfz\",\"RunReport_noDataMessage\":\"styles_RunReport_noDataMessage__1eXJ1\",\"RunReport_dataTable\":\"styles_RunReport_dataTable__1iDeC\",\"paramDateInputs\":\"styles_paramDateInputs__1ekZh\",\"dateFilterChips\":\"styles_dateFilterChips__1u0gP\",\"Search_underline\":\"styles_Search_underline__17AzP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AppTour_container\":\"styles_AppTour_container__1FUY8\",\"AppTour_step\":\"styles_AppTour_step__1kukN\",\"AppTour_nav\":\"styles_AppTour_nav__hF_SR\",\"AppTour_rowMenu\":\"styles_AppTour_rowMenu__1ruUD\",\"AppTour_rowMenuFlyout\":\"styles_AppTour_rowMenuFlyout__Qhpr6\",\"show\":\"styles_show__s8bJN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Sidenav_contents\":\"styles_Sidenav_contents__1bYwp\",\"Sidenav_bottom\":\"styles_Sidenav_bottom__12oCU\",\"Sidenav_help\":\"styles_Sidenav_help__3vgZ_\",\"Sidenav_buildVersion\":\"styles_Sidenav_buildVersion__2yIXh\",\"Sidenav_userDetails\":\"styles_Sidenav_userDetails__SP7-0\",\"Sidenav_detailRow\":\"styles_Sidenav_detailRow__1UMnQ\",\"Sidenav_profileSection\":\"styles_Sidenav_profileSection__1egzg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"styles_row__32NBM\",\"col\":\"styles_col__tpx7H\",\"label\":\"styles_label__3UFKk\",\"toggle\":\"styles_toggle__3OvWM\"};","/*eslint no-console:0*/\nimport { isEqual, partition } from 'lodash';\n\n/**\n * Wrapper around Google Analytics call to send a custom event.\n * @param eventCategory\n * @param eventAction\n * @param eventLabel\n */\nexport function sendEvent({ eventCategory, eventAction, eventLabel, }) {\n window.ga('send', 'event', {\n eventCategory,\n eventAction,\n eventLabel\n });\n}\n\n/**\n * Wrapper around Google Analytics call to send a manual page view.\n * @param url\n */\nexport function sendPageView(url) {\n window.ga('send', 'pageview', url);\n}\n\n/**\n * Simply takes a function and wraps it with a secondary function to be resolved later.\n * This is similar in concept to currying.\n * We define the functions we are using first and passing arguments to the first parameter and executing later.\n * @param creator\n * @param wrappingFn\n * @returns {object|string}\n */\nexport function bindGenerator(creator, wrappingFn) {\n return function() {\n return wrappingFn(creator.apply(this, arguments));\n };\n}\n\n/**\n * Optimistically resolves functions with strings or objects and throws an error when objects don't work.\n * @param fn\n * @returns {object|string}\n * @throws throws an error if empty strings and empty objects don't work as parameters.\n */\nexport function tryResolvingValue(fn) {\n if (fn.length === 0) {\n return fn();\n }\n else {\n let response;\n try {\n // First try with strings as parameters\n response = fn.apply(this, Array(fn.length).fill(''));\n }\n catch {\n // Second try sending empty objects as parameters\n response = fn.apply(this, Array(fn.length).fill(({})));\n }\n return response;\n }\n}\n\n/**\n * Notifies dev of duplicate events & page views.\n * @param resolvedGenerators {object}\n */\nexport function duplicateValueNotifier(resolvedGenerators) {\n Object.keys(resolvedGenerators).forEach((key, index) =>\n Object.keys(resolvedGenerators)\n .filter((key2, index2) => key2 !== key && index2 > index) // filtering out current key and all keys past where we currently are.\n .forEach(key2 => {\n if (isEqual(resolvedGenerators[key], resolvedGenerators[key2])) { // if the resolved objects are the same we should let the dev know with a warning\n const type = typeof resolvedGenerators[key];\n if (type === 'object') {\n console.warn(`GA Generator \"${key}\" has identical event to Generator \"${key2}\". Event: ${JSON.stringify(resolvedGenerators[key])}`);\n }\n else {\n console.warn(`GA Generator \"${key}\" has identical page view URL to Generator \"${key2}\". URL: ${resolvedGenerators[key]}`);\n }\n }\n })\n );\n}\n\n/**\n * Takes an object of functions that resolve into strings or objects.\n * @param generators {object}\n */\nexport function connectGA(generators) {\n const resolvedGenerators = {};\n const unresolvableKeys = [];\n Object.keys(generators).forEach(key => {\n try {\n resolvedGenerators[key] = tryResolvingValue(generators[key]);\n }\n catch {\n unresolvableKeys.push(key);\n }\n });\n\n // checks for identical events in dev and test. we don't bother the user's console with our mistakes.\n // if (process.env.NODE_ENV === 'test' || process.env.NODE_ENV === 'dev') {\n // duplicateValueNotifier(resolvedGenerators);\n // }\n\n // separating events from page views [[events], [page views]]\n const actionKeysPartition = partition(Object.keys(resolvedGenerators), key => typeof resolvedGenerators[key] === 'object');\n const boundGenerators = {};\n\n actionKeysPartition[0].forEach(key => boundGenerators[key] = bindGenerator(generators[key], sendEvent));\n actionKeysPartition[1].forEach(key => boundGenerators[key] = bindGenerator(generators[key], sendPageView));\n\n // throw an error to let a dev know that this script isn't resolving a more complicated generator\n if (unresolvableKeys.length > 0) {\n console.error(`couldn't determine type of certain Action Creators, either fix this code or bind the following actions manually: ${unresolvableKeys.join(', ')}.`);\n }\n\n return {\n // returning any generators that weren't able to be mapped to bound functions.\n // This way we can still export everything in the index.\n ...generators,\n ...boundGenerators,\n };\n}\n\nexport function urlScrub(path) {\n if (path.match(/\\bagents\\b\\/(\\d+)\\/\\bgroups\\b\\/(\\d+)\\/\\baccounts\\b\\/(\\d+)/)) {\n let accountRoute = path.replace(/^\\/agents\\/(\\d+)\\/groups\\/(\\d+)\\/accounts\\/(\\d+)/, '/agents//groups//accounts/');\n\n if (path.match(/\\bcontributions\\b\\/(\\d+)/)) {\n accountRoute = accountRoute.replace(/contributions\\/(\\d+)/, 'contributions/');\n }\n else if (path.match(/\\boption-changes\\b\\/(\\d+)/)) {\n accountRoute = accountRoute.replace(/option-changes\\/(\\d+)/, 'option-changes/');\n }\n else if (path.match(/\\btransfers\\b\\/(\\d+)/)) {\n accountRoute = accountRoute.replace(/transfers\\/(\\d+)/, 'transfers/');\n }\n return accountRoute;\n }\n else if (path.match(/\\bmanage-users\\b\\/(\\d+)/)) {\n return path.replace(/^\\/manage-users\\/(\\d+)/, '/manage-users/');\n }\n else if (path.match(/\\bnew-accounts\\b\\/(\\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\\}{0,1})/)) {\n return path.replace(/^\\/new-accounts\\/(\\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\\}{0,1})$/, '/new-accounts/');\n }\n else if (path.match(/\\bview\\b\\/(\\d+)/)) {\n return path.replace(/^\\/templates\\/view\\/(\\d+)/, '/templates/view/');\n }\n else if (path.match(/\\bcopy\\b\\/(\\d+)/)) {\n return path.replace(/^\\/templates\\/copy\\/(\\d+)/, '/templates/copy/');\n }\n else {\n return path;\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NameMenu_name\":\"styles_NameMenu_name__2Dikl\",\"NameMenu_userDetails\":\"styles_NameMenu_userDetails__1wCiH\",\"NameMenu_detailRow\":\"styles_NameMenu_detailRow__1hLt5\",\"NameMenu_lpoaName\":\"styles_NameMenu_lpoaName__dQ2uU\",\"NameMenu_icon\":\"styles_NameMenu_icon__miEHE\",\"name-menu\":\"styles_name-menu__2_Z8W\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"BulkOptionChange_container\":\"styles_BulkOptionChange_container__lYyMn\",\"BulkOptionChange_workflow\":\"styles_BulkOptionChange_workflow__3o-K0\",\"BulkOptionChange_contentContainer\":\"styles_BulkOptionChange_contentContainer__1krdW\",\"BulkOptionChange_tableContainer\":\"styles_BulkOptionChange_tableContainer__35CPz\",\"BulkOptionChange_accountSelectionContainer\":\"styles_BulkOptionChange_accountSelectionContainer__1mWnN\",\"BulkOptionChange_radioButtons\":\"styles_BulkOptionChange_radioButtons__2Pj9J\",\"BulkOptionChange_table\":\"styles_BulkOptionChange_table__2lOI8\",\"BulkOptionChange_count\":\"styles_BulkOptionChange_count__172oc\",\"BulkOptionChange_ineligibleContainer\":\"styles_BulkOptionChange_ineligibleContainer__2HO0L\",\"BulkOptionChange_ineligibleHeader\":\"styles_BulkOptionChange_ineligibleHeader__1Gwwh\"};","import axios from 'axios';\n\nconst frontendConfig = window.frontendConfig;\n\nfunction configureRequest(apiPath) {\n const token = sessionStorage.getItem('token');\n axios.defaults.headers.common.Authorization = token || 'no~auth';\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n return frontendConfig.api + apiPath;\n}\n\nexport function GETrequest(apiPath, config = {}) {\n const endPoint = configureRequest(apiPath);\n return axios.get(endPoint, config)\n .then(res => res)\n .catch(err => err.response);\n}\n\nexport function POSTrequest(apiPath, data, config = {}) {\n const endPoint = configureRequest(apiPath);\n return axios.post(endPoint, data, config)\n .then(res => res)\n .catch(err => err.response);\n}\n\nexport function PUTrequest(apiPath, data, config = {}) {\n const endPoint = configureRequest(apiPath);\n return axios.put(endPoint, data, config)\n .then(res => res)\n .catch(err => err.response);\n}\n\nexport function DELETErequest(apiPath, config = {}) {\n const endPoint = configureRequest(apiPath);\n return axios.delete(endPoint, config)\n .then(res => res)\n .catch(err => err.response);\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AddBankAccount_formContainer\":\"styles_AddBankAccount_formContainer__6YnYI\",\"AddBankAccount_form\":\"styles_AddBankAccount_form__3trxF\",\"AddBankAccount_radioButtonHeader\":\"styles_AddBankAccount_radioButtonHeader__3wqX7\",\"AddBankAccount_textField\":\"styles_AddBankAccount_textField__27E_W\",\"AddBankAccount_bankName\":\"styles_AddBankAccount_bankName__2YsJC\",\"AddBankAccount_checkImg\":\"styles_AddBankAccount_checkImg__2AD7L\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"learnMoreInfoContainer\":\"styles_learnMoreInfoContainer__16lC1\",\"divider\":\"styles_divider__1ApX1\",\"closeIcon\":\"styles_closeIcon__1JUWJ\",\"learnMoreInfo\":\"styles_learnMoreInfo__1MQoS\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__1-cXG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PrimaryContact_page\":\"styles_PrimaryContact_page__3Kqcl\",\"PrimaryContact_assignCard\":\"styles_PrimaryContact_assignCard__xMcyz\",\"PrimaryContact_breadcrumbs\":\"styles_PrimaryContact_breadcrumbs__SYcEA\",\"PrimaryContact_cardTitle\":\"styles_PrimaryContact_cardTitle__1M8bW\",\"PrimaryContact_saveButton\":\"styles_PrimaryContact_saveButton__3k2wQ\",\"PrimaryContact_name\":\"styles_PrimaryContact_name__2gAWJ\",\"PrimaryContact_noAccountsMessage\":\"styles_PrimaryContact_noAccountsMessage__1oi7j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PortfolioDataDownload_page\":\"styles_PortfolioDataDownload_page__1A4p5\",\"PortfolioDataDownload_card\":\"styles_PortfolioDataDownload_card__3uPhr\",\"PortfolioDataDownload_radioButtons\":\"styles_PortfolioDataDownload_radioButtons__1i8T9\",\"PortfolioDataDownload_singleProvider\":\"styles_PortfolioDataDownload_singleProvider__1-LEU\",\"PortfolioDataDownload_datePickers\":\"styles_PortfolioDataDownload_datePickers__iMF_k\",\"PortfolioDataDownload_downloadButton\":\"styles_PortfolioDataDownload_downloadButton__etgmg\",\"PortfolioDataDownload_providerLanguage\":\"styles_PortfolioDataDownload_providerLanguage__jDWti\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewSpecial_container\":\"styles_NewSpecial_container__20QLa\",\"NewSpecial_stepperButtons\":\"styles_NewSpecial_stepperButtons__GHdai\",\"NewSpecial_stepperContent\":\"styles_NewSpecial_stepperContent__dL_M6\",\"NewSpecial_stepperSteps\":\"styles_NewSpecial_stepperSteps__2i2iH\",\"NewSpecial_occasionSelectionContainer\":\"styles_NewSpecial_occasionSelectionContainer__3q0mL\",\"NewSpecial_occasionSelectionBday\":\"styles_NewSpecial_occasionSelectionBday__Wypmu\",\"NewSpecial_occasionSelectionAnnualEvent\":\"styles_NewSpecial_occasionSelectionAnnualEvent__2-AzL\",\"NewSpecial_annualEventDateContainer\":\"styles_NewSpecial_annualEventDateContainer__1ctnc\",\"NewSpecial_radioButtonsLabelText\":\"styles_NewSpecial_radioButtonsLabelText__14oOI\",\"NewSpecial_radioButtonLabel\":\"styles_NewSpecial_radioButtonLabel__1xOVr\",\"NewSpecial_accounts\":\"styles_NewSpecial_accounts__2KnL9\",\"NewSpecial_amount\":\"styles_NewSpecial_amount__6zq39\",\"NewSpecial_birthdayContainer\":\"styles_NewSpecial_birthdayContainer__1qwnb\",\"NewSpecial_endDateContainer\":\"styles_NewSpecial_endDateContainer__3Uf6-\",\"NewSpecial_removeAccount\":\"styles_NewSpecial_removeAccount__3RcOs\",\"NewSpecial_hideIcon\":\"styles_NewSpecial_hideIcon__3LmxV\",\"NewSpecial_step0Container\":\"styles_NewSpecial_step0Container__1OYQf\",\"NewSpecial_step0Birthday\":\"styles_NewSpecial_step0Birthday__6-7uo\",\"NewSpecial_step0AnnualEvent\":\"styles_NewSpecial_step0AnnualEvent__2UT8-\",\"NewSpecial_currencyInput\":\"styles_NewSpecial_currencyInput__1lQy0\",\"NewSpecial_totalErrors\":\"styles_NewSpecial_totalErrors__JdvtR\",\"NewSpecial_errors\":\"styles_NewSpecial_errors__33T6U\",\"NewSpecial_total\":\"styles_NewSpecial_total__1Uczl\",\"NewSpecial_detail\":\"styles_NewSpecial_detail__2Pbn_\",\"NewSpecial_totalAmountStep0\":\"styles_NewSpecial_totalAmountStep0__2wTuF\",\"NewSpecial_totalAmountStep2\":\"styles_NewSpecial_totalAmountStep2__2jszp\",\"NewSpecial_birthday\":\"styles_NewSpecial_birthday__ylIGv\",\"NewSpecial_birthdayLabel\":\"styles_NewSpecial_birthdayLabel__3_Hpq\",\"NewSpecial_bankAccount\":\"styles_NewSpecial_bankAccount__2VPEh\",\"NewSpecial_reviewContainer\":\"styles_NewSpecial_reviewContainer__3vECv\",\"NewSpecial_reviewAccountNumber\":\"styles_NewSpecial_reviewAccountNumber__1xPD3\",\"NewSpecial_reviewAmount\":\"styles_NewSpecial_reviewAmount__1sXJS\",\"NewSpecial_reviewBankAccount\":\"styles_NewSpecial_reviewBankAccount__1ymV5\",\"NewSpecial_reviewBeneficiaryName\":\"styles_NewSpecial_reviewBeneficiaryName__363Nn\",\"NewSpecial_reviewEndDate\":\"styles_NewSpecial_reviewEndDate__1VQMp\",\"NewSpecial_reviewNextDate\":\"styles_NewSpecial_reviewNextDate__3f7aC\",\"NewSpecial_detailsTitle\":\"styles_NewSpecial_detailsTitle__1GoEX\",\"NewSpecial_termsContainer\":\"styles_NewSpecial_termsContainer__3UOr_\",\"NewSpecial_terms\":\"styles_NewSpecial_terms__139ed\",\"NewSpecial_checkbox\":\"styles_NewSpecial_checkbox__3Pne3\",\"NewSpecial_icon\":\"styles_NewSpecial_icon__2ch2O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"FilterIcon_iconContainer\":\"styles_FilterIcon_iconContainer__2UquO\",\"FilterIcon_filterIcon\":\"styles_FilterIcon_filterIcon__4oMpp\",\"FilterChip_chipLabel\":\"styles_FilterChip_chipLabel__UVajx\",\"TableToolbar_toolbarContainer\":\"styles_TableToolbar_toolbarContainer__1y4z0\",\"TableToolbar_iconMenu\":\"styles_TableToolbar_iconMenu__BgouO\",\"TableToolbar_menu\":\"styles_TableToolbar_menu__2vYwE\",\"show\":\"styles_show__3b0N5\",\"TableToolbar_menuOverlay\":\"styles_TableToolbar_menuOverlay__1mKUi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TermsConditions_container\":\"styles_TermsConditions_container__3U9im\",\"TermsConditions_modalHeader\":\"styles_TermsConditions_modalHeader__2RZ3C\",\"TermsConditions_modalSubheader\":\"styles_TermsConditions_modalSubheader__33wNP\",\"roman\":\"styles_roman__3LB01\",\"number\":\"styles_number__3e3UT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"BackOfficeAuthorization_container\":\"styles_BackOfficeAuthorization_container__1YYeR\",\"BackOfficeAuthorization_title\":\"styles_BackOfficeAuthorization_title__1rXvs\",\"BackOfficeAuthorization_emphasize\":\"styles_BackOfficeAuthorization_emphasize__3WAd4\",\"BackOfficeAuthorization_firmName\":\"styles_BackOfficeAuthorization_firmName__3XKd7\",\"BackOfficeAuthorization_date\":\"styles_BackOfficeAuthorization_date__RzsAM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ExternalProvidersCard_providersCard\":\"styles_ExternalProvidersCard_providersCard__3byvO\",\"ExternalProvidersCard_stepper\":\"styles_ExternalProvidersCard_stepper__1jQ_p\",\"ExternalProvidersCard_providers\":\"styles_ExternalProvidersCard_providers__3Qztc\",\"ExternalProvidersCard_providersGrid\":\"styles_ExternalProvidersCard_providersGrid__2YPEi\",\"ExternalProvidersCard_buttons\":\"styles_ExternalProvidersCard_buttons__3puUB\",\"ExternalProvidersCard_removeAllProviders\":\"styles_ExternalProvidersCard_removeAllProviders__18DPv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewRecurring_container\":\"styles_NewRecurring_container__1evi5\",\"NewRecurring_stepperButtons\":\"styles_NewRecurring_stepperButtons__3_Wkf\",\"NewRecurring_stepperContent\":\"styles_NewRecurring_stepperContent__2Tpxs\",\"NewRecurring_stepperSteps\":\"styles_NewRecurring_stepperSteps__3c-vt\",\"NewRecurring_step0Container\":\"styles_NewRecurring_step0Container__2SbMf\",\"NewRecurring_accountContainer\":\"styles_NewRecurring_accountContainer__3qwjX\",\"NewRecurring_amount\":\"styles_NewRecurring_amount__3yo1b\",\"NewRecurring_bankAccount\":\"styles_NewRecurring_bankAccount__aUWTS\",\"NewRecurring_errorsContainer\":\"styles_NewRecurring_errorsContainer__3-nFF\",\"NewRecurring_account\":\"styles_NewRecurring_account__1ZkNS\",\"NewRecurring_accountLabel\":\"styles_NewRecurring_accountLabel__1QABl\",\"NewRecurring_currencyInput\":\"styles_NewRecurring_currencyInput__29Omw\",\"NewRecurring_step1Container\":\"styles_NewRecurring_step1Container__BTim4\",\"NewRecurring_endDate\":\"styles_NewRecurring_endDate__3-vgF\",\"NewRecurring_step1Date1\":\"styles_NewRecurring_step1Date1__10Nvm\",\"NewRecurring_step1Date2\":\"styles_NewRecurring_step1Date2__N6PwH\",\"NewRecurring_error\":\"styles_NewRecurring_error__3c0qk\",\"NewRecurring_reviewContainer\":\"styles_NewRecurring_reviewContainer__2xm_c\",\"NewRecurring_reviewInfoAccountNum\":\"styles_NewRecurring_reviewInfoAccountNum__19qq2\",\"NewRecurring_reviewInfoBen\":\"styles_NewRecurring_reviewInfoBen__aA6bc\",\"NewRecurring_reviewInfoSched\":\"styles_NewRecurring_reviewInfoSched__31qTn\",\"NewRecurring_reviewInfoNextDate\":\"styles_NewRecurring_reviewInfoNextDate__22g-h\",\"NewRecurring_reviewInfoEndDate\":\"styles_NewRecurring_reviewInfoEndDate__2ikL5\",\"NewRecurring_reviewInfoAmount\":\"styles_NewRecurring_reviewInfoAmount__2ofHz\",\"NewRecurring_reviewInfoBankAccount\":\"styles_NewRecurring_reviewInfoBankAccount__8oxWR\",\"NewRecurring_detailsTitle\":\"styles_NewRecurring_detailsTitle__2YyrE\",\"NewRecurring_termsAndConditions\":\"styles_NewRecurring_termsAndConditions__1lguI\",\"NewRecurring_terms\":\"styles_NewRecurring_terms__tXmVP\",\"NewRecurring_checkbox\":\"styles_NewRecurring_checkbox__2O1Zz\",\"NewRecurring_addButton\":\"styles_NewRecurring_addButton__2XB1i\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewWithdrawals_checkMailingMessage\":\"styles_NewWithdrawals_checkMailingMessage__14mMd\",\"NewWithdrawals_paymentType\":\"styles_NewWithdrawals_paymentType__2TP_8\",\"NewWithdrawals_sellDate\":\"styles_NewWithdrawals_sellDate__1qY6d\",\"NewWithdrawals_detailsTitle\":\"styles_NewWithdrawals_detailsTitle__3gTaU\",\"NewWithdrawals_radioButtonsInfoIcon\":\"styles_NewWithdrawals_radioButtonsInfoIcon__2UK5r\",\"NewWithdrawals_radioButtonsLabelText\":\"styles_NewWithdrawals_radioButtonsLabelText__1IuJ3\",\"NewWithdrawals_radioButtonsLabel\":\"styles_NewWithdrawals_radioButtonsLabel__3A3t0\",\"NewWithdrawals_recipientAddressForm\":\"styles_NewWithdrawals_recipientAddressForm__1-vWZ\",\"NewWithdrawals_recipientAddress\":\"styles_NewWithdrawals_recipientAddress__1o2VM\",\"NewWithdrawals_reviewAmount\":\"styles_NewWithdrawals_reviewAmount__mSfRq\",\"NewWithdrawals_reviewDate\":\"styles_NewWithdrawals_reviewDate__2VisN\",\"NewWithdrawals_reviewType\":\"styles_NewWithdrawals_reviewType__oL6VX\",\"NewWithdrawals_reviewRecipient\":\"styles_NewWithdrawals_reviewRecipient__izrGR\",\"NewWithdrawals_reviewRecipientAddress\":\"styles_NewWithdrawals_reviewRecipientAddress__3bSrP\",\"NewWithdrawals_reviewPayment\":\"styles_NewWithdrawals_reviewPayment__1MAR4\",\"NewWithdrawals_reviewContainer\":\"styles_NewWithdrawals_reviewContainer__7Q6_S\",\"NewWithdrawals_stepperButton\":\"styles_NewWithdrawals_stepperButton__1PAn0\",\"NewWithdrawals_stepperButtons\":\"styles_NewWithdrawals_stepperButtons__2OjF0\",\"NewWithdrawals_termsAndConditions\":\"styles_NewWithdrawals_termsAndConditions__2B6X5\",\"NewWithdrawals_termsAndConditionsCheckbox\":\"styles_NewWithdrawals_termsAndConditionsCheckbox__2ZXi1\",\"NewWithdrawals_withdrawalType\":\"styles_NewWithdrawals_withdrawalType__Gm6W7\",\"NewWithdrawals_error\":\"styles_NewWithdrawals_error__1LkVt\",\"NewWithdrawals_partialBalanceMessaging\":\"styles_NewWithdrawals_partialBalanceMessaging__2KN9e\",\"NewWithdrawals_container\":\"styles_NewWithdrawals_container__2CTHf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewOneTime_container\":\"styles_NewOneTime_container__1yvF8\",\"NewOneTime_stepperButtons\":\"styles_NewOneTime_stepperButtons__57bX3\",\"NewOneTime_stepperContent\":\"styles_NewOneTime_stepperContent__aOkht\",\"NewOneTime_stepperSteps\":\"styles_NewOneTime_stepperSteps__UoI5f\",\"NewOneTime_step0AccountsContainer\":\"styles_NewOneTime_step0AccountsContainer__1aigx\",\"NewOneTime_removeAccount\":\"styles_NewOneTime_removeAccount__2N0jG\",\"NewOneTime_accounts\":\"styles_NewOneTime_accounts__1qIWS\",\"NewOneTime_amount\":\"styles_NewOneTime_amount__2iUZM\",\"NewOneTime_step1Container\":\"styles_NewOneTime_step1Container__1jVdt\",\"NewOneTime_step0Container\":\"styles_NewOneTime_step0Container__11PMz\",\"NewOneTime_bankAccount\":\"styles_NewOneTime_bankAccount__R8wuT\",\"NewOneTime_hideIcon\":\"styles_NewOneTime_hideIcon__1BgiM\",\"NewOneTime_currencyInput\":\"styles_NewOneTime_currencyInput__2PBmD\",\"NewOneTime_reviewContainer\":\"styles_NewOneTime_reviewContainer__2Xghf\",\"NewOneTime_reviewAccountNumber\":\"styles_NewOneTime_reviewAccountNumber__2wb-y\",\"NewOneTime_reviewAmount\":\"styles_NewOneTime_reviewAmount__Y1P5s\",\"NewOneTime_reviewBankAccount\":\"styles_NewOneTime_reviewBankAccount__3KFG6\",\"NewOneTime_reviewBeneficiaryName\":\"styles_NewOneTime_reviewBeneficiaryName__12EtV\",\"NewOneTime_reviewDate\":\"styles_NewOneTime_reviewDate__168gD\",\"NewOneTime_totalAmountStep2\":\"styles_NewOneTime_totalAmountStep2__ydxKd\",\"NewOneTime_totalAmountStep0\":\"styles_NewOneTime_totalAmountStep0__zi-1V\",\"NewOneTime_detailsTitle\":\"styles_NewOneTime_detailsTitle__1RVgm\",\"NewOneTime_termsContainer\":\"styles_NewOneTime_termsContainer__V1s6J\",\"NewOneTime_terms\":\"styles_NewOneTime_terms__1wDMb\",\"NewOneTime_checkbox\":\"styles_NewOneTime_checkbox__ydyID\",\"NewOneTime_detail\":\"styles_NewOneTime_detail__3fjAE\",\"NewOneTime_errors\":\"styles_NewOneTime_errors__3uW-g\",\"NewOneTime_totalAndErrorsContainer\":\"styles_NewOneTime_totalAndErrorsContainer__1wQui\",\"NewOneTime_addAccount\":\"styles_NewOneTime_addAccount__1QkVH\",\"NewOneTime_addBank\":\"styles_NewOneTime_addBank__1JfQ0\",\"NewOneTime_termsAndConditions\":\"styles_NewOneTime_termsAndConditions__ZIkEJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Contributions_container\":\"styles_Contributions_container__3aC6q\",\"Contributions_details\":\"styles_Contributions_details__3NlTk\",\"Contributions_loading\":\"styles_Contributions_loading__QDMwE\",\"Contributions_newContributions\":\"styles_Contributions_newContributions__2Wogc\",\"Contributions_pageNav\":\"styles_Contributions_pageNav__1eVa9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TermsAndConditions_termsAndConditions\":\"styles_TermsAndConditions_termsAndConditions__3rLmc\",\"TermsAndConditions_termsAndConditionsCheckbox\":\"styles_TermsAndConditions_termsAndConditionsCheckbox__363uo\",\"TermsAndConditions_modalHeader\":\"styles_TermsAndConditions_modalHeader__29mqR\",\"TermsAndConditions_modalSubheader\":\"styles_TermsAndConditions_modalSubheader__2rTKZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Withdrawals_container\":\"styles_Withdrawals_container__2KKQ4\",\"Withdrawals_newWithdrawals\":\"styles_Withdrawals_newWithdrawals__1JDAT\",\"Withdrawals_pageNav\":\"styles_Withdrawals_pageNav__3sA5u\",\"Withdrawals_tradeCutoffWarning\":\"styles_Withdrawals_tradeCutoffWarning__3Od6Q\",\"Withdrawals_withdrawalDetails\":\"styles_Withdrawals_withdrawalDetails__2Klwv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"divider\":\"styles_divider__3FJCa\",\"closeIcon\":\"styles_closeIcon__2gnnE\",\"learnMoreInfo\":\"styles_learnMoreInfo__2NdGY\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__14xZh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ReportsList_page\":\"styles_ReportsList_page__1q0RW\",\"ReportsList_loading\":\"styles_ReportsList_loading__1nfSk\",\"ReportsList_reports\":\"styles_ReportsList_reports__3ELYa\",\"ReportsList_section\":\"styles_ReportsList_section__2IJtF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ProviderTile_providerContainer\":\"styles_ProviderTile_providerContainer__uFIEv\",\"enabled\":\"styles_enabled__16fzQ\",\"editing\":\"styles_editing__2emZ9\",\"ProviderTile_viewAuthorization\":\"styles_ProviderTile_viewAuthorization__kAjMD\",\"show\":\"styles_show__3c1VO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountDetails_page\":\"styles_AccountDetails_page__2KPQ5\",\"AccountDetails_pageNav\":\"styles_AccountDetails_pageNav__3fGt0\",\"AccountDetails_status\":\"styles_AccountDetails_status__P7gaE\",\"AccountDetails_ownerContainer\":\"styles_AccountDetails_ownerContainer__1re_p\",\"AccountDetails_accountSelector\":\"styles_AccountDetails_accountSelector__3KoVw\",\"AccountDetails_loading\":\"styles_AccountDetails_loading__1RQvm\",\"AccountDetails_accountSelectorTab\":\"styles_AccountDetails_accountSelectorTab__2WIJB\",\"selected\":\"styles_selected__7jlMA\",\"AccountDetails_accountContainer\":\"styles_AccountDetails_accountContainer__1JXIg\",\"AccountDetails_accountOwnerName\":\"styles_AccountDetails_accountOwnerName__2QmGD\",\"AccountDetails_beneficiaryCard\":\"styles_AccountDetails_beneficiaryCard__2MdBg\",\"AccountDetails_successorsCard\":\"styles_AccountDetails_successorsCard__2ZTQn\",\"AccountDetails_detailsCard\":\"styles_AccountDetails_detailsCard__1I3Dz\",\"AccountDetails_fundsCard\":\"styles_AccountDetails_fundsCard__1zwqZ\",\"AccountDetails_upcomingTransactionsCard\":\"styles_AccountDetails_upcomingTransactionsCard__342fd\",\"AccountDetails_transactionsCard\":\"styles_AccountDetails_transactionsCard__2kyrQ\",\"AccountDetails_investmentOption\":\"styles_AccountDetails_investmentOption__eHKHO\",\"AccountDetails_detailTitle\":\"styles_AccountDetails_detailTitle__2ILCC\",\"AccountDetails_accountDetails\":\"styles_AccountDetails_accountDetails__dY7rA\",\"AccountDetails_accountNumber\":\"styles_AccountDetails_accountNumber__ks3YN\",\"AccountDetails_accountType\":\"styles_AccountDetails_accountType__23aFr\",\"AccountDetails_age\":\"styles_AccountDetails_age__2RSPU\",\"AccountDetails_netPrincipal\":\"styles_AccountDetails_netPrincipal__1hxx7\",\"AccountDetails_optionChangesRemaining\":\"styles_AccountDetails_optionChangesRemaining__2s3Th\",\"AccountDetails_ytdContributions\":\"styles_AccountDetails_ytdContributions___aKUR\",\"AccountDetails_priorContributions\":\"styles_AccountDetails_priorContributions__1j51I\",\"AccountDetails_fundName\":\"styles_AccountDetails_fundName__1bDfr\",\"AccountDetails_fund\":\"styles_AccountDetails_fund__2b-zQ\",\"AccountDetails_fundDetails\":\"styles_AccountDetails_fundDetails__3ts2O\",\"AccountDetails_totalBalance\":\"styles_AccountDetails_totalBalance__z155T\",\"AccountDetails_allocationLabel\":\"styles_AccountDetails_allocationLabel__SQKrB\",\"AccountDetails_allocationValue\":\"styles_AccountDetails_allocationValue__2K5FM\",\"AccountDetails_tableContainer\":\"styles_AccountDetails_tableContainer__1oy3e\",\"AccountDetails_upcomingTransactionsCardLoading\":\"styles_AccountDetails_upcomingTransactionsCardLoading__2EzIW\",\"AccountDetails_upcomingTransactionsEmptyMessage\":\"styles_AccountDetails_upcomingTransactionsEmptyMessage__1d5xH\",\"negativeReturn\":\"styles_negativeReturn__3TKwr\",\"positiveReturn\":\"styles_positiveReturn__1I9GG\",\"pprIcon\":\"styles_pprIcon__3wHev\",\"pprNotAvailable\":\"styles_pprNotAvailable__jyyvg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"OptionChanges_container\":\"styles_OptionChanges_container__2Ls3-\",\"OptionChanges_newOptionChanges\":\"styles_OptionChanges_newOptionChanges__1PvYm\",\"OptionChanges_optionChangeDetails\":\"styles_OptionChanges_optionChangeDetails__oZn-z\",\"OptionChanges_pageNav\":\"styles_OptionChanges_pageNav__b-qQ7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Transfer_container\":\"styles_Transfer_container__BPhPz\",\"Transfer_stepperContent\":\"styles_Transfer_stepperContent___C7Vs\",\"step-1\":\"styles_step-1__zOCab\",\"step-2\":\"styles_step-2__13Wii\",\"Transfer_stepperButtons\":\"styles_Transfer_stepperButtons__3IYWY\",\"Transfer_stepperButton\":\"styles_Transfer_stepperButton__5IFXk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Transfers_transfersContainer\":\"styles_Transfers_transfersContainer__2QNzS\",\"Transfers_pageNav\":\"styles_Transfers_pageNav__36ZP_\",\"Transfers_detailsContainer\":\"styles_Transfers_detailsContainer__Kn5Wb\",\"Transfers_children\":\"styles_Transfers_children__32AIz\",\"Transfers_loading\":\"styles_Transfers_loading__3HEbD\",\"Transfers_scheduledTable\":\"styles_Transfers_scheduledTable__r6Yrl\",\"Transfers_historyTable\":\"styles_Transfers_historyTable__2YVO6\",\"Transfers_scheduledContainer\":\"styles_Transfers_scheduledContainer__YKc74\",\"Transfers_historyContainer\":\"styles_Transfers_historyContainer__zJFjD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"BulkUploadModal_body\":\"styles_BulkUploadModal_body__tg2Qk\",\"BulkUploadModal_chooseFileButton\":\"styles_BulkUploadModal_chooseFileButton__3Du7s\",\"BulkUploadModal_fileName\":\"styles_BulkUploadModal_fileName__1gE5e\",\"BulkUploadModal_fileInput\":\"styles_BulkUploadModal_fileInput__10zJV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"StaticErrorResolveModal_container\":\"styles_StaticErrorResolveModal_container__VM2iX\",\"StaticErrorResolveModal_section\":\"styles_StaticErrorResolveModal_section__14vwP\",\"StaticErrorResolveModal_approvedValue\":\"styles_StaticErrorResolveModal_approvedValue__15tgE\",\"StaticErrorResolveModal_sectionTitle\":\"styles_StaticErrorResolveModal_sectionTitle__1WawC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AssignAccounts_container\":\"styles_AssignAccounts_container__2y9B-\",\"AssignAccounts_radioButtons\":\"styles_AssignAccounts_radioButtons__-s9b9\",\"AssignAccounts_table\":\"styles_AssignAccounts_table__34fsV\",\"AssignAccounts_count\":\"styles_AssignAccounts_count__1ro-F\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__OF-mw\",\"intructionSteps_container\":\"styles_intructionSteps_container__21Tby\",\"intructionSteps_body\":\"styles_intructionSteps_body__3TgpS\",\"QRCode\":\"styles_QRCode__2zqy8\",\"methods\":\"styles_methods__jShvZ\",\"buttons\":\"styles_buttons__C-BMZ\",\"attemptWarning\":\"styles_attemptWarning__2ifj-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"BulkStatementDownload_container\":\"styles_BulkStatementDownload_container__2p0zJ\",\"BulkStatementDownload_cardContainer\":\"styles_BulkStatementDownload_cardContainer__1a3II\",\"BulkStatementDownload_cardBody\":\"styles_BulkStatementDownload_cardBody__l4HD3\",\"BulkStatementDownload_cardActions\":\"styles_BulkStatementDownload_cardActions__2_jaF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3Vrfy\",\"title\":\"styles_title__1bFn5\",\"titleWithInfoIcon\":\"styles_titleWithInfoIcon__1SX0L\",\"contentLighter\":\"styles_contentLighter__1UeyC\",\"preferencesContainer\":\"styles_preferencesContainer__1_iSs\",\"row\":\"styles_row__7RkJP\",\"col\":\"styles_col__2obLc\",\"aoName\":\"styles_aoName__3Jyyv\",\"logo\":\"styles_logo__2kHoD\",\"passwordRequirements\":\"styles_passwordRequirements__3fQUX\",\"addressType\":\"styles_addressType__2rDNg\",\"addressVerLine\":\"styles_addressVerLine__1feTd\",\"addressStreets\":\"styles_addressStreets__31PlS\",\"addressCity\":\"styles_addressCity__3rpyM\",\"addressStatePostal\":\"styles_addressStatePostal__3JMGB\",\"addressContainer\":\"styles_addressContainer__Cxf6M\",\"phoneType\":\"styles_phoneType__3LGcT\",\"phoneVerLine\":\"styles_phoneVerLine__14_Hj\",\"phoneNum\":\"styles_phoneNum__39ATY\",\"phoneContainer\":\"styles_phoneContainer__3Z-L4\",\"methodName\":\"styles_methodName__187-a\",\"methodVerLine\":\"styles_methodVerLine__2Ueeb\",\"methodAccount\":\"styles_methodAccount__FtKgb\",\"methodMethod\":\"styles_methodMethod__dVqZL\",\"methodsContainer\":\"styles_methodsContainer__1fWvv\",\"address\":\"styles_address__3Gtt9\",\"myInfo_nameContainer\":\"styles_myInfo_nameContainer__3p3C4\",\"myInfo_name\":\"styles_myInfo_name__1paG9\",\"myInfo_nameEdit\":\"styles_myInfo_nameEdit__2lL25\",\"myInfo_nameEditIcon\":\"styles_myInfo_nameEditIcon__2NVFa\",\"myInfo_right_container\":\"styles_myInfo_right_container__2fAHt\",\"myInfo_left_container\":\"styles_myInfo_left_container__2avgm\",\"myInfo_header\":\"styles_myInfo_header__gKerm\",\"myInfo_textInput\":\"styles_myInfo_textInput__33swV\",\"myInfo_button\":\"styles_myInfo_button__1gBFJ\",\"myInfo_2FA_otherMethods\":\"styles_myInfo_2FA_otherMethods__2v9El\",\"warning\":\"styles_warning__rKOVi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__gPgu_\",\"body\":\"styles_body__1HBtC\",\"logo\":\"styles_logo__1QObt\",\"intructionSteps_container\":\"styles_intructionSteps_container__1emaT\",\"intructionSteps_body\":\"styles_intructionSteps_body__l12UG\",\"QRCode\":\"styles_QRCode__oyca6\",\"methods\":\"styles_methods__mUawo\",\"buttons\":\"styles_buttons__211P8\",\"phoneInput\":\"styles_phoneInput__32WXZ\",\"attemptWarning\":\"styles_attemptWarning__2CQ3s\"};","/*\n *\n * Sessions constants\n *\n */\nexport const INITIALIZE_STORE = 'App_Root/components/Sessions/INITIALIZE_STORE';\n\nexport const BROWSER_WARNING = 'App_Root/components/Sessions/BROWSER_WARNING';\nexport const MOBILE_WARNING = 'App_Root/components/Sessions/MOBILE_WARNING';\n\nexport const USER_LOGIN = 'App_Root/components/Sessions/USER_LOGIN';\n\nexport const TOKEN_VALIDATE = 'App_Root/components/Sessions/TOKEN_VALIDATE';\nexport const TOKEN_VALIDATE_INTERVAL_ID_SET = 'App_Root/components/Sessions/TOKEN_VALIDATE_INTERVAL_ID_SET';\nexport const TOKEN_VALIDATE_INTERVAL_ID_CLEAR = 'App_Root/components/Sessions/TOKEN_VALIDATE_INTERVAL_ID_CLEAR';\n\nexport const USERNAME_CHANGE = 'App_Root/components/Sessions/USERNAME_CHANGE';\n\nexport const ADVISOR_NAME_UPDATE = 'App_Root/components/Sessions/ADVISOR_NAME_UPDATE';\n\nexport const GET_USER_PREFERENCES = 'App_Root/components/Sessions/GET_USER_PREFERENCES';\nexport const SAVE_USER_PREFERENCE = 'App_Root/components/Sessions/SAVE_USER_PREFERENCE';\nexport const USER_PREFERENCE_KEYS = {\n hasSeenTour: 'HasSeenFATour',\n};\n\nexport const REFRESH_CLAIMS = 'App_Root/components/Sessions/REFRESH_CLAIMS';\nexport const RESET_CLAIMS = 'App_Root/components/Sessions/RESET_CLAIMS';\n\nexport const TOGGLE_SPLASH_HAS_DISPLAYED = 'App_Root/components/Sessions/TOGGLE_SPLASH_HAS_DISPLAYED';\n\nexport const REASONS_BLOCKED = {\n TWO_FACTOR_REGISTRATION: 'TwoFactorRegistration',\n TWO_FACTOR_AUTHENTICATION: 'TwoFactorAuthentication',\n};\n\nexport const TWO_FACTOR_STATUS = {\n COMPLETED: 'Completed',\n PENDING: 'Pending',\n BYPASSED: 'Bypassed',\n UNAVAILABLE: 'Unavailable',\n REQUIRED: 'Required'\n};\n\nexport const TWO_FACTOR_TYPES = {\n REGISTRATION: 'registrations',\n AUTHENTICATION: 'authentication',\n PROTECTED: 'protected',\n UPDATE: 'update'\n};","import { POSTrequest, PUTrequest, GETrequest } from 'utils/helpers/api_handler';\nimport {\n BROWSER_WARNING,\n INITIALIZE_STORE,\n MOBILE_WARNING,\n USER_LOGIN,\n USERNAME_CHANGE,\n ADVISOR_NAME_UPDATE,\n GET_USER_PREFERENCES,\n SAVE_USER_PREFERENCE,\n TOGGLE_SPLASH_HAS_DISPLAYED,\n REFRESH_CLAIMS,\n RESET_CLAIMS,\n} from './constants';\n\n////////////////////////////////// LOGIN //////////////////////////////////\nexport function userLogin(params) {\n const response = POSTrequest('/authentication/login', params);\n return {\n type: USER_LOGIN,\n payload: response\n };\n}\n\n////////////////////////////////// LOGOUT //////////////////////////////////\nexport function userLogout(params) {\n const response = POSTrequest('/authentication/logout', params);\n return {\n type: INITIALIZE_STORE,\n payload: response\n };\n}\n\n////////////////////////////////// SESSION MGMT //////////////////////////////////\nexport function setBrowserWarning() {\n return {\n type: BROWSER_WARNING,\n };\n}\n\nexport function setMobileWarning() {\n return {\n type: MOBILE_WARNING,\n };\n}\n\nexport function clearStore() {\n return {\n type: INITIALIZE_STORE\n };\n}\n\nexport function refreshClaims() { // This only refreshes claims, not the token. The token that is returned is the same as the existing session.\n const response = GETrequest('/authentication/ClaimRefresh');\n return {\n type: REFRESH_CLAIMS,\n payload: response,\n };\n}\n\nexport function resetClaims() {\n const response = GETrequest('/authentication/claims');\n return {\n type: RESET_CLAIMS,\n payload: response,\n };\n}\n\n////////////////////////////////// USERNAME //////////////////////////////////\nexport function usernameChange(username, password) {\n const payload = PUTrequest('/authentication/changeusername', { username, password });\n\n return {\n type: USERNAME_CHANGE,\n payload,\n };\n}\n\n////////////////////////////////// OTHER //////////////////////////////////\nexport function advisorNameUpdate(name) {\n return {\n type: ADVISOR_NAME_UPDATE,\n name,\n };\n}\n\nexport function getUserPreferences() {\n const payload = GETrequest('/users/preferences');\n \n return {\n type: GET_USER_PREFERENCES,\n payload,\n };\n}\n\nexport function saveUserPreference(userId, key, value) {\n const payload = PUTrequest('/users/preferences', {\n UserId: userId,\n Identifier: key,\n Value: value,\n });\n \n return {\n type: SAVE_USER_PREFERENCE,\n payload,\n };\n}\n\nexport function toggleSplashHasDisplayed() {\n return {\n type: TOGGLE_SPLASH_HAS_DISPLAYED,\n };\n}","module.exports = {\n 1: '/providers/FocusPartnersAdvisorSolution.png',\n 3: '/providers/OrionAdvisorServices.png',\n 6: '/providers/EnvestnetTamarac.png',\n 8: '/providers/BlackDiamondPerformanceReporting.png',\n 10: '/providers/InteractiveAdvisorySoftware.png',\n 12: '/providers/Assetbook.png',\n 15: '/providers/eMoney.png',\n 22: '/providers/BackOfficeSupportService.png',\n 25: '/providers/Addepar.png',\n 27: '/providers/Advyzon.png',\n 29: '/providers/RightCapital_Logo.png',\n 34: '/providers/PanoramixLogoSquare.png',\n 38: '/providers/SummitLogo.png',\n 42: '/providers/Capitect.png',\n PortfolioCenter: '/portfolioFormats/PortfolioCenter.png',\n Morningstar: '/portfolioFormats/Morningstar.png',\n};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TransactionDetailsModal_container\":\"styles_TransactionDetailsModal_container__bQ6dZ\",\"TransactionDetailsModal_detailRow\":\"styles_TransactionDetailsModal_detailRow__2BrK2\",\"TransactionDetailsModal_funds\":\"styles_TransactionDetailsModal_funds__1FDqX\",\"TransactionDetailsModal_fundContainer\":\"styles_TransactionDetailsModal_fundContainer__263JF\",\"TransactionDetailsModal_details\":\"styles_TransactionDetailsModal_details__1nzW2\",\"TransactionDetailsModal_mainDetails\":\"styles_TransactionDetailsModal_mainDetails__-uJ3h\",\"TransactionDetailsModal_payeeDetails\":\"styles_TransactionDetailsModal_payeeDetails__3pVsD\",\"TransactionDetailsModal_rowTitle\":\"styles_TransactionDetailsModal_rowTitle__7ZZXb\",\"TransactionDetailsModal_rowValue\":\"styles_TransactionDetailsModal_rowValue__9pQYx\",\"TransactionDetailsModal_fundName\":\"styles_TransactionDetailsModal_fundName__cBN1f\",\"TransactionDetailsModal_fundDetailsRow\":\"styles_TransactionDetailsModal_fundDetailsRow__3JlYv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PageNotFound_container\":\"styles_PageNotFound_container__3O6KQ\",\"PageNotFound_shrug\":\"styles_PageNotFound_shrug__3CZnh\",\"bounce\":\"styles_bounce__tS72M\",\"PageNotFound_message\":\"styles_PageNotFound_message__2VkZl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"DualPushButtonSwitch_container\":\"styles_DualPushButtonSwitch_container__2LzSn\",\"DualPushButtonSwitch_radioGroup\":\"styles_DualPushButtonSwitch_radioGroup__39ia_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountInvestmentPath_page\":\"styles_AccountInvestmentPath_page__1z3CL\",\"AccountInvestmentPath_container\":\"styles_AccountInvestmentPath_container__1aa6v\",\"AccountInvestmentPath_name\":\"styles_AccountInvestmentPath_name__2A8MV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Accounts_preparingModal\":\"styles_Accounts_preparingModal__XWCNV\",\"Accounts_preparingMessage\":\"styles_Accounts_preparingMessage__2vP-j\",\"Accounts_preparingError\":\"styles_Accounts_preparingError__24zAj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewAccountReview_page\":\"styles_NewAccountReview_page__2EzP4\",\"NewAccountReview_content\":\"styles_NewAccountReview_content__zpA5Q\",\"NewAccountReview_navigation\":\"styles_NewAccountReview_navigation__1lx5w\",\"NewAccountReview_toggle\":\"styles_NewAccountReview_toggle__2KWGF\",\"NewAccountReview_error\":\"styles_NewAccountReview_error__1wIS1\",\"NewAccountReview_cards\":\"styles_NewAccountReview_cards__2uEyx\",\"NewAccountReview_owner\":\"styles_NewAccountReview_owner__3429J\",\"NewAccountReview_beneficiary\":\"styles_NewAccountReview_beneficiary__3SgkC\",\"NewAccountReview_successors\":\"styles_NewAccountReview_successors__1_kAR\",\"NewAccountReview_settings\":\"styles_NewAccountReview_settings__1sTCt\",\"NewAccountReview_funds\":\"styles_NewAccountReview_funds__1iHvI\",\"NewAccountReview_ownerPersonalDetails_group1\":\"styles_NewAccountReview_ownerPersonalDetails_group1__3rHGG\",\"NewAccountReview_ownerPersonalDetails_group2\":\"styles_NewAccountReview_ownerPersonalDetails_group2__2ggsZ\",\"NewAccountReview_ownerAddresses\":\"styles_NewAccountReview_ownerAddresses__1kqM3\",\"NewAccountReview_ownerForm\":\"styles_NewAccountReview_ownerForm__2-uwS\",\"NewAccountReview_beneficiaryPersonalDetails_group1\":\"styles_NewAccountReview_beneficiaryPersonalDetails_group1__U_d7i\",\"NewAccountReview_beneficiaryPersonalDetails_group2\":\"styles_NewAccountReview_beneficiaryPersonalDetails_group2__3R7ub\",\"NewAccountReview_beneficiaryAddresses\":\"styles_NewAccountReview_beneficiaryAddresses__3r5IF\",\"NewAccountReview_beneficiaryForm\":\"styles_NewAccountReview_beneficiaryForm__3LD1M\",\"NewAccountReview_successorsForm\":\"styles_NewAccountReview_successorsForm__18tYm\",\"NewAccountReview_settingsForm\":\"styles_NewAccountReview_settingsForm__SqqpH\",\"NewAccountReview_fundsMessage\":\"styles_NewAccountReview_fundsMessage__3oaKz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AddSingleAccount_page\":\"styles_AddSingleAccount_page__1Qde0\",\"AddSingleAccount_content\":\"styles_AddSingleAccount_content__ukzLI\",\"AddSingleAccount_navigation\":\"styles_AddSingleAccount_navigation__1JWR6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ReportCard_container\":\"styles_ReportCard_container__2jqea\",\"ReportCard_separator\":\"styles_ReportCard_separator__2mXms\",\"ReportCard_description\":\"styles_ReportCard_description__BqWlY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountsToExport_container\":\"styles_AccountsToExport_container__1eAtC\",\"AccountsToExport_card\":\"styles_AccountsToExport_card__1PBGT\",\"AccountsToExport_updateButton\":\"styles_AccountsToExport_updateButton__1E1Ug\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PortfolioDataCard_card\":\"styles_PortfolioDataCard_card__1w49h\",\"PortfolioDataCard_tiles\":\"styles_PortfolioDataCard_tiles__2M9YS\",\"PortfolioDataCard_buttons\":\"styles_PortfolioDataCard_buttons__OJDC0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Navigation_featuresContainer\":\"styles_Navigation_featuresContainer__2lWws\",\"Navigation_featuresChildren\":\"styles_Navigation_featuresChildren__LyNA0\",\"non-prod\":\"styles_non-prod__1Iyxg\",\"LegalFooter_footer\":\"styles_LegalFooter_footer__148Y6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"WithdrawalDetails_container\":\"styles_WithdrawalDetails_container__33Puy\",\"WithdrawalDetails_accountDetailsCard\":\"styles_WithdrawalDetails_accountDetailsCard__1ldc2\",\"WithdrawalDetails_loading\":\"styles_WithdrawalDetails_loading__1pGUi\",\"WithdrawalDetails_cardContentContainerNonProportional\":\"styles_WithdrawalDetails_cardContentContainerNonProportional__1pnDf\",\"WithdrawalDetails_cardContentContainerProportional\":\"styles_WithdrawalDetails_cardContentContainerProportional__jtjdR\",\"WithdrawalDetails_acctNum\":\"styles_WithdrawalDetails_acctNum__1mG42\",\"WithdrawalDetails_acctType\":\"styles_WithdrawalDetails_acctType__1W5ZX\",\"WithdrawalDetails_accountOwner\":\"styles_WithdrawalDetails_accountOwner__3lSpA\",\"WithdrawalDetails_availableBalance\":\"styles_WithdrawalDetails_availableBalance__3MY-Z\",\"WithdrawalDetails_beneficiary\":\"styles_WithdrawalDetails_beneficiary__1NLwk\",\"WithdrawalDetails_currentOpt\":\"styles_WithdrawalDetails_currentOpt__1A-ZS\",\"WithdrawalDetails_marketVal\":\"styles_WithdrawalDetails_marketVal__LML4s\",\"WithdrawalDetails_groupAvailableBalance\":\"styles_WithdrawalDetails_groupAvailableBalance__23aIJ\",\"WithdrawalDetails_detailsTitle\":\"styles_WithdrawalDetails_detailsTitle__pZKTX\",\"WithdrawalDetails_availableBalanceInfo\":\"styles_WithdrawalDetails_availableBalanceInfo__YUQfl\",\"WithdrawalDetails_groupAvailableBalanceInfo\":\"styles_WithdrawalDetails_groupAvailableBalanceInfo__3RvF5\"};","import { notificationShow } from '@frontend/common';\n\nexport const apiResponse = store => next => action => {\n\n const { payload } = action;\n\n if (payload) { // Async actions\n\n const errorMsg = [];\n const warningMsg = [];\n const infoMsg = [];\n const inputMsg = [];\n\n if (payload.status >= 299 && payload.status < 400) { // Redirection\n errorMsg.push('A temporary redirect was issued by the server.');\n window.location.href = '/';\n }\n else if (payload.status === 400 && payload.request.responseType === 'blob') {\n // payload.data may be an array of messages tucked inside the blob. \n // Pass it through it will be handled on client side\n return next(action);\n }\n else if (payload.status === 400) { // payload.data may be an array of messages.\n if (payload.data && payload.data.length > 0) {\n payload.data.forEach(msg => {\n switch (msg.MessageType) {\n case 0: infoMsg.push(msg.Message); break;\n case 1: warningMsg.push(msg.Message); break;\n case 2: {\n if (!msg.Field) {\n errorMsg.push(msg.Message);\n break;\n }\n else if (msg.Field !== '') {\n inputMsg.push(msg.Message);\n break;\n }\n break;\n }\n case 3: break; // former 412 handled here: this contains precondition messages handled by a component\n default: break;\n }\n });\n }\n else {\n errorMsg.push('A bad request or invalid credentials were provided. No messages were provided. Status: 400.');\n }\n }\n else if (payload.status === 401) { // Likely invalid token\n errorMsg.push('Unauthorized request');\n import('../../components/AppRoot/Navigation/actions') // have to import now instead of at the beginning of file because otherwise fails in tests\n .then(({ clearStore }) => {\n store.dispatch(clearStore());\n });\n }\n else if (payload.status === 403) { // Likely user doesn't have needed Claim/Permission\n errorMsg.push('Access denied');\n import('../../components/AppRoot/Navigation/actions') // have to import now instead of at the beginning of file because otherwise fails in tests\n .then(({ clearStore }) => {\n store.dispatch(clearStore());\n });\n }\n else if (payload.status === 404) {\n errorMsg.push('Not found');\n }\n else if (payload.status > 404 && payload.status < 409) { // race condition\n errorMsg.push('You are attempting an action that is not allowed. Contact my529 if you continue to experience this issue.');\n }\n else if (payload.status === 409) {\n errorMsg.push('You are attempting to modify a record that is in the process of being modified.');\n }\n else if (payload.status > 409 && payload.status < 600) {\n errorMsg.push('There was an issue communicating with the server. Please try again later, or contact my529 if you continue to experience this issue.');\n import('./error_handler') // have to import now instead of at the beginning of file because otherwise fails in tests\n .then(({ persistClientErrors }) => {\n persistClientErrors(payload.statusText); // send the GUID to the API so it can persist the GUID into the WebErrorLog table\n });\n }\n\n if (inputMsg.length > 0) {\n const updatedAction = action;\n updatedAction.type = `${action.type}_ERRORS`;\n next(updatedAction);\n return Promise.reject(action);\n }\n\n if (errorMsg.length > 0) {\n errorMsg.forEach(error => store.dispatch(notificationShow(error, 'error')));\n const updatedAction = action;\n updatedAction.type = `${action.type}_ERRORS`;\n next(updatedAction);\n return Promise.reject(action);\n }\n else {\n warningMsg.forEach(warning => store.dispatch(notificationShow(warning, 'warning')));\n infoMsg.forEach(info => store.dispatch(notificationShow(info, 'warning')));\n return next(action);\n }\n }\n else { // Non-async actions\n return next(action);\n }\n};","import { cloneDeep } from 'lodash';\nimport { properCase } from '@frontend/common';\nimport {\n BROWSER_WARNING,\n MOBILE_WARNING,\n USER_LOGIN,\n USERNAME_CHANGE,\n ADVISOR_NAME_UPDATE,\n GET_USER_PREFERENCES,\n SAVE_USER_PREFERENCE,\n USER_PREFERENCE_KEYS,\n TOGGLE_SPLASH_HAS_DISPLAYED,\n RESET_CLAIMS,\n TWO_FACTOR_STATUS,\n} from './constants';\n\n\nconst initialState = {\n isValid: false,\n claims: {},\n accountBlocked: false,\n reasonBlocked: '',\n is2FABypassed: true,\n showBrowserWarning: true,\n showMobileWarning: true,\n showSideNav: false,\n splashHasDisplayed: false,\n userDetails: {},\n permissions: {},\n lpoaDetails: {\n address: {},\n },\n userPreferences: {\n [USER_PREFERENCE_KEYS.hasSeenTour]: 'true',\n },\n};\n\nexport function mapClaims(claims) {\n return {\n userDetails: {\n email: claims.EmailAddress,\n previousLogin: claims.LastLogin,\n name: properCase(claims.Name || ''),\n pin: claims.Pin,\n lpoaNumber: claims.AuthorizedRepresentativeNumber,\n },\n lpoaDetails: {\n firmName: properCase(claims.AuthorizedRepresentativeName || ''),\n address: {\n street1: properCase(claims.AuthorizedRepresentativeMailingStreetAddress1 || ''),\n street2: properCase(claims.AuthorizedRepresentativeMailingStreetAddress2 || ''),\n street3: properCase(claims.AuthorizedRepresentativeMailingStreetAddress3 || ''),\n city: properCase(claims.AuthorizedRepresentativeMailingCity || ''),\n state: claims.AuthorizedRepresentativeMailingState,\n zip: claims.AuthorizedRepresentativeMailingPostalCode,\n }\n },\n permissions: {\n isFirmEntity: claims.AuthorizedRepresentativeType === 'Entity',\n contributions: JSON.parse(claims.AllowContribute || false),\n optionChanges: JSON.parse(claims.AllowOptionChange || false),\n transfers: JSON.parse(claims.AllowTransfer || false),\n withdrawals: JSON.parse(claims.AllowWithdraw || false),\n viewStateTaxDocs: JSON.parse(claims.AllowViewStateTaxDocuments || false),\n viewFedTaxDocs: JSON.parse(claims.AllowViewFederalTaxDocuments || false),\n adminReports: JSON.parse(claims.AdminReports || false),\n accountReports: JSON.parse(claims.AccountReports || false),\n editTemplates: JSON.parse(claims.TemplateEdit || false),\n setupData: JSON.parse(claims.DataImportSetup || false),\n downloadData: JSON.parse(claims.DataImport || false),\n manageUsers: JSON.parse(claims.AdvisorEdit || false),\n editLPOAContactInfo: JSON.parse(claims.EditFirmContactInfo || false),\n editLPOASettings: JSON.parse(claims.EditFirmAdvisorDefaults || false),\n },\n };\n}\n\nexport function constructClaims(claims) {\n return claims.reduce((result, claim) => ({ ...result, [claim.m_type]: claim.m_value }), {});\n}\n\nexport default function NavigationReducer(state = initialState, action) { \n const newState = cloneDeep(state);\n\n switch (action.type) {\n case BROWSER_WARNING: {\n newState.showBrowserWarning = !state.showBrowserWarning;\n return newState;\n }\n\n case MOBILE_WARNING: {\n newState.showMobileWarning = !state.showMobileWarning;\n return newState;\n }\n\n case USER_LOGIN: \n case RESET_CLAIMS: {\n const rawClaims = action.payload.data.Claims ? action.payload.data.Claims : action.payload.data;\n const claims = constructClaims(rawClaims);\n const mappedClaims = mapClaims(claims);\n newState.claims = claims;\n if (action.payload.data.Token) {\n sessionStorage.setItem('token', action.payload.data.Token);\n }\n newState.accountBlocked = claims.AccountBlocked === 'True'; \n newState.reasonBlocked = newState.accountBlocked ? claims.AccountBlock : ''; // when AccountBlocked is true AccountBlock is missing from api\n newState.is2FABypassed = claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.BYPASSED;\n newState.userDetails = mappedClaims.userDetails;\n newState.permissions = mappedClaims.permissions;\n newState.lpoaDetails = mappedClaims.lpoaDetails;\n newState.isValid = true;\n return newState;\n }\n\n case USERNAME_CHANGE: {\n const claims = constructClaims(action.payload.data.Claims);\n const mappedClaims = mapClaims(claims);\n newState.claims = claims;\n newState.userDetails = mappedClaims.userDetails;\n newState.permissions = mappedClaims.permissions;\n newState.lpoaDetails = mappedClaims.lpoaDetails;\n\n sessionStorage.setItem('token', action.payload.data.Token);\n\n return newState;\n }\n\n case ADVISOR_NAME_UPDATE: {\n newState.userDetails.name = action.name;\n return newState;\n }\n\n case GET_USER_PREFERENCES: {\n const preferences = action.payload.data.reduce((result, preference) => ({ ...result, [preference.Identifier]: preference.Value }), {});\n newState.userPreferences = {\n ...preferences,\n [USER_PREFERENCE_KEYS.hasSeenTour]: preferences[USER_PREFERENCE_KEYS.hasSeenTour] ? preferences[USER_PREFERENCE_KEYS.hasSeenTour] : 'false',\n };\n return newState;\n }\n\n case SAVE_USER_PREFERENCE: {\n const preference = action.payload.data;\n newState.userPreferences[preference.Identifier] = preference.Value;\n return newState;\n }\n\n case TOGGLE_SPLASH_HAS_DISPLAYED: {\n newState.splashHasDisplayed = true;\n return newState;\n }\n\n default: {\n return state;\n }\n }\n}\n","/*\n*\n* StaticResources Constants\n*\n*/\nexport const PASSWORD_REQUIREMENTS_GET = 'src/components/AppRoot/StaticResources/PASSWORD_REQUIREMENTS_GET';\nexport const RELATIONSHIPS_GET = 'src/components/AppRoot/StaticResources/RELATIONSHIPS_GET';\nexport const OPTIONS_GET = 'src/components/AppRoot/StaticResources/OPTIONS_GET';\nexport const CUSTOM_OPTIONS_GET = 'src/components/AppRoot/StaticResources/CUSTOM_OPTIONS_GET';\nexport const POA_LEVELS_GET = 'src/components/AppRoot/StaticResources/POA_LEVELS_GET';\nexport const AGE_BRACKETS_GET = 'src/components/AppRoot/StaticResources/AGE_BRACKETS_GET';\nexport const ENVIRONMENT_VARIABLES_GET = 'src/components/AppRoot/StaticResources/ENVIRONMENT_VARIABLES_GET';\nexport const STATIC_DOCUMENTS_GET = 'src/components/AppRoot/StaticResources/STATIC_DOCUMENTS_GET';\nexport const SERVER_DATETIME_GET = 'src/components/AppRoot/StaticResources/SERVER_DATETIME_GET';\nexport const WEB_MESSAGES_GET = 'src/components/AppRoot/StaticResources/WEB_MESSAGES_GET';\nexport const SET_LOADING_PUBLIC_VARS = 'src/components/AppRoot/StaticResources/SET_LOADING_PUBLIC_VARS';\nexport const GET_NEW_AGE_BASED_SCHEMA = 'src/components/AppRoot/StaticResources//GET_NEW_AGE_BASED_SCHEMA';\nexport const GET_NEW_STATIC_SCHEMA = 'src/components/AppRoot/StaticResources//GET_NEW_STATIC_SCHEMA';\n\nexport const ENV_COLOR_KEY = 'fa_WebBackgroundColor';\n\n// hardcoded banners - the value has to match exactly `${URL}/${Page}` from WebsiteMessage api \n// add/remove when needed\nexport const BANNER_LOCATIONS = {\n LOGIN: '/login/Login Page',\n HOME: '/Home Page',\n CONTRIBUTIONS_NEW: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/contributions/new/Contribution (New)',\n CONTRIBUTIONS_EDIT: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/contributions/{contributionId}/edit/Contribution (Edit)',\n OPTION_CHANGES_NEW: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/option-changes/new/Option Change (New)',\n OPTION_CHANGES_EDIT: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/option-changes/{optionid}/edit/Option Change (Edit)',\n OPTION_CHANGES_VIEW: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/option-changes/{optionid}/view/Option Change (View)',\n BULK_OPTION_CHANGE: '/bulk-option-change/Bulk Option Change',\n TRANSFERS_NEW: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/transfers/new/Transfer (New)',\n TRANSFERS_EDIT: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/transfers/{transferId}/edit/Transfer (Edit)',\n WITHDRAWALS_NEW: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/withdrawals/new/Withdrawal (New)',\n NEW_ACCOUNTS: '/new-accounts/New Accounts',\n NEW_ACCOUNTS_ADD: '/new-accounts/add/New Accounts Add',\n TEMPLATE_MSG: '/templates/Template Page',\n BOSP_MSG: '/manage-data/Manage Data (BOSP)',\n GIFTING_MSG: '/agents/{agentid}/groups/{accountgroupid}/accounts/{accountid}/gifting/Gifting Page',\n};","import { cloneDeep, findIndex, sortBy } from 'lodash';\n\nimport dayjs from 'dayjs';\n\nimport {\n PASSWORD_REQUIREMENTS_GET,\n RELATIONSHIPS_GET,\n OPTIONS_GET,\n CUSTOM_OPTIONS_GET,\n POA_LEVELS_GET,\n AGE_BRACKETS_GET,\n ENVIRONMENT_VARIABLES_GET,\n STATIC_DOCUMENTS_GET,\n ENV_COLOR_KEY,\n WEB_MESSAGES_GET,\n SET_LOADING_PUBLIC_VARS,\n BANNER_LOCATIONS,\n GET_NEW_AGE_BASED_SCHEMA,\n GET_NEW_STATIC_SCHEMA,\n} from './constants';\n\nimport { convert2DCalculatorSchemaTo3D } from '@frontend/common';\n\nimport messages from './messages.js';\n\nconst initialState = {\n ageBrackets: [],\n environmentVars: {\n downloadPortfolioData: {\n oldestSelectableDate: ''\n },\n contributionVariables: {},\n usStates: [],\n withdrawalVariables: {\n paymentTypes: [],\n recipientTypes: [],\n sellDates: [],\n withdrawalTypes: [],\n },\n environmentColor: '',\n AccountAccessNoFrontEndActivityTimeout: 300, // just to be on the safe side set to 5 mins\n LogoutWarningTimeout: 300, // just to be on the safe side set to 5 mins\n ServerDateTime: new Date(),\n AnnualGiftExclusionAmount: 0,\n MaximumBeneficiaryDeposit: 0,\n MaximumBenficiaryAccountValueForGift: 0,\n },\n newAgeBasedSchema: {\n TemplateName: null,\n FundCategories: [],\n },\n newStaticSchema: {\n TemplateName: null,\n FundCategories: [],\n },\n customStaticOptions: [],\n customAgeBasedOptions: [],\n options: [],\n passwordRequirements: [],\n poaLevels: [],\n relationships: [],\n documents: {},\n // needs to be initialized to empty strings\n webMessages: Object.values(BANNER_LOCATIONS).reduce((obj, bannerLocation) => ({ ...obj, [bannerLocation]: '' }), {}),\n loadingPublicVars: false,\n};\n\nfunction StaticResourcesReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case PASSWORD_REQUIREMENTS_GET: {\n newState.passwordRequirements = action.payload.data;\n return newState;\n }\n\n case RELATIONSHIPS_GET: {\n newState.relationships = action.payload.data;\n\n return newState;\n }\n\n case OPTIONS_GET: {\n newState.options = action.payload.data.map(option => {\n const formattedOption = {\n id: option.OptionId,\n isCustom: option.IsCustom,\n my529Fee: option.AssetFeeRate,\n name: option.Name,\n optionType: option.OptionType,\n isStaticOrEnrollment: (option.OptionType === 'S' || option.OptionType === 'T') && !option.IsCustom,\n };\n const allocations = option.OptionAllocations;\n if (allocations.length === 0) {\n formattedOption.funds = [];\n }\n else if (allocations.length === 1) {\n formattedOption.funds = allocations[0].OptionAllocationFunds.map(fund => {\n return {\n id: fund.Fund.FundId,\n name: fund.Fund.Name,\n ticker: fund.Fund.StockSymbol,\n fee: fund.Fund.FeeRate,\n percentage: fund.Percentage,\n };\n });\n }\n\n return formattedOption;\n });\n\n return newState;\n }\n\n case GET_NEW_AGE_BASED_SCHEMA: {\n newState.newAgeBasedSchema = convert2DCalculatorSchemaTo3D(action.payload.data);\n return newState;\n }\n\n case GET_NEW_STATIC_SCHEMA: {\n newState.newStaticSchema = convert2DCalculatorSchemaTo3D(action.payload.data);\n return newState;\n }\n\n case CUSTOM_OPTIONS_GET: {\n const staticOptions = [];\n const ageBasedOptions = [];\n action.payload.data.forEach(option => {\n const formattedOption = {\n id: option.CustomTemplateHeaderId,\n my529Fee: null,\n name: option.Name,\n optionType: option.TypeCode,\n };\n if (option.TypeCode === 'S') {\n formattedOption.funds = option.CustomTemplateHeaderFunds.map(fund => {\n return {\n id: fund.Fund.FundId,\n name: fund.Fund.Name,\n ticker: fund.Fund.StockSymbol,\n fee: fund.Fund.FeeRate,\n percentage: fund.Percentage,\n };\n });\n staticOptions.push(formattedOption);\n }\n else if (option.TypeCode === 'A') {\n const ageBrackets = [];\n\n option.CustomTemplateHeaderFunds.forEach(fund => {\n const existingAgeBracketIndex = findIndex(ageBrackets, { minAge: fund.MinimumAge });\n if (existingAgeBracketIndex !== -1) {\n ageBrackets[existingAgeBracketIndex].funds.push({\n id: fund.Fund.FundId,\n name: fund.Fund.Name,\n ticker: fund.Fund.StockSymbol,\n fee: fund.Fund.FeeRate,\n percentage: fund.Percentage,\n });\n }\n else {\n ageBrackets.push({\n minAge: fund.MinimumAge,\n maxAge: null,\n funds: [{\n id: fund.Fund.FundId,\n name: fund.Fund.Name,\n ticker: fund.Fund.StockSymbol,\n fee: fund.Fund.FeeRate,\n percentage: fund.Percentage,\n }],\n });\n }\n });\n\n formattedOption.ageBrackets = sortBy(ageBrackets, ['minAge']);\n ageBasedOptions.push(formattedOption);\n }\n });\n\n newState.customAgeBasedOptions = sortBy(ageBasedOptions, [ageBasedOption => ageBasedOption.name.toLowerCase()], ['name']);\n newState.customStaticOptions = sortBy(staticOptions, [staticOption => staticOption.name.toLowerCase()], ['name']);\n\n return newState;\n }\n\n case POA_LEVELS_GET: {\n newState.poaLevels = action.payload.data.map(level => ({\n key: level,\n displayName: `Level ${level}`,\n }));\n\n return newState;\n }\n\n case AGE_BRACKETS_GET: {\n newState.ageBrackets = action.payload.data.map(range => ({\n displayName: range.Description.match(/Age\\s(\\d*)\\s?([-]?)\\s?(\\d*)([+]*)/).slice(1)\n .reduce(((str, match) => str + match), ''),\n longDisplayName: range.Description,\n minAge: range.MinimumAge,\n maxAge: range.MaximumAge\n }));\n\n return newState;\n }\n\n case ENVIRONMENT_VARIABLES_GET: {\n const data = { ...newState.environmentVars, ...action.payload.data, }; // keep any previous parameters before loading over them\n\n newState.environmentVars.AccountAccessNoFrontEndActivityTimeout = data.AccountAccessNoFrontEndActivityTimeout;\n newState.environmentVars.LogoutWarningTimeout = data.LogoutWarningTimeout;\n newState.environmentVars.ServerDateTime = data.ServerDateTime;\n newState.environmentVars.AnnualGiftExclusionAmount = data.AnnualGiftExclusionAmount;\n newState.environmentVars.MaximumBeneficiaryDeposit = data.MaximumBeneficiaryDeposit;\n newState.environmentVars.MaximumBenficiaryAccountValueForGift = data.MaximumBenficiaryAccountValueForGift;\n newState.environmentVars.DocumentTypes = data.DocumentTypes;\n newState.environmentVars.GiactResultTypes = data.GiactResultTypes;\n newState.environmentVars.ACHBankWithdrawalDelay = data.ACHBankWithdrawalDelay;\n newState.environmentVars.ACHBankWithdrawalLanguage = data.ACHBankWithdrawalLanguage;\n\n newState.environmentVars.downloadPortfolioData = {\n ...newState.environmentVars.downloadPortfolioData,\n ...(data.PortfolioDownloadAvailabilityMonths && { oldestSelectableDate: dayjs().subtract(data.PortfolioDownloadAvailabilityMonths, 'month') }),\n };\n\n newState.environmentVars.contributionVariables = {\n ...newState.environmentVars.contributionVariables,\n ...(data.CurrentTradeDate && { firstAvailTradeDate: dayjs(data.CurrentTradeDate).format('YYYY-MM-DD') }),\n ...(data.MaximumOneTimeOnlineContribution && { maxOneTimeContribution: data.MaximumOneTimeOnlineContribution }),\n ...(data.MinimumOneTimeOnlineContribution && { minOneTimeContribution: data.MinimumOneTimeOnlineContribution }),\n ...(data.MaximumRecurringOnlineContribution && { maxRecurringContribution: data.MaximumRecurringOnlineContribution }),\n ...(data.MinimumOneTimeOnlineContribution && { minRecurringContribution: data.MinimumOneTimeOnlineContribution }),\n ...(data.ValidOneTimeContributionDates && { oneTimeContributionDates: data.ValidOneTimeContributionDates.map(date => dayjs(date).format('YYYY-MM-DD')) }),\n ...(data.MaximumRecurringContributionLeadDays && { recurringContributionLeadDays: data.MaximumRecurringContributionLeadDays }),\n };\n\n newState.environmentVars.withdrawalVariables = {\n ...newState.environmentVars.withdrawalVariables,\n ...(data.MinimumOnlineWithdrawalAmount && { minWithdrawal: data.MinimumOnlineWithdrawalAmount }),\n ...(data.DisbursementSignatureGuaranteeAmount && { maxWithdrawal: data.DisbursementSignatureGuaranteeAmount }),\n ...(data.PaymentMethods && {\n paymentTypes: data.PaymentMethods.map(type => ({\n id: type.Code,\n name: type.Name,\n }))\n }),\n ...(data.RecipientTypes && {\n recipientTypes: data.RecipientTypes\n .filter(type => type.Code === 'P' || type.Code === 'B' || type.Code === 'I')\n .map(type => ({\n id: type.Code,\n name: type.Name,\n messages: messages.find(message => message.id === type.Code).messages\n }))\n }),\n ...(data.ValidOneTimeWithdrawalDates && { sellDates: data.ValidOneTimeWithdrawalDates.map(date => dayjs(date).format('YYYY-MM-DD')) }),\n ...(data.TradeCutOffTime && { tradeCutoff: dayjs(data.TradeCutOffTime).format('YYYY-MM-DD') }),\n ...(data.TradeCutoffApproachingWarningMinutes && { tradeCutoffWarningTime: data.TradeCutoffApproachingWarningMinutes }),\n ...(data.WithdrawalTypes && {\n withdrawalTypes: data.WithdrawalTypes\n .filter(type => type.Code === 'HigherEd' || type.Code === 'K-12Tuition' || type.Code === 'NonQualified')\n .map(type => ({\n id: type.Code,\n name: type.Name,\n messages: messages.find(message => message.id === type.Code).messages\n }))\n }),\n };\n\n if (data.USStates) {\n newState.environmentVars.usStates = data.USStates.map(state => ({ abbreviation: state.Code, fullName: state.Name }));\n // add clear state item at index 0\n newState.environmentVars.usStates.unshift({ abbreviation: '', fullName: 'Clear State' });\n }\n if (data.ProfessionalServicesPhoneNumber) newState.environmentVars.lpoaHelpNumber = data.ProfessionalServicesPhoneNumber;\n if (data.ProfessionalServicesEmail) newState.environmentVars.lpoaHelpEmail = data.ProfessionalServicesEmail;\n if (data.ProfessionalServicesFaxNumber) newState.environmentVars.lpoaHelpFax = data.ProfessionalServicesFaxNumber;\n if (data.WebBackgroundColor) {\n if (data.WebBackgroundColor.length === 6) {\n data.WebBackgroundColor = `#${data.WebBackgroundColor}`;\n }\n // required state for environment header\n localStorage.setItem(ENV_COLOR_KEY, data.WebBackgroundColor);\n newState.environmentVars.environmentColor = data.WebBackgroundColor;\n }\n return newState;\n }\n\n case STATIC_DOCUMENTS_GET: {\n const docs = action.payload.data;\n newState.documents = {\n onlineLPOAGuide: docs.find(doc => doc.FormType === 'OnlineLpoaAuthorizationGuide').Location,\n programDescription: docs.find(doc => doc.FormType === 'ProgramDescription').Location,\n form400: docs.find(doc => doc.FormType === 'InternalTransfer-400').Location,\n };\n\n return newState;\n }\n\n case WEB_MESSAGES_GET: {\n const webMessageTypes = action.payload.data;\n // get only website message type messages\n const webMessageType = Boolean(webMessageTypes) && webMessageTypes.length > 0 && webMessageTypes.find(messageType => messageType.Name === 'WEBSITE MESSAGES');\n const webMessages = Boolean(webMessageType.WebsiteMessages) && webMessageType.WebsiteMessages.length > 0 && webMessageType.WebsiteMessages;\n // initialize all banners to empty strings each time api is called\n newState.webMessages = Object.values(BANNER_LOCATIONS).reduce((obj, bannerLocation) => ({ ...obj, [bannerLocation]: '' }), {});\n\n // distribute messages between banner locations (if exists will overwrite empty string)\n webMessages && webMessages.forEach(webMessage => {\n webMessage.WebsiteMessageURLs.forEach(websiteMessageURL => {\n newState.webMessages[`${websiteMessageURL.URL}/${websiteMessageURL.Page}`] = webMessage.Body;\n });\n });\n\n return newState;\n }\n\n case SET_LOADING_PUBLIC_VARS: {\n newState.loadingPublicVars = action.payload.isLoading;\n return newState;\n }\n\n default: {\n return state;\n }\n }\n\n}\n\nexport default StaticResourcesReducer;\n","export const ACCOUNT_DETAILS_GET = 'app/Features/protected/Accounts/ACCOUNT_DETAILS_GET';\nexport const ACCOUNT_TRANSACTIONS_DETAILS_GET = 'app/Features/protected/Accounts/ACCOUNT_TRANSACTIONS_DETAILS_GET';\nexport const ACCOUNTS_SEARCH = 'app/Features/protected/Accounts/ACCOUNTS_SEARCH';\nexport const ACCOUNTS_GET_BY_AGENT = 'app/Features/protected/Accounts/ACCOUNTS_GET_BY_AGENT';\n\nexport const AGENT_BANK_ACCOUNTS_GET = 'app/Features/protected/Accounts/AGENT_BANK_ACCOUNTS_GET';\n\nexport const BANK_ACCOUNT_ADD = 'app/Features/protected/Accounts/BANK_ACCOUNT_ADD';\n\nexport const CONTRIBUTION_CREATE = 'app/Features/protected/Accounts/CONTRIBUTION_CREATE';\nexport const CONTRIBUTION_DETAILS_GET = 'app/Features/protected/Accounts/CONTRIBUTION_DETAILS_GET';\nexport const CONTRIBUTION_EDIT = 'app/Features/protected/Accounts/CONTRIBUTION_EDIT';\nexport const CONTRIBUTION_EDIT_DETAILS_CLEAR = 'app/Features/protected/Accounts/CONTRIBUTION_EDIT_DETAILS_CLEAR';\nexport const CONTRIBUTION_EDIT_DETAILS_GET = 'app/Features/protected/Accounts/CONTRIBUTION_EDIT_DETAILS_GET';\n\nexport const GIFT_CODE_STATUS_EDIT = 'app/Features/protected/Accounts/GIFT_CODE_STATUS_EDIT';\n\nexport const NEXT_RUN_DATE_GET = 'app/Features/protected/Accounts/NEXT_RUN_DATE_GET';\n\nexport const OPTION_CHANGE_CANCEL = 'app/Features/protected/Accounts/OPTION_CHANGE_CANCEL';\nexport const OPTION_CHANGE_CREATE = 'app/Features/protected/Accounts/OPTION_CHANGE_CREATE';\nexport const OPTION_CHANGE_DETAILS_GET = 'app/Features/protected/Accounts/OPTION_CHANGE_DETAILS_GET';\n\nexport const ROUTING_INFO_GET = 'app/Features/protected/Accounts/ROUTING_INFO_GET';\n\nexport const SCHOOLS_GET = 'app/Features/protected/Accounts/SCHOOLS_GET';\n\nexport const TRANSACTION_DETAILS_GET = 'app/Features/protected/Accounts/TRANSACTION_DETAILS_GET';\n\nexport const UPCOMING_TRANSACTIONS_GET = 'app/Features/protected/Accounts/UPCOMING_TRANSACTIONS_GET';\n\nexport const WITHDRAWAL_CREATE = 'app/Features/protected/Accounts/WITHDRAWAL_CREATE';\nexport const WITHDRAWAL_DETAILS_GET = 'app/Features/protected/Accounts/WITHDRAWAL_DETAILS_GET';\n\nexport const TRANSFER_CREATE = 'app/Features/protected/Accounts/TRANSFER_CREATE';\nexport const TRANSFER_UPDATE = 'app/Features/protected/Accounts/TRANSFER_UPDATE';\nexport const TRANSACTION_DELETE = 'app/Features/protected/Accounts/TRANSACTION_DELETE';\nexport const SCHEDULED_TRANSACTION_GET = 'app/Features/protected/Accounts/SCHEDULED_TRANSACTION_GET';\n\nexport const ACCOUNT_DOCUMENTS_GET = 'app/Features/protected/Accounts/ACCOUNT_DOCUMENTS_GET';\nexport const ACCOUNT_DOCUMENT_DOWNLOAD_DATA = 'app/Features/protected/Accounts/ACCOUNT_DOCUMENT_DOWNLOAD_DATA';\n\nexport const BULK_OPTION_CHANGE_CANDIDATES_GET = 'app/Features/protected/Accounts/BULK_OPTION_CHANGE_CANDIDATES_GET';\nexport const BULK_OPTION_CHANGE_CREATE = 'app/Features/protected/Accounts/BULK_OPTION_CHANGE_CREATE';\n\nexport const TRANSFER_ACCOUNTS_GET = 'app/Features/protected/Accounts/TRANSFER_ACCOUNTS_GET';\n\nexport const ACCOUNT_INVESTMENT_PATH_GET = 'app/Features/protected/Accounts/ACCOUNT_INVESTMENT_PATH_GET';\n\nexport const ACCOUNT_TRANSACTION_PREVIEW = 'app/Features/protected/Accounts/ACCOUNT_TRANSACTION_PREVIEW';\nexport const TRANSACTION_TYPES = {\n WITHDRAWAL: 'Withdrawal',\n TRANSFER: 'TransferOut',\n OPTION_CHANGE: 'OptionChange',\n CONTRIBUTION: 'Contribution',\n};\n\nexport const PDF_FILE = 'PDF';\nexport const HTML_FILE = 'HTML';\n\nexport const GET_PRR_DATES = 'src/components/Features/protected/Accounts/GET_PRR_DATES';\nexport const GET_PRR = 'src/components/Features/protected/Accounts/GET_PRR';\n\nexport const COUNTRIES_LIST_GET = 'src/components/Features/protected/Accounts/COUNTRIES_LIST_GET,';\n\nexport const ACCT_STATUS = {\n OPEN: 'Open',\n CLOSED: 'Closed'\n};\n","export const ANNUAL_EVENT = {\n display: 'Annual Event',\n id: 'Other'\n};\nexport const BIRTHDAY = {\n display: 'Birthday',\n id: 'Birthday'\n};\nexport const DISABLED_DATES = [29, 30, 31];\nexport const MONTHLY = 'Monthly';\nexport const ONE_TIME = 'One-Time';\nexport const TWICE_MONTHLY = 'Twice Monthly';\nexport const YEARLY = 'Yearly';","import {\n cloneDeep,\n find,\n omit,\n} from 'lodash';\n\nimport dayjs from 'dayjs';\n\nimport {\n currencyFormatter,\n properCase,\n} from '@frontend/common';\n\nimport {\n ACCOUNT_DETAILS_GET,\n ACCOUNTS_SEARCH,\n ACCOUNT_TRANSACTIONS_DETAILS_GET,\n ACCOUNTS_GET_BY_AGENT,\n AGENT_BANK_ACCOUNTS_GET,\n CONTRIBUTION_DETAILS_GET,\n CONTRIBUTION_EDIT_DETAILS_CLEAR,\n CONTRIBUTION_EDIT_DETAILS_GET,\n NEXT_RUN_DATE_GET,\n OPTION_CHANGE_DETAILS_GET,\n ROUTING_INFO_GET,\n SCHOOLS_GET,\n TRANSACTION_DETAILS_GET,\n UPCOMING_TRANSACTIONS_GET,\n WITHDRAWAL_DETAILS_GET,\n TRANSACTION_DELETE,\n SCHEDULED_TRANSACTION_GET,\n ACCOUNT_DOCUMENTS_GET,\n BULK_OPTION_CHANGE_CANDIDATES_GET,\n ACCOUNT_TRANSACTION_PREVIEW,\n TRANSFER_ACCOUNTS_GET,\n ACCOUNT_INVESTMENT_PATH_GET,\n GET_PRR_DATES,\n COUNTRIES_LIST_GET\n} from './constants';\n\nimport { convert2DCalculatorSchemaTo3D } from '@frontend/common';\n\nimport {\n MONTHLY,\n TWICE_MONTHLY\n} from './Transactions/Contributions/constants';\n\n// formatter for Fund Units since it should include commas and decimal should at 5 places\nconst fundUnitsFormatter = new Intl.NumberFormat('en-US', { minimumFractionDigits: 5 });\n\nconst bankNameCaseExceptions = ['HSBC', 'JPMorgan', 'N.A.', 'NA', 'PNC', 'TD', 'U.S.', 'U.S.A.', 'US', 'USA'];\n\nconst initialState = {\n accountList: [],\n accountTransactionsDetails: {},\n agentBankAccounts: [],\n bankName: '',\n contributionDetails: {\n agentAccounts: [],\n contribution: {\n endDate: '',\n transactionId: '',\n type: ''\n },\n },\n contributionEditDetails: {},\n nextRunDates: {\n monthly: {\n day1: '',\n day2: '',\n },\n yearly: {\n birthday: [],\n day1: '',\n },\n },\n optionChangeDetails: {\n accounts: [],\n currentAccount: {},\n history: [],\n scheduled: []\n },\n postedTransactionDetailsCollection: {},\n schools: [],\n selectedAccount: {\n beneficiary: {},\n accountOwner: {},\n successors: {},\n details: {},\n funds: [],\n transactions: [],\n permissions: {},\n },\n selectedAgentAccounts: [],\n selectedTransaction: {\n schema: {\n TemplateName: null,\n FundCategories: [],\n }\n },\n upcomingTransactionsByAccount: {},\n withdrawalDetails: {\n agentAddress: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n postalCode: '',\n },\n availableBalance: {\n display: '',\n number: 0\n },\n beneficiaryAddress: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n postalCode: '',\n },\n groupAccounts: [],\n totalValue: {\n display: '',\n number: 0\n }\n },\n transfersByOwner: {},\n documents: {},\n bulkOptionChangeCandidates: [],\n transactionPreviewDetails: {\n canContinue: false,\n errors: [],\n },\n cache: {}, // [accountId]: ?accountDetails\n transfers: {}, // [transferId]: transfer\n transferAccounts: {}, // [sourceAccountId]: PotentialTargetAccounts[]\n investmentPath: { TemplateId: -1, TemplateName: '', FundCategories: [] },\n pRRDates: {\n minDate: null,\n maxDate: null,\n },\n countries: []\n};\n\nexport function accountFilter(accountId, state) {\n return find(state.accountList, { AccountId: accountId });\n}\n\nexport function buildTransfer(data) {\n return {\n TransferId: data.TransferId,\n AccountId: data.AccountId,\n AccountGroupId: data.AccountGroupId,\n CloseAccount: data.CloseAccount,\n Amount: data.Amount,\n Percentage: data.Percentage,\n TradeDate: data.TradeDate,\n Status: data.Status,\n TargetAccounts: data.TargetAccounts.map(target => ({\n AccountId: target.AccountId,\n Amount: target.Amount,\n Percentage: target.Percentage,\n })),\n cachedAt: dayjs.utc(),\n };\n}\n\nfunction AccountsReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case ACCOUNTS_SEARCH: {\n newState.accountList = action.payload.data;\n return newState;\n }\n\n case ACCOUNT_DETAILS_GET: {\n const account = action.payload.data;\n const beneAddress = account.Beneficiary.MailingAddress;\n const accountOwnerAddress = account.Agent.MailingAddress;\n newState.selectedAccount = {\n accountId: account.AccountId,\n accountGroupId: account.AccountGroupId,\n accountOwner: {\n name: properCase(`${account.Agent.FirstName} ${account.Agent.LastName}`),\n streetAddress1: properCase(accountOwnerAddress.StreetAddress1),\n streetAddress2: properCase(accountOwnerAddress.StreetAddress2),\n streetAddress3: properCase(accountOwnerAddress.StreetAddress3),\n city: properCase(accountOwnerAddress.City),\n state: accountOwnerAddress.State,\n zip: accountOwnerAddress.PostalCode,\n country: properCase(accountOwnerAddress.Country),\n phoneNumber1: account.Agent.PhoneNumber1?.Number || '',\n phoneNumber2: account.Agent.PhoneNumber2?.Number || '',\n },\n beneficiary: {\n name: properCase(`${account.Beneficiary.FirstName} ${account.Beneficiary.LastName}`),\n streetAddress1: properCase(beneAddress.StreetAddress1),\n streetAddress2: properCase(beneAddress.StreetAddress2),\n streetAddress3: properCase(beneAddress.StreetAddress3),\n city: properCase(beneAddress.City),\n state: beneAddress.State,\n zip: beneAddress.PostalCode,\n country: properCase(beneAddress.Country),\n phoneNumber1: account.Beneficiary.PhoneNumber1?.Number || '',\n phoneNumber2: account.Beneficiary.PhoneNumber2?.Number || '',\n age: account.Beneficiary.Age,\n },\n successors: {\n primarySuccessorName: account.Successor ? properCase(`${account.Successor.FirstName} ${account.Successor.LastName}`) : 'None',\n secondarySuccessorName: account.SecondarySuccessor ? properCase(`${account.SecondarySuccessor.FirstName} ${account.SecondarySuccessor.LastName}`) : 'None',\n },\n details: {\n accountType: account.AccountType,\n accountNumber: account.AccountNumber,\n option: account.TemplateName ? account.TemplateName : account.Option.Name,\n optionChangesRemaining: account.OptionChangesRemaining,\n optionId: account.Option.OptionId,\n isCustom: account.Option.IsCustom,\n netPrincipal: currencyFormatter(account.AccountBalance.NetPrincipalContributions),\n ytdContributions: currencyFormatter(account.AccountBalance.YTDContributions),\n priorContributions: currencyFormatter(account.AccountBalance.PriorContributions),\n accountBalance: currencyFormatter(account.AccountBalance.Balance),\n netAvailable: account.NetAvailable,\n status: account.Status,\n closeDate: account.CloseDate,\n },\n funds: account.OptionAllocationFunds.map(fund => ({\n id: fund.Fund.FundId,\n name: fund.Fund.Name,\n targetAllocation: fund.Percentage,\n actualAllocation: fund.ActualPercentage,\n value: fund.Value,\n units: fundUnitsFormatter.format(fund.Units),\n unitPrice: fund.FormattedPrice,\n })),\n transactions: account.Transactions.map(trans => ({\n id: trans.TransactionId,\n date: trans.PostDate,\n type: trans.Type,\n basis: trans.BasisAmount,\n amount: trans.Amount,\n taxYear: trans.TaxYear,\n })),\n permissions: {\n optionChanges: JSON.parse(account.OptionChange || false),\n contributions: JSON.parse(account.Contribute || false),\n transfers: JSON.parse(account.Transfer || false),\n withdrawals: JSON.parse(account.Withdraw || false),\n },\n cachedAt: dayjs.utc(),\n ytdPRR: account.YearToDatePRR,\n };\n newState.cache[newState.selectedAccount.accountId] = newState.selectedAccount;\n\n return newState;\n }\n\n case ACCOUNT_TRANSACTIONS_DETAILS_GET: {\n newState.accountTransactionsDetails = action.payload.data;\n return newState;\n }\n\n case ACCOUNTS_GET_BY_AGENT: {\n newState.selectedAgentAccounts = action.payload.data.map(account => ({\n accountId: account.AccountId,\n accountNumber: account.AcctNumber,\n acctOption: account.AcctOption,\n accountType: account.AccountType,\n agentId: account.AgentId,\n agentEmail: account.AgtEmail,\n ytdPRR: account.ytdPRR,\n agentName: `${properCase(account.AgtFirst)} ${properCase(account.AgtLast)}`,\n beneficiaryName: `${properCase(account.BenFirst)} ${properCase(account.BenLast)}`,\n beneficiaryBday: account.BenBirthDate,\n groupId: account.AccountGroupId,\n giftCode: account.GiftCode,\n giftCodeActive: account.GiftCodeActive,\n marketValue: currencyFormatter(account.AcctBalance),\n }));\n return newState;\n }\n\n case AGENT_BANK_ACCOUNTS_GET: {\n newState.agentBankAccounts = action.payload.data.map(acct => {\n return {\n id: acct.BankAccountId,\n name: properCase(acct.BankName, bankNameCaseExceptions),\n number: acct.MaskedBankAccountNumber,\n type: `(${acct.BankAccountType})`\n };\n });\n\n return newState;\n }\n\n case CONTRIBUTION_DETAILS_GET: {\n const { agentBankAccounts, contributionEditDetails: edit, selectedAgentAccounts: accounts } = newState;\n\n const selectedAccount = Object.keys(edit).length > 0 && (accounts.find(account => account.accountId === edit.AccountId));\n\n newState.contributionDetails = {\n agentAccounts: accounts.map(account => ({\n ...account,\n contributionAmount: 0,\n endDate: '',\n })),\n agentBankAccounts,\n agentName: accounts[0].agentName,\n selectedAccountId: parseInt(action.accountId),\n contribution: selectedAccount && ({\n bankAccount: agentBankAccounts.find(account => account.id === edit.BankAccountId),\n day1: edit.ScheduleDate1.ScheduledDate,\n day2: edit.ScheduleDate2 ? edit.ScheduleDate2.ScheduledDate : '',\n endDate: edit.EndDate,\n occasion: edit.Occasion,\n selectedAccounts: [{\n accountId: edit.AccountId,\n accountNumber: selectedAccount.accountNumber,\n beneficiaryBday: selectedAccount.beneficiaryBday,\n beneficiaryName: selectedAccount.beneficiaryName,\n contributionAmount: edit.Amount,\n endDate: edit.EndDate || '',\n }],\n transactionId: edit.ScheduleId,\n type: edit.InvestmentType === MONTHLY && edit.ScheduleDate2 !== null ? TWICE_MONTHLY : edit.InvestmentType,\n })\n };\n\n return newState;\n }\n\n case CONTRIBUTION_EDIT_DETAILS_CLEAR: {\n newState.contributionEditDetails = {};\n\n return newState;\n }\n\n case CONTRIBUTION_EDIT_DETAILS_GET: {\n newState.contributionEditDetails = action.payload.data;\n return newState;\n }\n\n case NEXT_RUN_DATE_GET: {\n const response = action.payload.data;\n const frequency = action.meta.frequency.toLowerCase();\n const day = action.meta.day.toLowerCase();\n\n if (frequency === MONTHLY.toLowerCase()) {\n newState.nextRunDates.monthly[day] = dayjs(response);\n }\n else {\n if (Array.isArray(response)) {\n newState.nextRunDates.yearly[day] = response.map(date => dayjs(date));\n }\n else {\n newState.nextRunDates.yearly[day] = dayjs(response);\n }\n }\n return newState;\n }\n\n case OPTION_CHANGE_DETAILS_GET: {\n const accountId = parseInt(action.accountId);\n\n const currentAccount = Object.assign(\n accountFilter(accountId, newState),\n { AccountId: accountId },\n newState.accountTransactionsDetails\n );\n\n const groupAccounts = currentAccount.AccountInfo.map(account => {\n return {\n accountId: account.AccountId,\n accountNumber: account.AccountNumber,\n optionDescription: account.OptionName,\n totalValue: currencyFormatter(account.MarketValue),\n };\n });\n\n newState.optionChangeDetails = {\n accountId: currentAccount.AccountId,\n accountNumber: currentAccount.AcctNumber,\n accountsInGroup: currentAccount.AccountInfo.length,\n accountType: currentAccount.AccountType,\n agentName: properCase(`${currentAccount.AgtFirst} ${currentAccount.AgtLast}`),\n beneficiaryName: properCase(`${currentAccount.BenFirst} ${currentAccount.BenLast}`),\n groupAccounts,\n marketValue: currencyFormatter(currentAccount.MarketValue),\n optionChangeCreate: currentAccount.OptionChangeCreate,\n optionChangesRemaining: currentAccount.RemainingOptionChanges,\n optionDescription: currentAccount.AcctOption,\n };\n\n return newState;\n }\n\n case ROUTING_INFO_GET: {\n newState.bankName = action.payload.payload ? '' : properCase(action.payload.data.BankName, bankNameCaseExceptions);\n\n return newState;\n }\n\n case SCHOOLS_GET: {\n const schools = action.payload.data;\n\n newState.schools = schools.map(school => {\n return {\n city: properCase(school.City),\n fafsaId: school.Code,\n name: properCase(school.Name),\n schoolId: school.CollegeId.toString(),\n state: school.State\n };\n });\n\n return newState;\n }\n\n case TRANSACTION_DETAILS_GET: {\n const response = action.payload.data;\n\n newState.postedTransactionDetailsCollection[response.TransactionId] = {\n accessCardNumber: response.AccessCard !== null ? response.AccessCard.CardNumber : '',\n bankInfo: response.BankAccount !== null && ({\n bankName: response.BankAccount.BankName,\n bankAccountNumber: response.BankAccount.MaskedBankAccountNumber,\n bankAccountType: response.BankAccount.BankAccountType,\n }),\n basisAmount: currencyFormatter(response.BasisAmount),\n payee: properCase(response.PayeeName),\n postDate: dayjs(response.PostDate).format('L'),\n source: response.AccessCard !== null ? response.AccessCard.Title : (response.Source || 'N/A'), // if access card is used, the title should be display as the source\n totalAmount: currencyFormatter(response.Amount),\n transactionDetails: response.TransactionDetails.map(details => ({\n amount: details.Amount || 0,\n id: details.TransactionDetailId,\n name: details.Fund.Name,\n price: details.FormattedPrice,\n units: fundUnitsFormatter.format(details.Units),\n })),\n selectedTransactionId: response.TransactionId,\n type: response.Type\n };\n\n return newState;\n }\n\n case UPCOMING_TRANSACTIONS_GET: {\n newState.upcomingTransactionsByAccount = {\n ...omit(newState.upcomingTransactionsByAccount, `${action.meta.accountId}`),\n [action.meta.accountId]: action.payload.data.map(trans => ({\n id: trans.ScheduleId,\n vdId: `${trans.ScheduleId}-${trans.Frequency}-${trans.Status}`,\n type: trans.TransactionType,\n amount: trans.Amount,\n scheduledDate: trans.ScheduledDate,\n frequency: trans.Frequency,\n status: trans.Status,\n url: trans.URL,\n canEdit: trans.CanEdit,\n canDelete: trans.CanDelete,\n accountId: trans.AccountId,\n accountGroupId: trans.AccountGroupId,\n typeName: trans.TransactionType\n .replace(' In', '')\n .replace(' Out', ''),\n })),\n };\n\n return newState;\n }\n\n case TRANSACTION_DELETE: {\n const upcomingTransactions = newState.upcomingTransactionsByAccount[action.meta.accountId];\n newState.upcomingTransactionsByAccount[action.meta.accountId] =\n upcomingTransactions.filter(transaction => transaction.id !== action.meta.transactionId);\n\n return newState;\n }\n\n case WITHDRAWAL_DETAILS_GET: {\n const accountId = parseInt(action.meta.accountId);\n\n const currentAccount = Object.assign(\n accountFilter(accountId, newState),\n { AccountId: accountId },\n newState.accountTransactionsDetails\n );\n\n const accountInGroup = find(currentAccount.AccountInfo, { AccountId: accountId });\n\n newState.withdrawalDetails = {\n accountId: currentAccount.AccountId,\n accountNumber: currentAccount.AcctNumber,\n accountType: currentAccount.AccountType,\n agentAddress: {\n line1: properCase(currentAccount.Agent.Recipient.Line1),\n line2: properCase(currentAccount.Agent.Recipient.Line2, ['C/O', 'FBO', 'UGMA/UTMA']),\n name: properCase(`${currentAccount.Agent.FirstName} ${currentAccount.Agent.LastName}`),\n street1: properCase(currentAccount.Agent.MailingAddress.StreetAddress1, ['PO']),\n street2: properCase(currentAccount.Agent.MailingAddress.StreetAddress2, ['PO']),\n city: properCase(currentAccount.Agent.MailingAddress.City),\n state: { Code: currentAccount.Agent.MailingAddress.State },\n postalCode: currentAccount.Agent.MailingAddress.PostalCode,\n },\n agentAddressChanged: currentAccount.AgentAddressChanged,\n agentBankAccounts: newState.agentBankAccounts,\n agentName: properCase(`${currentAccount.Agent.FirstName} ${currentAccount.Agent.LastName}`),\n allowFullWithdrawalIndividual: accountInGroup.AllowFullWithdrawal,\n allowFullWithdrawalGroup: currentAccount.AllowFullWithdrawal,\n availableBalance: {\n display: currencyFormatter(accountInGroup.AvailableForWithdrawal),\n number: accountInGroup.AvailableForWithdrawal\n },\n beneficiaryAddress: {\n name: properCase(`${currentAccount.Beneficiary.FirstName} ${currentAccount.Beneficiary.LastName}`),\n street1: properCase(currentAccount.Beneficiary.MailingAddress.StreetAddress1, ['PO']),\n street2: properCase(currentAccount.Beneficiary.MailingAddress.StreetAddress2, ['PO']),\n city: properCase(currentAccount.Beneficiary.MailingAddress.City),\n state: { Code: currentAccount.Beneficiary.MailingAddress.State },\n postalCode: currentAccount.Beneficiary.MailingAddress.PostalCode,\n },\n beneficiaryAddressChanged: currentAccount.BeneficiaryAddressChanged,\n beneficiaryName: properCase(`${currentAccount.Beneficiary.FirstName} ${currentAccount.Beneficiary.LastName}`),\n groupAccounts: currentAccount.AccountInfo.map(account => {\n return {\n accountId: account.AccountId,\n accountNumber: account.AccountNumber,\n allowFullWithdrawalIndividual: account.AllowFullWithdrawal,\n availableBalance: {\n display: currencyFormatter(account.AvailableForWithdrawal),\n number: account.AvailableForWithdrawal\n },\n optionDescription: account.OptionName,\n percentageOfTotalValue: account.AvailableForWithdrawal / currentAccount.AvailableForWithdrawal || 0,\n marketValue: {\n display: currencyFormatter(account.MarketValue),\n number: account.MarketValue\n },\n };\n }),\n groupId: currentAccount.AccountGroupId,\n marketValue: currencyFormatter(accountInGroup.MarketValue),\n MarketValue: accountInGroup.MarketValue,\n NetAvailable: accountInGroup.NetAvailable,\n optionDescription: currentAccount.AcctOption,\n schoolAddresses: currentAccount.SchoolAddresses.map(address => {\n return {\n attn: properCase(address.Department),\n name: properCase(address.SchoolName),\n street1: properCase(address.Address.StreetAddress1),\n city: properCase(address.Address.City),\n state: { Code: address.Address.State },\n postalCode: address.Address.PostalCode,\n schoolId: address.SchoolId.toString(),\n fbo: `${properCase(`${currentAccount.Beneficiary.FirstName} ${currentAccount.Beneficiary.LastName}`)}`,\n studentIdNum: address.StudentId,\n };\n }),\n totalValue: {\n display: currencyFormatter(currentAccount.AvailableForWithdrawal),\n number: currentAccount.AvailableForWithdrawal\n },\n };\n\n return newState;\n }\n\n case SCHEDULED_TRANSACTION_GET: {\n let transaction = action.payload.data;\n switch (action.meta.type) {\n case 'Transfer':\n transaction = buildTransfer(transaction);\n newState.transfers[transaction.TransferId] = transaction;\n break;\n\n case 'Option Change': {\n transaction = {\n accountId: transaction.Actions[0].AccountId,\n actionId: transaction.Actions[0].ActionId,\n schema: transaction.Actions[0].Schema ? convert2DCalculatorSchemaTo3D(transaction.Actions[0].Schema) : null,\n currentOption: transaction.Actions[0].CurrentOption,\n newOption: transaction.Actions[0].NewOption,\n predefinedOptionId: transaction.Actions[0].NewOptionId,\n optionChangeId: transaction.OptionChangeId,\n status: transaction.Status,\n templateId: transaction.Actions[0].TemplateId,\n createdDate: transaction.TradeDate\n };\n break;\n }\n case 'Withdrawal':\n case 'Contribution':\n default:\n break;\n }\n newState.selectedTransaction = transaction;\n\n return newState;\n }\n\n case ACCOUNT_DOCUMENTS_GET: {\n const { data } = action.payload;\n newState.documents[action.meta.accountId] = data.map((document, index) => ({\n id: index + 1,\n type: document.DocumentType,\n fileType: document.Format,\n year: document.Year,\n quarter: document.Quarter,\n url: document.Url,\n description: document.Description,\n additionalDocURL: document.Supplement ? document.Supplement.Url : null,\n }));\n\n return newState;\n }\n\n case BULK_OPTION_CHANGE_CANDIDATES_GET: {\n newState.bulkOptionChangeCandidates = action.payload.data.map(candidate => ({\n ...candidate,\n AccountNumber: parseInt(candidate.AccountNumber),\n Beneficiary: properCase(candidate.Beneficiary),\n Agent: properCase(candidate.Agent),\n }));\n\n return newState;\n }\n\n case ACCOUNT_TRANSACTION_PREVIEW: {\n const response = action.payload.data;\n newState.transactionPreviewDetails = {\n canContinue: response[action.meta.transactionType],\n errors: response.Comments,\n };\n\n return newState;\n }\n\n case TRANSFER_ACCOUNTS_GET: {\n newState.transferAccounts[action.meta.sourceAccount] = action.payload.data.map(account => ({\n AccountId: account.AccountId,\n accountGroupId: account.AccountGroupId,\n beneficiary: {\n name: properCase(`${account.BenFirst} ${account.BenLast}`),\n },\n details: {\n accountNumber: account.AcctNumber,\n }\n }));\n\n return newState;\n }\n\n case ACCOUNT_INVESTMENT_PATH_GET: {\n newState.investmentPath = convert2DCalculatorSchemaTo3D(action.payload.data);\n return newState;\n }\n\n case GET_PRR_DATES: {\n newState.pRRDates = {\n minDate: action.payload.data.StartDate,\n maxDate: action.payload.data.EndDate,\n };\n return newState;\n }\n\n case COUNTRIES_LIST_GET: {\n newState.countries = action.payload.data;\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default AccountsReducer;\n","export const ACTIVATE_TEMPLATE = 'app/Features/protected/Templates/ACTIVATE_TEMPLATE';\nexport const CLEAR_TEMPLATE = 'app/Features/protected/Templates/CLEAR_TEMPLATE';\nexport const DEACTIVATE_TEMPLATE = 'app/Features/protected/Templates/DEACTIVATE_TEMPLATE';\nexport const GET_NEW_AGE_BASED_TEMPLATE = 'app/Features/protected/Templates/GET_NEW_AGE_BASED_TEMPLATE';\nexport const GET_NEW_STATIC_TEMPLATE = 'app/Features/protected/Templates/GET_NEW_STATIC_TEMPLATE';\nexport const GET_TEMPLATE = 'app/Features/protected/Templates/GET_TEMPLATE';\nexport const GET_TEMPLATE_ACCOUNTS = 'app/Features/protected/Templates/GET_TEMPLATE_ACCOUNTS';\nexport const GET_TEMPLATES = 'app/Features/protected/Templates/GET_TEMPLATES';\nexport const SAVE_TEMPLATE = 'app/Features/protected/Templates/SAVE_TEMPLATE';","/*\n*\n* Templates Reducer\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n GET_TEMPLATE,\n GET_TEMPLATE_ACCOUNTS,\n GET_TEMPLATES,\n} from './constants';\n\nimport { convert2DCalculatorSchemaTo3D } from '@frontend/common';\n\nconst initialState = {\n activeTemplates: [],\n deactivatedTemplates: [],\n template: {\n TemplateType: null,\n FundCategories: [],\n },\n templateAccountsList: [],\n};\n\nfunction TemplatesReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case GET_TEMPLATE: {\n newState.template = convert2DCalculatorSchemaTo3D(action.payload.data);\n return newState;\n }\n\n case GET_TEMPLATE_ACCOUNTS: {\n newState.templateAccountsList = action.payload.data;\n return newState;\n }\n\n case GET_TEMPLATES: {\n newState.activeTemplates = action.payload.data.Active;\n newState.deactivatedTemplates = action.payload.data.Deactivated;\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default TemplatesReducer;","/*\n*\n* NewAccounts Constants\n*\n*/\nexport const NEW_ACCOUNTS_LIST_GET = 'src/components/Features/protected/NewAccounts/NEW_ACCOUNTS_LIST_GET';\nexport const ACCOUNTS_UPLOAD = 'src/components/Features/protected/NewAccounts/ACCOUNTS_UPLOAD';\nexport const NEW_ACCOUNT_DETAILS_GET = 'src/components/Features/protected/NewAccounts/NEW_ACCOUNT_DETAILS_GET';\nexport const NEW_ACCOUNT_UPDATE = 'src/components/Features/protected/NewAccounts/NEW_ACCOUNT_UPDATE';\nexport const NEW_ACCOUNT_APPROVE = 'src/components/Features/protected/NewAccounts/NEW_ACCOUNT_APPROVE';\nexport const NEW_ACCOUNT_DOWNLOAD = 'src/components/Features/protected/NewAccounts/NEW_ACCOUNT_DOWNLOAD';\n\nexport const RESOLVE_BIRTHDATE = 'src/components/Features/protected/NewAccounts/RESOLVE_BIRTHDATE';\nexport const RESOLVE_EMAIL = 'src/components/Features/protected/NewAccounts/RESOLVE_EMAIL';\nexport const RESOLVE_POA_LEVEL = 'src/components/Features/protected/NewAccounts/RESOLVE_POA_LEVEL';\nexport const RESOLVE_SSN = 'src/components/Features/protected/NewAccounts/RESOLVE_SSN';\nexport const RESOLVE_FED_TAX = 'src/components/Features/protected/NewAccounts/RESOLVE_FED_TAX';\nexport const RESOLVE_STATE_TAX = 'src/components/Features/protected/NewAccounts/RESOLVE_STATE_TAX';\n\nexport const BLANK_ACCOUNT_GET = 'src/components/Features/protected/NewAccounts/BLANK_ACCOUNT_GET';\nexport const SINGLE_ACCOUNT_CREATE = 'src/components/Features/protected/NewAccounts/SINGLE_ACCOUNT_CREATE';\nexport const NEW_ACCOUNT_RESET = 'src/components/Features/protected/NewAccounts/NEW_ACCOUNT_RESET';\nexport const NEW_ACCOUNT_DELETE = 'src/components/Features/protected/NewAccounts/NEW_ACCOUNT_DELETE';\n\nexport const statuses = {\n LOADED: 'Loaded',\n ADVISOR_APPROVED: 'Advisor Approved',\n SECURITY_FAILURE: 'Security Failure',\n EXPIRED: 'Expired',\n CLIENT_REJECTED: 'Client Rejected',\n CLIENT_APPROVED: 'Client Approved',\n};","/*\n*\n* NewAccounts Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n NEW_ACCOUNTS_LIST_GET,\n ACCOUNTS_UPLOAD,\n NEW_ACCOUNT_DETAILS_GET,\n NEW_ACCOUNT_UPDATE,\n NEW_ACCOUNT_APPROVE,\n BLANK_ACCOUNT_GET,\n} from './constants';\n\nconst initialState = {\n accounts: {},\n warnings: [],\n formErrors: [],\n staticErrors: [],\n conflictErrors: [],\n blankAccount: {},\n allowNewAccounts: false,\n};\n\n\nfunction NewAccountsReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case NEW_ACCOUNTS_LIST_GET: {\n newState.accounts = action.payload.data.NewAccounts\n .reduce((result, account) => ({ ...result, [account.PoaAccountApplicationId]: account }), {});\n newState.allowNewAccounts = action.payload.data.AllowNewAccounts;\n\n return newState;\n }\n\n case ACCOUNTS_UPLOAD: {\n // messaging is handled by middleware now\n return newState;\n }\n\n case NEW_ACCOUNT_DETAILS_GET:\n case NEW_ACCOUNT_UPDATE: {\n newState.formErrors = [];\n newState.staticErrors = [];\n newState.conflictErrors = [];\n\n const account = action.payload.data;\n newState.accounts[account.PoaAccountApplicationId] = account;\n\n return newState;\n }\n\n case NEW_ACCOUNT_APPROVE: {\n newState.formErrors = [];\n newState.staticErrors = [];\n newState.conflictErrors = [];\n\n const response = action.payload.data;\n if (response.FormErrors) {\n newState.formErrors = response.FormErrors.map(error => {\n return {\n input: error.type,\n message: error.error,\n };\n });\n }\n\n if (response.StaticErrors) {\n newState.staticErrors = response.StaticErrors.map(error => {\n return {\n type: error.type,\n ssn: error.ssn,\n otherSSN: error.secondSsn,\n approvedValue: error.correctOption,\n email: error.email,\n };\n });\n }\n\n if (response.ConflictErrors) {\n newState.conflictErrors = response.ConflictErrors.map(error => {\n return {\n type: error.type,\n ssn: error.ssn,\n otherSSN: error.secondSsn,\n options: error.otherOptions,\n email: error.email,\n };\n });\n }\n\n return newState;\n }\n\n case BLANK_ACCOUNT_GET: {\n newState.blankAccount = {\n ...action.payload.data,\n CanViewFedTaxDocs: true,\n CanViewStateTaxDocs: true,\n };\n\n return newState;\n }\n\n default: {\n return state;\n }\n }\n\n}\n\nexport default NewAccountsReducer;","import PropTypes from 'prop-types';\n\nexport const BENEFICIARY_BAR_CHART_CHANGE = 'app/Features/protected/Dashboard/BENEFICIARY_BAR_CHART_CHANGE';\n\nexport const VIEW_BY_AGE = 'accountsByAge';\nexport const VIEW_BY_AGE_BAND = 'accountsByAgeBand';\nexport const selectedBeneficiaryBarChartType = PropTypes.oneOf([ VIEW_BY_AGE, VIEW_BY_AGE_BAND ]);\n","import { cloneDeep } from 'lodash';\nimport { BENEFICIARY_BAR_CHART_CHANGE } from './constants';\nimport { VIEW_BY_AGE_BAND } from './constants';\n\nconst initialState = {\n selectedBeneficiaryBarChart: VIEW_BY_AGE_BAND\n};\n\nfunction DashboardSettingsReducer(state = initialState, action) {\n const newState = cloneDeep(state);\n\n switch (action.type) {\n case BENEFICIARY_BAR_CHART_CHANGE: {\n newState.selectedBeneficiaryBarChart = action.selectedBeneficiaryBarChart;\n return newState;\n }\n default: {\n return newState;\n }\n }\n}\n\nexport default DashboardSettingsReducer;\n","/*\n*\n* ManageLPOA Constants\n*\n*/\nexport const LPOA_SETTINGS_GET = 'src/components/Features/protected/ManageLPOA/LPOA_SETTINGS_GET';\nexport const LPOA_SETTINGS_UPDATE = 'src/components/Features/protected/ManageLPOA/LPOA_SETTINGS_UPDATE';\n\nexport const LPOA_ADDRESS_UPDATE = 'src/components/Features/protected/ManageLPOA/LPOA_ADDRESS_UPDATE';","/*\n*\n* ManageLPOA Reducers\n*\n*/\nimport { cloneDeep, pick } from 'lodash';\nimport { properCase } from '@frontend/common';\nimport {\n LPOA_SETTINGS_GET,\n LPOA_SETTINGS_UPDATE,\n LPOA_ADDRESS_UPDATE,\n} from './constants';\n\nconst initialState = {\n settings: {},\n addresses: {\n mailing: {},\n physical: {},\n },\n fullSettingsObject: {},\n};\n\nexport function getLPOAPermissions(firm) {\n return pick(firm, [\n 'AllowViewStateTaxDocuments',\n 'AllowViewFederalTaxDocuments',\n 'AllowContribute',\n 'AllowTransfer',\n 'AllowOptionChange',\n 'AllowWithdraw',\n ]);\n}\n\nexport function formatAddress(address) {\n if (address) {\n return {\n id: address.AddressId,\n street1: properCase(address.StreetAddress1),\n street2: properCase(address.StreetAddress2),\n city: properCase(address.City),\n state: address.State,\n zip: address.PostalCode,\n };\n }\n \n return {\n id: 0,\n street1: '',\n street2: '',\n city: '',\n state: '',\n zip: '',\n };\n}\n\nfunction ManageLPOAReducer(state = initialState, action) {\n \n const newState = cloneDeep(state);\n\n switch (action.type) {\n \n case LPOA_SETTINGS_GET: {\n const firm = action.payload.data;\n newState.settings = getLPOAPermissions(firm);\n newState.addresses = {\n mailing: formatAddress(firm.Address),\n physical: formatAddress(firm.Address1),\n };\n newState.fullSettingsObject = firm;\n\n return newState;\n }\n\n case LPOA_SETTINGS_UPDATE: {\n const updatedFirm = action.payload.data;\n newState.settings = getLPOAPermissions(updatedFirm);\n newState.fullSettingsObject = updatedFirm;\n \n return newState;\n }\n\n case LPOA_ADDRESS_UPDATE: {\n const updatedFirm = action.payload.data;\n newState.addresses = {\n mailing: formatAddress(updatedFirm.MailingAddress),\n physical: formatAddress(updatedFirm.PhysicalAddress),\n };\n\n return newState;\n }\n \n default:\n return state;\n }\n\n}\n\nexport default ManageLPOAReducer;","/*\n*\n* ManageUsers Constants\n*\n*/\nexport const USERS_LIST_GET = 'src/components/Features/protected/ManageUsers/USERS_LIST_GET';\nexport const USER_DETAILS_GET = 'src/components/Features/protected/ManageUsers/USER_DETAILS_GET';\nexport const USER_UPDATE = 'src/components/Features/protected/ManageUsers/USER_UPDATE';\nexport const POA_ACCOUNTS_GET = 'src/components/Features/protected/ManageUsers/POA_ACCOUNTS_GET';\nexport const USER_CREATE = 'src/components/Features/protected/ManageUsers/USER_CREATE';\nexport const PRIMARY_CONTACTS_ASSIGN = 'src/components/Features/protected/ManageUsers/PRIMARY_CONTACTS_ASSIGN';\nexport const DEACTIVATE_USER = 'src/components/Features/protected/ManageUsers/DEACTIVATE_USER';\nexport const REACTIVATE_USER = 'src/components/Features/protected/ManageUsers/REACTIVATE_USER';\nexport const ACTIVATION_EMAIL_RESEND = 'src/components/Features/protected/ManageUsers/ACTIVATION_EMAIL_RESEND';\n","/*\n*\n* ManageUsers Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n USERS_LIST_GET,\n USER_DETAILS_GET,\n USER_UPDATE,\n POA_ACCOUNTS_GET,\n USER_CREATE,\n PRIMARY_CONTACTS_ASSIGN,\n DEACTIVATE_USER,\n REACTIVATE_USER,\n} from './constants';\nimport { properCase } from '@frontend/common';\n\nconst initialState = {\n users: {},\n poaAccounts: [],\n createdUserPin: '',\n};\n\nexport function userDataMap(user, dataComplete) {\n return {\n advisorId: user.FinancialAdvisorId,\n FirstName: user.FirstName,\n LastName: user.LastName,\n EmailAddress: user.EmailAddress,\n PhoneNumber1: user.PhoneNumber1?.Number || '',\n PhoneNumber2: user.PhoneNumber2?.Number || '',\n ActivationDate: user.ActivationDate,\n AllowContribute: user.AllowContribute,\n AllowOptionChange: user.AllowOptionChange,\n AllowTransfer: user.AllowTransfer,\n AllowWithdraw: user.AllowWithdraw,\n AllowViewStateTaxDocuments: user.AllowViewStateTaxDocuments,\n AllowViewFederalTaxDocuments: user.AllowViewFederalTaxDocuments,\n AdvisorEdit: user.AdvisorEdit,\n BulkStatementDownload: user.BulkStatementDownload,\n EditFirmContactInfo: user.EditFirmContactInfo,\n EditFirmAdvisorDefaults: user.EditFirmAdvisorDefaults,\n TemplateEdit: user.TemplateEdit,\n DataImportSetup: user.DataImportSetup,\n DataImport: user.DataImport,\n AccountReports: user.AccountReports,\n AdminReports: user.AdminReports,\n DeactivationDate: user.DeactivationDate,\n POAs: user.POAs\n ? user.POAs.map(poa => ({\n id: poa.POAId,\n ownerName: properCase(poa.AgentName),\n beneficiaryName: properCase(poa.BeneName),\n isPrimaryContact: poa.IsPrimaryContact,\n }))\n : [],\n POAIds: null,\n ViewAllAccounts: user.ViewAllAccounts,\n IsDefaultPrimaryContact: user.IsDefaultPrimaryContact,\n pin: user.Pin,\n username: user.Username,\n status: user.Status,\n lastLogin: user.LastLogin,\n dataComplete,\n };\n}\n\nfunction ManageUsersReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case USERS_LIST_GET: {\n const cachedUsers = cloneDeep(newState.users);\n newState.users = action.payload.data\n .reduce((result, user) => ({\n ...result,\n [user.FinancialAdvisorId]: cachedUsers[user.FinancialAdvisorId]\n ? { ...userDataMap(user, false), ...cachedUsers[user.FinancialAdvisorId] }\n : userDataMap(user, false),\n }), {});\n return newState;\n }\n\n case USER_DETAILS_GET:\n case USER_UPDATE:\n case PRIMARY_CONTACTS_ASSIGN:\n case USER_CREATE: {\n const user = userDataMap(action.payload.data, true);\n newState.users[user.advisorId] = user;\n return newState;\n }\n\n case POA_ACCOUNTS_GET: {\n newState.poaAccounts = action.payload.data.map(account => ({\n id: account.POAId,\n ownerName: properCase(account.AgentName),\n beneficiaryName: properCase(account.BeneName),\n }));\n\n return newState;\n }\n\n case DEACTIVATE_USER: {\n newState.users[action.meta.advisorId] = userDataMap(action.payload.data, false);\n return newState;\n }\n\n case REACTIVATE_USER: {\n newState.users[action.meta.advisorId] = userDataMap(action.payload.data, false);\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default ManageUsersReducer;\n","/*\n*\n* MyInfo Constants\n*\n*/\nexport const PASSWORD_CHANGE = 'src/components/Features/protected/MyInfo/PASSWORD_CHANGE';\nexport const ADVISOR_GET = 'src/components/Features/protected/MyInfo/ADVISOR_GET';\nexport const CONTACT_INFO_UPDATE = 'src/components/Features/protected/MyInfo/CONTACT_INFO_UPDATE';","/*\n*\n* MyInfo Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n ADVISOR_GET,\n CONTACT_INFO_UPDATE,\n} from './constants';\n\nconst initialState = {\n advisor: {\n FirstName: '',\n LastName: '',\n EmailAddress: '',\n Pin: '',\n permissions: {},\n PhoneNumber1: '',\n PhoneNumber2: '',\n TransactionNotifications: false,\n ClientNotifications: false,\n },\n};\n\nexport function mapAdvisor(advisor) {\n return {\n FinancialAdvisorId: advisor.FinancialAdvisorId,\n FirstName: advisor.FirstName,\n LastName: advisor.LastName,\n EmailAddress: advisor.EmailAddress,\n ClientNotifications: advisor.ClientNotifications,\n TransactionNotifications: advisor.TransactionNotifications,\n PhoneNumber1: advisor.PhoneNumber1?.Number.toString() || '',\n PhoneNumber2: advisor.PhoneNumber2?.Number.toString() || '',\n Pin: advisor.Pin,\n permissions: {\n AllowContribute: advisor.AllowContribute,\n AllowOptionChange: advisor.AllowOptionChange,\n AllowTransfer: advisor.AllowTransfer,\n AllowWithdraw: advisor.AllowWithdraw,\n AllowViewStateTaxDocuments: advisor.AllowViewStateTaxDocuments,\n AllowViewFederalTaxDocuments: advisor.AllowViewFederalTaxDocuments,\n AdvisorEdit: advisor.AdvisorEdit,\n EditFirmContactInfo: advisor.EditFirmContactInfo,\n EditFirmAdvisorDefaults: advisor.EditFirmAdvisorDefaults,\n TemplateEdit: advisor.TemplateEdit,\n DataImportSetup: advisor.DataImportSetup,\n DataImport: advisor.DataImport,\n AccountReports: advisor.AccountReports,\n AdminReports: advisor.AdminReports,\n AllowUnsubscribe: advisor.AllowUnsubscribe,\n ViewAllAccounts: advisor.ViewAllAccounts,\n BulkStatementDownload: advisor.BulkStatementDownload,\n },\n };\n}\n\nfunction MyInfoReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case ADVISOR_GET:\n case CONTACT_INFO_UPDATE: {\n newState.advisor = mapAdvisor(action.payload.data);\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default MyInfoReducer;","/*\n*\n* Reports Constants\n*\n*/\nexport const REPORTS_GET = 'src/components/Features/protected/Reports/REPORTS_GET';\nexport const REPORT_RUN = 'src/components/Features/protected/Reports/REPORT_RUN';\nexport const REPORT_DOWNLOAD = 'src/components/Features/protected/Reports/REPORT_DOWNLOAD';","/*\n*\n* Reports Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n REPORTS_GET,\n} from './constants';\n\nconst initialState = {\n reports: {},\n};\n\nfunction ReportsReducer(state = initialState, action) {\n \n const newState = cloneDeep(state);\n\n switch (action.type) {\n \n case REPORTS_GET: {\n newState.reports = action.payload.data\n .reduce((result, report) => ({\n ...result,\n [`${report.ReportId}`]: {\n id: report.ReportId,\n name: report.DisplayName,\n description: report.Description,\n category: report.ReportCategory.toLowerCase(),\n params: report.ReportParams.map(param => ({\n name: param.ParamName,\n displayName: param.DisplayName,\n type: param.DataType,\n })),\n },\n }), {});\n \n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default ReportsReducer;","/*\n*\n* ManageData Constants\n*\n*/\nexport const POAS_FOR_EXPORT_GET = 'src/components/Features/protected/ManageData/POAS_FOR_EXPORT_GET';\nexport const POAS_FOR_EXPORT_UPDATE = 'src/components/Features/protected/ManageData/POAS_FOR_EXPORT_UPDATE';\n\nexport const BACK_OFFICES_GET = 'src/components/Features/protected/ManageData/BACK_OFFICES_GET';\nexport const BACK_OFFICES_UPDATE = 'src/components/Features/protected/ManageData/BACK_OFFICES_UPDATE';\n\nexport const PORTFOLIO_PROVIDERS_GET = 'src/components/Features/protected/ManageData/PORTFOLIO_PROVIDERS_GET';\nexport const PORTFOLIO_PROVIDERS_UPDATE = 'src/components/Features/protected/ManageData/PORTFOLIO_PROVIDERS_UPDATE';\nexport const PORTFOLIO_DATA_DOWNLOAD = 'src/components/Features/protected/ManageData/PORTFOLIO_DATA_DOWNLOAD';","/*\n*\n* ManageData Reducers\n*\n*/\nimport { cloneDeep, orderBy, find } from 'lodash';\nimport { properCase } from '@frontend/common';\nimport dayjs from 'dayjs';\nimport {\n POAS_FOR_EXPORT_GET,\n POAS_FOR_EXPORT_UPDATE,\n BACK_OFFICES_GET,\n BACK_OFFICES_UPDATE,\n PORTFOLIO_PROVIDERS_GET,\n PORTFOLIO_PROVIDERS_UPDATE,\n} from './constants';\n\nconst initialState = {\n poasForExport: [],\n backOffices: [],\n portfolioProviders: [],\n};\n\n\nfunction ManageDataReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case POAS_FOR_EXPORT_GET: {\n const allOptions = action.payload[0].data;\n const selectedPoaIds = action.payload[1].data.map(poa => poa.POAId);\n newState.poasForExport = allOptions.map(poa => ({\n id: poa.POAId,\n ownerName: properCase(poa.AgentName),\n beneficiaryName: properCase(poa.BeneName),\n selected: selectedPoaIds.indexOf(poa.POAId) !== -1,\n }));\n\n return newState;\n }\n\n case POAS_FOR_EXPORT_UPDATE: {\n const updatedIds = action.payload.data;\n newState.poasForExport = newState.poasForExport.map(poa => ({\n ...poa,\n selected: updatedIds.indexOf(poa.id) !== -1,\n }));\n\n return newState;\n }\n\n case BACK_OFFICES_GET: {\n const backOfficeOptions = action.payload[0];\n const selectedBackOffices = action.payload[1];\n const allBackOffices = backOfficeOptions.data;\n\n newState.backOffices = orderBy(allBackOffices.map(office => {\n const enabledBackOffice = find(selectedBackOffices.data, { BackOfficeProviderId: office.BackOfficeProviderId });\n return {\n id: office.BackOfficeProviderId,\n name: properCase(office.Name, ['(BOSS)', 'BAM']),\n enabled: Boolean(enabledBackOffice),\n authorizedDate: enabledBackOffice ? enabledBackOffice.AuthorizationDate : null,\n };\n }), ['name'], ['asc']);\n\n return newState;\n }\n\n case BACK_OFFICES_UPDATE: {\n const updatedIds = action.payload.data;\n newState.backOffices = newState.backOffices.map(office => {\n const enabled = updatedIds.indexOf(office.id) > -1;\n return {\n ...office,\n enabled,\n authorizedDate: enabled ? (!office.authorizedDate ? dayjs().toISOString() : office.authorizedDate) : null, //eslint-disable-line no-nested-ternary\n };\n });\n\n return newState;\n }\n\n case PORTFOLIO_PROVIDERS_GET: {\n const providerOptions = action.payload[0];\n const selectedProviders = action.payload[1];\n const selectedProviderCodes = selectedProviders.data.map(provider => provider.Code);\n\n newState.portfolioProviders = orderBy(providerOptions.data.map(provider => ({\n id: provider.Code,\n name: provider.Name,\n enabled: selectedProviderCodes.indexOf(provider.Code) > -1,\n })), ['name'], ['asc']);\n\n return newState;\n }\n\n case PORTFOLIO_PROVIDERS_UPDATE: {\n const updatedCodes = action.payload.data;\n newState.portfolioProviders = newState.portfolioProviders.map(provider => ({\n ...provider,\n enabled: updatedCodes.indexOf(provider.id) > -1,\n }));\n\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default ManageDataReducer;","\nexport const TWO_FACTOR_REGISTRATION = 'src/components/Features/protected/Multifactor/TWO_FACTOR_REGISTRATION';\nexport const TWO_FACTOR_REGISTRATION_UPDATE = 'src/components/Features/protected/Multifactor/TWO_FACTOR_REGISTRATION_UPDATE';\nexport const TWO_FACTOR_TOKEN = 'src/components/Features/protected/Multifactor/TWO_FACTOR_TOKEN';\nexport const TWO_FACTOR_TOKEN_VERIFICATION = 'src/components/Features/protected/Multifactor/TWO_FACTOR_TOKEN_VERIFICATION';\nexport const TWO_FACTOR_QRCODES = 'src/components/Features/protected/Multifactor/TWO_FACTOR_QRCODES';\n\nexport const TWO_FACTOR_PREFERRED_METHOD = 'src/components/Features/protected/Multifactor/TWO_FACTOR_PREFERRED_METHOD';\nexport const TWO_FACTOR_SAVE_PREFERRED_METHOD = 'src/components/Features/protected/Multifactor/TWO_FACTOR_SAVE_PREFERRED_METHOD';\n\nexport const VERIFY_PIN = 'src/components/Features/protected/Multifactor/VERIFY_PIN';\nexport const IS_PIN_VERIFIED = 'src/components/Features/protected/Multifactor/IS_PIN_VERIFIED';\n\nexport const REGISTER_METHODS = {\n SMS: 'SMS',\n CALL: 'CALL',\n INAPPTOKEN: 'INAPPTOKEN'\n};","import { cloneDeep } from 'lodash';\n\nimport {\n TWO_FACTOR_PREFERRED_METHOD,\n TWO_FACTOR_SAVE_PREFERRED_METHOD,\n VERIFY_PIN\n} from './constants';\n\nconst initialState = {\n preferredInfo: {\n CountryCode: '+1',\n PhoneNumber: '',\n AlwaysRequired: false, // assuming user has no saying in their user preferences\n PreferredMethod: '',\n },\n PINVerification: { IdentityVerified: false },\n};\n\nfunction MultifactorReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case TWO_FACTOR_PREFERRED_METHOD:\n case TWO_FACTOR_SAVE_PREFERRED_METHOD: {\n newState.preferredInfo = action.payload.data;\n return newState;\n }\n\n case VERIFY_PIN: {\n newState.PINVerification = action.payload.data;\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default MultifactorReducer;\n","import { combineReducers } from '@reduxjs/toolkit';\n\nimport { INITIALIZE_STORE } from 'components/AppRoot/Navigation/constants';\n\nimport Session from 'components/AppRoot/Navigation/reducer';\nimport StaticResources from 'components/AppRoot/StaticResources/reducer';\nimport Accounts from 'components/Features/protected/Accounts/reducer';\nimport Notifications from '@frontend/common/build/components/Notifications/reducer';\nimport Templates from 'components/Features/protected/Templates/reducer';\nimport NewAccounts from 'components/Features/protected/NewAccounts/reducer';\nimport DashboardSettings from 'components/Features/protected/Dashboard/reducer';\nimport ManageLPOA from 'components/Features/protected/ManageLPOA/reducer';\nimport ManageUsers from 'components/Features/protected/ManageUsers/reducer';\nimport MyInfo from 'components/Features/protected/MyInfo/reducer';\nimport Reports from 'components/Features/protected/Reports/reducer';\nimport ManageData from 'components/Features/protected/ManageData/reducer';\nimport Multifactor from 'components/Features/protected/Multifactor/reducer';\n\n/*\nAbility to reinitialize the entire store.\nThis action type is used by /logout\n*/\nconst rootReducer = (state, action) => {\n if (action.type === INITIALIZE_STORE) {\n state = {\n static: {\n ageBrackets: [],\n documents: state.static.documents,\n webMessages: state.static.webMessages,\n loadingPublicVars: state.static.loadingPublicVars,\n environmentVars: state.static.environmentVars,\n passwordRequirements: state.static.passwordRequirements,\n options: state.static.options,\n customAgeBasedOptions: state.static.customAgeBasedOptions,\n customStaticOptions: state.static.customStaticOptions,\n newAgeBasedSchema: state.static.newAgeBasedSchema,\n newStaticSchema: state.static.newStaticSchema,\n relationships: [],\n poaLevels: [],\n }\n };\n // clear token at the same time\n sessionStorage.removeItem('token');\n }\n return appReducer(state, action);\n};\n\nconst appReducer = combineReducers({\n session: Session,\n static: StaticResources,\n accounts: Accounts,\n notifications: Notifications,\n templates: Templates,\n newAccounts: NewAccounts,\n dashboardSettings: DashboardSettings,\n manageLPOA: ManageLPOA,\n manageUsers: ManageUsers,\n myInfo: MyInfo,\n reports: Reports,\n manageData: ManageData,\n multifactor: Multifactor,\n});\n\nexport default rootReducer;\n","import './constants.css';\n\nconst cssValue = (property) => {\n return getComputedStyle(document.documentElement).getPropertyValue(property);\n};\n\nexport const colors = {\n primary: cssValue('--primary'),\n accent: cssValue('--accent'),\n warn: cssValue('--warn'),\n error: cssValue('--error'),\n text: cssValue('--text'),\n linkText: cssValue('--linkText'),\n darkPrimary: cssValue('--darkPrimary'),\n lightGray: cssValue('--lightGray'),\n lightHeaderText: cssValue('--lightHeaderText')\n};\n","import { colors } from './constants';\nimport { lighten } from '@mui/material/styles';\n\nconst appColors = {\n primary: colors.primary || '#EA7125', // Appeases the unit test gods' inability to load css\n accent: colors.accent || '#0072CF',\n warn: colors.warn || 'rgb(250, 229, 0)',\n error: colors.error || '#E50000',\n text: colors.text || 'rgba(0, 0, 0, 0.87)',\n linkText: colors.linkText || '#0072CF',\n darkPrimary: colors.darkPrimary || '#0059B6',\n lightGray: colors.lightGray || '#F5F5F4',\n lightHeaderText: colors.lightHeaderText || 'rgba(0, 0, 0, 0.54)',\n};\n\nexport default {\n palette: {\n common: {\n warn: appColors.warn,\n },\n primary: {\n main: appColors.primary,\n light: lighten(appColors.primary, 0.85),\n dark: appColors.primary,\n },\n secondary: {\n main: appColors.accent\n },\n error: {\n main: appColors.error\n },\n text: {\n main: appColors.text\n },\n linkText: {\n main: appColors.linkText\n },\n row: {\n trim: lighten(appColors.primary, 0.9),\n hover: lighten(appColors.primary, 0.8),\n selected: lighten(appColors.primary, 0.6),\n },\n },\n components: {\n MuiButton: {\n defaultProps: {\n color: 'secondary',\n },\n styleOverrides: {\n contained: {\n color: '#fff',\n backgroundColor: appColors.accent,\n '&:hover': {\n backgroundColor: lighten(appColors.accent, 0.4),\n },\n },\n outlined: {\n color: appColors.accent,\n borderColor: appColors.accent,\n },\n text: {\n color: appColors.accent,\n }\n },\n },\n MuiCheckbox: {\n defaultProps: {\n color: 'secondary',\n }\n },\n MuiChip: {\n defaultProps: {\n color: 'secondary',\n },\n styleOverrides: {\n root: {\n '&:hover': {\n backgroundColor: lighten(appColors.accent, 0.4),\n color: '#fff',\n },\n },\n deleteIcon: {\n color: '#fff',\n '&:hover': {\n color: 'rgb(215, 215, 215)',\n },\n },\n avatar: {\n backgroundColor: '#fff',\n color: appColors.accent,\n },\n },\n },\n MuiFab: {\n styleOverrides: {\n root: {\n color: '#fff',\n backgroundColor: appColors.accent,\n '&:hover': {\n backgroundColor: lighten(appColors.accent, 0.4),\n },\n },\n },\n },\n MuiFormLabel: {\n styleOverrides: {\n root: {\n '&.Mui-focused': {\n color: appColors.accent,\n }\n },\n }\n },\n MuiFormControl: {\n defaultProps: {\n variant: 'standard',\n },\n styleOverrides: {\n root: {\n margin: '5px 0',\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n color: 'rgb(0, 0, 0, .89)',\n }\n }\n },\n MuiInput: {\n styleOverrides: {\n underline: {\n '&:after': {\n borderBottomColor: appColors.accent,\n },\n '&:before': {\n borderBottom: '1px solid rgb(175, 175, 175)'\n },\n '&:hover:not($disabled):not($focused):not($error):before': {\n borderBottom: '2px solid rgb(175, 175, 175)',\n },\n },\n }\n },\n MuiMenu: {\n defaultProps: {\n anchorOrigin: { // makes menu anchor show up on anchor point rather than slightly below it\n vertical: 'top',\n horizontal: 'left',\n },\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n },\n styleOverrides: {\n root: {\n padding: '0 12px',\n },\n },\n },\n MuiSelect: {\n defaultProps: {\n variant: 'standard',\n },\n },\n MuiStepIcon: {\n styleOverrides: {\n root: {\n '&.Mui-active': {\n color: appColors.accent,\n },\n '&.Mui-completed': {\n color: appColors.accent,\n },\n },\n },\n },\n MuiStepper: {\n styleOverrides: {\n root: {\n backgroundColor: 'transparent',\n padding: '24px',\n },\n },\n },\n MuiSwitch: {\n defaultProps: {\n color: 'secondary',\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n '&.Mui-selected': {\n color: appColors.accent,\n },\n indicatorColor: {\n color: appColors.accent,\n },\n },\n },\n },\n MuiTabs: {\n defaultProps: {\n indicatorColor: 'secondary',\n },\n },\n MuiTextField: {\n defaultProps: {\n variant: 'standard',\n },\n },\n MuiTooltip: {\n styleOverrides: { \n tooltip: {\n fontSize: '12px',\n },\n },\n },\n },\n typography: {\n fontFamily: [\n 'Roboto',\n 'PT Sans',\n 'Arial',\n 'sans-serif',\n ]\n },\n breakpoints: {\n keys: ['sm', 'md'],\n values: {\n sm: 600,\n md: 1200,\n },\n }\n};\n","/**\n * timer_real_time\n * \n * It looks like JS setTimer is paused in inactive tab hence the need \n * to build a homemade one based on setTimeout (this seems to work ok) and real time\n * \n * testing\n \nstart(\n () => console.log('tick at: ', new Date().toISOString()), // callback to execute every second\n () => console.log('finished at: ', new Date().toISOString()), // callback to execute when timeout\n 60000, // duration in ms\n);\nstop();\n */\n\nconst CLOCK_INTERVAL_IN_MS = 1000; // hardcoded 1 sec tick interval\n\nlet cbTick, cbFinish;\nlet dur = 0; // timeout duration\nlet elapsedTime = 0;\nlet currentTimer = null;\nlet startedAt = null;\n\nexport function startTimer(callbackTick, callbackFinish, duration) {\n dur = duration; \n cbTick = callbackTick;\n cbFinish = callbackFinish;\n startedAt = Date.now();\n update();\n}\n\nexport function stopTimer() {\n clearTimeout(currentTimer);\n}\n\nexport function getRemainingTimeInMs() {\n return dur - elapsedTime;\n}\n\nfunction update() {\n clearTimeout(currentTimer);\n elapsedTime = Date.now() - startedAt;\n cbTick(); // call this function every 1 sec\n\n if (elapsedTime >= dur) { \n cbFinish(); // finished - execute callback\n }\n else {\n currentTimer = setTimeout(update, CLOCK_INTERVAL_IN_MS); \n }\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal } from '@frontend/common';\nimport { startTimer, stopTimer, getRemainingTimeInMs } from 'utils/helpers/timer_real_time';\n\nexport default class LogoutWarning extends Component {\n static propTypes = {\n logoutWarningInterval: PropTypes.number.isRequired,\n parseWarningMsg: PropTypes.func.isRequired,\n modalTitle: PropTypes.string.isRequired,\n closeButtonLabel: PropTypes.string.isRequired,\n onWarningClose: PropTypes.func.isRequired,\n warningOn: PropTypes.bool.isRequired,\n onTimeout: PropTypes.func.isRequired,\n onCloseContinueWithTimeout: PropTypes.bool.isRequired,\n };\n\n state = {\n remainingTimeInMs: 0,\n }\n\n updateRemainingTime = () => {\n this.setState({ remainingTimeInMs: getRemainingTimeInMs() });\n }\n\n startWarning = () => {\n // 1. show warning\n this.setState({ remainingTimeInMs: this.props.logoutWarningInterval });\n\n // 2. re-start countdown\n startTimer(\n this.updateRemainingTime,\n this.props.onTimeout,\n this.props.logoutWarningInterval\n );\n }\n\n stopWarning = () => {\n !this.props.onCloseContinueWithTimeout && stopTimer();\n this.props.onWarningClose();\n this.setState({ remainingTimeInMs: 0 });\n };\n\n parseCountdown = () => {\n const secsAll = this.state.remainingTimeInMs / 1000;\n const remainingMins = Math.floor(secsAll / 60);\n const remainingSecs = Math.round(secsAll - (remainingMins * 60));\n \n const minsFormatted = (remainingMins < 10 ? '0' : '') + remainingMins;\n const secsFormatted = (remainingSecs < 10 ? '0' : '') + remainingSecs;\n return `${minsFormatted}:${secsFormatted}`;\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.warningOn !== prevProps.warningOn) {\n if (this.props.warningOn)\n this.startWarning();\n else\n this.stopWarning();\n }\n }\n\n componentWillUnmount() {\n stopTimer();\n }\n\n render() {\n const { remainingTimeInMs } = this.state;\n const { parseWarningMsg, modalTitle, closeButtonLabel, warningOn } = this.props;\n\n return (\n \n
\n {parseWarningMsg(this.parseCountdown(remainingTimeInMs))}\n
\n \n );\n }\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Route, Redirect, withRouter, } from 'react-router-dom';\nimport LogoutWarning from './LogoutWarning';\n\nimport {\n allNotificationsHide,\n notificationShow,\n} from '@frontend/common';\n\nimport {\n userLogout,\n clearStore,\n} from './actions';\n\nimport { REASONS_BLOCKED } from './constants';\n\nconst msg_logged_out_inactivity = 'Your session has expired. You have been automatically logged out.';\nconst msg_logged_out_inactivity_warning = (time) => `Your session will expire in ${time}. If you wish to continue click CLOSE`;\nconst title_logged_out_inactivity_warning = 'Inactivity Warning';\n\nconst select = (state) => ({\n environmentVars: state.static.environmentVars,\n isValid: state.session.isValid,\n reasonBlocked: state.session.reasonBlocked,\n identityVerified: state.multifactor.PINVerification.IdentityVerified,\n});\n\nconst windowEvents = [\n 'click', // detects mouse click or finger press on button\n 'keydown', // detects any key being pressed down\n 'mousedown', // detects mouse click\n 'mousemove', // detects any mouse movement\n 'touchstart', // detects touch events for smaller screens\n 'scroll' // detects scrolling on any device\n];\n\nexport class ProtectedRoute extends React.Component {\n\n static propTypes = {\n reasonBlocked: PropTypes.string.isRequired,\n identityVerified: PropTypes.bool.isRequired,\n environmentVars: PropTypes.shape({\n LogoutWarningTimeout: PropTypes.number.isRequired,\n AccountAccessNoFrontEndActivityTimeout: PropTypes.number.isRequired,\n }).isRequired,\n userLogout: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n isValid: PropTypes.bool.isRequired,\n component: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n ]),\n location: PropTypes.shape({\n pathname: PropTypes.string,\n }),\n history: PropTypes.shape({\n push: PropTypes.func\n }).isRequired,\n };\n\n state = {\n inactivityWarningOn: false,\n };\n\n // timers\n inactivityWarningTimer = null;\n\n /* inactivity */\n inactivityLogout = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => this.props.notificationShow(msg_logged_out_inactivity, 'error'));\n this.props.clearStore();\n this.props.history.push('/login');\n }\n\n restartInactivityProcedure = () => {\n const { environmentVars: { AccountAccessNoFrontEndActivityTimeout } } = this.props;\n if (!this.state.inactivityWarningOn) {\n // reset all timers\n const noFrontEndActivityTimeoutInMs = AccountAccessNoFrontEndActivityTimeout * 1000;\n clearTimeout(this.inactivityWarningTimer);\n this.inactivityWarningTimer = setTimeout(() => this.setState({ inactivityWarningOn: true }), noFrontEndActivityTimeoutInMs);\n }\n }\n\n cancelInactivityWarning = () => {\n clearTimeout(this.inactivityWarningTimer);\n this.setState({ inactivityWarningOn: false });\n };\n\n handleAccountBlocks = () => {\n const { reasonBlocked, history, location: { pathname }, identityVerified } = this.props;\n \n switch (reasonBlocked) {\n case REASONS_BLOCKED.TWO_FACTOR_REGISTRATION: {\n // make sure all registration routes are enabled but account for the pin verification\n let updatedPathname;\n if (\n pathname === '/multifactor' ||\n pathname === '/multifactor/verify-identity'\n ) {\n updatedPathname = pathname;\n }\n else if (pathname === '/multifactor/register' && identityVerified) {\n updatedPathname = pathname;\n }\n else {\n updatedPathname = '/multifactor';\n }\n history.push(updatedPathname);\n break;\n } \n\n case REASONS_BLOCKED.TWO_FACTOR_AUTHENTICATION:\n // there is only 1 authentication path\n history.push('/multifactor/authenticate');\n break;\n\n default: return; // no blocks\n }\n }\n\n componentDidMount() {\n if (this.props.isValid) {\n windowEvents.forEach(e => window.addEventListener(e, this.restartInactivityProcedure));\n this.restartInactivityProcedure();\n }\n\n window.onload = () => {\n this.props.allNotificationsHide();\n };\n\n this.handleAccountBlocks();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.location.pathname !== this.props.location.pathname) {\n this.handleAccountBlocks();\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.inactivityWarningTimer);\n windowEvents.forEach(e => window.removeEventListener(e, this.restartInactivityProcedure));\n }\n\n render() {\n const { environmentVars: { LogoutWarningTimeout }, component: Component, ...rest } = this.props;\n const { inactivityWarningOn } = this.state;\n const logoutWarningTimeoutInMs = LogoutWarningTimeout * 1000;\n\n return (\n {\n return this.props.isValid\n ?\n
\n \n \n
\n :\n ;\n }}\n />\n );\n }\n}\n\nexport default withRouter(connect(select, {\n allNotificationsHide,\n notificationShow,\n userLogout,\n clearStore,\n})(ProtectedRoute));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Route, Redirect } from 'react-router-dom';\nimport qs from 'qs';\n\nimport { allNotificationsHide } from '@frontend/common';\n\nconst select = (state) => ({\n isValid: state.session.isValid\n});\n\nexport class PublicRoute extends React.Component {\n\n static propTypes = {\n isValid: PropTypes.bool.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n location: PropTypes.shape({\n search: PropTypes.string,\n }),\n };\n\n componentDidMount() {\n window.onload = () => {\n this.props.allNotificationsHide();\n };\n }\n\n render() {\n const { component: Component, ...rest } = this.props; // eslint-disable-line react/prop-types\n return (\n {\n const query = qs.parse(props.location.search, { ignoreQueryPrefix: true });\n return this.props.isValid ? (\n \n ) : (\n \n );\n }}\n />\n );\n }\n}\n\nexport default connect(select, { allNotificationsHide })(PublicRoute);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n Button,\n Icon,\n Menu,\n MenuItem,\n} from '@mui/material';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n lpoaDetails: state.session.lpoaDetails,\n advisor: state.myInfo.advisor,\n});\n\nexport class NameMenu extends Component {\n\n static propTypes = {\n name: PropTypes.string.isRequired,\n onLogoutClick: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n lpoaDetails: PropTypes.object.isRequired,\n advisor: PropTypes.object.isRequired,\n };\n\n state = {\n anchorEl: null\n };\n\n logoutClickHandle = () => {\n this.menuClose();\n this.props.onLogoutClick();\n }\n\n menuClose = () => {\n this.setState({ anchorEl: null });\n }\n\n myInfoClickHandle = () => {\n this.menuClose();\n this.props.history.push('/my-info');\n }\n\n lpoaSettingsClickHandle = () => {\n this.menuClose();\n this.props.history.push('/lpoa-settings');\n }\n\n render() {\n const { anchorEl } = this.state;\n return (\n
\n this.setState({ anchorEl: event.currentTarget })}\n >\n
{this.props.name}
\n {anchorEl ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}\n \n \n My Info\n LPOA Settings\n Log out\n
\n
{this.props.lpoaDetails.firmName}
\n
\n LPOA #: \n {this.props.userDetails.lpoaNumber}\n
\n
\n PIN: \n {this.props.advisor.Pin}\n
\n
\n Previous Login: \n {this.props.userDetails.previousLogin}\n
\n
\n \n
\n );\n }\n}\n\nexport default withRouter(connect(select)(NameMenu));\n","/*\n*\n* ManageData Actions\n*\n*/\nimport {\n POAS_FOR_EXPORT_GET,\n POAS_FOR_EXPORT_UPDATE,\n BACK_OFFICES_GET,\n BACK_OFFICES_UPDATE,\n PORTFOLIO_PROVIDERS_GET,\n PORTFOLIO_PROVIDERS_UPDATE,\n PORTFOLIO_DATA_DOWNLOAD,\n} from './constants';\nimport { GETrequest, PUTrequest, POSTrequest } from 'utils/helpers/api_handler';\n\nexport function poasForExportGet() {\n const payload = Promise.all([\n GETrequest('/data/poasoptions'),\n GETrequest('/data/poas')\n ]);\n \n return {\n type: POAS_FOR_EXPORT_GET,\n payload,\n };\n}\n\nexport function poasForExportUpdate(allSelected, poaIds) {\n const payload = PUTrequest('/data/poas', {\n AllAccounts: allSelected,\n PoaIds: poaIds,\n });\n \n return {\n type: POAS_FOR_EXPORT_UPDATE,\n payload,\n };\n}\n\nexport function backOfficesGet() {\n const payload = Promise.all([\n GETrequest('/data/backofficesoptions'),\n GETrequest('/data/backoffices')\n ]);\n \n return {\n type: BACK_OFFICES_GET,\n payload,\n };\n}\n\nexport function backOfficesUpdate(ids) {\n const payload = POSTrequest('/data/backoffice', ids);\n\n return {\n type: BACK_OFFICES_UPDATE,\n payload,\n };\n}\n\nexport function portfolioProvidersGet() {\n const payload = Promise.all([\n GETrequest('/data/downloadformatsoptions'),\n GETrequest('/data/downloadformats')\n ]);\n \n return {\n type: PORTFOLIO_PROVIDERS_GET,\n payload,\n };\n}\n\nexport function portfolioProvidersUpdate(codes) {\n const payload = PUTrequest('/data/downloadformats', codes);\n\n return {\n type: PORTFOLIO_PROVIDERS_UPDATE,\n payload,\n };\n}\n\nexport function portfolioDataDownload(downloadFormat, startDate, endDate) {\n // responseType indicates the type of data that the server will respond with and it needs to be 'blob'\n const payload = POSTrequest('/data/downloadfile', { downloadFormat, startDate, endDate }, { responseType: 'blob' });\n return {\n type: PORTFOLIO_DATA_DOWNLOAD,\n payload,\n };\n}","/*\n*\n* StaticResources Actions\n*\n*/\nimport {\n PASSWORD_REQUIREMENTS_GET,\n RELATIONSHIPS_GET,\n OPTIONS_GET,\n CUSTOM_OPTIONS_GET,\n POA_LEVELS_GET,\n AGE_BRACKETS_GET,\n ENVIRONMENT_VARIABLES_GET,\n STATIC_DOCUMENTS_GET,\n SERVER_DATETIME_GET,\n WEB_MESSAGES_GET,\n SET_LOADING_PUBLIC_VARS,\n GET_NEW_AGE_BASED_SCHEMA,\n GET_NEW_STATIC_SCHEMA,\n} from './constants';\n\nimport { GETrequest } from 'utils/helpers/api_handler';\n\n\nexport function passwordRequirementsGet() {\n const response = GETrequest('/authentication/passwordrequirements');\n return {\n type: PASSWORD_REQUIREMENTS_GET,\n payload: response,\n };\n}\n\nexport function relationshipsGet() {\n const response = GETrequest('/scalar/relations');\n return {\n type: RELATIONSHIPS_GET,\n payload: response,\n };\n}\n\nexport function optionsGet() {\n const response = GETrequest('/scalar/options');\n return {\n type: OPTIONS_GET,\n payload: response,\n };\n}\n\nexport function customOptionsGet() {\n const response = GETrequest('/scalar/customizedoptions');\n return {\n type: CUSTOM_OPTIONS_GET,\n payload: response,\n };\n}\n\nexport function getNewAgeBasedSchema() {\n const response = GETrequest('/template/new?typeCode=a');\n return {\n type: GET_NEW_AGE_BASED_SCHEMA,\n payload: response\n };\n}\n\nexport function getNewStaticSchema() {\n const response = GETrequest('/template/new?typeCode=s');\n return {\n type: GET_NEW_STATIC_SCHEMA,\n payload: response\n };\n}\n\nexport function poaLevelsGet() {\n const response = GETrequest('/scalar/poalevels');\n return {\n type: POA_LEVELS_GET,\n payload: response,\n };\n}\n\nexport function getAgeBrackets() {\n const response = GETrequest('/template/AgeBrackets');\n return {\n type: AGE_BRACKETS_GET,\n payload: response\n };\n}\n\nexport function getEnvironmentVariables(params) {\n return {\n type: ENVIRONMENT_VARIABLES_GET,\n payload: params ? GETrequest(`/Parameters?name=${params.join('&name=')}`) : GETrequest('/Parameters'),\n };\n}\n\nexport function getStaticDocuments() {\n const payload = GETrequest('/forms');\n return {\n type: STATIC_DOCUMENTS_GET,\n payload,\n };\n}\n\nexport function getServerDateTime() {\n const payload = GETrequest('/parameters/serverdatetime');\n return {\n type: SERVER_DATETIME_GET,\n payload,\n };\n}\n\nexport function getWebMessages() {\n const payload = GETrequest('/WebsiteMessage');\n return {\n type: WEB_MESSAGES_GET,\n payload\n };\n}\n\nexport function setLoadingPublicVars(isLoading) {\n return {\n type: SET_LOADING_PUBLIC_VARS,\n payload: { isLoading },\n };\n}","/** Event Actions **/\nexport const CLICK = 'Click';\nexport const GRAPH = 'Graph';\nexport const HIT = 'Page hit';\nexport const SEARCH = 'Search';\n\n\n/** Page View URLs **/\nexport const SIGNUP_STEPPER = '/sign-up/step_';\nexport const APP_TOUR_STEPPER = '/app-tour/step_';\nexport const CONTRIBUTIONS_ONETIME_STEPPER = '/contributions/new/one-time/step_';\nexport const CONTRIBUTIONS_RECURRING_STEPPER = '/contributions/new/recurring/step_';\nexport const CONTRIBUTIONS_SPECIAL_STEPPER = '/contributions/new/special/step_';\nexport const OPTION_CHANGES_STEPPER = '/option-changes/new/step_';\nexport const WITHDRAWALS_STEPPER = '/withdrawals/new/step_';\n\n/** Event Categories **/\nexport const COMMON_PACKAGE = 'Common Package';\nexport const NAVIGATION = 'Navigation';\nexport const PAGE_NOT_FOUND = 'Page Not Found';\n\n\n/** Event Labels **/","import {\n HIT,\n PAGE_NOT_FOUND,\n} from '../constants';\nimport { urlScrub } from '../helpers';\n\nexport function pageNotFoundHit(url) {\n return {\n eventCategory: PAGE_NOT_FOUND,\n eventAction: HIT,\n eventLabel: urlScrub(url),\n };\n}","import {\n APP_TOUR_STEPPER\n} from '../constants';\n\nexport function viewAppTourStep(step) {\n return `${APP_TOUR_STEPPER}${step}`;\n}","import {\n HIT,\n NAVIGATION\n} from '../constants';\nimport { urlScrub } from '../helpers';\n\nexport function helpAccessed(url) {\n return {\n eventCategory: NAVIGATION,\n eventAction: HIT,\n eventLabel: urlScrub(url),\n };\n}\n\nexport function resourceAccessed(resourceName) {\n return {\n eventCategory: NAVIGATION,\n eventAction: HIT,\n eventLabel: resourceName,\n };\n}","import {\n SEARCH,\n COMMON_PACKAGE,\n} from '../constants';\nimport { urlScrub } from '../helpers';\n\nexport function tableSearchAccessed(tableName, url) {\n return {\n eventCategory: COMMON_PACKAGE,\n eventAction: SEARCH,\n eventLabel: `${tableName} - ${urlScrub(url)}`,\n };\n}","import {\n CONTRIBUTIONS_ONETIME_STEPPER,\n CONTRIBUTIONS_RECURRING_STEPPER,\n CONTRIBUTIONS_SPECIAL_STEPPER,\n OPTION_CHANGES_STEPPER,\n WITHDRAWALS_STEPPER\n} from '../constants';\n\nexport function contributionsOneTimeStep(step) {\n return `${CONTRIBUTIONS_ONETIME_STEPPER}${step}`;\n}\n\nexport function contributionsRecurringStep(step) {\n return `${CONTRIBUTIONS_RECURRING_STEPPER}${step}`;\n}\n\nexport function contributionsSpecialStep(step) {\n return `${CONTRIBUTIONS_SPECIAL_STEPPER}${step}`;\n}\n\nexport function optionChangesStep(step) {\n return `${OPTION_CHANGES_STEPPER}${step}`;\n}\n\nexport function withdrawalsStep(step) {\n return `${WITHDRAWALS_STEPPER}${step}`;\n}","import { connectGA } from './helpers';\n// import * as sampleEvents from './Dashboard.samples';\nimport * as pageNotFoundEvents from './events/PageNotFound.events.js';\nimport * as appTourEvents from './events/AppTour.events.js';\nimport * as navigationEvents from './events/Navigation.events.js';\nimport * as commonEvents from './events/CommonPackage.events.js';\nimport * as transactionEvents from './events/Transactions.events.js';\n\nconst connectedGAEvents = connectGA({\n ...pageNotFoundEvents,\n ...appTourEvents,\n ...navigationEvents,\n ...commonEvents,\n ...transactionEvents,\n});\n\nexport default connectedGAEvents;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Bowser from 'bowser';\nimport { clear } from 'idb-keyval';\n\nimport NameMenu from './NameMenu';\nimport { My529Logo, EnvHeader, LoadingOverlay } from '@frontend/common';\n\nimport {\n Icon,\n IconButton\n} from '@mui/material';\n\nimport {\n setBrowserWarning,\n setMobileWarning\n} from 'components/AppRoot/Navigation/actions';\nimport { portfolioProvidersGet } from 'components/Features/protected/ManageData/actions';\nimport { getStaticDocuments, getEnvironmentVariables, getWebMessages, setLoadingPublicVars } from 'components/AppRoot/StaticResources/actions';\nimport { getUserPreferences } from 'components/AppRoot/Navigation/actions';\nimport { ENV_COLOR_KEY } from '../../StaticResources/constants';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nconst bowser = Bowser.getParser(window.navigator.userAgent).parsedResult;\n\nconst frontendConfig = window.frontendConfig;\nconst location = window.location;\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n showSideNav: state.session.showSideNav,\n isValid: state.session.isValid,\n showBrowserWarning: state.session.showBrowserWarning,\n showMobileWarning: state.session.showMobileWarning,\n staticDocs: state.static.documents,\n lpoaHelpNumber: state.static.environmentVars.lpoaHelpNumber,\n environmentColor: state.static.environmentVars.environmentColor,\n});\n\nexport class Header extends Component {\n\n static propTypes = {\n handleLogout: PropTypes.func.isRequired,\n openSideNav: PropTypes.func.isRequired,\n pageTitle: PropTypes.string,\n userDetails: PropTypes.object.isRequired,\n showSideNav: PropTypes.bool.isRequired,\n isValid: PropTypes.bool.isRequired,\n showBrowserWarning: PropTypes.bool.isRequired,\n showMobileWarning: PropTypes.bool.isRequired,\n setBrowserWarning: PropTypes.func.isRequired,\n setMobileWarning: PropTypes.func.isRequired,\n portfolioProvidersGet: PropTypes.func.isRequired,\n getStaticDocuments: PropTypes.func.isRequired,\n staticDocs: PropTypes.object.isRequired,\n lpoaHelpNumber: PropTypes.string,\n getEnvironmentVariables: PropTypes.func.isRequired,\n getWebMessages: PropTypes.func.isRequired,\n setLoadingPublicVars: PropTypes.func.isRequired,\n getUserPreferences: PropTypes.func.isRequired,\n environmentColor: PropTypes.string.isRequired,\n };\n\n state = {\n loadingPrefs: false,\n showHelpInfo: false,\n showEnvMessage: location.hostname.toLowerCase() !== 'fa.my529.org' && (!Object.prototype.hasOwnProperty.call(frontendConfig, 'envWarning') || frontendConfig.envWarning),\n };\n\n warningsCompile() {\n if (this.props.showBrowserWarning && (bowser.browser.name === 'Internet Explorer')) {\n return this.warningMessageCompose('browser', 'You are currently using a browser that is not supported. For the best experience, please use Chrome or Firefox.');\n }\n else if (this.props.showMobileWarning && (bowser.platform.type === 'mobile' || bowser.platform.type === 'tablet')) {\n return this.warningMessageCompose('mobile', 'Mobile browsing of this website is currently in beta. For full functionality, please use a desktop browser.');\n }\n else {\n return null;\n }\n }\n\n warningMessageCompose(warningType, message) {\n return (\n
\n {message}\n this.dismissWarning(warningType)}\n >\n close\n
\n \n );\n }\n\n environmentWarningHeader = () => {\n const environmentColor = localStorage.getItem(ENV_COLOR_KEY) || this.props.environmentColor;\n const { showEnvMessage } = this.state;\n return (\n
\n \n
\n );\n };\n\n dismissWarning(warningType) {\n switch (warningType) {\n case 'browser': {\n this.props.setBrowserWarning();\n break;\n }\n case 'mobile': {\n this.props.setMobileWarning();\n break;\n }\n default: {\n return null;\n }\n }\n }\n\n componentDidMount() {\n clear(); // clear IndexedDB\n \n const apiCalls = [];\n\n if (Object.keys(this.props.staticDocs).length === 0) {\n apiCalls.push(this.props.getStaticDocuments());\n }\n\n if (!this.props.lpoaHelpNumber) {\n apiCalls.push(this.props.getEnvironmentVariables());\n }\n\n apiCalls.push(this.props.getWebMessages());\n\n this.props.setLoadingPublicVars(true);\n Promise.all(apiCalls)\n .then(() => this.props.setLoadingPublicVars(false))\n .catch(() => this.props.setLoadingPublicVars(false));\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.isValid && this.props.isValid !== prevProps.isValid) {\n const apiCalls = [\n this.props.portfolioProvidersGet(),\n this.props.getUserPreferences(),\n ];\n this.setState({ loadingPrefs: true });\n Promise.all([apiCalls])\n .catch(() => null)\n .finally(() => this.setState({ loadingPrefs: false }));\n }\n }\n\n render() {\n const { showHelpInfo, loadingPrefs } = this.state;\n const { lpoaHelpNumber } = this.props;\n\n if (this.props.isValid) {\n return (\n
\n
\n
\n
\n
\n \n menu\n \n
\n \n
\n
\n

\n {this.props.pageTitle}\n

\n
\n
\n
\n {showHelpInfo &&
this.setState({ showHelpInfo: false })} />}\n { this.setState({ showHelpInfo: !showHelpInfo }); events.helpAccessed(window.location.pathname); }} // eslint-disable-line\n style={{ color: '#fff' }}\n >\n help_outline\n \n
\n Need help? Contact my529 at:\n
{lpoaHelpNumber ? {lpoaHelpNumber} : 'Loading...'}
\n
\n
\n \n \n \n\n
\n
\n {this.environmentWarningHeader()}\n {this.warningsCompile()}\n
\n );\n }\n else {\n return (\n
\n
\n \n \n \n
\n {this.environmentWarningHeader()}\n {this.warningsCompile()}\n
\n );\n }\n }\n}\n\nexport default connect(select, {\n setBrowserWarning,\n setMobileWarning,\n portfolioProvidersGet,\n getStaticDocuments,\n getEnvironmentVariables,\n getUserPreferences,\n getWebMessages,\n setLoadingPublicVars,\n})(Header);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { isEmpty } from 'lodash';\nimport events from 'utils/ga';\n\nimport {\n Icon,\n List,\n ListItem,\n ListItemText,\n ListItemIcon,\n Collapse,\n} from '@mui/material';\n\nimport { withStyles, } from '@mui/styles';\n\nconst styles = theme => ({\n listItemText: {\n textTransform: 'uppercase',\n fontWeight: 'bold',\n fontSize: '24px',\n color: theme.palette.primary.main,\n lineHeight: 'initial',\n },\n icon: {\n color: theme.palette.primary.main,\n }\n});\n\n\nexport class SidenavMenuOption extends Component {\n \n static propTypes = {\n name: PropTypes.string.isRequired,\n link: PropTypes.string,\n onOptionClick: PropTypes.func,\n rootMenuOptionIconName: PropTypes.string,\n classes: PropTypes.object.isRequired,\n externalLink: PropTypes.string,\n isSideNavOpen: PropTypes.bool,\n };\n\n state = {\n showMenuOptions: false,\n };\n\n dropdownMenuOptionCompose() {\n const { showMenuOptions } = this.state;\n const { rootMenuOptionIconName, classes, children, name } = this.props;\n const nestedMenuOptions = this.nestedMenuOptionsCompose(children);\n\n return (\n
\n this.setState({ showMenuOptions: !showMenuOptions })}\n button\n >\n \n {rootMenuOptionIconName}\n \n \n {name}\n \n {showMenuOptions ? 'expand_less' : 'expand_more'}\n \n \n \n {nestedMenuOptions}\n \n \n
\n );\n }\n\n menuOptionClickHandle(link, onMenuOptionClick, externalLink, name) {\n if (link) {\n this.props.history.push(link);\n }\n else if (externalLink) {\n events.resourceAccessed(name);\n window.open(externalLink, '_blank');\n }\n this.setState({ showMenuOptions: false });\n onMenuOptionClick();\n }\n\n nestedMenuOptionsCompose(options) {\n const optionsArray = options.length ? options : new Array(options);\n\n return optionsArray.map((option, index) => {\n const { link, onOptionClick, externalLink, name } = option.props;\n return (\n this.menuOptionClickHandle(link, onOptionClick, externalLink, name)}\n button\n >\n {name}\n \n );\n });\n }\n\n normalMenuOptionCompose() {\n const { classes, link, onOptionClick, rootMenuOptionIconName, name, externalLink } = this.props;\n return (\n this.menuOptionClickHandle(link, onOptionClick, externalLink, name)} button >\n \n {rootMenuOptionIconName}\n \n \n {name}\n \n \n );\n }\n\n componentDidUpdate(prevProps) {\n const { children, isSideNavOpen } = this.props;\n // if showing, hide menu options when side nav is closed\n if (!isEmpty(children) && !isSideNavOpen && prevProps.isSideNavOpen) this.setState({ showMenuOptions: false, });\n }\n\n render() {\n return (\n // There are no CSS styles for SidenavMenuOption_container\n
\n {this.props.children\n ? this.dropdownMenuOptionCompose()\n : this.normalMenuOptionCompose()\n }\n
\n );\n }\n}\n\nexport default withRouter(withStyles(styles)(SidenavMenuOption));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport bowser from 'bowser';\nimport { withRouter } from 'react-router-dom';\n\nimport { My529Logo } from '@frontend/common';\nimport { SwipeableDrawer } from '@mui/material';\n\nimport SidenavMenuOption from './SidenavMenuOption';\n\nimport styles from './styles.module.css';\n\nconst appVersion = window.appVersion;\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n lpoaDetails: state.session.lpoaDetails,\n permissions: state.session.permissions,\n portfolioProviders: state.manageData.portfolioProviders,\n lpoaHelpNumber: state.static.environmentVars.lpoaHelpNumber,\n lpoaHelpEmail: state.static.environmentVars.lpoaHelpEmail,\n lpoaHelpFax: state.static.environmentVars.lpoaHelpFax,\n documentLinks: state.static.documents,\n advisor: state.myInfo.advisor,\n claims: state.session.claims,\n});\n\nexport class Sidenav extends Component {\n\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n onOpen: PropTypes.func.isRequired,\n handleLogout: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n lpoaDetails: PropTypes.object.isRequired,\n permissions: PropTypes.object.isRequired,\n portfolioProviders: PropTypes.array,\n lpoaHelpNumber: PropTypes.string,\n lpoaHelpEmail: PropTypes.string,\n lpoaHelpFax: PropTypes.string,\n documentLinks: PropTypes.object.isRequired,\n advisor: PropTypes.object.isRequired,\n claims: PropTypes.object.isRequired,\n };\n\n accountOptionsCompose() {\n const { optionChanges } = this.props.permissions;\n const { BulkStatementDownload } = this.props.claims; // A String of either 'true' or 'false'\n const options = [\n ,\n \n ];\n if (optionChanges) {\n options.push(\n \n );\n }\n if (BulkStatementDownload === 'true') {\n options.push(\n \n );\n }\n return options;\n }\n\n adminOptionsCompose() {\n const { open } = this.props;\n const { editLPOAContactInfo, editLPOASettings, manageUsers, isFirmEntity } = this.props.permissions;\n\n if (editLPOAContactInfo || editLPOASettings || manageUsers) {\n const adminOptions = [];\n\n if (editLPOAContactInfo || editLPOASettings) {\n adminOptions.push(\n \n );\n }\n\n if (manageUsers && isFirmEntity) {\n adminOptions.push(\n \n );\n }\n\n return (\n \n {adminOptions}\n \n );\n }\n else {\n return null;\n }\n }\n\n dataOptionsCompose() {\n const { permissions: { setupData, downloadData }, portfolioProviders, open, } = this.props;\n const dataOptions = [];\n\n if (downloadData && portfolioProviders.filter(provider => provider.enabled).length > 0) {\n dataOptions.push(\n \n );\n }\n\n if (setupData) {\n dataOptions.push(\n ,\n \n );\n }\n\n if (dataOptions.length > 0) {\n return (\n \n {dataOptions}\n \n );\n }\n\n return null;\n }\n\n onMyInfoClick = () => {\n this.props.onClose();\n this.props.history.push('/my-info');\n }\n\n onLPOASettingsClick = () => {\n this.props.onClose();\n this.props.history.push('/lpoa-settings');\n }\n\n onLogoutClick = () => {\n this.props.handleLogout();\n this.props.onClose();\n }\n\n render() {\n /* eslint-disable indent */\n const {\n permissions, lpoaDetails, userDetails, open, onClose, onOpen,\n lpoaHelpNumber, lpoaHelpEmail, lpoaHelpFax, advisor\n } = this.props;\n return (\n \n
\n {/* There are no CSS styles for Sidenav_top */}\n
\n
\n
\n {lpoaDetails.firmName}\n
\n
\n LPOA #: \n {userDetails.lpoaNumber}\n
\n
\n PIN: \n {advisor.Pin}\n
\n
\n Previous Login: \n {userDetails.previousLogin}\n
\n
\n \n \n {this.accountOptionsCompose()}\n \n {(!bowser.mobile && !bowser.tablet) && (\n \n )}\n {(permissions.adminReports || permissions.accountReports) && (\n \n )}\n {this.dataOptionsCompose()}\n {this.adminOptionsCompose()}\n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n
\n
\n
\n \n
Need help? Contact my529 at:
\n {lpoaHelpEmail ? {lpoaHelpEmail} : 'Loading...'}\n p: {lpoaHelpNumber ? {lpoaHelpNumber} : 'Loading...'}\n f: {lpoaHelpFax ?

{lpoaHelpFax}

: 'Loading...'}
\n
\n
\n Version: {appVersion}\n
\n
\n
\n \n );\n /* eslint-enable indent */\n }\n}\n\nexport default withRouter(connect(select, {})(Sidenav));\n","/*\n*\n* Welcome Component\n*\n*/\nimport React from 'react';\nimport { Modal } from '@frontend/common';\n\nexport class Welcome extends React.Component {\n state = {\n modalOpen: window.location.search === '?request=account-access-redirect'\n }\n\n onModalClose = () => {\n this.setState({ modalOpen: false });\n }\n\n render() {\n return (\n this.onModalClose()\n }\n ]}\n onCloseModal={() => this.onModalClose()}\n show={this.state.modalOpen}\n title='Welcome'\n >\n Welcome to the new my529 Financial Advisor Access. Please bookmark this page for your convenience going forward.\n \n );\n }\n}\n\nexport default Welcome;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.module.css';\n\nconst createMarkup = (body) => {\n return { __html: body };\n};\n\n// this will have a alternate text input for new api messages and the old way just passing children\n\nexport function Banner(props) {\n if (props.show)\n return (\n
\n
\n {props.body\n ?\n
\n :\n props.children\n }\n
\n
\n );\n else\n return null;\n}\n\nBanner.propTypes = {\n show: PropTypes.bool.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n body: PropTypes.any\n};\n\nexport default Banner;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep } from 'lodash';\nimport Welcome from './Welcome';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\n\nimport {\n FormWrapper,\n LoadingOverlay,\n StyledLink,\n allNotificationsHide,\n PasswordInput,\n} from '@frontend/common';\n\nimport { userLogin } from 'components/AppRoot/Navigation/actions';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n isValid: state.session.isValid,\n errors: state.session.errors,\n loadingPublicVars: state.static.loadingPublicVars,\n webMessages: state.static.webMessages,\n});\n\nexport class Login extends Component {\n\n static propTypes = {\n userLogin: PropTypes.func.isRequired,\n isValid: PropTypes.bool.isRequired,\n errors: PropTypes.array,\n allNotificationsHide: PropTypes.func.isRequired,\n webMessages: PropTypes.object.isRequired,\n loadingPublicVars: PropTypes.bool.isRequired,\n };\n\n state = {\n username: '',\n password: '',\n formErrors: {},\n loading: false,\n };\n\n formValidate = () => {\n let isValid = false;\n let formErrors = {};\n\n if (!this.state.username) {\n formErrors.username = 'Username is required.';\n }\n\n if (!this.state.password) {\n formErrors.password = 'Password is required.';\n }\n\n if (this.state.username && this.state.password) {\n formErrors = {};\n isValid = true;\n }\n\n this.setState({\n formErrors\n });\n\n return isValid;\n }\n\n onFormSubmit = (e) => {\n e.preventDefault();\n this.props.allNotificationsHide();\n\n if (this.formValidate()) {\n document.getElementById('loginUsername').blur();\n document.getElementById('loginPassword').blur();\n\n const params = {\n username: this.state.username,\n password: this.state.password\n };\n\n this.setState({ loading: true });\n\n this.props.userLogin(params)\n .then(() => {\n try {\n window.QSI.API.run(); // stimulate Targeting.php\n window.QSI.API.unload();\n window.QSI.API.load();\n window.QSI.API.run(); // stimulate Targeting.php\n }\n catch (error) {\n // return null;\n }\n })\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n onInputChange = (inputName, value) => {\n const clonedErrors = cloneDeep(this.state.formErrors);\n\n if (value.length > 0 && this.state.formErrors[inputName]) {\n clonedErrors[inputName] = '';\n }\n\n this.setState({\n [inputName]: value,\n formErrors: clonedErrors,\n });\n }\n\n render() {\n /* eslint-disable indent */\n const { loadingPublicVars, webMessages } = this.props;\n\n return (\n
\n \n \n \n \n this.onInputChange('username', e.target.value)}\n disabled={this.state.loading}\n fullWidth\n error={Boolean(this.state.formErrors.username)}\n helperText={this.state.formErrors.username}\n />\n this.onInputChange('password', e.target.value)}\n disabled={this.state.loading}\n errorText={this.state.formErrors.password}\n fullWidth\n variant='standard'\n />\n
\n \n Log In\n \n
\n
\n {this.state.loading\n ? [\n Forgot Password?,\n Forgot Username?\n ]\n : [\n Forgot Password?,\n Forgot Username?\n ]\n }\n
\n \n
\n \n \n
\n );\n /* eslint-enable indent */\n }\n}\n\nexport default withRouter(connect(select, { userLogin, allNotificationsHide })(Login));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep } from 'lodash';\nimport qs from 'qs';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\n\nimport {\n FormWrapper,\n LoadingOverlay,\n PasswordInput,\n PasswordRequirements,\n notificationShow,\n allNotificationsHide,\n} from '@frontend/common';\n\nimport { activateUser } from './actions';\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n passwordRequirements: state.static.passwordRequirements,\n});\n\n\nexport class ActivateUser extends Component {\n\n static propTypes = {\n activateUser: PropTypes.func.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n notificationShow: PropTypes.func.isRequired,\n };\n\n state = {\n taxID: '',\n pin: '',\n username: '',\n password: '',\n passwordConfirm: '',\n initialLoading: false,\n loading: false,\n passwordPassesValidation: false,\n errors: {},\n };\n\n formValidate = () => {\n let isValid = false;\n const errors = {};\n\n if (this.props.match.params.type === 'firm') {\n if (!this.state.pin) {\n errors.pin = 'PIN is required.';\n }\n }\n else {\n if (!this.state.taxID) {\n errors.taxID = 'Tax ID / SSN is required.';\n }\n }\n\n if (!this.state.username) {\n errors.username = 'Username is required.';\n }\n else {\n if (this.state.username.match(/^\\s+|\\s+$/)) {\n errors.username = 'Field cannot contain leading or trailing spaces.';\n }\n }\n\n if (!this.state.password) {\n errors.password = 'Password is required.';\n }\n\n if (!this.state.passwordConfirm) {\n errors.passwordConfirm = 'Confirm Password is required.';\n }\n\n if (this.state.password && this.state.passwordConfirm && this.state.password !== this.state.passwordConfirm) {\n errors.passwordConfirm = 'Must match password above.';\n }\n\n if (this.state.password && !this.state.passwordPassesValidation) {\n errors.password = 'Must match criteria below.';\n }\n\n if (\n this.props.match.params.type === 'firm'\n && this.state.pin\n && this.state.username\n && (!this.state.username.match(/^\\s+|\\s+$/))\n && this.state.password\n && this.state.passwordPassesValidation\n && this.state.passwordConfirm\n && this.state.password === this.state.passwordConfirm\n ) {\n isValid = true;\n }\n else if (\n this.props.match.params.type === 'master'\n && this.state.taxID\n && this.state.username\n && (!this.state.username.match(/^\\s+|\\s+$/))\n && this.state.password\n && this.state.passwordPassesValidation\n && this.state.passwordConfirm\n && this.state.password === this.state.passwordConfirm\n ) {\n isValid = true;\n }\n\n this.setState({\n errors,\n });\n\n return isValid;\n }\n\n inputUpdate(input, value) {\n const updatedErrors = cloneDeep(this.state.errors);\n\n if (this.state[input] !== value) {\n updatedErrors[input] = '';\n }\n\n this.setState({\n [input]: value,\n errors: updatedErrors,\n });\n }\n\n onFormSubmit = (e) => {\n e.preventDefault();\n\n if (this.formValidate()) {\n const userType = this.props.match.params.type;\n this.props.allNotificationsHide();\n this.setState({ loading: true });\n const data = {\n guid: qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).request,\n login: this.state.username,\n password1: this.state.password,\n password2: this.state.passwordConfirm,\n };\n document.getElementById('usernameField').blur();\n document.getElementById('passwordField').blur();\n document.getElementById('passwordConfirmField').blur();\n\n if (userType === 'firm') {\n document.getElementById('pinField').blur();\n data.pin = this.state.pin;\n }\n else {\n document.getElementById('taxIDField').blur();\n data.taxId = this.state.taxID;\n }\n\n this.props.activateUser(userType, data)\n .then(() => {\n this.props.notificationShow('User activated. Please log in.', 'success');\n this.props.history.push('/login');\n })\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n componentDidMount() {\n if (this.props.passwordRequirements.length === 0) {\n this.setState({ initialLoading: true });\n this.props.passwordRequirementsGet()\n .catch(() => null)\n .finally(() => this.setState({ initialLoading: false }));\n }\n }\n\n render() {\n /* eslint-disable indent */\n return (\n \n \n \n { this.props.match.params.type === 'firm'\n ? this.inputUpdate('pin', e.target.value)}\n label='PIN'\n fullWidth\n disabled={this.state.loading}\n error={Boolean(this.state.errors.pin)}\n helperText={this.state.errors.pin}\n />\n : this.inputUpdate('taxID', e.target.value)}\n label='Tax ID / SSN'\n fullWidth\n disabled={this.state.loading}\n error={Boolean(this.state.errors.taxID)}\n helperText={this.state.errors.taxID}\n />\n }\n this.inputUpdate('username', e.target.value)}\n label='Username'\n fullWidth\n disabled={this.state.loading}\n error={Boolean(this.state.errors.username)}\n helperText={this.state.errors.username}\n />\n this.inputUpdate('password', e.target.value)}\n label='Password'\n fullWidth\n variant='standard'\n disabled={this.state.loading}\n errorText={this.state.errors.password}\n />\n this.inputUpdate('passwordConfirm', e.target.value)}\n label='Confirm Password'\n fullWidth\n variant='standard'\n disabled={this.state.loading}\n errorText={this.state.errors.passwordConfirm}\n />\n
\n this.setState({ passwordPassesValidation: isValid }) }\n />\n
\n
\n this.props.history.push('/login')}\n disabled={this.state.loading}\n >\n Cancel\n \n \n \n Submit\n \n \n
\n \n
\n \n );\n /* eslint-enable indent */\n }\n}\n\nexport default withRouter(connect(select, {\n notificationShow,\n activateUser,\n passwordRequirementsGet,\n allNotificationsHide,\n})(ActivateUser));\n","import { POSTrequest } from 'utils/helpers/api_handler';\nimport {\n USER_ACTIVATE,\n} from './constants';\n\n\nexport function activateUser(type, params) {\n const payload = POSTrequest(`/administration${type === 'firm' ? '/financialadvisor' : ''}/activate`, params);\n return {\n type: USER_ACTIVATE,\n payload,\n };\n}","export const USER_ACTIVATE = 'app/Features/public/ActivateUser/USER_ACTIVATE';","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\n\nimport {\n FormWrapper,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\n\nimport { forgotPassword } from 'components/Features/public/ForgotPassword/actions';\n\nimport styles from './styles.module.css';\n\n\nexport class ForgotPassword extends Component {\n\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n forgotPassword: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n username: '',\n inputError: '',\n };\n\n formValidate = () => {\n let formIsValid = false;\n let inputError = '';\n\n if (this.state.username.length < 1) {\n inputError = 'Username is required.';\n }\n else {\n formIsValid = true;\n }\n\n this.setState({\n inputError,\n });\n\n return formIsValid;\n }\n\n onFormSubmit = (e) => {\n e.preventDefault();\n \n if (this.formValidate()) {\n this.setState({ loading: true });\n this.props.forgotPassword({ login: this.state.username })\n .then(() => {\n this.props.history.push('/login');\n this.props.notificationShow('Request submitted. Check your email.', 'success');\n })\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n return (\n \n \n this.setState({ username: e.target.value, inputError: '' })}\n value={this.state.username}\n label='Username'\n fullWidth\n autoFocus\n disabled={this.state.loading}\n error={Boolean(this.state.inputError)}\n helperText={this.state.inputError}\n />\n
\n this.props.history.push('/login')}\n disabled={this.state.loading}\n >\n Cancel\n \n \n \n Submit\n \n \n
\n \n \n );\n }\n}\n\nexport default withRouter(connect(null, { \n notificationShow,\n forgotPassword,\n})(ForgotPassword));\n","import { POSTrequest } from 'utils/helpers/api_handler';\nimport {\n PASSWORD_FORGOT\n} from './constants';\n\n\nexport function forgotPassword(params) {\n const response = POSTrequest('/authentication/forgotpassword', params);\n return {\n type: PASSWORD_FORGOT,\n payload: response\n };\n}","export const PASSWORD_FORGOT = 'app/Features/public/ForgotPassword/PASSWORD_FORGOT';","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport qs from 'qs';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n FormWrapper,\n LoadingOverlay,\n PasswordInput,\n PasswordRequirements,\n notificationShow,\n} from '@frontend/common';\n\nimport { resetPassword } from 'components/Features/public/ResetPassword/actions';\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\n\nimport styles from './styles.module.css';\n\n\nconst select = (state) => ({\n passwordRequirements: state.static.passwordRequirements,\n});\n\nexport class ResetPassword extends Component {\n\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n resetPassword: PropTypes.func.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n location: PropTypes.object.isRequired,\n };\n\n state = {\n loading: false,\n password: '',\n passwordConfirmation: '',\n formErrors: {},\n passwordPassesValidation: false,\n };\n\n formValidate() {\n let isValid = false;\n let formErrors = {};\n\n if (!this.state.password) {\n formErrors.password = 'Password is required.';\n }\n\n if (!this.state.passwordConfirmation) {\n formErrors.passwordConfirmation = 'Confirm Password is required.';\n }\n\n if (this.state.passwordConfirmation && this.state.password !== this.state.passwordConfirmation) {\n formErrors.passwordConfirmation = 'Passwords must match.';\n }\n if (this.state.password && !this.state.passwordPassesValidation) {\n formErrors.password = 'Password does not meet criteria below.';\n }\n /* eslint-disable indent */\n if (\n this.state.password\n && this.state.passwordConfirmation\n && this.state.passwordPassesValidation\n && this.state.password === this.state.passwordConfirmation) {\n formErrors = {};\n isValid = true;\n }\n /* eslint-enable indent */\n\n this.setState({\n formErrors,\n });\n\n return isValid;\n }\n\n onFormSubmit = (e) => {\n e.preventDefault();\n if (this.formValidate()) {\n document.getElementById('password').blur();\n document.getElementById('passwordConfirm').blur();\n\n const postData = {\n id: qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).request,\n password1: this.state.password,\n password2: this.state.passwordConfirmation,\n };\n\n this.setState({ loading: true });\n this.props.resetPassword(postData)\n .then(() => {\n this.props.history.push('/login');\n this.props.notificationShow('Password changed.', 'success');\n })\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n onInputChange = (inputName, value) => {\n this.setState({\n [inputName]: value,\n formErrors: {\n ...this.state.formErrors,\n [inputName]: '',\n }\n });\n }\n\n componentDidMount() {\n if (this.props.passwordRequirements.length === 0) {\n this.setState({ loading: true });\n this.props.passwordRequirementsGet()\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n return (\n \n \n \n this.onInputChange('password', e.target.value) }\n label='New password'\n errorText={this.state.formErrors.password}\n fullWidth\n variant='standard'\n disabled={this.state.loading}\n />\n this.onInputChange('passwordConfirmation', e.target.value) }\n label='Confirm new password'\n errorText={this.state.formErrors.passwordConfirmation}\n fullWidth\n variant='standard'\n disabled={this.state.loading}\n />\n
\n this.setState({ passwordPassesValidation: isValid })}\n />\n
\n
\n this.props.history.push('/login')}\n disabled={this.state.loading}\n >\n Cancel\n \n \n Submit\n \n
\n \n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n resetPassword,\n passwordRequirementsGet,\n notificationShow,\n})(ResetPassword));\n","import { POSTrequest } from 'utils/helpers/api_handler';\nimport { PASSWORD_RESET } from './constants';\n\n\nexport function resetPassword(params) {\n const response = POSTrequest('/authentication/resetpassword', params);\n return {\n type: PASSWORD_RESET,\n payload: response\n };\n}","export const PASSWORD_RESET = 'app/Features/public/ResetPassword/PASSWORD_RESET';","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep } from 'lodash';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\n\nimport {\n FormWrapper,\n LoadingOverlay,\n emailValidate,\n notificationShow,\n} from '@frontend/common';\n\nimport { forgotUsername } from 'components/Features/public/ForgotUsername/actions';\n\nimport styles from './styles.module.css';\n\n\nexport class ForgotUsername extends Component {\n\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n forgotUsername: PropTypes.func.isRequired,\n errorMsgs: PropTypes.array,\n };\n\n state = {\n loading: false,\n lpoaNum: '',\n email: '',\n errors: {},\n };\n\n formValidate = () => {\n let formIsValid = false;\n let errors = {};\n const lpoaNumIsValid = this.state.lpoaNum.match(/^[0-9]*$/);\n const emailIsValid = emailValidate(this.state.email);\n\n if (!this.state.lpoaNum) {\n errors.lpoaNum = 'LPOA Number is required.';\n }\n\n if (!this.state.email) {\n errors.email = 'Email is required.';\n }\n\n if (this.state.lpoaNum && !lpoaNumIsValid) {\n errors.lpoaNum = 'Can only contain numbers.';\n }\n\n if (this.state.email && !emailIsValid) {\n errors.email = 'Invalid email address.';\n }\n\n if (\n this.state.lpoaNum\n && lpoaNumIsValid\n && this.state.email\n && emailIsValid\n ) {\n formIsValid = true;\n errors = {};\n }\n\n this.setState({\n errors,\n });\n\n return formIsValid;\n }\n\n inputUpdate = (inputName, value) => {\n const clonedErrors = cloneDeep(this.state.errors);\n\n if (value.length > 0 && this.state.errors[inputName]) {\n clonedErrors[inputName] = '';\n }\n\n this.setState({\n [inputName]: value,\n errors: clonedErrors,\n });\n }\n\n onFormSubmit = (e) => {\n \n e.preventDefault();\n\n if (this.formValidate()) {\n document.getElementById('lpoaNumField').blur();\n document.getElementById('emailField').blur();\n\n const data = {\n email: this.state.email,\n LPOANumber: this.state.lpoaNum,\n };\n \n this.setState({ loading: true });\n this.props.forgotUsername(data)\n .then(() => {\n this.props.notificationShow('Request submitted. Check your email.', 'success');\n this.props.history.push('/login');\n })\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n return (\n \n \n this.inputUpdate('lpoaNum', e.target.value)}\n error={Boolean(this.state.errors.lpoaNum)}\n helperText={this.state.errors.lpoaNum}\n />\n this.inputUpdate('email', e.target.value)}\n error={Boolean(this.state.errors.email)}\n helperText={this.state.errors.email}\n />\n
\n this.props.history.push('/login')}\n disabled={this.state.loading}\n >\n Cancel\n \n \n \n Submit\n \n \n
\n \n \n );\n }\n}\n\nexport default withRouter(connect(null, {\n notificationShow,\n forgotUsername\n})(ForgotUsername));\n","import { POSTrequest } from 'utils/helpers/api_handler';\nimport {\n USER_NAME_FORGOT\n} from './constants';\n\n\nexport function forgotUsername(params) {\n const response = POSTrequest('/authentication/forgotusername', params);\n return {\n type: USER_NAME_FORGOT,\n payload: response\n };\n}","export const USER_NAME_FORGOT = 'app/Features/public/ForgotUsername/USER_NAME_FORGOT';","export function getAccountBaseRoute({ agentId, groupId, accountId }) {\n // WARNING! If this path changes, it must be changed for analytics in src/utils/ga/analytics.js\n return `/agents/${agentId}/groups/${groupId}/accounts/${accountId}`;\n}","import {\n DELETErequest,\n GETrequest,\n POSTrequest,\n PUTrequest,\n} from 'utils/helpers/api_handler';\n\nimport {\n startCase\n} from 'lodash';\n\nimport {\n ACCOUNT_TRANSACTIONS_DETAILS_GET,\n ACCOUNT_DETAILS_GET,\n ACCOUNTS_SEARCH,\n ACCOUNTS_GET_BY_AGENT,\n BANK_ACCOUNT_ADD,\n AGENT_BANK_ACCOUNTS_GET,\n CONTRIBUTION_CREATE,\n CONTRIBUTION_DETAILS_GET,\n CONTRIBUTION_EDIT,\n CONTRIBUTION_EDIT_DETAILS_CLEAR,\n CONTRIBUTION_EDIT_DETAILS_GET,\n GIFT_CODE_STATUS_EDIT,\n NEXT_RUN_DATE_GET,\n OPTION_CHANGE_CREATE,\n OPTION_CHANGE_DETAILS_GET,\n ROUTING_INFO_GET,\n SCHOOLS_GET,\n TRANSACTION_DETAILS_GET,\n UPCOMING_TRANSACTIONS_GET,\n WITHDRAWAL_CREATE,\n WITHDRAWAL_DETAILS_GET,\n TRANSFER_CREATE,\n TRANSFER_UPDATE,\n TRANSACTION_DELETE,\n SCHEDULED_TRANSACTION_GET,\n ACCOUNT_DOCUMENTS_GET,\n ACCOUNT_DOCUMENT_DOWNLOAD_DATA,\n BULK_OPTION_CHANGE_CANDIDATES_GET,\n BULK_OPTION_CHANGE_CREATE,\n ACCOUNT_TRANSACTION_PREVIEW,\n TRANSFER_ACCOUNTS_GET,\n ACCOUNT_INVESTMENT_PATH_GET,\n GET_PRR_DATES,\n GET_PRR,\n COUNTRIES_LIST_GET,\n} from './constants';\n\nimport { convert3DCalculatorSchemaTo2D } from '@frontend/common';\n\nexport function addBankAccount(agentId, bankInfo) {\n const response = POSTrequest(`/agents/${agentId}/bankAccounts`, bankInfo);\n return {\n type: BANK_ACCOUNT_ADD,\n payload: response\n };\n}\n\nexport function clearContributionEditDetails() {\n return {\n type: CONTRIBUTION_EDIT_DETAILS_CLEAR\n };\n}\n\nexport function createNewContribution(contribution) {\n const response = POSTrequest('/transactions/ContributionSchedules', contribution);\n return {\n type: CONTRIBUTION_CREATE,\n payload: response\n };\n}\n\nexport function createNewOptionChange(data) {\n const updatedData = data.map(optionChange => {\n const { matrixAllocations, CustomSchema } = optionChange;\n const isCustomizedOptionChange = CustomSchema && CustomSchema.FundCategories && CustomSchema.FundCategories.length > 0;\n const updatedCustomSchema = isCustomizedOptionChange ? convert3DCalculatorSchemaTo2D(matrixAllocations, CustomSchema) : CustomSchema;\n return { ...optionChange, CustomSchema: updatedCustomSchema };\n });\n\n const response = POSTrequest('/transactions/optionchanges', updatedData);\n return {\n type: OPTION_CHANGE_CREATE,\n payload: response\n };\n}\n\nexport function createNewTransfer(payload) {\n const response = POSTrequest('/transactions/transfers', payload);\n return {\n type: TRANSFER_CREATE,\n payload: response,\n };\n}\n\nexport function createNewWithdrawal(data) {\n const response = POSTrequest('/transactions/WithdrawalSchedules', data);\n return {\n type: WITHDRAWAL_CREATE,\n payload: response\n };\n}\n\nexport function editContribution(transactionId, data) {\n const response = PUTrequest(`/transactions/contributionSchedules/${transactionId}`, data);\n return {\n type: CONTRIBUTION_EDIT,\n payload: response\n };\n}\n\nexport function editGiftCodeStatus(accountId, isActive) {\n const response = POSTrequest(`/accounts/${accountId}/GiftCodeStatus?isActive=${isActive}`);\n return {\n type: GIFT_CODE_STATUS_EDIT,\n payload: response\n };\n}\n\nexport function getAccounts() {\n const response = GETrequest('/search/accounts');\n return {\n type: ACCOUNTS_SEARCH,\n payload: response\n };\n}\n\nexport function getAccountDetails(accountId) {\n const response = GETrequest(`/accounts/${accountId}`);\n return {\n type: ACCOUNT_DETAILS_GET,\n payload: response,\n };\n}\n\nexport function getAccountsByAgent(agentId, optionalParam) {\n const payload = optionalParam ? GETrequest(`/search/accounts/byagent/${agentId}?${optionalParam}`) : GETrequest(`/search/accounts/byagent/${agentId}`);\n return {\n type: ACCOUNTS_GET_BY_AGENT,\n payload,\n };\n}\n\nexport function getAccountTransactionsDetails(accountGroupId, accountId) {\n const response = GETrequest(`/accountgroups/${accountGroupId}`);\n return {\n type: ACCOUNT_TRANSACTIONS_DETAILS_GET,\n meta: { accountGroupId, accountId },\n payload: response,\n };\n}\n\nexport function getAgentBankAccounts(agentId, transactionType) {\n const response = GETrequest(`/agents/${agentId}/bankaccounts?allow${transactionType}=true`);\n return {\n type: AGENT_BANK_ACCOUNTS_GET,\n payload: response\n };\n}\n\nexport function getBankRoutingInfo(routingNumber) {\n const response = GETrequest(`/routingnumbers/${routingNumber}`);\n return {\n type: ROUTING_INFO_GET,\n payload: response\n };\n}\n\nexport function getContributionDetails(accountId) {\n return {\n type: CONTRIBUTION_DETAILS_GET,\n accountId\n };\n}\n\nexport function getContributionEditDetails(transactionId) {\n const response = GETrequest(`/Transactions/ContributionSchedules/${transactionId}`);\n return {\n type: CONTRIBUTION_EDIT_DETAILS_GET,\n payload: response\n };\n}\n\nexport function getNextRunDate(dates, day, frequency) {\n let datePath;\n\n function formatDate(date) {\n return new Date(date).toISOString().split('T')[0]; // eslint-disable-line\n }\n\n if (dates instanceof Array) {\n const joinedDates = dates.map(date => `start=${formatDate(date)}`).join('&'); // eslint-disable-line\n datePath = `?${joinedDates}&`;\n }\n else {\n datePath = `/${formatDate(dates)}?`;\n }\n\n const response = GETrequest(`/Transactions/ScheduleRunDates${datePath}frequency=${startCase(frequency)}`);\n\n return {\n type: NEXT_RUN_DATE_GET,\n payload: response,\n meta: { day, frequency }\n };\n}\n\nexport function getOptionChangeDetails(accountId) {\n return {\n type: OPTION_CHANGE_DETAILS_GET,\n accountId,\n };\n}\n\nexport function getSchools() {\n const response = GETrequest('/EducationalInstitutions');\n return {\n type: SCHOOLS_GET,\n payload: response,\n };\n}\n\nexport function getTransactionDetails(id) {\n const response = GETrequest(`/accounts/transactions/${id}`);\n return {\n type: TRANSACTION_DETAILS_GET,\n payload: response,\n };\n}\n\nexport function getUpcomingTransactions(accountId) {\n const payload = GETrequest(`/accounts/${accountId}/schedules`);\n return {\n type: UPCOMING_TRANSACTIONS_GET,\n payload,\n meta: { accountId },\n };\n}\n\nexport function getWithdrawalDetails(groupId, accountId) {\n return {\n type: WITHDRAWAL_DETAILS_GET,\n meta: { groupId, accountId },\n };\n}\n\nexport function cancelTransaction(transaction) {\n const response = DELETErequest(transaction.url);\n return {\n type: TRANSACTION_DELETE,\n payload: response,\n meta: { accountId: transaction.accountId, transactionId: transaction.id, },\n };\n}\n\nexport function getScheduledTransaction(transaction) {\n const response = GETrequest(transaction.url);\n return {\n type: SCHEDULED_TRANSACTION_GET,\n payload: response,\n meta: { type: transaction.typeName }\n };\n}\n\nexport function getTransfer(transferId) {\n const response = GETrequest(`/transactions/transfers/${transferId}`);\n return {\n type: SCHEDULED_TRANSACTION_GET,\n payload: response,\n meta: { type: 'Transfer' },\n };\n}\n\nexport function updateTransfer(transfer) {\n const response = PUTrequest(`/transactions/transfers/${transfer.TransferId}`, transfer);\n return {\n type: TRANSFER_UPDATE,\n payload: response,\n };\n}\n\nexport function accountDocumentsGet(accountId) {\n const payload = GETrequest(`/accounts/${accountId}/documents`);\n\n return {\n type: ACCOUNT_DOCUMENTS_GET,\n payload,\n meta: { accountId },\n };\n}\n\nexport function downloadAccountDocumentData(url) {\n const payload = GETrequest(url);\n\n return {\n type: ACCOUNT_DOCUMENT_DOWNLOAD_DATA,\n payload,\n };\n}\n\nexport function getCandidatesForBulkOptionChange(query) {\n const response = GETrequest(`/transactions/optionchanges/candidates${query}`);\n return {\n type: BULK_OPTION_CHANGE_CANDIDATES_GET,\n payload: response,\n };\n}\n\nexport function createBulkOptionChange(data) {\n const payload = POSTrequest('/transactions/optionchanges/bulk', data);\n\n return {\n type: BULK_OPTION_CHANGE_CREATE,\n payload,\n };\n}\n\nexport function transactionPreview(transactionType, accountId) {\n const payload = GETrequest(`/accounts/${accountId}/preview?type=${transactionType}`);\n\n return {\n type: ACCOUNT_TRANSACTION_PREVIEW,\n meta: { transactionType },\n payload,\n };\n}\n\nexport function getTransferAccounts(accountId) {\n const payload = GETrequest(`/accounts/${accountId}/transferaccounts`);\n\n return {\n type: TRANSFER_ACCOUNTS_GET,\n payload,\n meta: { sourceAccount: parseInt(accountId) },\n };\n}\n\nexport function accountInvestmentPathGet(accountId) {\n const payload = GETrequest(`/accounts/${accountId}/template`);\n\n return {\n type: ACCOUNT_INVESTMENT_PATH_GET,\n payload,\n };\n}\n\nexport function getPRRDates(accountId) {\n const payload = GETrequest(`/accounts/${accountId}/PRRDates`);\n return {\n type: GET_PRR_DATES,\n payload,\n };\n}\n\nexport function getPRR(accountId, startDate, endDate) {\n const body = { startDate, endDate };\n const payload = POSTrequest(`/accounts/${accountId}/PRR`, body);\n return {\n type: GET_PRR,\n payload,\n };\n}\n\nexport function getCountries() {\n const response = GETrequest('/Parameters/Countries');\n return {\n type: COUNTRIES_LIST_GET,\n payload: response,\n };\n}\n","/*\n*\n* TransactionDetailsModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { getTransactionDetails } from 'components/Features/protected/Accounts/actions';\n\nimport { \n Modal,\n sizify,\n LoadingOverlay,\n \n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nconst select = (state, { transactionId }) => {\n return {\n transaction: state.accounts.postedTransactionDetailsCollection[transactionId] || { }\n };\n};\n\nexport class TransactionDetailsModal extends React.Component {\n\n static propTypes = {\n show: PropTypes.bool.isRequired,\n transactionId: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]).isRequired,\n onClose: PropTypes.func.isRequired,\n size: PropTypes.object.isRequired,\n getTransactionDetails: PropTypes.func.isRequired,\n transaction: PropTypes.object.isRequired\n };\n\n state = {\n loading: false,\n };\n\n fundsCompose() {\n let fundComponents = [];\n const { selectedTransactionId, transactionDetails } = this.props.transaction;\n\n if (selectedTransactionId === this.props.transactionId) {\n if (this.props.size.windowWidth < 600) {\n fundComponents = transactionDetails.map(fund => {\n return (\n
\n
{fund.name}
\n
\n Units: \n {fund.units}\n
\n
\n Price: \n {fund.price}\n
\n
\n Amount: \n {fund.amount}\n
\n
\n );\n });\n }\n else {\n fundComponents = (\n \n events.tableSearchAccessed('Transaction Details', window.location.pathname)}\n />\n \n \n \n \n \n \n );\n }\n return (\n
\n {fundComponents}\n
\n );\n }\n }\n\n componentDidMount() {\n const { show, transactionId, transaction } = this.props;\n const hasDetails = Object.prototype.hasOwnProperty.call(transaction, 'selectedTransactionId');\n\n if (show && !hasDetails) {\n this.setState({ loading: true });\n this.props.getTransactionDetails(transactionId)\n .then(() => {\n this.setState({ loading: false });\n });\n }\n }\n\n render() {\n const { loading } = this.state;\n const { onClose, show, transaction } = this.props;\n return (\n \n \n
\n
\n
\n
\n
Date
\n
{!loading && transaction.postDate}
\n
\n
\n
Total
\n
{!loading && transaction.totalAmount}
\n
\n
\n
Transaction Type
\n
{!loading && transaction.type}
\n
\n
\n
Type
\n
{!loading && transaction.source}
\n
\n
\n\n
\n {transaction.bankInfo && !loading && [\n
\n
Bank Name
\n
{!loading && transaction.bankInfo.bankName}
\n
,\n
\n
Number
\n
{!loading && transaction.bankInfo.bankAccountNumber}
\n
,\n
\n
Bank Account Type
\n
{!loading && transaction.bankInfo.bankAccountType}
\n
\n ]}\n {transaction.accessCardNumber && !loading &&\n
\n
Card Number
\n
{!loading && transaction.accessCardNumber}
\n
}\n {transaction.payee && !transaction.accessCardNumber && !loading && // should not show for any Access Card transactions\n
\n
Payee Name
\n
{!loading && transaction.payee}
\n
}\n
\n\n
\n {!loading && this.fundsCompose()}\n
\n \n \n );\n }\n \n}\n\nexport default sizify(connect(select, { getTransactionDetails })(TransactionDetailsModal));\n","import React, { Fragment } from 'react';\n\nexport const PrrCalculatorText = {\n learn_more_title: 'Personal Rate of Return Footer/Disclosure:',\n prr_not_available: 'Not Available',\n text_learn_more() {\n return (\n
\n

Performance returns for time periods longer than 365 days have been annualized.

\n\n

The Personal Rate of Return produced by this calculator (Personal Rate of Return) is a dollar-weighted calculation methodology (also known as Internal Rate of Return) used to measure the actual performance of an account, including the impact of the timing and dollar amount of deposits and withdrawals (i.e., cash flows). The formula used by my529 considers any activity in the account, including cash flows, dividends, interest and fees. It can be used to answer the fundamental question of how an investment is performing.

\n\n

The Personal Rate of Return should not be confused with performance returns posted by my529 for its investment options or returns for underlying funds. The performance returns posted for my529's investment options and for the underlying funds use a time-weighted calculation that normalizes returns by not considering cash flows. Performance reported for my529 investment options may differ significantly from the Personal Rate of Return of an account due to the unique transaction activity that occurred within the account.

\n\n

Year-to-date (YTD) performance returns are calculated from either the beginning of the calendar year or the opening date of the account, if the account was opened after the beginning of the year. The earliest date that may be selected is the account opening date, or January 1, 2005, whichever is later. If an account was not funded on the opening date, the calculation will use the funding date as the beginning date. Performance may be calculated up to the previous trading date.

\n\n

The Personal Rate of Return should not be used in making investment decisions. It is provided by my529 as a courtesy for informational purposes only with respect to the unique transaction activity that occurred within your account. You should consider other factors like your time horizon, risk tolerance, investment objectives, personal financial situation, and tax implications before making changes to your investment option.

\n\n

Past performance is not a guarantee of future performance.

\n
\n );\n },\n text_faq: [\n {\n question: 'How was my Personal Rate of Return calculated?',\n answer: 'Your Personal Rate of Return was determined using a dollar-weighted rate of return calculation. This calculation is based on a number of factors, including changes in the value of the my529 units you own, dividends and interest earned, fees paid and the dollar amount and timing of your contribution(s) and/or withdrawal(s). This type of calculation is also sometimes referred to as an Internal Rate of Return.',\n },\n {\n question: 'What is the difference between dollar-weighted and time-weighted rates of return?',\n answer: (\n \n A dollar-weighted rate of return is used to evaluate the combined investment decisions of an investment manager and an individual investor. The dollar-weighted Personal Rate of Return measures the performance of the underlying investments, including dividends, interest and fees, and also considers the impact of the relative dollar amount and timing of the contribution(s) and withdrawal(s) that an account owner makes.\n

\n In contrast, a time-weighted rate of return is commonly used to evaluate the performance of a fund or an investment manager. This rate of return measures the performance of the underlying investments, including dividends, interest and fees, but seeks to exclude or minimize the impact of the dollar amount and timing of contributions and withdrawals. The exclusion of cash flows normalizes the returns to allow for easier comparison of the investment manager's performance and other investment options.\n

\n Investment Option Performance published on my529.org is calculated using a time-weighted rate of return, whereas the account specific Personal Rates of Return within Account Access are calculated using a personal (dollar-weighted) rate of return.\n
\n ),\n },\n {\n question: 'How will withdrawals affect my performance?',\n answer: 'Withdrawals are not treated as a decline in your return, but will decrease the investment option value used to calculate your return. The dollar-weighted methodology, or Personal Rate of Return, takes into account the timing and size of contributions and withdrawals.',\n },\n {\n question: 'What time frame can I select for the Personal Rate of Return?',\n answer: 'The Personal Rate of Return can be calculated from any time period beginning as far back as January 1, 2005, or account opening (whichever is later) and ending as recently as the previous trading day. Account performance data is calculated nightly.',\n },\n {\n question: 'What does it mean when the Personal Rate of Return for time periods longer than 365 days has been annualized?',\n answer: 'A Personal Rate of Return for any time period longer than 365 days has been annualized, or calculated as the equivalent annual return an investment received over the selected period. Returns for a time period less than 365 days, on the other hand, have not been annualized to prevent any projection of performance.',\n },\n ],\n title: 'Personal Rate of Return',\n subtitle: 'Calculate your personal rate of return.',\n rate_of_return_txt: 'Rate of return',\n start_date_label: 'Start Date',\n end_date_label: 'End Date',\n btn_calculate: 'Calculate',\n btn_learnmore: 'Learn More',\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { PrrCalculatorText } from '../text';\nimport { IconBtnTooltip } from '@frontend/common';\nimport {\n Drawer,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Icon,\n Typography,\n} from '@mui/material';\n\nimport styles from './styles.module.css';\n\nexport function LearnMoreDrawer({ open, onClose }) {\n\n return (\n \n
\n
\n \n
\n
\n

{PrrCalculatorText.learn_more_title}

\n
\n {PrrCalculatorText.text_learn_more()}\n
\n
\n {PrrCalculatorText.text_faq.map(qa => {\n return (\n \n expand_more}\n id='panel1a-header'\n >\n \n \n {qa.question}\n \n \n \n \n \n \n {qa.answer}\n \n \n \n \n );\n })}\n
\n );\n}\n\nLearnMoreDrawer.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n PrrCalculator: PropTypes.shape({\n learn_more_title: PropTypes.string.isRequired,\n text_faq: PropTypes.array.isRequired,\n text_learn_more: PropTypes.func.isRequired,\n }).isRequired,\n }),\n};\n\nexport default LearnMoreDrawer;\n","import dayjs from 'dayjs';\n\nexport const errors = {\n required: 'Field is required.',\n phone_number_too_short: 'Phone number needs to be 10 digits.',\n alphabetic_and_allowable_characters_only(allowableChars) {\n return `Allowable characters: alphabetic and ${allowableChars}`;\n },\n alpha_numeric_only: 'Please use only alphanumeric characters.',\n alpha_numeric_and_allowable_characters_only(allowableChars) {\n return `Allowable characters: alphanumeric and ${allowableChars}`;\n },\n};\n\nconst date_limits = (minDate, maxDate) => {\n return `Date must be between ${minDate} and ${maxDate}.`;\n};\n\nexport function calendarValidator(value, minDate, maxDate) {\n if (!value) {\n return errors.required;\n }\n\n value = dayjs(value); // converts date to momentjs just in case it doesn't come in that way\n if (!dayjs(value).isValid()) {\n return 'Select a valid date.';\n }\n else if (minDate && maxDate && (dayjs(value).isAfter(dayjs(maxDate), 'day') || dayjs(value).isBefore(dayjs(minDate), 'day'))) {\n return date_limits(dayjs(minDate).format('MM/DD/YYYY'), dayjs(maxDate).format('MM/DD/YYYY'));\n }\n return '';\n}\n\nexport function numericOnlyValidator(str) {\n const nonNumericCharsRegex = /[^0-9]/g;\n\n if (nonNumericCharsRegex.test(str.toString())) {\n return 'Please use only numeric characters.';\n }\n return '';\n}\n\nexport function alphaNumericOnlyValidator(str) {\n const nonAlphanumericCharsRegex = /[^0-9a-zA-Z ]/g;\n\n if (nonAlphanumericCharsRegex.test(str)) {\n return errors.alpha_numeric_only;\n }\n return '';\n}\n\nexport function pinValidator(pin) {\n if (!pin) {\n return 'PIN is required.';\n }\n return '';\n}\n\nexport function tokenValidator(token) {\n if (!token) {\n return 'Security code is required.';\n }\n return '';\n}\n\nexport function phoneHasNo10Digits(phone) {\n if (phone.match(/\\d/g).length !== 10) {\n return errors.phone_number_too_short;\n }\n return '';\n}\n\nexport function emailValidator(email) {\n const emailRegex = /^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/; // eslint-disable-line no-useless-escape\n if (email.match(/\\s+/)) {\n return 'This field cannot contain spaces'; // no spaces anywhere\n }\n if (!emailRegex.test(email)) {\n return 'Email address is not valid.';\n }\n return '';\n}\n\nexport function street1Validator(value) {\n const street1Regex = /^[A-Za-z0-9 .,':#/-]+$/g; // eslint-disable-line no-useless-escape\n if (!value) {\n return errors.required;\n }\n if (!street1Regex.test(value)) {\n return errors.alpha_numeric_and_allowable_characters_only(\". , - ' : # /\"); // eslint-disable-line\n }\n if (value.length > 40) {\n return errors.field_max_length_40;\n }\n return '';\n}\n\nexport function cityValidator(value) {\n const cityRegex = /^[A-Za-z .,'-]+$/g; // eslint-disable-line no-useless-escape\n if (!value) {\n return errors.required;\n }\n if (!cityRegex.test(value)) {\n return errors.alphabetic_and_allowable_characters_only(\" . , - '\"); // eslint-disable-line\n }\n return '';\n}\n\n\n","/*\n*\n* PrrCalculator Component\n*\n*/\nimport React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\nimport CountUp from 'react-countup';\n\nimport LearnMore from './LearnMore';\nimport {\n Dialog,\n Icon,\n Divider,\n Button,\n Slide,\n} from '@mui/material';\n\nimport {\n DatePicker,\n IconBtnTooltip,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport { calendarValidator } from 'utils/helpers/form_validation';\n\nimport { PrrCalculatorText } from './text';\n\nimport { getPRRDates, getPRR } from '../../actions';\n\nimport styles from './styles.module.css';\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nconst select = (state) => ({\n minDate: state.accounts.pRRDates.minDate,\n maxDate: state.accounts.pRRDates.maxDate,\n});\n\nexport class PrrCalculator extends React.Component {\n\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onCloseHandler: PropTypes.func.isRequired,\n disablePRRButtonInDetails: PropTypes.func.isRequired,\n account: PropTypes.shape({\n accountId: PropTypes.number.isRequired,\n beneficiary: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n details: PropTypes.shape({\n option: PropTypes.string.isRequired,\n }).isRequired\n }).isRequired,\n minDate: PropTypes.string,\n maxDate: PropTypes.string,\n getPRRDates: PropTypes.func.isRequired,\n getPRR: PropTypes.func.isRequired,\n }\n\n state = {\n loading: false,\n learnMoreOpen: false,\n startDate: '', // dayjs object\n endDate: '', // dayjs object\n startDateError: '',\n endDateError: '',\n pRRInit: 0,\n pRR: 0,\n }\n\n loadPRRDates = (accountId) => {\n this.props.getPRRDates(accountId)\n .then(() => {\n // disable PRR button in details\n if (this.props.minDate === null || this.props.maxDate === null) {\n this.props.disablePRRButtonInDetails();\n }\n });\n }\n\n loadPRR = () => {\n const {\n getPRR,\n account: {\n accountId\n },\n } = this.props;\n\n this.setState({ loading: true });\n const dates = this.calculateDates(this.props.minDate, this.props.maxDate);\n getPRR(\n accountId,\n dates.startDate.format('MM-DD-YYYY'),\n dates.endDate.format('MM-DD-YYYY')\n )\n .then((response) => {\n const pRR = response.payload.data;\n this.setState({\n pRR,\n pRRInit: pRR,\n startDate: dates.startDate,\n endDate: dates.endDate,\n });\n if (pRR === -100 || pRR === 0.00)\n this.setState({ loading: false });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n resetErrorsAndPRR = () => {\n this.setState({\n startDateError: '',\n endDateError: '',\n pRR: 0,\n });\n }\n\n onStartDateInput = (value) => {\n this.resetErrorsAndPRR();\n this.setState({ startDate: value });\n }\n\n onEndDateInput = (value) => {\n this.resetErrorsAndPRR();\n this.setState({ endDate: value });\n }\n\n validateForm = (startDate, endDate) => {\n const { minDate, maxDate } = this.props;\n let startDateError = '';\n let endDateError = '';\n\n startDateError = calendarValidator(startDate, minDate, maxDate);\n const startDatePlus1Day = dayjs(startDate).add(1, 'day');\n const minEndDate = startDatePlus1Day.isBefore(minDate) ? dayjs(minDate) : startDatePlus1Day;\n endDateError = calendarValidator(endDate, minEndDate, maxDate);\n this.setState({ startDateError, endDateError });\n\n return !(Boolean(startDateError) || Boolean(endDateError));\n }\n\n onCalculateHandler = () => {\n const { startDate, endDate } = this.state;\n const { getPRR, account: { accountId }, minDate } = this.props;\n\n // since countup is setting loading to false it needs to reset pRR each time in case user\n // repeatedly clicks calculate without changing the dates\n this.setState({ pRR: 0 }, () => {\n if (this.validateForm(startDate, endDate)) {\n this.setState({ loading: true });\n // check if user selected date before account was opened, if yes reset start date\n const resetStartDate = startDate.isBefore(minDate) ? minDate : startDate;\n this.setState({ startDate: resetStartDate });\n\n getPRR(\n accountId,\n dayjs(resetStartDate).format('MM-DD-YYYY'), // eslint-disable-line\n dayjs(endDate).format('MM-DD-YYYY') // eslint-disable-line\n )\n .then((response) => {\n const pRR = response.payload.data;\n this.setState({ pRR });\n if (pRR === -100 || pRR === 0.00)\n this.setState({ loading: false });\n })\n .catch(() => this.setState({ loading: false }));\n }\n });\n }\n\n calculateDates = (minDate, maxDate) => {\n const openAccountDate = dayjs(minDate);\n const endDate = dayjs(maxDate);\n const previousYear = dayjs().subtract(1, 'year').format('YYYY'); // eslint-disable-line\n const lastDateOfPreviousYear = dayjs(`${previousYear}-12-31`);\n\n let startDate;\n if (\n endDate.isBefore(lastDateOfPreviousYear) ||\n lastDateOfPreviousYear.isBefore(openAccountDate)\n ) {\n startDate = openAccountDate;\n }\n else {\n startDate = lastDateOfPreviousYear;\n }\n\n return ({ startDate, endDate }); // returns dayjs objects\n }\n\n // Methods to render components\n renderNavigationButton = (label, onClick, variant, fullWidth = false, disabled = false, color = 'secondary') => {\n return (\n \n {label}\n \n );\n }\n\n componentDidMount() {\n this.loadPRRDates(this.props.account.accountId);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.account.accountId !== this.props.account.accountId) {\n this.loadPRRDates(this.props.account.accountId);\n }\n\n if (!prevProps.open && this.props.open) {\n const dates = this.calculateDates(this.props.minDate, this.props.maxDate);\n this.setState({\n startDate: dates.startDate,\n endDate: dates.endDate,\n startDateError: '',\n endDateError: '',\n pRR: this.state.pRRInit,\n }, () => this.loadPRR());\n }\n }\n\n render() {\n const {\n loading,\n startDate,\n endDate,\n startDateError,\n endDateError,\n pRR,\n learnMoreOpen,\n } = this.state;\n\n const {\n account,\n minDate,\n maxDate,\n } = this.props;\n\n let prrClass, prrArrowIcon;\n if (pRR === -100) { // API response for PRR not available\n prrClass = styles.pprNotAvailable;\n prrArrowIcon = '';\n }\n else if (pRR < 0) {\n prrClass = styles.negativeReturn;\n prrArrowIcon = 'arrow_drop_down';\n }\n else if (pRR === 0) {\n prrArrowIcon = '';\n }\n else {\n prrClass = styles.positiveReturn;\n prrArrowIcon = 'arrow_drop_up';\n }\n\n return (\n \n \n
\n
\n
\n {PrrCalculatorText.title}\n
\n
\n \n
\n
\n \n
\n\n
\n {PrrCalculatorText.subtitle}\n
\n

{account.beneficiary.name}

\n \n
\n {PrrCalculatorText.rate_of_return_txt}\n
\n {\n pRR !== -100\n ?\n \n {prrArrowIcon}\n this.setState({ loading: false })}\n onStart={() => null}\n />\n \n :\n
\n {PrrCalculatorText.prr_not_available}\n
\n }\n
\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n {this.renderNavigationButton(PrrCalculatorText.btn_calculate, this.onCalculateHandler, 'contained', true, loading)}\n \n\n
\n {this.renderNavigationButton(PrrCalculatorText.btn_learnmore, () => this.setState({ learnMoreOpen: true }), 'outlined', true)}\n
\n
\n\n\n
\n
\n \n\n this.setState({ learnMoreOpen: false })}\n open={learnMoreOpen}\n />\n
\n );\n }\n}\n\nexport default connect(select, {\n getPRRDates,\n getPRR,\n})(PrrCalculator);\n","/*\n*\n* AccountDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { find } from 'lodash';\nimport bowser from 'bowser';\nimport dayjs from 'dayjs';\n\nimport {\n getAccountDetails,\n getAccountsByAgent,\n getUpcomingTransactions,\n cancelTransaction,\n getScheduledTransaction,\n} from 'components/Features/protected/Accounts/actions';\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\nimport { optionsGet } from 'components/AppRoot/StaticResources/actions';\n\nimport {\n LoadingOverlay,\n sizify,\n FloatingActionButton,\n Breadcrumbs,\n Card,\n notificationShow,\n ConfirmModal,\n currencyFormatter,\n StyledLink,\n ContributionIcon,\n WithdrawalIcon,\n OptionChangeIcon,\n IconBtnTooltip,\n phoneFormatter,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\nimport TransactionDetailsModal from '../TransactionDetailsModal';\nimport PrrCalculator from './PrrCalculator';\n\nimport {\n Tabs,\n Tab,\n Icon,\n} from '@mui/material';\n\nimport { ACCT_STATUS } from '../constants';\nimport { ACCOUNT_TYPE_UGMA_UTMA } from '../Transactions/Withdrawals/constants';\n\nimport events from 'utils/ga';\nimport { colors } from 'utils/config/constants';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n accountDetails: state.accounts.selectedAccount,\n agentAccounts: state.accounts.selectedAgentAccounts,\n upcomingTransactions: state.accounts.upcomingTransactionsByAccount,\n predefinedOptions: state.static.options,\n});\n\n\nexport class AccountDetails extends React.Component {\n\n static propTypes = {\n size: PropTypes.object.isRequired,\n accountActionHandle: PropTypes.func.isRequired,\n accountDetails: PropTypes.object.isRequired,\n getAccountDetails: PropTypes.func.isRequired,\n optionsGet: PropTypes.func.isRequired,\n agentAccounts: PropTypes.array.isRequired,\n getAccountsByAgent: PropTypes.func.isRequired,\n getUpcomingTransactions: PropTypes.func.isRequired,\n upcomingTransactions: PropTypes.object,\n cancelTransaction: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getScheduledTransaction: PropTypes.func.isRequired,\n predefinedOptions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n isStaticOrEnrollment: PropTypes.bool.isRequired,\n })\n ).isRequired,\n };\n\n state = {\n loading: false,\n initialLoading: false,\n showTransactionDetailsModal: false,\n selectedTransactionId: 0,\n cachedAccounts: [],\n focusedAccount: {\n beneficiary: {},\n accountOwner: {},\n successors: {},\n details: {},\n funds: [],\n transactions: [],\n permissions: {},\n ytdPRR: '',\n status: '',\n closeDate: ''\n },\n prrCalculatorShow: false,\n prrButtonDisabled: false,\n /* State used for canceling a transaction */\n showCancelConfirmationModal: false,\n cancelTransactionLoading: false,\n selectedTransaction: {},\n reloadingUpcomingTransactionsTable: false,\n\n };\n\n accountActionsCompile = () => {\n const actions = [];\n const { permissions, details: { status, accountType } } = this.state.focusedAccount;\n const { accountId, groupId, agentId } = this.props.match.params;\n\n if (permissions.optionChanges && status === ACCT_STATUS.OPEN) {\n actions.push({\n title: 'Option Changes',\n icon: ,\n action: () => this.props.accountActionHandle('optionChanges', accountId, groupId, agentId),\n });\n }\n if (permissions.contributions && status === ACCT_STATUS.OPEN) {\n actions.push({\n title: 'Contributions',\n icon: ,\n action: () => this.props.accountActionHandle('contributions', accountId, groupId, agentId),\n });\n }\n if (permissions.transfers && status === ACCT_STATUS.OPEN) {\n actions.push({\n title: 'Transfers',\n icon: 'swap_horiz',\n action: () => this.props.accountActionHandle('transfers', accountId, groupId, agentId),\n });\n }\n if (permissions.withdrawals && status === ACCT_STATUS.OPEN) {\n actions.push({\n title: 'Withdrawals',\n icon: ,\n action: () => this.props.accountActionHandle('withdrawals', accountId, groupId, agentId),\n });\n }\n\n if ((permissions.contributions || permissions.optionChanges || permissions.transfers) && status === ACCT_STATUS.OPEN && accountType !== ACCOUNT_TYPE_UGMA_UTMA) {\n actions.push({\n title: 'Gifting',\n icon: 'card_giftcard',\n action: () => this.props.accountActionHandle('gifting', accountId, groupId, agentId),\n });\n }\n\n actions.push({\n title: 'Documents',\n icon: 'description',\n action: () => this.props.accountActionHandle('documents', accountId, groupId, agentId),\n });\n\n return actions;\n };\n\n accountSelect = (accountId) => {\n const { agentId } = this.props.match.params;\n const account = find(this.props.agentAccounts, { accountId });\n this.props.history.push(getAccountBaseRoute({ agentId, groupId: account.groupId, accountId }));\n };\n\n fundsCompose = () => {\n const fundTableData = this.state.focusedAccount.funds;\n\n if (this.props.size.windowWidth < 600) {\n return fundTableData.map(fund => {\n return (\n
\n
{fund.name}
\n
\n Target Allocation:\n {`${(fund.targetAllocation * 100).toFixed(2)}%`}\n
\n
\n Actual Allocation:\n {`${(fund.actualAllocation * 100).toFixed(2)}%`}\n
\n
\n Current Value:\n {currencyFormatter(fund.value)}\n
\n
\n );\n });\n }\n else {\n return (\n
\n `${(data * 100).toFixed(2)}%`,\n },\n {\n key: 'actualAllocation',\n title: 'Actual Allocation',\n type: 'number',\n format: data => `${(data * 100).toFixed(2)}%`,\n },\n {\n key: 'units',\n title: 'Units',\n type: 'string',\n hideOn: ['phone', 'tablet'],\n },\n {\n key: 'unitPrice',\n title: 'NAV',\n type: 'string',\n hideOn: ['phone', 'tablet'],\n },\n {\n key: 'value',\n title: 'Current Value',\n type: 'currency',\n hideOn: ['phone', 'tablet'],\n },\n ]}\n >\n events.tableSearchAccessed('Account Details (Current Allocation)', window.location.pathname)}\n />\n \n \n \n \n \n \n
\n );\n }\n };\n\n transactionDetailsShow = (selectedTransactionId) => {\n this.setState({\n showTransactionDetailsModal: true,\n selectedTransactionId,\n });\n };\n\n upcomingTransactionEditHandler = (transaction) => {\n let redirectRoutePrefix = getAccountBaseRoute({ ...this.props.match.params, groupId: transaction.accountGroupId, accountId: transaction.accountId });\n this.props.getScheduledTransaction(transaction).then(action => {\n let type;\n switch (transaction.typeName) {\n case 'Option Change': {\n type = 'option-changes';\n break;\n }\n case 'Transfer': {\n const responseObj = action.payload.data;\n redirectRoutePrefix = getAccountBaseRoute({ ...this.props.match.params, accountGroupId: responseObj.AccountGroupId, accountId: responseObj.AccountId });\n type = 'transfers';\n break;\n }\n case 'Withdrawal': {\n type = 'withdrawals';\n break;\n }\n case 'Contribution': {\n type = 'contributions';\n break;\n }\n default:\n break;\n }\n this.props.history.push(`${redirectRoutePrefix}/${type}/${transaction.id}/edit`);\n });\n };\n\n upcomingTransactionCancelHandler = (transaction) => {\n this.setState({ cancelTransactionLoading: true });\n this.props.cancelTransaction(transaction).then(() => {\n this.props.notificationShow(`${transaction.typeName} cancelled.`, 'success');\n })\n .catch(() => null)\n .finally(() => {\n this.setState({\n cancelTransactionLoading: false,\n showCancelConfirmationModal: false,\n selectedTransaction: {},\n reloadingUpcomingTransactionsTable: true,\n });\n this.props.getUpcomingTransactions(this.props.match.params.accountId)\n .then(() => {\n this.setState({ reloadingUpcomingTransactionsTable: false });\n })\n .catch(() => null);\n });\n };\n\n upcomingTransactionViewHandler = (transaction) => {\n const redirectRoutePrefix = getAccountBaseRoute({ ...this.props.match.params, groupId: transaction.accountGroupId, accountId: transaction.accountId });\n this.props.getScheduledTransaction(transaction).then(() => {\n let type;\n switch (transaction.typeName) {\n case 'Option Change': {\n type = 'option-changes';\n break;\n }\n default:\n break;\n }\n this.props.history.push(`${redirectRoutePrefix}/${type}/${transaction.id}/view`);\n });\n };\n\n componentDidMount() {\n this.setState({ initialLoading: true });\n const { agentId, accountId } = this.props.match.params;\n\n Promise.all([\n this.props.getAccountsByAgent(agentId),\n this.props.getAccountDetails(accountId),\n this.props.getUpcomingTransactions(accountId),\n this.props.predefinedOptions.length === 0 && this.props.optionsGet(),\n ])\n .then(() => {\n this.setState({\n initialLoading: false,\n focusedAccount: this.props.accountDetails,\n cachedAccounts: [this.props.accountDetails],\n });\n })\n .catch(() => null);\n }\n\n componentDidUpdate(prevProps) {\n const { accountId } = this.props.match.params;\n if (accountId !== prevProps.match.params.accountId) {\n const cachedAccount = find(this.state.cachedAccounts, { accountId: parseInt(accountId) });\n if (cachedAccount) {\n this.setState({ reloadingUpcomingTransactionsTable: true });\n this.props.getUpcomingTransactions(accountId)\n .then(() => {\n this.setState({ reloadingUpcomingTransactionsTable: false });\n })\n .catch(() => null);\n this.setState({\n focusedAccount: cachedAccount,\n });\n }\n else {\n this.setState({ loading: true, reloadingUpcomingTransactionsTable: true });\n Promise.all([\n this.props.getAccountDetails(accountId),\n this.props.getUpcomingTransactions(accountId),\n ])\n .then(() => {\n this.setState({\n loading: false,\n reloadingUpcomingTransactionsTable: false,\n focusedAccount: this.props.accountDetails,\n cachedAccounts: this.state.cachedAccounts.concat([this.props.accountDetails]),\n });\n })\n .catch(() => null);\n }\n }\n }\n\n render() {\n const { initialLoading, focusedAccount, loading, selectedTransaction, prrCalculatorShow, prrButtonDisabled } = this.state;\n const upcomingTransactions = this.props.upcomingTransactions[focusedAccount.accountId] || [];\n const { agentId, groupId, } = this.props.match.params;\n const accountId = parseInt(this.props.match.params.accountId);\n const isCustomOption = focusedAccount.details.isCustom;\n\n if (initialLoading) {\n return (\n
\n
\n \n \n
\n
\n );\n }\n else {\n /* eslint-disable indent, no-nested-ternary */\n return (\n
\n
\n \n\n
\n {focusedAccount.details.status === ACCT_STATUS.CLOSED &&\n
\n Account Closed on {dayjs(focusedAccount.details.closeDate).format('MM/DD/YYYY')}\n
\n }\n
\n \n
{focusedAccount.accountOwner.name}
\n
{focusedAccount.accountOwner.streetAddress1}
\n
{focusedAccount.accountOwner.streetAddress2}
\n
{focusedAccount.accountOwner.streetAddress3}
\n
{focusedAccount.accountOwner.city && `${focusedAccount.accountOwner.city}, ${focusedAccount.accountOwner.state} ${focusedAccount.accountOwner.zip}`}
\n
{focusedAccount.accountOwner.country !== 'United States' && focusedAccount.accountOwner.country}
\n {focusedAccount.accountOwner.phoneNumber1 &&\n
{`Primary: ${phoneFormatter(focusedAccount.accountOwner.phoneNumber1)}`}
}\n {focusedAccount.accountOwner.phoneNumber2 &&\n
{`Alternate: ${phoneFormatter(focusedAccount.accountOwner.phoneNumber2)}`}
}\n \n
\n
\n
\n this.accountSelect(value)}\n variant='scrollable'\n >\n {this.props.agentAccounts.map(account => (\n \n
{account.beneficiaryName}
\n
{`(...${account.accountNumber.substring(4)})`}
\n
\n }\n value={account.accountId}\n />\n ))}\n \n
\n
\n {loading\n ?
\n \n
\n :
\n \n
{focusedAccount.beneficiary.streetAddress1}
\n
{focusedAccount.beneficiary.streetAddress2}
\n
{focusedAccount.beneficiary.streetAddress3}
\n
{focusedAccount.beneficiary.city && `${focusedAccount.beneficiary.city}, ${focusedAccount.beneficiary.state} ${focusedAccount.beneficiary.zip}`}
\n
{focusedAccount.beneficiary.country !== 'United States' && focusedAccount.beneficiary.country}
\n {focusedAccount.beneficiary.phoneNumber1 && \n
{`Primary: ${phoneFormatter(focusedAccount.beneficiary.phoneNumber1)}`}
}\n {focusedAccount.beneficiary.phoneNumber2 &&\n
{`Alternate: ${phoneFormatter(focusedAccount.beneficiary.phoneNumber2)}`}
}\n \n \n
Primary
\n
{focusedAccount.successors.primarySuccessorName}
\n
Secondary
\n
{focusedAccount.successors.secondarySuccessorName}
\n \n \n
\n
\n
Account Number
\n
{focusedAccount.details.accountNumber}
\n
\n
\n
Account Type
\n
{focusedAccount.details.accountType}
\n
\n
\n
Investment Option
\n {bowser.mobile || bowser.tablet || !isCustomOption\n ?
{focusedAccount.details.option}
\n : {focusedAccount.details.option}\n }\n
\n
\n
Remaining Option Changes
\n
{focusedAccount.details.optionChangesRemaining}
\n
\n
\n
Beneficiary Age
\n
{focusedAccount.beneficiary.age}
\n
\n
\n
Net Principal
\n
{focusedAccount.details.netPrincipal}
\n
\n
\n
Current Tax Year to Date Contributions
\n
{focusedAccount.details.ytdContributions}
\n
\n
\n
Prior Tax Year Contributions
\n
{focusedAccount.details.priorContributions}
\n
\n
\n \n \n
\n
\n
Total Value
\n
{focusedAccount.details.accountBalance}
\n
\n
\n
Personal Rate of Return (YTD)
\n
\n {focusedAccount.ytdPRR.includes('%') && (focusedAccount.ytdPRR.includes('-') ? arrow_drop_down : arrow_drop_up)}\n {focusedAccount.ytdPRR.includes('%') ? focusedAccount.ytdPRR.replace(/\\s/g, '') : focusedAccount.ytdPRR}\n this.setState({ prrCalculatorShow: true })}\n title='See Personal Rate of Return'\n />\n
\n
\n
\n {this.fundsCompose()}\n \n \n {this.state.reloadingUpcomingTransactionsTable && (\n
\n \n
\n )}\n
\n {upcomingTransactions.length > 0 ?\n this.upcomingTransactionEditHandler(row),\n showIf: row => row.canEdit,\n },\n {\n displayName: 'View',\n type: 'menu',\n onSelect: row => this.upcomingTransactionViewHandler(row),\n showIf: row => !row.canEdit && row.typeName === 'Option Change',\n },\n {\n displayName: 'Cancel',\n type: 'menu',\n onSelect: row => this.setState({\n showCancelConfirmationModal: true,\n selectedTransaction: row,\n }),\n showIf: row => row.canDelete,\n },\n ]}\n >\n \n \n \n \n \n : No upcoming transactions to display}\n
\n \n \n
\n this.transactionDetailsShow(row.id),\n },\n ]}\n >\n events.tableSearchAccessed('Account Details (Transactions)', window.location.pathname)}\n />\n \n \n \n \n \n \n
\n \n {focusedAccount.accountId &&\n this.setState({ prrCalculatorShow: false })}\n account={focusedAccount}\n disablePRRButtonInDetails={() => this.setState({ prrButtonDisabled: true })}\n />\n }\n\n
\n }\n\n this.setState({ showTransactionDetailsModal: false })}\n />\n\n this.setState({ showCancelConfirmationModal: false })}\n onConfirm={() => this.upcomingTransactionCancelHandler(selectedTransaction)}\n isLoading={this.state.cancelTransactionLoading}\n />\n\n {Object.values(focusedAccount.permissions).indexOf(true) !== -1 ? (\n \n ) : (\n this.props.accountActionHandle('documents', accountId, groupId, agentId)}\n />\n )}\n
\n );\n }\n /* eslint-enable indent */\n }\n}\n\nexport default connect(select, {\n getAccountDetails,\n getAccountsByAgent,\n getUpcomingTransactions,\n optionsGet,\n cancelTransaction,\n notificationShow,\n getScheduledTransaction,\n})(sizify(AccountDetails));","export const ACCOUNT_TYPE_INSTITUTIONAL = 'Institutional';\nexport const ACCOUNT_TYPE_UGMA_UTMA = 'UGMA/UTMA';\nexport const ACH_PAYMENT = 'Ach';\nexport const ACCOUNT_OWNER = 'P';\nexport const BENEFICIARY = 'B';\nexport const CHECK_PAYMENT = 'Check';\nexport const K12_ED = 'K-12Tuition';\nexport const FULL_BALANCE = 'Full Balance';\nexport const HIGHER_ED = 'HigherEd';\nexport const NONQUALIFIED = 'Nonqualified';\nexport const ONE_TIME = 'One-Time';\nexport const PARTIAL_BALANCE = 'Partial Balance';\nexport const SCHOOL = 'I';\nexport const ELECTRONIC_PAYMENT = 'ElectronicSchoolPayment';","import { find, groupBy, reduce, uniq, some, sortBy, filter, replace } from 'lodash';\nimport dayjs from 'dayjs';\nimport qs from 'qs';\nimport { currencyFormatter, properCase } from '@frontend/common';\n\nconst isBirthdayInRange = (range, start) => {\n const beginning = dayjs(start).startOf('day');\n const end = dayjs(beginning).add(range);\n return dob => {\n const date = dayjs(dob).year(beginning.year());\n if (date.isBefore(beginning)) {\n date.year(date.year() + 1);\n }\n return date.isBetween(beginning, end, null, '[]');\n };\n};\n\nconst commonMetricsWrapper = accountsByGroup => {\n const birthdayFilter = isBirthdayInRange(dayjs.duration('P30D'));\n const decimalRegex = /\\.\\d\\d/;\n return accountsByGroup.map(accountGraphGroup => {\n const accounts = accountGraphGroup.accountList;\n return ({\n ...accountGraphGroup,\n assets: replace(currencyFormatter(\n accounts && accounts.length > 0 ?\n reduce(accounts, ((sum, account) => sum + account.AcctBalance), 0).toFixed() : 0\n ), decimalRegex, ''),\n avgBalance: replace(currencyFormatter(\n accounts && accounts.length > 0 ?\n (reduce(accounts, ((sum, account) => sum + account.AcctBalance), 0) / accounts.length).toFixed() : 0\n ), decimalRegex, ''),\n upcomingBirthdays: accounts && accounts.length > 0 ?\n accounts.map(account => account.BenBirthDate).filter(birthdayFilter).length : 0,\n zeroBalances: accounts && accounts.length > 0 ? filter(accounts,\n account => account.AcctBalance === 0\n ).length : 0,\n });\n });\n};\n\nconst accountsMetricTransformer = accounts => {\n return commonMetricsWrapper([{\n accounts: accounts !== undefined ? accounts.length : 0,\n accountList: accounts\n }])[0];\n};\n\nconst accountsByAgeBandFilter = (accounts, ageBrackets) => {\n const now = dayjs();\n const accountsByAgeBand = groupBy(accounts,\n account => find(ageBrackets, ageBracket => {\n const age = now.diff(dayjs(account.BenBirthDate), 'year');\n return (ageBracket.maxAge === null && age >= ageBracket.minAge) ||\n (ageBracket.maxAge !== null && (ageBracket.minAge <= age && age <= ageBracket.maxAge));\n }).displayName\n );\n return commonMetricsWrapper(ageBrackets.map(ageBand => ({\n accounts: accountsByAgeBand[ageBand.displayName] !== undefined ? accountsByAgeBand[ageBand.displayName].length : 0,\n key: ageBand.displayName,\n accountList: accountsByAgeBand[ageBand.displayName]\n })));\n};\n\nconst accountsByAgeFilter = (accounts) => {\n const now = dayjs();\n const accountsByAge = groupBy(accounts,\n account => now.diff(dayjs(account.BenBirthDate), 'year')\n );\n const ages = uniq(sortBy([\n ...Array.from(Array(20).keys()).map(age => `${age}`),\n ...Object.keys(accountsByAge)\n ], parseInt));\n\n return commonMetricsWrapper(ages.map(years => ({\n accounts: accountsByAge[years] !== undefined ? accountsByAge[years].length : 0,\n key: years,\n accountList: accountsByAge[years]\n })));\n};\n\n/**\n *\n * @param {{ageGroups: Array, ages: Array, upcomingBirthdaysDuration: Object?, zeroBalances: boolean}} filters\n * @returns {string}\n */\nconst filtersToSearchString = (filters) => {\n return qs.stringify({\n ageGroup: filters.ageGroups,\n age: filters.ages,\n upcomingBirthdays: filters.upcomingBirthdaysDuration ? filters.upcomingBirthdaysDuration.toISOString() : undefined,\n zeroBalances: filters.zeroBalances ? filters.zeroBalances : undefined,\n }, { indices: false });\n};\n\n/**\n * Parses the search parameters in the url and creates a filters object that will be used to filter the account list\n * @param {string} search\n * @returns {{ageGroups: Array, ages: Array, upcomingBirthdaysDuration: Object?, zeroBalances: boolean}}\n */\nconst queryParser = (search) => {\n const filters = {\n ageGroups: [],\n ages: [],\n upcomingBirthdaysDuration: null,\n zeroBalances: false\n };\n const query = qs.parse(search, { ignoreQueryPrefix: true });\n if (query) {\n if ('ageGroup' in query) {\n if (Array.isArray(query.ageGroup)) {\n filters.ageGroups.push(...query.ageGroup);\n }\n if (typeof query.ageGroup === 'string') {\n filters.ageGroups.push(query.ageGroup);\n }\n }\n if ('age' in query) {\n if (Array.isArray(query.age)) {\n filters.ages.push(...query.age);\n }\n if (typeof query.age === 'string') {\n filters.ages.push(query.age);\n }\n }\n if ('upcomingBirthdays' in query && typeof query.upcomingBirthdays === 'string') {\n const upcomingBirthdaysDuration = dayjs.duration(query.upcomingBirthdays);\n if (dayjs.isDuration(upcomingBirthdaysDuration)) {\n filters.upcomingBirthdaysDuration = upcomingBirthdaysDuration;\n }\n }\n if ('zeroBalances' in query && typeof query.zeroBalances === 'string') {\n filters.zeroBalances = true;\n }\n }\n return filters;\n};\n\n/**\n * Checks array of parsed ageGroups from url and returns true if Beneficiary Age is within any of the ageGroups\n * @param {string[]} ageGroups\n * @param account\n * @returns {boolean}\n */\nconst isInAgeGroups = (ageGroups, account) => {\n return some(ageGroups, (ageGroupString) => {\n if (ageGroupString.indexOf('-') > -1) {\n const ages = ageGroupString.split('-').map(str => parseInt(str, 10));\n if (some(ages, age => Number.isNaN(age))) {\n ageGroupString = find(ages, age => !Number.isNaN(age));\n }\n else {\n return account.BenAge >= ages[0] && account.BenAge <= ages[1];\n }\n }\n else if (ageGroupString.indexOf('+') > -1) {\n return account.BenAge >= parseInt(ageGroupString.slice(0, -1));\n }\n return account.BenAge === parseInt(ageGroupString);\n });\n};\n\n/**\n * Checks array of parsed ages from url and returns true if Beneficiary Age matches any of the ages\n * @param {string[]} ages\n * @param account\n * @returns {boolean}\n */\nconst isInAges = (ages, account) => {\n return some(ages, ageString => account.BenAge === parseInt(ageString));\n};\n\n/**\n *\n * @param accounts\n * @param {{ageGroups: Array, ages: Array, upcomingBirthdaysDuration: Object?, zeroBalances: boolean}} filters\n * @returns Object[] of accounts either unchanged or filtered down by filters specified (if any)\n */\nconst accountsByQueryFilters = (accounts, filters) => {\n let filteredAccountList = accounts.filter(account => {\n // if there is ageGroups or ages specified, make sure Beneficiary Age is in at least one of those filters\n if ((filters.ageGroups.length > 0 || filters.ages.length > 0) &&\n (!isInAgeGroups(filters.ageGroups, account) && !isInAges(filters.ages, account))\n ) {\n return false;\n }\n\n // if zeroBalances filter is specified, make sure account balance is 0\n return !(filters.zeroBalances && account.AcctBalance !== 0);\n });\n\n // if upcomingBirthdaysDuration filter is specified, make sure Beneficiary Birthday is within the date range and now\n if (filters.upcomingBirthdaysDuration !== null) {\n const checkDOB = isBirthdayInRange(filters.upcomingBirthdaysDuration);\n filteredAccountList = filteredAccountList.filter(account => checkDOB(account.BenBirthDate));\n }\n\n // sorts by soonest birthday from now, then age ascending\n if (filters.upcomingBirthdaysDuration !== null) {\n const now = dayjs().startOf('day');\n filteredAccountList.sort((accountA, accountB) => {\n const nextBirthdayA = dayjs(accountA.BenBirthDate).year(now.year());\n if (nextBirthdayA.isBefore(now)) {\n nextBirthdayA.add(1, 'y');\n }\n const nextBirthdayB = dayjs(accountB.BenBirthDate).year(now.year());\n if (nextBirthdayB.isBefore(now)) {\n nextBirthdayB.add(1, 'y');\n }\n if (nextBirthdayA.diff(nextBirthdayB) === 0) {\n return Math.sign(accountA.BenAge - accountB.BenAge);\n }\n return Math.sign(nextBirthdayA.diff(nextBirthdayB));\n });\n }\n // sorts by age ascending, then full name ascending\n else if (filters.ages.length > 0 || filters.ageGroups.length > 0) {\n filteredAccountList.sort((accountA, accountB) => {\n const ageDiff = Math.sign(accountA.BenAge - accountB.BenAge);\n if (ageDiff === 0) {\n return properCase(`${accountA.BenFirst} ${accountA.BenLast}`).localeCompare(\n properCase(`${accountB.BenFirst} ${accountB.BenLast}`)\n );\n }\n return ageDiff;\n });\n }\n return filteredAccountList;\n};\n\nexport {\n accountsByAgeBandFilter,\n accountsByAgeFilter,\n accountsMetricTransformer,\n accountsByQueryFilters,\n queryParser,\n filtersToSearchString\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep, includes, partition } from 'lodash';\nimport dayjs from 'dayjs';\n\nimport {\n properCase,\n IconBtnTooltip,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport {\n Avatar,\n Chip,\n Icon,\n MenuItem,\n} from '@mui/material';\n\nimport { getAgeBrackets } from 'components/AppRoot/StaticResources/actions';\nimport { getAccounts } from 'components/Features/protected/Accounts/actions';\nimport { accountsByQueryFilters, queryParser, filtersToSearchString } from 'utils/helpers/data_filters';\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\n\nimport { ACCT_STATUS } from '../constants';\nimport { ACCOUNT_TYPE_UGMA_UTMA } from '../Transactions/Withdrawals/constants';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n ageBrackets: state.static.ageBrackets,\n});\n\n\nexport class AccountsList extends Component {\n\n static propTypes = {\n getAccounts: PropTypes.func.isRequired,\n accountList: PropTypes.array,\n getAgeBrackets: PropTypes.func.isRequired,\n ageBrackets: PropTypes.array,\n accountActionHandle: PropTypes.func.isRequired,\n location: PropTypes.shape({\n search: PropTypes.string\n }).isRequired,\n history: PropTypes.shape({\n push: PropTypes.func\n }).isRequired,\n };\n\n state = {\n search: this.props.location.search,\n filters: queryParser(this.props.location.search),\n filterChips: [],\n showAllChips: false,\n menuItemsSelected: [],\n accounts: [],\n loading: false,\n };\n\n static setupFilterChips(ageBrackets, filters) {\n return [\n {\n label: 'Upcoming Birthdays (30 days)',\n key: 'upcomingBirthdaysDuration',\n avatar: (\n \n cake\n \n ),\n isActive: filters => filters.upcomingBirthdaysDuration !== null,\n addFilter: filters => ({\n ...filters,\n upcomingBirthdaysDuration: dayjs.duration('P30D')\n }),\n removeFilter: filters => ({\n ...filters,\n upcomingBirthdaysDuration: null\n })\n },\n {\n label: 'Zero Balance Accounts',\n key: 'zeroBalances',\n avatar: (\n \n attach_money\n \n ),\n isActive: filters => filters.zeroBalances,\n addFilter: filters => ({\n ...filters,\n zeroBalances: true\n }),\n removeFilter: filters => ({\n ...filters,\n zeroBalances: false\n })\n },\n ...(filters.ages.map((age) => ({\n label: `Age ${age}`,\n key: `age-${age}`,\n isActive: filters => includes(filters.ages, `${age}`),\n addFilter: filters => ({\n ...filters,\n ages: [\n ...filters.ages,\n `${age}`\n ]\n }),\n removeFilter: filters => ({\n ...filters,\n ages: filters.ages.filter(ageFilter => ageFilter !== `${age}`)\n })\n }))),\n ...ageBrackets.map(ageGroup => ({\n label: ageGroup.longDisplayName,\n key: `ageGroup-${ageGroup.displayName}`,\n isActive: filters => includes(filters.ageGroups, ageGroup.displayName),\n addFilter: filters => ({\n ...filters,\n ageGroups: [\n ...filters.ageGroups,\n ageGroup.displayName\n ]\n }),\n removeFilter: filters => ({\n ...filters,\n ageGroups: filters.ageGroups.filter(ageGroupFilter => ageGroupFilter !== ageGroup.displayName)\n })\n }))\n ];\n }\n\n accountsGet() {\n if (this.props.accountList.length === 0) {\n this.setState({ loading: true });\n Promise.all([this.props.getAccounts(), this.props.getAgeBrackets()])\n .then(() => {\n this.setState({\n accounts: this.tableDataFormat(accountsByQueryFilters(this.props.accountList, this.state.filters)),\n filterChips: AccountsList.setupFilterChips(this.props.ageBrackets, this.state.filters),\n loading: false,\n });\n })\n .catch(() => null);\n }\n else {\n this.setState({\n accounts: this.tableDataFormat(accountsByQueryFilters(this.props.accountList, this.state.filters)),\n filterChips: AccountsList.setupFilterChips(this.props.ageBrackets, this.state.filters),\n });\n }\n }\n\n tableDataFormat(accounts) {\n const formattedAccounts = cloneDeep(accounts);\n\n formattedAccounts.forEach(account => {\n account.AgentName = properCase(`${account.AgtFirst} ${account.AgtLast}`);\n account.BeneficiaryName = properCase(`${account.BenFirst} ${account.BenLast}`);\n account.PcName = properCase(`${account.PcFirstName} ${account.PcLastName}`);\n });\n\n return formattedAccounts;\n }\n\n addFilter = (filterChip) => {\n const newFilters = filterChip.addFilter(this.state.filters);\n this.setState({\n filters: newFilters\n });\n this.props.history.push({\n pathname: '/accounts',\n search: `?${filtersToSearchString(newFilters)}`\n });\n };\n\n removeFilter = (filterChip) => {\n const newFilters = filterChip.removeFilter(this.state.filters);\n this.setState({\n filters: newFilters,\n });\n this.props.history.push({\n pathname: '/accounts',\n search: `?${filtersToSearchString(newFilters)}`\n });\n };\n\n renderFilterComponent = () => {\n const { showAllChips, filters, filterChips } = this.state;\n const chipPartition = partition(filterChips, chip => chip.isActive(filters));\n return (\n
\n
\n this.setState({ showAllChips: !showAllChips })}\n title='Filter'\n />\n
\n {filterChips.map(filterChip => (\n {\n this.setState({ showAllChips: false });\n filterChip.isActive(filters) ? this.removeFilter(filterChip) : this.addFilter(filterChip);\n }}\n style={filterChip.isActive(filters) ? { color: 'var(--accent)', fontWeight: 'bold' } : {}}\n >\n {filterChip.label}\n \n ))}\n
\n this.setState({ showAllChips: false })}\n />\n
\n {chipPartition[0].map(filterChip => (\n close}\n onDelete={() => this.removeFilter(filterChip)}\n style={{ margin: '2px 5px 2px 0', color: '#fff' }}\n />\n ))}\n
\n );\n }\n\n componentDidMount() {\n this.accountsGet();\n }\n\n componentDidUpdate() {\n const { location: { search }, accountList } = this.props;\n if (search.length > 0 && search !== this.state.search) {\n const newFilters = queryParser(search);\n this.setState({\n search,\n filters: newFilters,\n accounts: this.tableDataFormat(accountsByQueryFilters(accountList, newFilters)),\n });\n }\n }\n\n render() {\n return (\n `Level ${data}`,\n },\n {\n key: 'AcctStatus',\n title: 'Status',\n type: 'string',\n hideOn: ['phone', 'tablet'],\n },\n {\n key: 'AcctBalance',\n title: 'Market Value',\n type: 'currency',\n customStyle: { width: '.75fr' }\n },\n ]}\n actions={[\n {\n displayName: 'View Details',\n type: 'menu',\n onSelect: row => this.props.history.push(getAccountBaseRoute({ agentId: row.AgentId, groupId: row.AccountGroupId, accountId: row.AccountId })),\n },\n {\n displayName: 'Option Changes',\n type: 'menu',\n onSelect: row => this.props.accountActionHandle('optionChanges', row.AccountId, row.AccountGroupId, row.AgentId),\n showIf: row => JSON.parse(row.OptionChange) && row.AcctStatus === ACCT_STATUS.OPEN,\n },\n {\n displayName: 'Contributions',\n type: 'menu',\n onSelect: row => this.props.accountActionHandle('contributions', row.AccountId, row.AccountGroupId, row.AgentId),\n showIf: row => JSON.parse(row.Contribute) && row.AcctStatus === ACCT_STATUS.OPEN,\n },\n {\n displayName: 'Transfers',\n type: 'menu',\n onSelect: row => this.props.accountActionHandle('transfers', row.AccountId, row.AccountGroupId, row.AgentId),\n showIf: row => JSON.parse(row.Transfer) && row.AcctStatus === ACCT_STATUS.OPEN,\n },\n {\n displayName: 'Withdrawals',\n type: 'menu',\n onSelect: row => this.props.accountActionHandle('withdrawals', row.AccountId, row.AccountGroupId, row.AgentId),\n showIf: row => JSON.parse(row.Withdraw) && row.AcctStatus === ACCT_STATUS.OPEN,\n },\n {\n displayName: 'Gifting',\n type: 'menu',\n onSelect: row => this.props.accountActionHandle('gifting', row.AccountId, row.AccountGroupId, row.AgentId),\n showIf: row => JSON.parse(row.FaLevel) > 1 && row.AcctStatus === ACCT_STATUS.OPEN && row.AccountType !== ACCOUNT_TYPE_UGMA_UTMA,\n },\n {\n displayName: 'Documents',\n type: 'menu',\n onSelect: row => this.props.accountActionHandle('documents', row.AccountId, row.AccountGroupId, row.AgentId),\n },\n ]}\n >\n events.tableSearchAccessed('Accounts List', window.location.pathname)}\n />\n \n \n \n \n \n \n );\n }\n}\n\nexport default withRouter(connect(select, { getAccounts, getAgeBrackets })(AccountsList));\n","/*\n*\n* PageNotFound Component\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n Icon,\n Button,\n} from '@mui/material';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nexport class PageNotFound extends Component {\n\n static propTypes = {\n location: PropTypes.object.isRequired\n };\n\n componentDidMount() {\n events.pageNotFoundHit(this.props.location.pathname);\n }\n\n render() {\n return (\n
\n
\n {'¯\\\\_(ツ)_/¯'}\n
\n

\n Oops! Looks like you reached a page that doesn't exist.\n

\n this.props.history.push('/')}\n >\n keyboard_arrow_left\n Back to Home\n \n
\n );\n }\n}\n\nexport default withRouter(PageNotFound);","/*\n*\n* GiactRejection Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n FormHelperText,\n} from '@mui/material';\nimport {\n Modal,\n} from '@frontend/common';\n\nimport styles from './styles.module.css';\n\nGiactRejectionModal.propTypes = {\n open: PropTypes.bool.isRequired,\n handleCloseGiactRejectionModal: PropTypes.func.isRequired,\n};\n\nexport function GiactRejectionModal({ open, handleCloseGiactRejectionModal }) {\n \n return (\n handleCloseGiactRejectionModal()}\n modal={false}\n maxWidth='md'\n fullWidth\n >\n
\n \n Our verification process was not able to authenticate your financial institution account.\n \n
    \n
  • Please ensure that the name at the financial institution matches your name exactly and that you are not attempting to use a bank account associated with a third party.
  • \n
  • Account verification services are provided by GIACT Systems, LLC and are based on information provided by financial institutions. my529 does not have information regarding the specific reasons for a decline.
  • \n
\n

How Do I Correct Information GIACT Has About Me?

\n

If information reflected within your bank or credit union Disclosure of Consumer Report Information is inaccurate, you may initiate a dispute at no cost by calling GIACT Systems toll-free at 833.802.8092 from 8:30 a.m. to 5 p.m. CT, emailing support@giact.com, or writing to GIACT Systems at:

\n
    \n
  • GIACT Systems, LLC.
  • \n
  • Attention: Consumer Resolutions
  • \n
  • P.O. Box 1116
  • \n
  • Allen, TX 75013
  • \n
\n

For more information, visit https://www.giact.com/consumer-inquiries/

\n

Additional Questions?

\n

You may contact my529 by emailing advisorinfo@my529.org or by calling our office toll-free at 888.529.1886 on business days from 7 a.m. to 5 p.m. MT.

\n
\n \n );\n}\n\nexport default GiactRejectionModal;\n","/*\n*\n* AddBankAccount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n Modal,\n notificationShow\n} from '@frontend/common';\nimport {\n addBankAccount,\n getAgentBankAccounts,\n getBankRoutingInfo\n} from '../../../actions';\nimport checkExample from './CheckExample.gif';\nimport {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Input,\n InputLabel,\n Radio,\n RadioGroup,\n TextField\n} from '@mui/material';\n\nimport GiactRejectionModal from '../GiactRejectionModal';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n bankName: state.accounts.bankName,\n GiactResultTypes: state.static.environmentVars.GiactResultTypes,\n ACHBankWithdrawalLanguage: state.static.environmentVars.ACHBankWithdrawalLanguage,\n});\n\nexport class AddBankAccount extends React.Component {\n\n static propTypes = {\n addBankAccount: PropTypes.func.isRequired,\n agentId: PropTypes.string.isRequired,\n bankName: PropTypes.string.isRequired,\n contributionDetailsGet: PropTypes.func.isRequired,\n getAgentBankAccounts: PropTypes.func.isRequired,\n getBankRoutingInfo: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n GiactResultTypes: PropTypes.object.isRequired,\n ACHBankWithdrawalLanguage: PropTypes.string.isRequired,\n };\n\n state = {\n bankAccountLoading: false,\n bankAccountNumber: '',\n bankAccountType: '',\n bankName: '',\n confirmedBankAccountNumber: '',\n copyError: '',\n routingNumber: '',\n errors: {},\n showGiactRejectionModal: false,\n };\n\n bankAccountAdd = () => {\n const { bankAccountNumber, bankAccountType, routingNumber } = this.state;\n const { GiactResultTypes } = this.props;\n\n const bankInfo = {\n BankAccountNumber: bankAccountNumber,\n BankAccountType: bankAccountType,\n RoutingNumber: routingNumber\n };\n\n this.setState({ bankAccountLoading: true });\n\n this.props.addBankAccount(this.props.agentId, bankInfo)\n .then((response) => { \n const newBankAccount = response.payload.data;\n const GiactResult = newBankAccount.GiactResult;\n this.formClear();\n this.props.onClose();\n // check on GIACT here, set flag to show the rejection screen\n this.setState({ bankAccountLoading: false, copyError: '' });\n if (GiactResult === GiactResultTypes.Fail) {\n return this.setState({ showGiactRejectionModal: true });\n }\n else {\n return this.props.getAgentBankAccounts(this.props.agentId, 'contributions')\n .then(() => this.props.contributionDetailsGet())\n .catch(() => null);\n }\n\n })\n .catch(() => this.setState({ bankAccountLoading: false, copyError: '' }));\n }\n\n copyPrevent = () => {\n const confirmField = document.getElementById('confirmedBankAccountNum');\n\n confirmField.onpaste = (e) => {\n e.preventDefault();\n this.setState({ copyError: 'Please type bank account number to confirm.' });\n };\n }\n\n formClear = () => {\n this.setState({\n bankAccountNumber: '',\n bankAccountType: '',\n bankName: '',\n confirmedBankAccountNumber: '',\n routingNumber: '',\n });\n }\n\n inputFormat = (value) => {\n return value.replace(/[^0-9.]/g, '').replace(/(\\.*)\\./g, '');\n }\n\n routingInfoGet = () => {\n if (this.state.routingNumber) {\n this.props.getBankRoutingInfo(this.state.routingNumber)\n .then(() => this.setState({ bankName: this.props.bankName, errors: {} }))\n .catch((error) => this.setState({ bankName: '', errors: { routingNumber: error.payload.data[0].Message } }));\n }\n }\n\n render() {\n const { onClose, open, ACHBankWithdrawalLanguage, } = this.props;\n const { bankAccountLoading, bankAccountNumber, bankAccountType, bankName, confirmedBankAccountNumber, copyError, errors, routingNumber } = this.state;\n const confirmError = confirmedBankAccountNumber.length > 0 && bankAccountNumber !== confirmedBankAccountNumber;\n\n return (\n <>\n this.bankAccountAdd(),\n buttonType: 'contained',\n disabled: bankAccountNumber !== confirmedBankAccountNumber || !bankAccountNumber || !bankAccountType || !confirmedBankAccountNumber || !routingNumber || Object.keys(errors).length > 0,\n label: 'Add',\n loading: bankAccountLoading\n },\n {\n action: () => onClose(),\n label: 'Cancel',\n disabled: bankAccountLoading\n },\n ]}\n maxWidth='lg'\n onCloseModal={onClose}\n show={open}\n title='Add Bank Account'\n >\n
\n
\n \n Bank Account Type\n this.setState({ bankAccountType: e.target.value })}\n value={bankAccountType}\n >\n }\n label='Checking'\n value='Checking'\n />\n }\n label='Savings'\n value='Savings'\n />\n \n \n\n\n \n Routing Number\n this.routingInfoGet()}\n onChange={e => this.setState({ routingNumber: e.target.value, errors: { ...errors, routingNumber: '' } })}\n value={routingNumber}\n />\n {errors.routingNumber}\n \n {bankName && (
{bankName}
)}\n\n this.setState({ bankAccountNumber: e.target.value })}\n onInput={e => e.target.value = this.inputFormat(e.target.value)}\n label='Bank Account Number'\n />\n\n \n Confirm Bank Account Number\n this.setState({ confirmedBankAccountNumber: e.target.value, copyError: '' })}\n onFocus={() => this.copyPrevent()}\n onInput={e => e.target.value = this.inputFormat(e.target.value)}\n value={confirmedBankAccountNumber}\n />\n {confirmError && Bank account numbers must match.}\n {copyError}\n \n
\n
\n Check Example\n
\n
\n
\n
    \n
  • The linked account must be a checking or savings account at a bank or credit union located in the United States.
  • \n
  • You must own the linked account and your name must be in the account title.
  • \n
  • my529 will verify the information you provide with the appropriate financial institution.
  • \n
  • You will not be able to make a withdrawal to a newly linked bank account from my529 for {ACHBankWithdrawalLanguage} business days after linking the bank account. Please plan accordingly.
  • \n
\n
\n \n this.setState({ showGiactRejectionModal: false })}\n />\n \n );\n }\n}\n\nexport default connect(select, {\n addBankAccount,\n getAgentBankAccounts,\n getBankRoutingInfo,\n notificationShow\n})(AddBankAccount);\n","/*\n*\n* ContributionDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Card } from '@frontend/common';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n contributionDetails: state.accounts.contributionDetails\n});\n\nexport class ContributionDetails extends React.Component {\n static propTypes = {\n contributionDetails: PropTypes.object.isRequired,\n loading: PropTypes.bool.isRequired,\n };\n\n render() {\n const { loading, contributionDetails } = this.props;\n \n return (\n // There are no CSS styles for ContributionDetails_container\n \n
\n
Account Owner
\n {loading ? '' : contributionDetails.agentName}\n
\n
\n );\n }\n}\n\nexport default connect(select, {})(ContributionDetails);\n","/*\n*\n* TermsConditions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n ACHBankWithdrawalLanguage: state.static.environmentVars.ACHBankWithdrawalLanguage,\n});\n\nexport class TermsConditions extends React.Component {\n static propTypes = {\n contributionType: PropTypes.string,\n ACHBankWithdrawalLanguage: PropTypes.string.isRequired,\n };\n\n static defaultProps = {\n contributionType: 'non-special'\n };\n\n render() {\n /* eslint-disable quotes */\n return (\n
\n

Terms and Conditions

\n

Please review the following Terms and Conditions regarding contributions

\n

I have informed my client of the following:

\n {this.props.contributionType === 'special' && (\n
\n

About Special Occasion Contributions:

\n
    \n
  • You may initiate annual contributions for birthdays, holidays, or other special occasions by entering a dollar amount and date (when applicable) the account owner wants the transaction to occur.
  • \n
  • Contributions will occur every year on the date selected (or the next business day if the date falls on a holiday or weekend).
  • \n
  • One week prior to the scheduled contribution day, my529 will send the account owner an email reminder of the upcoming contributions.
  • \n
\n
\n )}\n

Warning: The following types of accounts cannot be used to fund online contributions. Requests to do so will be rejected and may incur reject fees and/or market losses:

\n
    \n
  • Brokerage and mutual fund accounts (such as Vanguard, Charles Schwab, etc.)
  • \n
  • Accounts drawn on credit unions that do not clear their own checks (they use third-party routing numbers)
  • \n
  • Savings accounts with restricted access privileges
  • \n
  • Bank accounts with UGMA/UTMA designations
  • \n
\n

Although online contributions may not be made from the accounts listed above, checks drawn from those accounts may be submitted, as long as they are:

\n
    \n
  • Made payable to my529
  • \n
  • Sent to my529, PO Box 145100, Salt Lake City, UT 84114-5100
  • \n
  • {\"Marked with the beneficiary's name and my529 account number\"}
  • \n
  • {\"Checks drawn from bank accounts with UGMA/UTMA designations must be contributed to a my529 UGMA/UTMA account in the beneficiary's name.\"}
  • \n
\n

Notes:

\n
    \n
  • {\"A separate transaction will appear on the account owner's bank statement for each my529 account receiving a contribution.\"}
  • \n
  • {\"The account owner's my529 quarterly statement will reflect the contribution(s). This is their contribution receipt.\"}
  • \n
  • The funds will normally be debited from the bank account within three business days after the contribution appears in the my529 account.
  • \n
  • my529 UGMA/UTMA accounts may not be funded with an online contribution schedule. Instead, to set up or change automated contributions to an UGMA/UTMA account, please submit the Scheduled Electronic Contributions Authorization/Change form (form 200).
  • \n
  • The account owner will receive an email confirming the setup, change, or cancellation of their contribution schedule.
  • \n
  • The account owner should ensure that funds are available on the agreed-upon contribution day(s). Returned transactions or insufficient funds could cause fees to be assessed by my529 and/or the financial institution.
  • \n
  • Cancellation Instructions: This authorization is to remain in full effect until the end date (if applicable) or until the following:\n
      \n
    1. The bank account(s) specified above are deleted; or
    2. \n
    3. \n my529 is notified of the revocation of this authorization by doing one of the following:\n
        \n
      1. logging into Account Access at my529.org and using the online account feature Manage Contributions; {this.props.contributionType === 'special' && ('or')}
      2. \n
      3. contacting my529 by telephone at 800.418.2551{this.props.contributionType !== 'special' ? '; or' : '.'}
      4. \n {this.props.contributionType !== 'special' && (\n
      5. submitting Form 200 via fax to 800.214.2956 or via U.S. Mail to PO Box 145100, Salt Lake City, UT 84114-5100.
      6. \n )}\n
      \n
    4. \n
    \n
  • \n
  • To cancel or make changes to this contribution, your online request must be received before the close of market trading with the New York Stock Exchange (NYSE) (normally 2:00 p.m. MT), on the business day of the scheduled contribution. This contribution may not be cancelled or changed after that deadline. Any other revocation will not be effective until my529 has had a reasonable opportunity to act on the termination notification.
  • \n
  • You will not be able to make a withdrawal to a newly linked bank account from my529 for {this.props.ACHBankWithdrawalLanguage} business days after linking the bank account. Please plan accordingly.
  • \n
  • If I am an authorized user in my529’s Limited Power of Attorney (LPOA) program, and have been granted Level 2 or Level 3 LPOA authorization, I certify that I have been instructed and authorized by my client to add the bank account information contained herein and initiate a debit from that bank account to contribute to my client’s my529 account(s). I and my firm agree to indemnify and hold harmless my529 for any losses associated with this transaction.
  • \n
\n {\"I authorize my529 to initiate, and the account owner's financial institution to honor, an electronic payment in the amount(s) specified above from the account owner's bank account. This authority pertains to the account(s) listed above. The information I have provided is accurate. I understand that rejected transactions or insufficient funds could cause fees to be assessed by my529 and/or the account owner's financial institution.\"}\n
\n );\n /* eslint-enable quotes */\n }\n}\n\nexport default connect(select, {})(TermsConditions);\n","/*\n*\n* NewOneTime Component\n*\n*/\nimport React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\nimport { clone } from 'lodash';\nimport {\n Card,\n currencyFormatter,\n CurrencyInput,\n DatePicker,\n LoadingOverlay,\n Dropdown,\n} from '@frontend/common';\nimport {\n ONE_TIME\n} from '../constants';\nimport {\n Checkbox,\n Icon,\n Button,\n FormControlLabel,\n Step,\n StepButton,\n Stepper,\n Tooltip\n} from '@mui/material';\nimport TermsConditions from '../TermsConditions';\n\nimport events from 'utils/ga';\n\nimport transactionsStyles from '../../styles.module.css';\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n contributionDetails: state.accounts.contributionDetails,\n contributionVariables: state.static.environmentVars.contributionVariables,\n});\n\nexport class NewOneTime extends React.Component {\n\n static propTypes = {\n bankAccountsLoading: PropTypes.bool.isRequired,\n contributionDetails: PropTypes.object.isRequired,\n contributionCreate: PropTypes.func.isRequired,\n contributionEdit: PropTypes.func.isRequired,\n contributionVariables: PropTypes.object.isRequired,\n createContributionLoading: PropTypes.bool.isRequired,\n isEditing: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n onAddBankAccountModalOpen: PropTypes.func.isRequired,\n smallWidth: PropTypes.bool.isRequired,\n serverDateTime: PropTypes.string,\n };\n\n state = {\n contribution: {\n bankAccount: {\n id: '',\n name: '',\n number: '',\n },\n day1: this.props.contributionVariables.oneTimeContributionDates && this.props.contributionVariables.oneTimeContributionDates[0],\n selectedAccounts: [],\n type: ONE_TIME\n },\n errors: [],\n step0ValidationHasRun: false,\n step1ValidationHasRun: false,\n stepIndex: 0,\n termsChecked: false,\n };\n\n accountSelect = (value, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n const matchingAccount = this.props.contributionDetails.agentAccounts.find(agentAccount => agentAccount.accountId === value);\n const accountUpdatedWithAmount = { ...matchingAccount, contributionAmount: selectedAccounts[rowIndex].contributionAmount };\n\n selectedAccounts.splice(rowIndex, 1, accountUpdatedWithAmount);\n\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n addAccount = () => {\n const { contribution: { selectedAccounts } } = this.state;\n\n const newSelectedAccounts = [...selectedAccounts, { accountId: '', contributionAmount: 0 }];\n this.contributionSet('selectedAccounts', newSelectedAccounts);\n }\n\n amountHandle = ({ floatValue = 0 }, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n\n selectedAccounts[rowIndex].contributionAmount = floatValue;\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n bankAccountSelectHandle = (value) => {\n this.contributionSet('bankAccount', this.props.contributionDetails.agentBankAccounts.find(bankAccount => bankAccount.id === value));\n }\n\n contributionDateHandle = (e) => {\n this.contributionSet('day1', e);\n }\n\n contributionDatesDisable = (date) => {\n return this.props.contributionVariables.oneTimeContributionDates.every(validContributionDate => !dayjs(validContributionDate).isSame(date, 'day'));\n }\n\n contributionSet = (key, value) => {\n this.setState({ contribution: { ...this.state.contribution, [key]: value } });\n if (\n (this.state.stepIndex === 0 && this.state.step0ValidationHasRun) ||\n (this.state.stepIndex === 1 && this.state.step1ValidationHasRun)\n ) {\n this.formValidate();\n }\n }\n\n defaultSelectedAccountSet = () => {\n this.contributionSet('selectedAccounts', [clone(this.props.contributionDetails.agentAccounts.find(agentAccount => agentAccount.accountId === this.props.contributionDetails.selectedAccountId))]);\n }\n\n errorGet = (key, row) => {\n const error = this.state.errors.find(error => error.key === key && error.row === row);\n return error ? error.message : '';\n }\n\n formValidate = (nextStep = () => null) => {\n const { maxOneTimeContribution, minOneTimeContribution } = this.props.contributionVariables;\n switch (this.state.stepIndex) {\n case 0: {\n this.setState(({ contribution: { selectedAccounts } }) => {\n const errors = [];\n selectedAccounts.forEach(({ accountId, contributionAmount }, index) => { // validates amounts against min and max parameters\n if ((accountId && contributionAmount > maxOneTimeContribution) || (accountId && contributionAmount < minOneTimeContribution)) {\n errors.push({\n key: 'amount',\n message: 'Enter a valid amount.',\n row: index\n });\n }\n if (!accountId && contributionAmount) { // validates all accounts that also have amounts entered have a beneficiary selected\n errors.push({\n key: 'account',\n message: 'Select an account or remove the row.',\n row: index\n });\n }\n });\n return { errors, step0ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n\n case 1: {\n this.setState(({ contribution: { bankAccount } }) => {\n const errors = [];\n if (!bankAccount.id) {\n errors.push({\n key: 'bankAccount',\n message: 'Select an existing bank account or add a new one.'\n });\n }\n return { errors, step1ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n default: break;\n }\n }\n\n nextStepHandle = () => {\n this.setState({ stepIndex: this.state.stepIndex + 1 });\n window.scrollTo(0, 0);\n !this.props.isEditing && events.contributionsOneTimeStep(this.state.stepIndex + 1);\n }\n\n prevStepHandle = () => {\n this.setState({ stepIndex: this.state.stepIndex - 1 });\n window.scrollTo(0, 0);\n !this.props.isEditing && events.contributionsOneTimeStep(this.state.stepIndex - 1);\n }\n\n removeAccount = (rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n selectedAccounts.splice(rowIndex, 1);\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose = () => {\n const { contribution, stepIndex, termsChecked } = this.state;\n const { contributionEdit, contributionCreate, createContributionLoading, isEditing } = this.props;\n const cancelButton = (\n \n Cancel\n \n );\n const nextButton = (\n this.formValidate(this.nextStepHandle)}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Next\n \n );\n const backButton = (\n this.prevStepHandle()}\n variant='text'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Back\n \n );\n const agreeButton = (\n isEditing ? contributionEdit(contribution) : contributionCreate(contribution)}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n I agree\n \n );\n const printButton = (\n window.print()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Print\n \n );\n const finishButton = (\n this.props.history.goBack()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Finish\n \n );\n\n let buttons = [];\n switch (stepIndex) {\n case 0:\n buttons = [\n cancelButton,\n nextButton\n ];\n break;\n case 1:\n buttons = [\n cancelButton,\n backButton,\n nextButton\n ];\n break;\n case 2:\n buttons = [\n cancelButton,\n backButton,\n \n {agreeButton}\n \n ];\n break;\n case 3:\n buttons = [\n printButton,\n finishButton,\n ];\n break;\n default: break;\n }\n return buttons;\n }\n\n step0ContentCompose = () => {\n const { contribution: { selectedAccounts }, errors } = this.state;\n const { contributionDetails: { agentAccounts }, isEditing } = this.props;\n\n return (\n
\n {selectedAccounts.map((selectedAccount, rowIndex) => {\n return (\n
\n
\n this.accountSelect(value, rowIndex)}\n options={(isEditing ? selectedAccounts : agentAccounts).map(account => ({\n value: account.accountId,\n display: `${account.beneficiaryName} ...${account.accountNumber.slice(account.accountNumber.length - 5)}`,\n props: {\n disabled: selectedAccounts.some(selAccount => selAccount.accountId === account.accountId) && selectedAccounts[rowIndex].accountId !== account.accountId,\n },\n }))}\n FormControlProps={{ style: { width: '100%', minWidth: '256px' } }}\n />\n
\n\n
\n this.amountHandle(vals, rowIndex)}\n value={selectedAccount.contributionAmount}\n />\n
\n\n {rowIndex === 0 ?\n
\n remove_circle\n
\n :\n
\n \n this.removeAccount(rowIndex)}>remove_circle\n \n
\n }\n
\n );\n })}\n\n {agentAccounts.length !== selectedAccounts.length && !isEditing &&\n
\n \n this.addAccount()}>add_circle\n \n
\n }\n\n
\n {errors.some(error => error.key === 'amount') &&
{`Enter an amount between ${currencyFormatter(this.props.contributionVariables.minOneTimeContribution)} and ${currencyFormatter(this.props.contributionVariables.maxOneTimeContribution)}.`}
}\n
\n
Total:
\n
{currencyFormatter(selectedAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
\n
\n
\n
\n );\n }\n\n step1ContentCompose = () => {\n const { bankAccountsLoading, contributionDetails: { agentBankAccounts }, contributionVariables, onAddBankAccountModalOpen } = this.props;\n\n return (\n
\n \n\n {agentBankAccounts.length > 0 ?\n
\n \n ({\n value: acct.id,\n display: acct.id === 0 ? acct.name : `${acct.name}, ${acct.number}`,\n }))}\n FormControlProps={{ style: { width: '256px' } }}\n />\n \n\n \n add\n \n
\n :\n
\n \n \n Add Bank Account\n \n \n
\n }\n
\n );\n }\n\n step2ContentCompose = () => {\n const { contribution: { bankAccount, day1, selectedAccounts }, termsChecked } = this.state;\n const filteredAccounts = selectedAccounts.filter(account => account.accountId);\n\n return (\n
\n
\n {!this.props.smallWidth &&\n
\n
Account Number
\n {filteredAccounts.map(account => (
{account.accountNumber}
))}\n
\n }\n\n
\n
Beneficiary Name
\n {filteredAccounts.map(account => (
{account.beneficiaryName}
))}\n
\n\n {!this.props.smallWidth &&\n
\n
Bank Account
\n
{bankAccount.name} {bankAccount.type}, {bankAccount.number}
\n
\n }\n\n {!this.props.smallWidth &&\n
\n
Date
\n {filteredAccounts.map(account => (
{dayjs(day1).format('L')}
))}\n
\n }\n\n
\n
Amount
\n {filteredAccounts.map(account => (
{currencyFormatter(account.contributionAmount)}
))}\n
\n
\n\n
\n
Total:
\n
{currencyFormatter(filteredAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
\n
\n\n
\n
\n \n
\n
\n this.setState({ termsChecked: !termsChecked })}\n />\n }\n />\n
\n
\n
\n );\n }\n\n step3ContentCompose = () => {\n const { contribution: { bankAccount, day1, selectedAccounts } } = this.state;\n const filteredAccounts = selectedAccounts.filter(account => account.accountId);\n\n return (\n
\n
\n {!this.props.smallWidth &&\n
\n
Account Number
\n {filteredAccounts.map(account => (
{account.accountNumber}
))}\n
\n }\n\n
\n
Beneficiary Name
\n {filteredAccounts.map(account => (
{account.beneficiaryName}
))}\n
\n\n {!this.props.smallWidth &&\n
\n
Bank Account
\n
{bankAccount.name} {bankAccount.type}, {bankAccount.number}
\n
\n }\n\n {!this.props.smallWidth &&\n
\n
Date
\n {filteredAccounts.map(account => (
{dayjs(day1).format('L')}
))}\n
\n }\n\n
\n
Amount
\n {filteredAccounts.map(account => (
{currencyFormatter(account.contributionAmount)}
))}\n
\n
\n\n
\n
Total:
\n
{currencyFormatter(filteredAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
\n
\n\n
{dayjs(this.props.serverDateTime)\n .format('MM/DD/YYYY h:mm A')} MST
\n
\n Please print a copy of this page for your records.\n
\n
\n );\n }\n\n stepperContentCompose = () => {\n switch (this.state.stepIndex) {\n case 0: return this.step0ContentCompose();\n case 1: return this.step1ContentCompose();\n case 2: return this.step2ContentCompose();\n case 3: return this.step3ContentCompose();\n\n default:\n break;\n }\n }\n\n componentDidMount = () => {\n const { agentAccounts, contribution } = this.props.contributionDetails;\n\n if (Object.keys(agentAccounts).length > 0) {\n if (this.props.isEditing) {\n this.setState({ contribution });\n }\n else {\n this.defaultSelectedAccountSet();\n events.contributionsOneTimeStep(this.state.stepIndex);\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.serverDateTime !== this.props.serverDateTime && this.props.serverDateTime !== null) {\n this.nextStepHandle();\n }\n }\n\n render() {\n const { stepIndex } = this.state;\n return (\n \n
\n \n \n this.setState({ stepIndex: 0 })} variant='contained' disabled={stepIndex === 3}>Amount\n \n \n this.setState({ stepIndex: 1 })} variant='contained' disabled={stepIndex === 3}>Contribution Date & Bank Account\n \n \n this.setState({ stepIndex: 2 })} variant='contained' disabled={stepIndex === 3}>Terms & Conditions\n \n \n this.setState({ stepIndex: 3 })} variant='contained'>Print Review\n \n \n
\n\n
\n {!this.props.loading && this.stepperContentCompose()}\n
\n\n
\n {!this.props.loading && this.stepperButtonsCompose()}\n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {})(NewOneTime));\n","/*\n*\n* NewSpecial Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { clone } from 'lodash';\nimport dayjs from 'dayjs';\nimport {\n Card,\n currencyFormatter,\n CurrencyInput,\n DatePicker,\n Dropdown,\n InfoIcon,\n LoadingOverlay,\n} from '@frontend/common';\nimport {\n getNextRunDate\n} from '../../../actions';\nimport {\n BIRTHDAY,\n ANNUAL_EVENT,\n YEARLY\n} from '../constants';\nimport {\n Checkbox,\n Collapse,\n FormControlLabel,\n Icon,\n Radio,\n RadioGroup,\n Button,\n Step,\n StepButton,\n Stepper,\n Tooltip,\n} from '@mui/material';\nimport TermsConditions from '../TermsConditions';\nimport events from 'utils/ga';\n\nimport transactionsStyles from '../../styles.module.css';\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n contributionDetails: state.accounts.contributionDetails,\n contributionVariables: state.static.environmentVars.contributionVariables,\n nextRunDates: state.accounts.nextRunDates.yearly,\n});\n\nexport class NewSpecial extends React.Component {\n static propTypes = {\n bankAccountsLoading: PropTypes.bool.isRequired,\n contributionDetails: PropTypes.object.isRequired,\n contributionCreate: PropTypes.func.isRequired,\n contributionEdit: PropTypes.func.isRequired,\n contributionVariables: PropTypes.object.isRequired,\n createContributionLoading: PropTypes.bool.isRequired,\n getNextRunDate: PropTypes.func.isRequired,\n isEditing: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n onAddBankAccountModalOpen: PropTypes.func.isRequired,\n smallWidth: PropTypes.bool.isRequired,\n serverDateTime: PropTypes.string,\n };\n\n state = {\n contribution: {\n bankAccount: {\n id: '',\n name: '',\n number: '',\n },\n day1: '',\n occasion: BIRTHDAY.id,\n selectedAccounts: [],\n type: YEARLY\n },\n errors: [],\n nextRunDateLoading: false,\n stepIndex: 0,\n step0ValidationHasRun: false,\n step1ValidationHasRun: false,\n termsChecked: false,\n }\n\n accountSelect = (value, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n const matchingAccount = this.props.contributionDetails.agentAccounts.find(agentAccount => agentAccount.accountId === value);\n\n const accountUpdatedWithInputData = {\n ...matchingAccount,\n contributionAmount: selectedAccounts[rowIndex].contributionAmount,\n endDate: selectedAccounts[rowIndex].endDate\n };\n\n selectedAccounts.splice(rowIndex, 1, accountUpdatedWithInputData);\n\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n addAccount = () => {\n const { contribution: { selectedAccounts } } = this.state;\n const newSelectedAccounts = [...selectedAccounts, { accountId: '', contributionAmount: 0, endDate: '' }];\n this.contributionSet('selectedAccounts', newSelectedAccounts);\n }\n\n amountHandle = ({ floatValue = 0 }, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n\n selectedAccounts[rowIndex].contributionAmount = floatValue;\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n bankAccountSelectHandle = (value) => {\n this.contributionSet('bankAccount', this.props.contributionDetails.agentBankAccounts.find(bankAccount => bankAccount.id === value));\n }\n\n contributionDateHandle = (date, day, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n const account = selectedAccounts[rowIndex];\n const formattedDate = dayjs(date).format('L');\n\n switch (day) {\n case 'endDate':\n account.endDate = formattedDate;\n this.contributionSet('selectedAccounts', selectedAccounts);\n\n if (Object.prototype.hasOwnProperty.call(account, 'beneficiaryBday') && date !== '') {\n this.nextRunDateGet({}, BIRTHDAY.id);\n }\n break;\n case 'day1':\n // wait till user finishes typing the date\n this.contributionSet(day, formattedDate);\n if (dayjs(formattedDate).isValid()) {\n this.nextRunDateGet(formattedDate, day);\n }\n break;\n default: // do nothing\n }\n }\n\n contributionSet = (key, value) => {\n this.setState({ contribution: { ...this.state.contribution, [key]: value } }, () => {\n if (\n (this.state.stepIndex === 0 && this.state.step0ValidationHasRun) ||\n (this.state.stepIndex === 1 && this.state.step1ValidationHasRun)\n ) {\n this.formValidate();\n }\n });\n }\n\n errorGet = (key, row) => {\n const error = this.state.errors.find(error => error.key === key && error.row === row);\n return error ? error.message : '';\n }\n\n formValidate = (nextStep = () => null) => {\n\n switch (this.state.stepIndex) {\n case 0: {\n const { contributionVariables: { maxOneTimeContribution, minOneTimeContribution, firstAvailTradeDate }, nextRunDates } = this.props;\n this.setState(({ contribution: { day1, occasion, selectedAccounts } }) => {\n const errors = [];\n selectedAccounts.forEach(({ accountId, contributionAmount, endDate, nextBdayRunDate }, index) => {\n if ((accountId && contributionAmount > maxOneTimeContribution) || (accountId && contributionAmount < minOneTimeContribution)) { // validates amounts against min and max parameters\n errors.push({\n key: 'amount',\n message: 'Enter a valid amount.',\n row: index\n });\n }\n if (!accountId && contributionAmount) { // validates all accounts that also have amounts entered have a beneficiary selected\n errors.push({\n key: 'account',\n message: 'Select an account or remove the row.',\n row: index\n });\n }\n if (occasion === ANNUAL_EVENT.id) { // validates day1 is selected\n if (!day1) {\n errors.push({\n key: 'day1',\n message: 'Start date is required.'\n });\n }\n else if (!dayjs(day1).isValid()) { // validate date format\n errors.push({\n key: 'day1',\n message: 'Invalid Date Format'\n });\n }\n else if (!dayjs(day1).isBetween(dayjs(firstAvailTradeDate), dayjs(firstAvailTradeDate).add(1, 'y'), null, '[)')) {\n errors.push({\n key: 'day1',\n message: `Start date should be between ${dayjs(firstAvailTradeDate).format('MM/DD/YYYY')} and ${dayjs(firstAvailTradeDate).add(1, 'y')\n .subtract(1, 'd')\n .format('MM/DD/YYYY')}.`\n });\n }\n }\n if (endDate && !dayjs(endDate).isValid()) { // validate date format\n errors.push({\n key: 'endDate',\n message: 'Invalid Date Format',\n row: index\n });\n }\n else if ( // validates end date\n (occasion === ANNUAL_EVENT.id && dayjs(endDate).isSameOrBefore(nextRunDates.day1, 'day')) ||\n (occasion === BIRTHDAY.id && dayjs(endDate).isSameOrBefore(nextBdayRunDate, 'day'))\n ) {\n errors.push({\n key: 'endDate',\n message: 'End date must occur after start date.',\n row: index\n });\n }\n });\n return { errors, step0ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n case 1: {\n this.setState(({ contribution: { bankAccount } }) => {\n const errors = [];\n if (!bankAccount.id) {\n errors.push({\n key: 'bankAccount',\n message: 'Select an existing bank account or add a new one.',\n });\n }\n return { errors, step1ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n default: break;\n }\n }\n\n nextRunDateGet = (date, day) => {\n this.setState({ nextRunDateLoading: true });\n\n if (day === BIRTHDAY.id) {\n const { selectedAccounts } = this.state.contribution;\n const selectedAccountsWithBirthdays = selectedAccounts.filter(account => account.beneficiaryBday);\n const birthdays = selectedAccountsWithBirthdays.map(account => account.beneficiaryBday);\n\n this.props.getNextRunDate(birthdays, day, YEARLY)\n .then(() => {\n this.props.nextRunDates.birthday.forEach((bday, index) => {\n selectedAccountsWithBirthdays[index].nextBdayRunDate = bday;\n });\n this.contributionSet('selectedAccounts', selectedAccounts);\n this.setState({ nextRunDateLoading: false });\n })\n .catch(() => this.setState({ nextRunDateLoading: false }));\n }\n else {\n this.props.getNextRunDate(date, day, YEARLY)\n .then(() => {\n this.setState({ nextRunDateLoading: false });\n })\n .catch(() => this.setState({ nextRunDateLoading: false }));\n }\n }\n\n nextStepHandle = () => {\n this.setState({ stepIndex: this.state.stepIndex + 1 });\n window.scrollTo(0, 0);\n !this.props.isEditing && events.contributionsSpecialStep(this.state.stepIndex + 1);\n }\n\n prevStepHandle = () => {\n this.setState({ stepIndex: this.state.stepIndex - 1 });\n window.scrollTo(0, 0);\n !this.props.isEditing && events.contributionsSpecialStep(this.state.stepIndex - 1);\n }\n\n removeAccount = (rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n selectedAccounts.splice(rowIndex, 1);\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n step0ContentCompose = () => {\n /* eslint-disable indent */\n const { contribution: { day1, occasion, selectedAccounts }, errors } = this.state;\n const { contributionDetails: { agentAccounts }, contributionVariables: { firstAvailTradeDate }, isEditing, nextRunDates } = this.props;\n\n return (\n
\n
\n this.contributionSet('occasion', e.target.value)}\n value={occasion}\n >\n }\n label={BIRTHDAY.display}\n value={BIRTHDAY.id}\n />\n }\n label={\n \n
{ANNUAL_EVENT.display}
\n {/* There are no CSS styles for NewSpecial_radioButtonsInfoIcon */}\n
\n \n
\n
\n }\n value={ANNUAL_EVENT.id}\n />\n \n\n \n this.contributionDateHandle(date, 'day1')}\n value={day1 ? day1 : null}\n />\n {dayjs(nextRunDates.day1).isValid() && dayjs(day1).isValid() && Next run date: {dayjs(nextRunDates.day1).format('L')}}\n \n
\n\n
\n {selectedAccounts.map((selectedAccount, rowIndex) => {\n return (\n
\n
\n this.accountSelect(value, rowIndex)}\n options={(isEditing ? selectedAccounts : agentAccounts).map(acct => ({\n value: acct.accountId,\n display: `${acct.beneficiaryName} ...${acct.accountNumber.slice(acct.accountNumber.length - 5)}`,\n props: isEditing\n ? {}\n : { disabled: selectedAccounts.some(account => account.accountId === acct.accountId) && selectedAccounts[rowIndex].accountId !== acct.accountId }\n }))}\n FormControlProps={{ style: { width: '100%', minWidth: '256px', margin: '0px' } }}\n InputLabelProps={{ shrink: true }}\n />\n
\n\n
\n this.amountHandle(vals, rowIndex)}\n style={{ margin: '0px' }}\n value={selectedAccounts[rowIndex].contributionAmount}\n />\n
\n\n {occasion === BIRTHDAY.id &&\n
\n
\n {selectedAccount.beneficiaryBday && dayjs(selectedAccount.beneficiaryBday).format('MMM D')}\n
\n \n
\n }\n\n
\n this.contributionDateHandle(date, 'endDate', rowIndex)}\n sx={{ margin: '0px', width: '100%' }}\n value={selectedAccount.endDate || null}\n />\n
\n\n {rowIndex === 0 ?\n
\n remove_circle\n
\n :\n
\n \n this.removeAccount(rowIndex)} className={styles.NewSpecial_icon}>remove_circle\n \n
\n }\n
\n );\n })}\n\n {agentAccounts.length !== selectedAccounts.length && !isEditing && (\n \n this.addAccount()} className={styles.NewSpecial_icon} style={{ marginTop: '25px' }}>add_circle\n \n )}\n\n
\n {errors.some(error => error.key === 'amount') &&
{`Enter an amount between ${currencyFormatter(this.props.contributionVariables.minOneTimeContribution)} and ${currencyFormatter(this.props.contributionVariables.maxOneTimeContribution)}.`}
}\n
\n
Total:
\n
{currencyFormatter(selectedAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
\n
\n
\n
\n
\n );\n /* eslint-enable indent */\n }\n\n step1ContentCompose = () => {\n const { bankAccountsLoading, contributionDetails: { agentBankAccounts }, onAddBankAccountModalOpen } = this.props;\n const bankAccountError = this.errorGet('bankAccount');\n return (\n
\n {agentBankAccounts.length > 0 ?\n
\n \n ({\n value: acct.id,\n display: acct.id === 0 ? `${acct.name}` : `${acct.name}, ${acct.number}`,\n }))}\n FormControlProps={{ style: { width: '100%', minWidth: '256px' } }}\n />\n \n \n add\n \n
\n :\n
\n \n
\n }\n
\n );\n }\n\n step2ContentCompose = () => {\n const { contribution: { bankAccount, occasion, selectedAccounts }, termsChecked } = this.state;\n const tablet = this.props.smallWidth;\n const phone = window.innerWidth <= 600;\n const filteredAccounts = selectedAccounts.filter(account => account.accountId);\n\n return (\n
\n
\n
\n
Beneficiary Name
\n {filteredAccounts.map(account => (
{account.beneficiaryName}
))}\n
\n\n {!phone && !tablet && (\n
\n
Account Number
\n {filteredAccounts.map(account => (
{account.accountNumber}
))}\n
\n )}\n\n {!phone && (\n
\n
Bank Account
\n {filteredAccounts.map(account => (
{bankAccount.name} {bankAccount.type}, {bankAccount.number}
))}\n
\n )}\n\n {!phone && (\n
\n
Next Run Date
\n {occasion === BIRTHDAY.id ?\n filteredAccounts.map(account =>
{dayjs(account.nextBdayRunDate).format('L')}
)\n :\n filteredAccounts.map(account =>
{dayjs(this.props.nextRunDates.day1).format('L')}
)\n }\n
\n )}\n\n {!phone && !tablet && filteredAccounts.some(account => account.endDate) && (\n
\n
End Date
\n {filteredAccounts.map(account => (
{dayjs(account.endDate).isValid() ?
{dayjs(account.endDate).format('L')}
:
None
}
))}\n
\n )}\n\n
\n
Amount
\n {filteredAccounts.map(account => (
{currencyFormatter(account.contributionAmount)}
))}\n
\n
\n\n
\n
Total:
\n
{currencyFormatter(filteredAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
\n
\n\n
\n
\n \n
\n
\n this.setState({ termsChecked: !termsChecked })}\n />\n }\n />\n
\n
\n
\n );\n }\n\n step3ContentCompose = () => {\n const { contribution: { bankAccount, occasion, selectedAccounts } } = this.state;\n const tablet = this.props.smallWidth;\n const phone = window.innerWidth <= 600;\n const filteredAccounts = selectedAccounts.filter(account => account.accountId);\n\n return (\n
\n
\n
\n
Beneficiary Name
\n {filteredAccounts.map(account => (
{account.beneficiaryName}
))}\n
\n\n {!phone && !tablet && (\n
\n
Account Number
\n {filteredAccounts.map(account => (
{account.accountNumber}
))}\n
\n )}\n\n {!phone && (\n
\n
Bank Account
\n {filteredAccounts.map(account => (
{bankAccount.name} {bankAccount.type}, {bankAccount.number}
))}\n
\n )}\n\n {!phone && (\n
\n
Next Run Date
\n {occasion === BIRTHDAY.id ?\n filteredAccounts.map(account =>
{dayjs(account.nextBdayRunDate).format('L')}
)\n :\n filteredAccounts.map(account =>
{dayjs(this.props.nextRunDates.day1).format('L')}
)\n }\n
\n )}\n\n {!phone && !tablet && filteredAccounts.some(account => account.endDate) && (\n
\n
End Date
\n {filteredAccounts.map(account => (
{dayjs(account.endDate).isValid() ?
{dayjs(account.endDate).format('L')}
:
None
}
))}\n
\n )}\n\n
\n
Amount
\n {filteredAccounts.map(account => (
{currencyFormatter(account.contributionAmount)}
))}\n
\n
\n\n
\n
Total:
\n
{currencyFormatter(filteredAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
\n
\n\n
{dayjs(this.props.serverDateTime)\n .format('MM/DD/YYYY h:mm A')} MST
\n
\n Please print a copy of this page for your records.\n
\n
\n );\n }\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose = () => {\n const {\n nextRunDateLoading,\n stepIndex,\n termsChecked,\n contribution\n } = this.state;\n const {\n createContributionLoading,\n isEditing,\n contributionEdit,\n contributionCreate\n } = this.props;\n\n const cancelButton = (\n \n Cancel\n \n );\n const backButton = (\n this.prevStepHandle()}\n variant='text'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Back\n \n );\n const nextButton = (onClick) => (\n \n Next\n \n );\n const agreeButton = (\n isEditing ? contributionEdit(contribution) : contributionCreate(contribution)}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n I agree\n \n );\n\n const printButton = (\n window.print()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Print\n \n );\n const finishButton = (\n this.props.history.goBack()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Finish\n \n );\n\n let buttons = [];\n switch (stepIndex) {\n case 0:\n buttons = [\n cancelButton,\n nextButton(() => this.formValidate(this.nextStepHandle))\n ];\n break;\n case 1:\n buttons = [\n cancelButton,\n backButton,\n nextButton(() => this.formValidate(this.nextStepHandle))\n ];\n break;\n case 2:\n buttons = [\n cancelButton,\n backButton,\n \n {agreeButton}\n \n ];\n break;\n case 3:\n buttons = [\n printButton,\n finishButton,\n ];\n break;\n default: break;\n }\n return buttons;\n }\n\n stepperContentCompose = () => {\n switch (this.state.stepIndex) {\n case 0: return this.step0ContentCompose();\n case 1: return this.step1ContentCompose();\n case 2: return this.step2ContentCompose();\n case 3: return this.step3ContentCompose();\n\n default:\n break;\n }\n }\n\n componentDidMount() {\n const { contributionDetails: { agentAccounts, contribution, selectedAccountId }, isEditing } = this.props;\n\n if (Object.keys(agentAccounts).length > 0) {\n if (isEditing) {\n this.setState({ contribution },\n () => this.nextRunDateGet(contribution.day1, contribution.occasion === BIRTHDAY.id ? BIRTHDAY.id : 'day1'));\n }\n else {\n // Need to go around contributionSet() helper so that nextRunDateGet() has account set to state. This can be replaced with the helper on future versions of React that do not batch state.\n this.setState(\n {\n contribution: {\n ...this.state.contribution,\n selectedAccounts: [clone(agentAccounts.find(agentAccount => agentAccount.accountId === selectedAccountId))]\n }\n },\n () => this.nextRunDateGet('', BIRTHDAY.id));\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.serverDateTime !== this.props.serverDateTime && this.props.serverDateTime !== null) {\n this.nextStepHandle();\n }\n }\n\n render() {\n const { stepIndex } = this.state;\n\n return (\n \n
\n \n \n this.setState({ stepIndex: 0 })} disabled={stepIndex === 3}>Amount & Date\n \n \n this.setState({ stepIndex: 1 })} disabled={stepIndex === 3}>Bank Account\n \n \n this.setState({ stepIndex: 2 })} disabled={stepIndex === 3}>Terms & Conditions\n \n \n this.setState({ stepIndex: 3 })}>Print Review\n \n \n
\n\n
\n {this.props.loading ? null : this.stepperContentCompose()}\n
\n\n
\n {this.props.loading ? null : this.stepperButtonsCompose()}\n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, { getNextRunDate })(NewSpecial));\n","/*\n*\n* NewRecurring Component\n*\n*/\nimport React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { clone } from 'lodash';\nimport dayjs from 'dayjs';\nimport {\n Card,\n currencyFormatter,\n CurrencyInput,\n DatePicker,\n LoadingOverlay,\n Dropdown,\n} from '@frontend/common';\nimport {\n getNextRunDate\n} from '../../../actions';\nimport {\n MONTHLY,\n TWICE_MONTHLY,\n DISABLED_DATES\n} from '../constants';\nimport {\n Checkbox,\n Icon,\n FormControlLabel,\n Radio,\n RadioGroup,\n Button,\n Step,\n StepButton,\n Stepper,\n Tooltip,\n} from '@mui/material';\nimport TermsConditions from '../TermsConditions';\n\nimport events from 'utils/ga';\n\nimport transactionsStyles from '../../styles.module.css';\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n contributionDetails: state.accounts.contributionDetails,\n contributionVariables: state.static.environmentVars.contributionVariables,\n nextRunDates: state.accounts.nextRunDates.monthly,\n});\n\nconst secondDateError = 'Date must occur within 1 month after first start date.';\n\nexport class NewRecurring extends React.Component {\n static propTypes = {\n bankAccountsLoading: PropTypes.bool.isRequired,\n contributionDetails: PropTypes.object.isRequired,\n contributionCreate: PropTypes.func.isRequired,\n contributionEdit: PropTypes.func.isRequired,\n contributionVariables: PropTypes.object.isRequired,\n createContributionLoading: PropTypes.bool.isRequired,\n getNextRunDate: PropTypes.func.isRequired,\n isEditing: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n onAddBankAccountModalOpen: PropTypes.func.isRequired,\n smallWidth: PropTypes.bool.isRequired,\n serverDateTime: PropTypes.string,\n };\n\n state = {\n contribution: {\n bankAccount: {\n id: '',\n name: '',\n number: '',\n },\n day1: '',\n day2: '',\n selectedAccounts: [],\n type: MONTHLY,\n },\n errors: [],\n step0ValidationHasRun: false,\n step1ValidationHasRun: false,\n stepIndex: 0,\n termsChecked: false,\n };\n\n amountHandle = ({ floatValue = 0 }) => {\n const { selectedAccounts } = this.state.contribution;\n\n selectedAccounts[0].contributionAmount = floatValue;\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n bankAccountSelectHandle = (value) => {\n this.contributionSet('bankAccount', this.props.contributionDetails.agentBankAccounts.find(bankAccount => bankAccount.id === value));\n }\n\n contributionDateHandle = (date, day) => {\n const { selectedAccounts } = this.state.contribution;\n if (day === 'endDate') {\n selectedAccounts[0].endDate = date;\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n else {\n this.contributionSet(day, date);\n }\n\n this.nextRunDateGet(date, day);\n }\n\n contributionFormat = () => {\n const { contribution } = this.state;\n if (contribution.type === MONTHLY) {\n contribution.day2 = null;\n }\n if (this.props.isEditing) {\n this.props.contributionEdit(contribution);\n }\n else {\n this.props.contributionCreate(contribution);\n }\n }\n\n contributionSet = (key, value) => {\n const { stepIndex, step0ValidationHasRun, step1ValidationHasRun } = this.state;\n\n this.setState(({ contribution }) => {\n return { contribution: { ...contribution, [key]: value } };\n });\n\n if (\n (stepIndex === 0 && step0ValidationHasRun) ||\n (stepIndex === 1 && step1ValidationHasRun)\n ) {\n this.formValidate();\n }\n }\n\n errorGet = (key) => {\n const error = this.state.errors.find(error => error.key === key);\n return error ? error.message : '';\n }\n\n formValidate = (nextStep = () => null) => {\n const { maxRecurringContribution, minRecurringContribution, firstAvailTradeDate, recurringContributionLeadDays } = this.props.contributionVariables;\n\n switch (this.state.stepIndex) {\n case 0: {\n this.setState(({ contribution: { bankAccount, selectedAccounts, type } }) => {\n const amount = selectedAccounts[0].contributionAmount;\n const errors = [];\n\n if ( // validates that amount doesn't exceed maximums for monthly and twice-monthly\n (type === MONTHLY && (amount > maxRecurringContribution || amount < minRecurringContribution)) ||\n (type === TWICE_MONTHLY && (amount > (maxRecurringContribution / 2) || amount < minRecurringContribution))\n ) {\n errors.push({\n key: 'amount',\n message: 'Enter a valid amount.'\n });\n }\n if (!bankAccount.id) {\n errors.push({\n key: 'bankAccount',\n message: 'Select an existing bank account or add a new one.'\n });\n }\n return { errors, step0ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n\n break;\n }\n case 1: {\n this.setState(({ contribution: { day1, day2, selectedAccounts, type } }) => {\n const { contributionAmount, endDate } = selectedAccounts[0];\n const errors = [];\n\n if (!day1) {\n errors.push({\n key: 'day1',\n message: 'Start date is required.'\n });\n }\n else if (!dayjs(day1).isValid()) { // validate date format\n errors.push({\n key: 'day1',\n message: 'Invalid Date Format'\n });\n }\n else if (!dayjs(day1).isBetween(dayjs(firstAvailTradeDate), dayjs(firstAvailTradeDate).add(recurringContributionLeadDays, 'd'), null, '[]')) {\n errors.push({\n key: 'day1',\n message: `Start date should be between ${dayjs(firstAvailTradeDate).format('MM/DD/YYYY')} and ${dayjs(firstAvailTradeDate).add(recurringContributionLeadDays, 'd').format('MM/DD/YYYY')}.` // eslint-disable-line\n });\n }\n\n if (type === TWICE_MONTHLY) {\n if (!dayjs(day2).isValid()) { // validates that day2 is populated while editing\n errors.push({\n key: 'day2',\n message: 'Second date is required for twice monthly contributions.'\n });\n }\n if (\n (dayjs(day2).isSameOrBefore(day1, 'day') || // validates that day2 occurs after day1\n dayjs(day2).isSameOrAfter(dayjs(day1).add(1, 'month'), 'day')) // validates that day2 is within a month of day1\n ) {\n errors.push({\n key: 'day2',\n message: secondDateError\n });\n }\n if (contributionAmount > maxRecurringContribution / 2 || contributionAmount < minRecurringContribution) { // validates that amount doesn't exceed maximums for twice-monthly\n errors.push({\n key: 'amount',\n message: 'Enter a valid amount.'\n });\n }\n }\n\n if (endDate && !dayjs(endDate).isValid()) {\n errors.push({\n key: 'endDate',\n message: 'Invalid Date Format'\n });\n }\n else if (\n ((type === TWICE_MONTHLY && (dayjs(endDate).isSameOrBefore(day1, 'day') || dayjs(endDate).isSameOrBefore(day2, 'day'))) || // validates that end date occurs after day1 and day2\n (type === MONTHLY && dayjs(endDate).isSameOrBefore(day1, 'day'))) // validates that end date occurs after day1\n ) {\n errors.push({\n key: 'endDate',\n message: type === MONTHLY ? 'End date must occur after start date.' : 'End date must occur after both start dates.'\n });\n }\n\n return { errors, step1ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n\n break;\n }\n default: break;\n }\n }\n\n nextMinDateGet = (startDate = this.state.contribution.day1) => {\n let momentDate = dayjs(startDate).add(1, 'd');\n\n if (DISABLED_DATES.includes(momentDate.date())) {\n do {\n momentDate = dayjs(momentDate).add(1, 'd');\n }\n while (DISABLED_DATES.includes(momentDate.date()));\n }\n\n return momentDate;\n }\n\n nextRunDateCompose = (start) => {\n const { contributionDetails: { contribution: { day1, day2, endDate } }, nextRunDates } = this.props;\n\n if (\n endDate &&\n (dayjs(day1).isSameOrAfter(endDate) || dayjs(day2).isSameOrAfter(endDate))\n ) {\n return Contribution is scheduled to end before next run date.;\n }\n\n return Next run date: {dayjs(start === 'start1' ? nextRunDates.day1 : nextRunDates.day2).format('L')};\n }\n\n nextRunDateGet = (date, day) => {\n if (dayjs(date).isValid()) {\n this.props.getNextRunDate(date, day, MONTHLY);\n }\n }\n\n nextStepHandle = () => {\n this.setState({ stepIndex: this.state.stepIndex + 1 });\n window.scrollTo(0, 0);\n !this.props.isEditing && events.contributionsRecurringStep(this.state.stepIndex + 1);\n }\n\n prevStepHandle = () => {\n this.setState({ stepIndex: this.state.stepIndex - 1 });\n window.scrollTo(0, 0);\n !this.props.isEditing && events.contributionsRecurringStep(this.state.stepIndex - 1);\n }\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose = () => {\n const {\n contribution,\n stepIndex,\n termsChecked\n } = this.state;\n const cancelButton = (\n \n Cancel\n \n );\n const backButton = (\n this.prevStepHandle()}\n variant='text'\n disabled={this.props.createContributionLoading}\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Back\n \n );\n const nextButton = (\n this.formValidate(this.nextStepHandle)}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Next\n \n );\n const agreeButton = (\n this.contributionFormat()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n I agree\n \n );\n\n const printButton = (\n window.print()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Print\n \n );\n const finishButton = (\n this.props.history.goBack()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Finish\n \n );\n\n if (contribution.selectedAccounts.length > 0) {\n let buttons = [];\n switch (stepIndex) {\n case 0:\n buttons = [\n cancelButton,\n nextButton\n ];\n break;\n case 1:\n buttons = [\n cancelButton,\n backButton,\n nextButton\n ];\n break;\n case 2:\n buttons = [\n cancelButton,\n backButton,\n \n {agreeButton}\n \n ];\n break;\n case 3:\n buttons = [\n printButton,\n finishButton,\n ];\n break;\n default: break;\n }\n return buttons;\n }\n }\n\n step0ContentCompose = () => {\n const { contribution: { bankAccount, selectedAccounts } } = this.state;\n const { bankAccountsLoading, contributionDetails: { agentBankAccounts }, contributionVariables: { minRecurringContribution, maxRecurringContribution }, onAddBankAccountModalOpen } = this.props;\n\n if (selectedAccounts.length > 0) {\n const { accountNumber, beneficiaryName, contributionAmount } = selectedAccounts[0];\n\n return [\n
\n
\n
{`${beneficiaryName} ...${accountNumber.slice(accountNumber.length - 5)}`}
\n \n
\n
\n \n
\n\n {agentBankAccounts.length > 0 ?\n
\n \n ({\n value: acct.id,\n display: acct.id === 0 ? acct.name : `${acct.name}, ${acct.number}`,\n }))}\n FormControlProps={{ style: { width: '100%', minWidth: '256px' } }}\n />\n \n \n add\n \n
\n :\n
\n
\n \n Add Bank Account\n \n
\n
\n {this.errorGet('bankAccount') && agentBankAccounts.length === 0 ? 'Add a new account.' : ''}\n
\n
\n }\n
,\n
\n {this.errorGet('amount') &&\n
\n Enter an amount between {currencyFormatter(minRecurringContribution)} and {currencyFormatter(maxRecurringContribution)} for monthly contributions, or between {currencyFormatter(minRecurringContribution)} and {currencyFormatter(maxRecurringContribution / 2)} for twice monthly contributions.\n
\n }\n
\n ];\n }\n }\n\n step1ContentCompose = () => {\n const { isEditing, contributionVariables: { firstAvailTradeDate, recurringContributionLeadDays } } = this.props;\n const { contribution: { day1, day2, selectedAccounts, type } } = this.state;\n\n return (\n
\n this.contributionSet('type', e.target.value)} // eslint-disable-line\n value={type}\n >\n }\n label={MONTHLY}\n value={MONTHLY}\n />\n }\n label={TWICE_MONTHLY}\n value={TWICE_MONTHLY}\n />\n \n\n
\n this.contributionDateHandle(date, 'day1')}\n shouldDisableDate={(date) => DISABLED_DATES.includes(dayjs(date).date())}\n value={day1}\n />\n {this.nextRunDateCompose('start1')}\n
\n\n {type === TWICE_MONTHLY &&\n
\n this.contributionDateHandle(date, 'day2')}\n shouldDisableDate={(date) => DISABLED_DATES.includes(dayjs(date).date())}\n value={day2 ? day2 : null}\n />\n {dayjs(day2).isValid() && this.nextRunDateCompose('start2')}\n
\n }\n\n
\n this.contributionDateHandle(date, 'endDate')}\n value={selectedAccounts[0].endDate ? selectedAccounts[0].endDate : null}\n />\n
\n
\n );\n }\n\n step2ContentCompose = () => {\n const { contribution: { bankAccount, day1, day2, selectedAccounts, type }, termsChecked } = this.state;\n const { nextRunDates } = this.props;\n\n let nextRunDate = '';\n if (type === MONTHLY) {\n nextRunDate = dayjs(nextRunDates.day1);\n }\n else {\n nextRunDate = dayjs(nextRunDates.day1).isBefore(dayjs(nextRunDates.day2), 'day') ? dayjs(nextRunDates.day1) : dayjs(nextRunDates.day2);\n }\n\n return (\n
\n
\n \n
Account Number:
\n {selectedAccounts.map(account => (
{account.accountNumber}
))}\n
\n\n \n
Beneficiary Name:
\n {selectedAccounts.map(account => (
{account.beneficiaryName}
))}\n
\n\n \n
{type === MONTHLY ? 'Scheduled Day:' : 'Scheduled Days:'}
\n
{type === MONTHLY ? `On the ${dayjs(day1).format('Do')} of every month` : `On the ${dayjs(day1).format('Do')} and ${dayjs(day2).format('Do')} of every month`}
\n
\n\n \n
Next Contribution Date:
\n
{nextRunDate.format('L')}
\n
\n\n {selectedAccounts[0].endDate && (\n
\n
End Date:
\n
{dayjs(selectedAccounts[0].endDate).format('L')}
\n
\n )}\n\n \n
Amount:
\n {selectedAccounts.map(account => (
{currencyFormatter(account.contributionAmount)}
))}\n
\n\n \n
Bank Account:
\n
{bankAccount.name} {bankAccount.type}, {bankAccount.number}
\n
\n
\n
\n
\n \n
\n
\n this.setState({ termsChecked: !termsChecked })}\n />\n }\n />\n
\n
\n
\n );\n }\n\n step3ContentCompose = () => {\n const { contribution: { bankAccount, day1, day2, selectedAccounts, type } } = this.state;\n const { nextRunDates } = this.props;\n\n let nextRunDate = '';\n if (type === MONTHLY) {\n nextRunDate = dayjs(nextRunDates.day1);\n }\n else {\n nextRunDate = dayjs(nextRunDates.day1).isBefore(dayjs(nextRunDates.day2), 'day') ? dayjs(nextRunDates.day1) : dayjs(nextRunDates.day2);\n }\n\n return (\n
\n
\n \n
Account Number:
\n {selectedAccounts.map(account => (
{account.accountNumber}
))}\n
\n\n \n
Beneficiary Name:
\n {selectedAccounts.map(account => (
{account.beneficiaryName}
))}\n
\n\n \n
{type === MONTHLY ? 'Scheduled Day:' : 'Scheduled Days:'}
\n
{type === MONTHLY ? `On the ${dayjs(day1).format('Do')} of every month` : `On the ${dayjs(day1).format('Do')} and ${dayjs(day2).format('Do')} of every month`}
\n
\n\n \n
Next Contribution Date:
\n
{nextRunDate.format('L')}
\n
\n\n {selectedAccounts[0].endDate && (\n
\n
End Date:
\n
{dayjs(selectedAccounts[0].endDate).format('L')}
\n
\n )}\n\n \n
Amount:
\n {selectedAccounts.map(account => (
{currencyFormatter(account.contributionAmount)}
))}\n
\n\n \n
Bank Account:
\n
{bankAccount.name} {bankAccount.type}, {bankAccount.number}
\n
\n
\n
{dayjs(this.props.serverDateTime)\n .format('MM/DD/YYYY h:mm A')} MST
\n
\n Please print a copy of this page for your records.\n
\n
\n );\n }\n\n stepperContentCompose = () => {\n switch (this.state.stepIndex) {\n case 0: return this.step0ContentCompose();\n case 1: return this.step1ContentCompose();\n case 2: return this.step2ContentCompose();\n case 3: return this.step3ContentCompose();\n\n default:\n break;\n }\n }\n\n componentDidMount() {\n const { contributionDetails: { agentAccounts, contribution, selectedAccountId }, contributionVariables: { firstAvailTradeDate }, isEditing } = this.props;\n\n if (Object.keys(agentAccounts).length > 0) {\n if (isEditing) {\n this.setState({ contribution });\n this.nextRunDateGet(contribution.day1, 'day1');\n this.nextRunDateGet(contribution.day2, 'day2');\n }\n else {\n const firstNonDisabledDate = DISABLED_DATES.includes(dayjs(firstAvailTradeDate).date()) ? this.nextMinDateGet(firstAvailTradeDate) : dayjs(firstAvailTradeDate);\n const secondNonDisabledDate = DISABLED_DATES.includes(dayjs(firstAvailTradeDate).add(1, 'd').date()) ? this.nextMinDateGet(dayjs(firstAvailTradeDate).add(1, 'd')) : dayjs(firstAvailTradeDate).add(1, 'd'); // eslint-disable-line\n this.contributionDateHandle(firstNonDisabledDate, 'day1');\n this.contributionDateHandle(secondNonDisabledDate, 'day2');\n this.contributionSet('selectedAccounts', [clone(agentAccounts.find(agentAccount => agentAccount.accountId === selectedAccountId))]);\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.serverDateTime !== this.props.serverDateTime && this.props.serverDateTime !== null) {\n this.nextStepHandle();\n }\n }\n\n render() {\n const { stepIndex } = this.state;\n\n return (\n \n
\n \n \n this.setState({ stepIndex: 0 })}\n disabled={stepIndex === 3}\n >\n Amount & Bank Account\n \n \n \n this.setState({ stepIndex: 1 })} disabled={stepIndex === 3}>Contribution Frequency\n \n \n this.setState({ stepIndex: 2 })} disabled={stepIndex === 3}>Terms & Conditions\n \n \n this.setState({ stepIndex: 3 })}>Print Review\n \n \n
\n\n
\n {!this.props.loading && (this.stepperContentCompose())}\n
\n\n
\n {!this.props.loading && (this.stepperButtonsCompose())}\n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, { getNextRunDate })(NewRecurring));\n","/*\n*\n* Contributions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n createNewContribution,\n editContribution,\n clearContributionEditDetails,\n getAccountsByAgent,\n getAgentBankAccounts,\n getContributionDetails,\n getContributionEditDetails\n} from '../../actions';\nimport {\n getEnvironmentVariables,\n getServerDateTime,\n} from 'components/AppRoot/StaticResources/actions';\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\nimport {\n Breadcrumbs,\n ConfirmModal,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\nimport {\n MONTHLY,\n ONE_TIME,\n TWICE_MONTHLY,\n YEARLY\n} from './constants';\nimport AddBankAccount from './AddBankAccount';\nimport ContributionDetails from './ContributionDetails';\nimport NewOneTime from './NewOneTime';\nimport NewSpecial from './NewSpecial';\nimport NewRecurring from './NewRecurring';\nimport {\n Tabs,\n Tab\n} from '@mui/material';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n contributionDetails: state.accounts.contributionDetails,\n contributionVariables: state.static.environmentVars.contributionVariables,\n selectedAgentAccounts: state.accounts.selectedAgentAccounts,\n});\n\nexport class Contributions extends React.Component {\n static propTypes = {\n clearContributionEditDetails: PropTypes.func.isRequired,\n contributionDetails: PropTypes.object.isRequired,\n contributionVariables: PropTypes.object.isRequired,\n createNewContribution: PropTypes.func.isRequired,\n editContribution: PropTypes.func.isRequired,\n getAccountsByAgent: PropTypes.func.isRequired,\n getAgentBankAccounts: PropTypes.func.isRequired,\n getContributionDetails: PropTypes.func.isRequired,\n getContributionEditDetails: PropTypes.func.isRequired,\n getEnvironmentVariables: PropTypes.func.isRequired,\n getServerDateTime: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n selectedAgentAccounts: PropTypes.array.isRequired,\n };\n\n state = {\n addBankAccountModalOpen: false,\n bankAccountsLoading: false,\n duplicateContribution: {},\n duplicateContributionMessage: '',\n duplicateContributionModalOpen: false,\n createContributionLoading: false,\n ignoreDuplicates: false,\n isEditing: window.location.href.search('edit') > -1,\n loading: false,\n smallWidth: Boolean(window.innerWidth <= 1200),\n tabIndex: 0,\n onPrintStep: false,\n serverDateTime: null,\n };\n\n contributionCreate = (contribution) => {\n this.setState({ createContributionLoading: true });\n\n const formattedContribution = {\n AccountAmounts: contribution.selectedAccounts.filter(account => account.accountId).map(account => ({\n AccountId: account.accountId,\n Amount: account.contributionAmount,\n EndDate: account.endDate || null,\n })),\n BankAccountId: contribution.bankAccount.id,\n IgnoreDuplicates: this.state.ignoreDuplicates,\n Occasion: contribution.occasion || null,\n ScheduleType: contribution.type.replace(/ /g, ''),\n TradeDate: contribution.day1,\n TradeDate2: contribution.day2 || null,\n };\n\n this.props.createNewContribution(formattedContribution)\n .then(response => {\n // precondition messages handled here\n const messages = response.payload.data;\n const dupeMsgs = Array.isArray(messages) ? messages.filter(message => message.MessageType === 3) : [];\n if (dupeMsgs.length > 0) {\n const duplicateContributionMessage = dupeMsgs.map(message => message.Message).join('<\\br>');\n this.setState({\n duplicateContribution: contribution,\n duplicateContributionMessage,\n duplicateContributionModalOpen: true,\n createContributionLoading: false\n });\n }\n else {\n // google analytics\n switch (contribution.type) {\n case ONE_TIME: { events.contributionsOneTimeStep('final'); break; }\n case MONTHLY: { events.contributionsRecurringStep('final'); break; }\n case YEARLY: { events.contributionsSpecialStep('final'); break; }\n default: break;\n }\n this.setState({\n duplicateContribution: {},\n onPrintStep: true,\n });\n this.props.notificationShow('Contribution scheduled.', 'success');\n // get server timestamp by returning promise here\n this.props.getServerDateTime()\n .then((response) => {\n const serverDateTime = response.payload.data;\n this.setState({\n serverDateTime,\n createContributionLoading: false,\n });\n });\n }\n })\n .catch(() => this.setState({ createContributionLoading: false }));\n }\n\n contributionDetailsGet = (calledFrom) => {\n const { accountId, agentId, transactionId } = this.props.match.params;\n\n const apiCalls = [\n this.props.getAgentBankAccounts(agentId, 'contributions'),\n this.props.getEnvironmentVariables(Object.keys(this.props.contributionVariables).length !== 0 && ['ValidOneTimeContributionDates', 'CurrentTradeDate']),\n calledFrom !== 'addBankAccount' && this.props.getAccountsByAgent(agentId, 'canContribute=true'),\n this.state.isEditing && this.props.getContributionEditDetails(transactionId)\n ];\n\n this.setState(calledFrom === 'addBankAccount' ? { bankAccountsLoading: true } : { loading: true });\n\n Promise.all(apiCalls)\n .then(() => {\n this.setState({ bankAccountsLoading: false, loading: false });\n return this.props.getContributionDetails(accountId);\n })\n .catch(() => this.setState({ bankAccountsLoading: false, loading: false }));\n }\n\n contributionEdit = (contribution) => {\n this.setState({ createContributionLoading: true });\n\n const formattedContribution = {\n Amount: contribution.selectedAccounts[0].contributionAmount,\n BankAccountId: contribution.bankAccount.id,\n EndDate: contribution.selectedAccounts[0].endDate || null,\n Occasion: contribution.occasion || null,\n Frequency: contribution.type.replace(/ /g, ''),\n TradeDate: contribution.day1,\n TradeDate2: contribution.day2 || null,\n };\n\n this.props.editContribution(this.props.match.params.transactionId, formattedContribution)\n .then(() => {\n this.props.notificationShow('Contribution updated.', 'success');\n // get server timestamp by returning promise here\n this.props.getServerDateTime()\n .then((response) => {\n const serverDateTime = response.payload.data;\n this.setState({\n serverDateTime,\n createContributionLoading: false,\n });\n });\n })\n .catch(() => this.setState({ createContributionLoading: false }));\n }\n\n defaultTabGet = () => {\n if (this.state.isEditing) {\n switch (this.props.contributionDetails.contribution.type) {\n case ONE_TIME: this.setState({ tabIndex: 0 });\n break;\n case MONTHLY: this.setState({ tabIndex: 1 });\n break;\n case TWICE_MONTHLY: this.setState({ tabIndex: 1 });\n break;\n case YEARLY: this.setState({ tabIndex: 2 });\n break;\n default: this.setState({ tabIndex: 0 });\n }\n }\n else {\n this.setState({ tabIndex: 0 });\n }\n }\n\n onAddBankAccountModalOpen = () => {\n this.setState({ addBankAccountModalOpen: true });\n }\n\n onTabChange = (e, val) => {\n this.setState({ tabIndex: val });\n if (!this.state.isEditing) {\n switch (val) {\n case 0: { events.contributionsOneTimeStep(0); break; }\n case 1: { events.contributionsRecurringStep(0); break; }\n case 2: { events.contributionsSpecialStep(0); break; }\n default: break;\n }\n }\n }\n\n componentDidMount() {\n const { contributionDetails: { agentAccounts, contribution, selectedAccountId }, match: { params: { accountId, transactionId } } } = this.props;\n\n if (\n parseInt(selectedAccountId) !== parseInt(accountId) ||\n agentAccounts.length === 0 ||\n (this.state.isEditing && contribution.transactionId !== parseInt(transactionId))\n ) {\n this.contributionDetailsGet();\n }\n else {\n this.props.getEnvironmentVariables(['ValidOneTimeContributionDates', 'CurrentTradeDate']);\n }\n this.defaultTabGet();\n }\n\n componentWillUnmount() {\n this.props.clearContributionEditDetails();\n }\n\n render() {\n const { agentId } = this.props.match.params;\n const {\n addBankAccountModalOpen,\n bankAccountsLoading,\n duplicateContribution,\n duplicateContributionMessage,\n createContributionLoading,\n duplicateContributionModalOpen,\n loading,\n isEditing,\n smallWidth,\n tabIndex,\n onPrintStep,\n serverDateTime,\n } = this.state;\n const { type, selectedAgentAccounts } = this.props.contributionDetails.contribution;\n\n return (\n
\n
\n \n
\n\n {loading &&\n
\n \n
\n }\n\n
\n \n
\n\n
\n this.onTabChange(e, val)} value={tabIndex} centered>\n \n \n \n \n\n {tabIndex === 0 &&\n this.onAddBankAccountModalOpen()}\n smallWidth={smallWidth}\n serverDateTime={serverDateTime}\n />\n }\n\n {tabIndex === 1 &&\n this.onAddBankAccountModalOpen()}\n smallWidth={smallWidth}\n serverDateTime={serverDateTime}\n />\n }\n\n {tabIndex === 2 &&\n this.onAddBankAccountModalOpen()}\n smallWidth={smallWidth}\n serverDateTime={serverDateTime}\n />\n }\n
\n\n this.contributionDetailsGet('addBankAccount')}\n onClose={() => this.setState({ addBankAccountModalOpen: false })}\n open={addBankAccountModalOpen}\n agentId={agentId}\n />\n\n this.setState({ duplicateContributionModalOpen: false })}\n onConfirm={() => this.setState({ duplicateContributionModalOpen: false, ignoreDuplicates: true }, () => this.contributionCreate(duplicateContribution))}\n isLoading={createContributionLoading}\n />\n
\n );\n }\n}\n\nexport default connect(select, {\n createNewContribution,\n editContribution,\n clearContributionEditDetails,\n getAccountsByAgent,\n getAgentBankAccounts,\n getContributionDetails,\n getEnvironmentVariables,\n getServerDateTime,\n getContributionEditDetails,\n notificationShow\n})(Contributions);\n","/*\n*\n* AccountsInGroup Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport {\n Modal,\n \n SmartTable,\n TableContainer,\n TableHeader,\n TableRows,\n} from '@frontend/common';\n\nconst select = (state) => ({\n optionChangeDetails: state.accounts.optionChangeDetails\n});\n\nexport class AccountsInGroup extends React.Component {\n static propTypes = {\n loading: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n optionChangeDetails: PropTypes.object.isRequired\n };\n\n render() {\n const {\n loading,\n onClose,\n open,\n optionChangeDetails,\n } = this.props;\n\n return (\n \n
\n

This account is 1 of {optionChangeDetails.accountsInGroup} accounts for the same account owner/beneficiary combination. This option change will count as one of the two investment option changes allowed per beneficiary for this calendar year.

\n

If you want to change the investment option for another account for the same beneficiary without incurring a second option change, you must make the change on the same day before the close of trading on the New York Stock Exchange, normally 2 p.m. MT. You also must make any modifications or cancellations before the close of trading.

\n

If you make an investment option request after the close of trading, or on a weekend or holiday, any modifications or cancellations must be received by 2 p.m. MT, the following business day.

\n \n \n \n \n \n \n
\n \n );\n }\n}\n\nexport default withRouter(connect(select, {})(AccountsInGroup));\n","export const CUSTOMIZED_AGEBASED_TEMPLATES = 'Customized Age-Based Templates';\nexport const CUSTOMIZED_STATIC_TEMPLATES = 'Customized Static Templates';\nexport const CUSTOMIZED_AGEBASED = 'Create Customized Age-Based';\nexport const CUSTOMIZED_STATIC = 'Create Customized Static';\nexport const STATIC = 'Static';\nexport const ENROLLMENTDATE = 'Target Enrollment Date';","/*\n*\n* TermsAndConditions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Checkbox,\n FormControlLabel,\n} from '@mui/material';\nimport styles from './styles.module.css';\n\nexport function TermsAndConditions({\n documents,\n checkboxes\n}) {\n return [\n
\n

Terms and Conditions

\n

Please review the following Terms and Conditions regarding investment option changes

\n

I have informed my client of the following:

\n\n
General Information
\n
    \n
  • For important information about each investment option, please read my529's Program Description.
  • {/*eslint-disable-line react/no-unescaped-entities*/}\n
  • For information regarding the various investment options, see investment information at my529.org.
  • \n
  • Changing the investment option for this account will count as one investment option change. You may change your investment option for this account owner/beneficiary combination only twice per calendar year.
  • \n
  • No more than one of these accounts may be invested in the same investment option at the same time.
  • \n
  • Changing the investment option below will change the investment option for the entire balance. To transfer funds between accounts with the same beneficiary, account type, and account owner/agent, you can submit my529’s Internal Transfer Form 400 or select Transfers in Account Access.
  • {/*eslint-disable-line react/no-unescaped-entities*/}\n
\n\n
Customized Options
\n
    \n
  • Changing the allocation of the underlying funds within a Customized Static account is considered an investment option change.
  • \n
  • Changing the allocation of the underlying funds within a Customized Age-Based account after the initial allocation is finalized, even if the change applies to an age bracket other than the one the beneficiary is currently in, is considered an investment option change.
  • \n
\n\n
Timing
\n
    \n
  • The investment option change will usually take effect within three business days following the day you make the investment option change.
  • \n
\n\n
Cancellation
\n
    \n
  • To cancel or modify your investment option change request, you must do so on the same day the request was submitted, before the close of trading on the New York Stock Exchange (NYSE), usually 2 p.m. MT. If you submitted your request after the close of trading, or on a weekend or holiday, you must submit your modification or cancellation request before the close of trading on the next day the NYSE is open. Your investment option change request may not be cancelled or modified after these deadlines.
  • \n
\n
,\n \n {\n checkboxes.map((box, index) => (\n \n }\n key={index}\n label={box.label ? box.label : 'I have read and understand the above Terms and Conditions.'}\n />\n ))\n }\n \n ];\n}\n\nTermsAndConditions.propTypes = {\n checkboxes: PropTypes.arrayOf(\n PropTypes.shape({\n onCheck: PropTypes.func.isRequired,\n checked: PropTypes.bool.isRequired,\n label: PropTypes.string\n }),\n ).isRequired,\n documents: PropTypes.object.isRequired,\n};\n\nexport default TermsAndConditions;\n","/*\n*\n* NewOptions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep, isEmpty } from 'lodash';\nimport dayjs from 'dayjs';\n\nimport {\n Button,\n Step,\n StepButton,\n Stepper,\n} from '@mui/material';\n\nimport {\n ExpandMore as ExpandMoreIcon,\n ExpandLess as ExpandLessIcon,\n} from '@mui/icons-material';\n\nimport {\n Card,\n LoadingOverlay,\n notificationShow,\n allNotificationsHide,\n Dropdown,\n} from '@frontend/common';\n\nimport {\n customOptionsGet,\n optionsGet,\n getServerDateTime,\n getNewAgeBasedSchema,\n getNewStaticSchema,\n} from 'components/AppRoot/StaticResources/actions';\n\nimport {\n CUSTOMIZED_AGEBASED,\n CUSTOMIZED_AGEBASED_TEMPLATES,\n CUSTOMIZED_STATIC,\n CUSTOMIZED_STATIC_TEMPLATES,\n STATIC,\n ENROLLMENTDATE,\n} from './constants';\n\nimport { createNewOptionChange } from '../../../actions';\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\n\nimport { CalculatorForm, populate3DCalculatorSchema } from '@frontend/common';\n\nimport events from 'utils/ga';\nimport TermsAndConditions from '../TermsAndConditions';\n\nimport transactionStyles from '../../styles.module.css';\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n customStaticOptions: state.static.customStaticOptions,\n customAgeBasedOptions: state.static.customAgeBasedOptions,\n optionChangeDetails: state.accounts.optionChangeDetails,\n selectedTransaction: state.accounts.selectedTransaction,\n predefinedOptions: state.static.options.filter(opt => opt.name.search('Customized') === -1),\n documents: state.static.documents,\n newAgeBasedSchema: state.static.newAgeBasedSchema,\n newStaticSchema: state.static.newStaticSchema,\n serverDateTime: state.static.serverDateTime,\n});\n\nexport class NewOptions extends React.Component {\n static propTypes = {\n createNewOptionChange: PropTypes.func.isRequired,\n customStaticOptions: PropTypes.array,\n customAgeBasedOptions: PropTypes.array,\n customOptionsGet: PropTypes.func.isRequired,\n documents: PropTypes.object.isRequired,\n loading: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n optionChangeDetails: PropTypes.object.isRequired,\n optionsGet: PropTypes.func.isRequired,\n predefinedOptions: PropTypes.array.isRequired,\n selectedTransaction: PropTypes.object.isRequired,\n getServerDateTime: PropTypes.func.isRequired,\n serverDateTime: PropTypes.string,\n newAgeBasedSchema: PropTypes.object.isRequired,\n newStaticSchema: PropTypes.object.isRequired,\n getNewAgeBasedSchema: PropTypes.func.isRequired,\n getNewStaticSchema: PropTypes.func.isRequired,\n };\n\n state = {\n createOptionChangeLoading: false,\n loadingOnMount: false,\n customAllocationSchema: {}, // TODO: ?\n errors: [],\n isEditing: window.location.href.search('edit') > -1,\n isViewing: window.location.href.search('view') > -1,\n optionCategories: [\n STATIC,\n ENROLLMENTDATE,\n CUSTOMIZED_AGEBASED,\n CUSTOMIZED_STATIC\n ],\n options: [],\n selectedCategoryName: '',\n selectedOptionId: '',\n selectedOption: {},\n smallHeight: window.innerHeight <= 800,\n smallWidth: window.innerWidth <= 1200,\n stepIndex: 0,\n termsChecked: false,\n isOnPrintStep: false,\n matrixAllocations: [],\n calculatorErrors: {},\n showCustomized: false,\n };\n\n currentSelectionsGet() {\n let selectedCategoryName = '';\n let selectedOptionId = '';\n let currSchema = {};\n const {\n customAgeBasedOptions, customStaticOptions, predefinedOptions,\n selectedTransaction,\n } = this.props;\n\n const predefinedOption = predefinedOptions.find(option => option.name === selectedTransaction.newOption) || null;\n if (predefinedOption) {\n selectedCategoryName = predefinedOption.optionType === 'T' ? ENROLLMENTDATE : STATIC;\n selectedOptionId = selectedTransaction.predefinedOptionId;\n }\n else if (customAgeBasedOptions.find(option => option.name === selectedTransaction.newOption)) {\n selectedCategoryName = CUSTOMIZED_AGEBASED_TEMPLATES;\n selectedOptionId = selectedTransaction.templateId;\n\n }\n else if (customStaticOptions.find(option => option.name === selectedTransaction.newOption)) {\n selectedCategoryName = CUSTOMIZED_STATIC_TEMPLATES;\n selectedOptionId = selectedTransaction.templateId;\n }\n else if (selectedTransaction.newOption === 'Customized Age-Based') {\n selectedCategoryName = CUSTOMIZED_AGEBASED;\n currSchema = selectedTransaction.schema;\n }\n else {\n selectedCategoryName = CUSTOMIZED_STATIC;\n currSchema = selectedTransaction.schema;\n }\n\n this.setOptionsAndSchema(selectedCategoryName);\n this.setState({\n selectedCategoryName,\n selectedOptionId,\n currSchema,\n });\n }\n\n onAllocationChange = (matrixAllocations, calculatorErrors) => {\n this.setState({ matrixAllocations, calculatorErrors });\n const { hasAllocationAmountError, hasBracketTotalSumOver100Error } = calculatorErrors;\n // throw a toast on specific form errors\n if (hasAllocationAmountError || hasBracketTotalSumOver100Error) {\n hasBracketTotalSumOver100Error && this.props.notificationShow(hasBracketTotalSumOver100Error, 'error');\n hasAllocationAmountError && this.props.notificationShow(hasAllocationAmountError, 'error');\n }\n else {\n this.props.allNotificationsHide();\n }\n }\n\n nextCalculatorReviewHandler() {\n const {\n calculatorErrors: {\n hasAnyBracketTotalNot100Error,\n hasAllocationAmountError,\n hasBracketTotalSumOver100Error\n }\n } = this.state;\n\n if (!hasAnyBracketTotalNot100Error && !hasAllocationAmountError && !hasBracketTotalSumOver100Error) {\n this.nextStepHandle();\n }\n else {\n // show error toasts\n hasAnyBracketTotalNot100Error && this.props.notificationShow(hasAnyBracketTotalNot100Error, 'error');\n hasBracketTotalSumOver100Error && this.props.notificationShow(hasBracketTotalSumOver100Error, 'error');\n hasAllocationAmountError && this.props.notificationShow(hasAllocationAmountError, 'error');\n }\n }\n\n errorGet = (key) => {\n const error = this.state.errors.find(error => error.key === key);\n return error ? error.message : '';\n }\n\n formValidate = (nextStep = () => null) => {\n switch (this.state.stepIndex) {\n case 0: {\n this.setState(({ isEditing, selectedCategoryName, selectedOptionId }, { selectedTransaction: { predefinedOptionId, templateId } }) => {\n const errors = [];\n if (selectedCategoryName === '') { // validates that option category is selected\n errors.push({\n key: 'optionCategory',\n message: 'Option category is required.'\n });\n }\n else if (selectedOptionId === '' && !this.isCustomized()) {\n errors.push({\n key: 'option',\n message: 'Option is required.'\n });\n }\n else if (isEditing && (selectedOptionId === predefinedOptionId || selectedOptionId === templateId)) { // validates that change was made before proceeding\n errors.push(\n {\n key: 'optionCategory',\n message: 'No change has been made.'\n },\n {\n key: 'option',\n message: 'No change has been made.'\n }\n );\n }\n return { errors };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n default: break;\n }\n }\n\n isCustomized() {\n return this.state.selectedCategoryName === CUSTOMIZED_AGEBASED || this.state.selectedCategoryName === CUSTOMIZED_STATIC;\n }\n\n isCustomizedTemplates() {\n return this.state.selectedCategoryName === CUSTOMIZED_AGEBASED_TEMPLATES || this.state.selectedCategoryName === CUSTOMIZED_STATIC_TEMPLATES;\n }\n\n nextStepHandle = () => {\n const { isEditing, stepIndex } = this.state;\n this.setState({ stepIndex: stepIndex + 1 });\n !isEditing && events.optionChangesStep(this.isCustomized() ? `${stepIndex + 1}_customized` : `${stepIndex + 1}`);\n window.scrollTo(0, 0);\n if (stepIndex + 1 === 2) {\n // populate the schema with values to be used in view only\n this.setState({ currSchema: populate3DCalculatorSchema(this.state.matrixAllocations, this.state.currSchema) });\n }\n }\n\n onTermsCheck = () => {\n this.setState({ termsChecked: !this.state.termsChecked });\n }\n\n optionCategoryMenuCompile() {\n const optionCategories = cloneDeep(this.state.optionCategories);\n if (this.props.customStaticOptions.length > 0) {\n optionCategories.splice(2, 0, CUSTOMIZED_STATIC_TEMPLATES);\n }\n if (this.props.customAgeBasedOptions.length > 0) {\n optionCategories.splice(2, 0, CUSTOMIZED_AGEBASED_TEMPLATES);\n }\n return optionCategories.map(category => ({ value: category }));\n }\n\n optionCategorySelectHandle = (category) => {\n this.setState({\n errors: [],\n selectedCategoryName: category,\n selectedOptionId: ''\n });\n this.setOptionsAndSchema(category);\n }\n\n optionChangeCreate() {\n const { accountId } = this.props.match.params;\n this.setState({ createOptionChangeLoading: true });\n const schema = [];\n if (this.state.selectedCategoryName === STATIC || this.state.selectedCategoryName === ENROLLMENTDATE) {\n schema.push({\n AccountId: parseInt(accountId),\n OptionId: this.state.selectedOptionId\n });\n }\n else if (this.state.selectedCategoryName === CUSTOMIZED_AGEBASED_TEMPLATES || this.state.selectedCategoryName === CUSTOMIZED_STATIC_TEMPLATES) {\n schema.push({\n AccountId: parseInt(accountId),\n CustomTemplateHeaderId: this.state.selectedOptionId\n });\n }\n else {\n schema.push({\n AccountId: parseInt(accountId),\n matrixAllocations: this.state.matrixAllocations,\n CustomSchema: this.state.currSchema,\n });\n }\n\n this.props.createNewOptionChange(schema)\n .then(() => {\n events.optionChangesStep(this.isCustomized() ? 'final_customized' : 'final');\n this.props.notificationShow('Investment option scheduled.', 'success');\n // get server timestamp here\n return this.props.getServerDateTime()\n .then(() => {\n this.setState({\n createOptionChangeLoading: false,\n isOnPrintStep: true,\n });\n this.nextStepHandle();\n });\n })\n .catch(() => this.setState({ createOptionChangeLoading: false }));\n }\n\n optionsMenuCompile() {\n return this.state.options.map(option => ({\n value: option.id,\n display: option.name,\n props: {\n disabled: option.id === '',\n }\n }));\n }\n\n setOptionsAndSchema(category) {\n const {\n customAgeBasedOptions, customStaticOptions, optionChangeDetails,\n predefinedOptions, newAgeBasedSchema, newStaticSchema,\n } = this.props;\n let options;\n let currSchema = {};\n switch (category) {\n case STATIC: {\n options = predefinedOptions.filter(option => !option.name.includes('Enroll'));\n break;\n }\n case ENROLLMENTDATE: {\n options = predefinedOptions.filter(option => option.name.includes('Enroll'));\n break;\n }\n case CUSTOMIZED_AGEBASED_TEMPLATES: {\n options = customAgeBasedOptions;\n break;\n }\n case CUSTOMIZED_STATIC_TEMPLATES: {\n options = customStaticOptions;\n break;\n }\n case CUSTOMIZED_AGEBASED: {\n options = [];\n currSchema = newAgeBasedSchema;\n break;\n }\n case CUSTOMIZED_STATIC: {\n options = [];\n currSchema = newStaticSchema;\n break;\n }\n default: break;\n }\n if (!this.state.isEditing) {\n const currentOptionName = optionChangeDetails.optionDescription;\n const filteredOptions = options.filter(opt => opt.name.search(currentOptionName) === -1);\n options = filteredOptions;\n }\n this.setState({ options, currSchema });\n }\n\n optionSelectHandle = (value) => {\n const id = parseInt(value);\n this.setState({\n errors: [],\n selectedOption: this.state.options.find(option => option.id === id),\n selectedOptionId: id,\n });\n }\n\n prevStepHandle() {\n const { isEditing, stepIndex } = this.state;\n this.setState({ stepIndex: stepIndex - 1 });\n !isEditing && events.optionChangesStep(this.isCustomized() ? `${stepIndex - 1}_customized` : `${stepIndex - 1}`);\n window.scrollTo(0, 0);\n }\n\n selectFieldCompose(value, onChange, menuItems, error, additionalProps) {\n const { label } = additionalProps;\n return (\n \n );\n }\n\n optionChangeDetailsCompose = () => {\n const {\n selectedCategoryName,\n options,\n selectedOptionId,\n customAllocationSchema,\n currSchema,\n showCustomized\n } = this.state;\n\n const { serverDateTime } = this.props;\n\n const query = options.find(option => option.id === selectedOptionId);\n const customTemplateName = query && query.name;\n const showSelectionOption = customTemplateName && isEmpty(customAllocationSchema);\n\n return (\n
\n

New Option Change Details

\n {this.isCustomized() ?\n this.setState({ showCustomized: !showCustomized })}\n >\n
\n
Selected Category Name: {selectedCategoryName}
\n
\n {showCustomized ? (\n \n ) : (\n \n )}\n
\n
\n :\n
Selected Category Name: {selectedCategoryName}
\n }\n {showSelectionOption &&
Selected Option: {customTemplateName}
}\n {this.isCustomized() && showCustomized &&\n \n }\n
\n );\n }\n\n step0Compose() {\n const { isEditing, isViewing, selectedCategoryName, selectedOptionId } = this.state;\n const isCustomized = this.isCustomized();\n const isCustomizedTemplates = this.isCustomizedTemplates();\n const items = this.optionCategoryMenuCompile();\n const optionsMenu = this.optionsMenuCompile();\n const optionCategoryError = this.errorGet('optionCategory');\n const optionError = this.errorGet('option');\n\n if (isEditing || isViewing) {\n return (\n
\n {this.selectFieldCompose(\n selectedCategoryName,\n this.optionCategorySelectHandle,\n items,\n optionCategoryError,\n { disabled: isViewing, label: 'Option Category' }\n )}\n {!isCustomized && (\n this.selectFieldCompose(\n selectedOptionId,\n this.optionSelectHandle,\n optionsMenu,\n optionError,\n { disabled: isViewing, label: 'Option' },\n )\n )}\n
\n );\n }\n else if (selectedCategoryName === '' || isCustomized) {\n return (\n
\n {this.selectFieldCompose(\n selectedCategoryName,\n this.optionCategorySelectHandle,\n items,\n optionCategoryError,\n { label: 'Option Category' }\n )}\n
\n );\n }\n else if (!isCustomized) {\n return (\n
\n {this.selectFieldCompose(\n selectedCategoryName,\n this.optionCategorySelectHandle,\n items,\n optionCategoryError,\n { label: 'Option Category' }\n )}\n {(isCustomizedTemplates && optionsMenu.length === 0)\n ?\n
No available templates
\n :\n this.selectFieldCompose(\n selectedOptionId,\n this.optionSelectHandle,\n optionsMenu,\n optionError,\n { label: 'Option' }\n )}\n
\n );\n }\n }\n\n step1Compose() {\n const { serverDateTime } = this.props;\n const { isViewing, currSchema, loadingOnMount } = this.state;\n\n if (this.isCustomized()) {\n return (\n \n );\n }\n else {\n return this.termsAndConditionsCompose();\n }\n }\n\n step2Compose() {\n if (!this.state.isOnPrintStep)\n return this.termsAndConditionsCompose();\n else\n return this.step3Compose();\n }\n\n step3Compose() {\n const { serverDateTime } = this.state;\n\n return (\n
\n {this.optionChangeDetailsCompose()}\n
{dayjs(serverDateTime)\n .format('MM/DD/YYYY h:mm A')} MST
\n
\n Please print a copy of this page for your records.\n
\n
\n );\n }\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose() {\n const { createOptionChangeLoading, isViewing, stepIndex, termsChecked } = this.state;\n const cancelButton = (\n \n Cancel\n \n );\n const nextButton = (onClick) => (\n \n Next\n \n );\n const backButton = (\n this.prevStepHandle()}\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Back\n \n );\n const agreeButton = (\n this.optionChangeCreate()}\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n I agree\n \n );\n const printButton = (\n window.print()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Print\n \n );\n const finishButton = (\n this.props.history.goBack()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Finish\n \n );\n\n let buttons = [];\n switch (stepIndex) {\n case 0:\n buttons = [\n cancelButton,\n nextButton(() => this.formValidate(this.nextStepHandle))\n ];\n break;\n case 1:\n if (isViewing) {\n buttons = [\n cancelButton,\n backButton\n ];\n }\n else if (!this.isCustomized()) {\n buttons = [\n cancelButton,\n backButton,\n \n {agreeButton}\n \n ];\n }\n else {\n buttons = [\n cancelButton,\n backButton,\n nextButton(() => this.nextCalculatorReviewHandler())\n ];\n }\n break;\n case 2:\n if (!this.state.isOnPrintStep)\n buttons = [\n cancelButton,\n backButton,\n \n {agreeButton}\n \n ];\n else\n buttons = [\n printButton,\n finishButton,\n ];\n break;\n case 3:\n buttons = [\n printButton,\n finishButton,\n ];\n break;\n default: break;\n }\n return buttons;\n }\n\n stepperCompose() {\n const { smallWidth, stepIndex } = this.state;\n const stepperStyle = {\n width: smallWidth ? '' : '650px'\n };\n\n if (this.isCustomized()) {\n return (\n \n \n this.setState({ stepIndex: 0 })} disabled={stepIndex === 3}>Select New Option\n \n \n this.setState({ stepIndex: 1 })} disabled={stepIndex === 3}>Customize Option\n \n \n this.setState({ stepIndex: 2 })} disabled={stepIndex === 3}>Terms & Conditions\n \n \n this.setState({ stepIndex: 3 })}>Print Review\n \n \n );\n }\n else {\n return (\n \n \n this.setState({ stepIndex: 0 })} disabled={stepIndex === 2}>Select New Option\n \n \n this.setState({ stepIndex: 1 })} disabled={stepIndex === 2}>Terms & Conditions\n \n \n this.setState({ stepIndex: 2 })}>Print Review\n \n \n );\n }\n }\n\n stepperContentCompose() {\n switch (this.state.stepIndex) {\n case 0:\n return this.step0Compose();\n case 1:\n return this.step1Compose();\n case 2:\n return this.step2Compose();\n case 3:\n return this.step3Compose();\n default: break;\n }\n }\n\n termsAndConditionsCompose = () => {\n return (\n
\n {this.optionChangeDetailsCompose()}\n \n
\n\n );\n }\n\n componentDidMount() {\n const {\n customAgeBasedOptions, customStaticOptions, predefinedOptions,\n getNewStaticSchema, getNewAgeBasedSchema, optionsGet,\n newAgeBasedSchema, newStaticSchema, getServerDateTime,\n } = this.props;\n\n const { isEditing, isViewing, serverDateTime } = this.state;\n\n // get custom options\n const promises = [];\n if (customAgeBasedOptions.length === 0 || customStaticOptions.length === 0) {\n promises.push(customOptionsGet());\n }\n // get predefined\n if (predefinedOptions.length === 0) {\n promises.push(optionsGet());\n }\n // get customized age-based schema\n if (newAgeBasedSchema.FundCategories.length === 0) {\n promises.push(getNewAgeBasedSchema());\n }\n // get customized static schema\n if (newStaticSchema.FundCategories.length === 0) {\n promises.push(getNewStaticSchema());\n }\n // get current date (calculator needs for the agreement year)\n if (!serverDateTime) {\n promises.push(\n getServerDateTime().then((response) => {\n const serverDateTime = response.payload.data;\n this.setState({ serverDateTime });\n })\n );\n }\n\n if (promises.length > 0) {\n this.setState({ loadingOnMount: true });\n Promise.all(promises).finally(() => {\n this.setState({ loadingOnMount: false });\n // initialize options\n if ((isEditing || isViewing) && this.props.predefinedOptions.length > 0) {\n this.currentSelectionsGet();\n }\n if (isEditing && Object.keys(this.props.selectedTransaction).length === 0) {\n this.props.history.push(getAccountBaseRoute(this.props.match.params));\n }\n !isEditing && events.optionChangesStep(0);\n });\n }\n }\n\n render() {\n if (this.state.loadingOnMount) {\n return ;\n }\n else if (this.state.isViewing) {\n if (!this.isCustomized()) {\n return (\n \n
\n {!this.props.loading && this.stepperContentCompose()}\n
\n
\n );\n }\n else {\n return (\n \n
\n {!this.props.loading && this.stepperContentCompose()}\n
\n
\n {this.stepperButtonsCompose()}\n
\n
\n );\n }\n }\n else {\n return (\n \n
\n
\n {this.stepperCompose()}\n
\n
\n
\n {!this.props.loading && this.stepperContentCompose()}\n
\n
\n {this.stepperButtonsCompose()}\n
\n
\n );\n }\n }\n}\n\n// withRef is removed -> forwardRef instead\nexport default connect(\n select,\n {\n createNewOptionChange,\n customOptionsGet,\n optionsGet,\n notificationShow,\n allNotificationsHide,\n getServerDateTime,\n getNewAgeBasedSchema,\n getNewStaticSchema,\n },\n null,\n { forwardRef: true }\n)(NewOptions);","/*\n*\n* OptionChangeDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { Icon } from '@mui/material';\nimport {\n Card,\n LoadingOverlay\n} from '@frontend/common';\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n optionChangeDetails: state.accounts.optionChangeDetails\n});\n\nexport class OptionChangeDetails extends React.Component {\n\n static propTypes = {\n accountsInGroupModalShow: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n optionChangeDetails: PropTypes.object.isRequired,\n };\n\n render() {\n const {\n accountsInGroupModalShow,\n loading,\n optionChangeDetails\n } = this.props;\n\n return (\n
\n\n
\n \n
\n\n \n
\n
\n
Account Owner
\n {loading ? '' : optionChangeDetails.agentName}\n
\n
\n
Beneficiary
\n {loading ? '' : optionChangeDetails.beneficiaryName}\n
\n
\n
Account Number
\n {loading ? '' : optionChangeDetails.accountNumber}\n
\n
\n
Total Value
\n {loading ? '' : optionChangeDetails.marketValue}\n
\n
\n
Account Type
\n {loading ? '' : optionChangeDetails.accountType}\n
\n {optionChangeDetails.accountsInGroup > 1 && (\n
\n
\n
Accounts in Group
\n help_outline\n
\n {loading ? '' : optionChangeDetails.accountsInGroup}\n
\n )}\n
\n \n \n
\n
\n
Current Option
\n {loading ? '' : optionChangeDetails.optionDescription}\n
\n
\n
Option Changes Remaining for Calendar Year
\n
{loading ? '' : optionChangeDetails.optionChangesRemaining}
\n
\n
\n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, {})(OptionChangeDetails));\n","/*\n*\n* OptionChanges Component\n*\n*/\nimport React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport AccountsInGroup from './AccountsInGroup';\nimport NewOptions from './NewOptions';\nimport OptionChangeDetails from './OptionChangeDetails';\n\nimport {\n getAccounts,\n getAccountTransactionsDetails,\n getOptionChangeDetails,\n} from '../../actions';\nimport { Breadcrumbs } from '@frontend/common';\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n optionChangeDetails: state.accounts.optionChangeDetails,\n});\n\nexport class OptionChanges extends React.Component {\n\n static propTypes = {\n accountList: PropTypes.array.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getAccountTransactionsDetails: PropTypes.func.isRequired,\n getOptionChangeDetails: PropTypes.func.isRequired,\n optionChangeDetails: PropTypes.object.isRequired\n };\n\n state = {\n accountsInGroupModalOpen: false,\n isViewing: window.location.href.search('view') > -1,\n loading: false,\n };\n\n accountsInGroupModalShow() {\n this.setState({ accountsInGroupModalOpen: true });\n }\n\n optionChangeDetailsGet() {\n const { accountId, groupId } = this.props.match.params;\n\n this.setState({ loading: true });\n\n if (this.props.accountList.length === 0) {\n this.props.getAccounts()\n .then(() => {\n this.props.getAccountTransactionsDetails(groupId, accountId)\n .then(() => {\n this.setState({ loading: false });\n this.props.getOptionChangeDetails(accountId);\n })\n .catch(() => this.setState({ loading: false }));\n })\n .catch(() => this.setState({ loading: false }));\n }\n else {\n this.props.getAccountTransactionsDetails(groupId, accountId)\n .then(() => {\n this.setState({ loading: false });\n this.props.getOptionChangeDetails(accountId);\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n }\n\n componentDidMount() {\n if (this.props.optionChangeDetails.accountsInGroup > 1) {\n this.accountsInGroupModalShow();\n }\n if (parseInt(this.props.optionChangeDetails.accountId) !== parseInt(this.props.match.params.accountId)) {\n this.optionChangeDetailsGet();\n }\n }\n\n render() {\n const { optionChangeDetails } = this.props;\n\n return (\n
\n
\n \n
\n\n
\n this.accountsInGroupModalShow()}\n loading={this.state.loading}\n key={`${optionChangeDetails.accountId}_OptionChangeDetails`}\n />\n
\n\n
\n \n
\n\n this.setState({ accountsInGroupModalOpen: false })}\n />\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n getAccounts,\n getAccountTransactionsDetails,\n getOptionChangeDetails,\n})(OptionChanges));","import React from 'react';\n\nconst AvailableBalanceInfo = () => (\n <>\n

All gift contributions to my529 accounts are subject to a hold, regardless of whether they are contributed directly from a bank account, from a debit card or by check.

\n
    \n
  • \n Contributions for account owners who have been with my529 less than six months: Funds will be held for 20 business days after the deposit.\n
  • \n
  • \n Contributions for account owners that have been with my529 over six months: Funds will be held for at least 7 business days after the deposit.\n
  • \n
  • \n Gift Program contributions made by debit card cannot be withdrawn until 45 business days after deposit.\n
  • \n
\n \n);\n\nexport default AvailableBalanceInfo;\n","/*\n*\n* AccountDetailsCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Card,\n currencyFormatter,\n InfoIcon,\n} from '@frontend/common';\nimport styles from './styles.module.css';\nimport AvailableBalanceInfo from '../../AvailableBalanceInfo';\n\nAccountDetailsCard.propTypes = {\n account: PropTypes.object,\n};\n\nAccountDetailsCard.defaultProps = {\n account: {\n accountOwner: {\n name: ''\n },\n beneficiary: {\n name: ''\n },\n details: {\n accountNumber: '',\n accountBalance: '',\n accountType: '',\n netAvailable: 0\n }\n }\n};\n\nexport function AccountDetailsCard({ account }) {\n const availableBalanceMsg = (\n
\n The available balance is the current total value of the account minus pending transactions out of the account - such as withdrawals, transfers, contribution reversals, contributions that have not cleared the bank, or fees.\n\n \n
\n );\n\n return (\n
\n \n
\n
\n
Account Owner
\n {account.accountOwner.name}\n
\n
\n
Beneficiary
\n {account.beneficiary.name}\n
\n
\n
Account Number
\n {account.details.accountNumber}\n
\n
\n
Total Value
\n {account.details.accountBalance}\n
\n
\n
Account Type
\n {account.details.accountType}\n
\n
\n
\n Available Balance\n \n
\n {currencyFormatter(account.details.netAvailable)}\n
\n
\n \n
\n );\n}\n\nexport default AccountDetailsCard;\n","/*\n*\n* DualPushButtonSwitch Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { find, } from 'lodash';\nimport {\n Radio,\n RadioGroup,\n Button, FormControlLabel\n} from '@mui/material';\n\nimport styles from './styles.module.css';\n\nconst radioButtonStyle = {\n display: 'inline-block',\n width: 'auto',\n padding: '10px',\n};\n\n// eslint-disable-next-line react/prop-types\nfunction OptionButton({ label, value, active, disabled, onChange, style }) {\n return (\n onChange(value)}\n >\n {label}\n \n );\n}\n\nDualPushButtonSwitch.propTypes = {\n onChange: PropTypes.func.isRequired,\n groupLabel: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n radioLabel: PropTypes.string,\n })).isRequired,\n};\n\nexport function DualPushButtonSwitch({ onChange, groupLabel, options }) {\n const useCompressedLayout = window.innerWidth <= 600;\n return useCompressedLayout ? (\n
\n
\n option.active).value}\n onChange={(_, value) => onChange(value)}\n >\n {options.map((option, index) => (\n }\n />\n ))}\n \n
\n
\n ) : (\n
\n {/* There are no CSS styles for pushButton_container or 1 */}\n
\n \n
\n {/* There are no CSS styles for pushButton_container or 2 */}\n
\n \n
\n
\n );\n}\n\nexport default DualPushButtonSwitch;\n","export const TransferTypes = {\n full: 'full',\n partial: 'partial',\n};\n\nexport const TransferInputTypes = {\n Amount: 'Amount',\n Percentage: 'Percentage'\n};\n","/*\n*\n* TargetAccount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransferInputTypes } from '../typeConstants';\nimport { formatAccountDisplayText } from '../index';\n\nimport {\n Icon,\n IconButton,\n} from '@mui/material';\nimport {\n BaseNumberInput,\n CurrencyInput,\n Dropdown,\n} from '@frontend/common';\n\nimport styles from '../TransferStepOneContent/styles.module.css';\n\nexport function parseFloatWrapper(callback) {\n return ({ floatValue, ...etc }) => {\n callback({\n ...etc,\n value: floatValue,\n });\n };\n}\n\nconst noop = () => null;\n\nTargetAccount.propTypes = {\n accountOptions: PropTypes.array,\n index: PropTypes.number,\n target: PropTypes.object,\n onAccountChange: PropTypes.func,\n canRemove: PropTypes.bool,\n onRemove: PropTypes.func,\n accountError: PropTypes.string,\n inputError: PropTypes.string,\n inputFieldType: PropTypes.oneOf([TransferInputTypes.Amount, TransferInputTypes.Percentage]),\n};\n\nTargetAccount.defaultProps = {\n accountOptions: [],\n index: 0,\n target: { AccountId: '', Amount: 0, Percentage: 0 },\n canRemove: false,\n inputFieldType: TransferInputTypes.Amount,\n onAccountChange: noop,\n onRemove: noop,\n accountError: '',\n inputError: '',\n};\n\nexport function TargetAccount({\n index,\n accountOptions,\n target,\n inputFieldType,\n onAccountChange,\n canRemove,\n onRemove,\n accountError,\n inputError,\n}) {\n return (\n
\n onAccountChange({ ...target, AccountId: value })}\n options={accountOptions.map(account => ({\n value: account.AccountId,\n display: formatAccountDisplayText(account),\n props: {\n disabled: account.disabled,\n },\n }))}\n FormControlProps={{ style: { width: '200px' } }}\n InputLabelProps={{ htmlFor: `destinationSelect-${index}` }}\n SelectProps={{\n inputProps: {\n id: `destinationSelect-${index}`,\n name: 'destinationSelect',\n },\n }}\n />\n {inputFieldType === TransferInputTypes.Amount ?\n onAccountChange({\n ...target,\n Amount: value,\n }))}\n errorText={inputError}\n />\n :\n onAccountChange({\n ...target,\n Percentage: parseInt(value.replace('.', '')),\n })}\n isNumericFormat\n inputProps={{\n suffix: '%',\n allowNegative: false,\n }}\n errorText={inputError}\n />\n }\n {canRemove &&\n
\n \n remove_circle\n \n
}\n
\n );\n}\n\nexport default TargetAccount;\n","/*\n*\n* TransferStepOneContent Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n reduce,\n some,\n} from 'lodash';\nimport {\n currencyFormatter,\n} from '@frontend/common';\nimport {\n Checkbox,\n IconButton,\n TextField,\n RadioGroup,\n Radio,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Icon,\n} from '@mui/material';\nimport DualPushButtonSwitch from './DualPushButtonSwitch';\nimport { TransferTypes, TransferInputTypes } from '../typeConstants';\nimport TargetAccount from '../TargetAccount';\nimport { formatAccountDisplayText } from '../index';\n\nimport styles from './styles.module.css';\n\nexport function onKeyUp(showFullBalanceDialog) {\n return (e) => {\n // enabling keyboard accessibility\n if (e.key === 'Enter' || e.key === 'Space') {\n showFullBalanceDialog();\n }\n };\n}\n\nTransferStepOneContent.propTypes = {\n sourceAccount: PropTypes.object.isRequired,\n destinationAccounts: PropTypes.array.isRequired,\n transfer: PropTypes.object.isRequired,\n onTransferChange: PropTypes.func.isRequired,\n onTargetChange: PropTypes.func.isRequired,\n addTargetAccount: PropTypes.func.isRequired,\n removeTargetAccount: PropTypes.func.isRequired,\n showFullBalanceDialog: PropTypes.func.isRequired,\n getErrorForInput: PropTypes.func.isRequired,\n};\n\nexport function TransferStepOneContent(props) {\n const {\n sourceAccount,\n destinationAccounts,\n transfer,\n onTransferChange,\n showFullBalanceDialog,\n onTargetChange,\n addTargetAccount,\n removeTargetAccount,\n getErrorForInput,\n } = props;\n return (\n
\n
\n
\n onTransferChange('transferType')}\n style={{\n display: 'flex'\n }}\n >\n }\n />\n \n Full Balance Transfer\n \n \n {/* There are no CSS styles for InfoIcon_icon */}\n
\n help_outline\n
\n
\n
\n \n }\n control={}\n />\n \n\n
\n
\n
\n
\n
\n
\n Source Account\n
\n
\n {formatAccountDisplayText(sourceAccount)}\n
\n
\n {getErrorForInput('Transfer_sourceContainer')}\n
\n
\n
\n {transfer.transferType === TransferTypes.full ?\n onTransferChange('CloseAccount')}\n />\n }\n label='Leave this account open'\n /> : null\n }\n
\n
\n
\n \n arrow_forward\n \n
\n
\n onTransferChange('transferInputType')}\n options={[\n {\n active: transfer.transferInputType === TransferInputTypes.Amount,\n disabled: transfer.transferType === TransferTypes.full,\n label: '$',\n radioLabel: 'Amount ($)',\n value: TransferInputTypes.Amount,\n },\n {\n active: transfer.transferInputType === TransferInputTypes.Percentage,\n label: '%',\n radioLabel: 'Percentage (%)',\n value: TransferInputTypes.Percentage,\n }\n ]}\n />\n {transfer.TargetAccounts.map((targetAccount, rowIndex) => {\n const accountErrorText = getErrorForInput(`Transfer_destinationContainer-${rowIndex}`);\n return (\n ({\n ...account,\n disabled: some(transfer.TargetAccounts, (dest, destIndex) => {\n return destIndex !== rowIndex && dest.AccountId === account.AccountId;\n }),\n })\n )}\n canRemove={rowIndex !== 0}\n accountError={accountErrorText}\n inputError={getErrorForInput(`Transfer_inputContainer-${rowIndex}`)}\n inputFieldType={transfer.transferInputType}\n onAccountChange={onTargetChange(rowIndex)}\n onRemove={() => removeTargetAccount(rowIndex)}\n />\n );\n })}\n
\n
\n \n add_circle\n \n
\n
\n \n sum + (account[transfer.transferInputType] || 0), 0)) :\n `${reduce(transfer.TargetAccounts, (sum, account) => sum + (account[transfer.transferInputType] || 0), 0)}%`\n }\n inputProps={{\n readOnly: true,\n }}\n />\n {getErrorForInput('Transfer_amountTotal')}\n \n
\n
\n
\n
\n \n );\n}\n\nexport default TransferStepOneContent;\n","/*\n*\n* TransferTermsAndConditions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Checkbox,\n FormControlLabel,\n Icon,\n} from '@mui/material';\nimport {\n currencyFormatter,\n} from '@frontend/common';\nimport { TransferInputTypes, TransferTypes } from '../typeConstants';\n\nimport styles from './styles.module.css';\n\nTransferTermsAndConditions.propTypes = {\n termsChecked: PropTypes.bool.isRequired,\n onTermsToggled: PropTypes.func.isRequired,\n};\n\nexport function TransferTermsAndConditions({ termsChecked, onTermsToggled }) {\n return (\n
\n

\n Terms and Conditions\n

\n

\n Please review the following Terms and Conditions regarding transfers\n

\n

\n I have informed my client that a transfer between my529 accounts with the same account owner, beneficiary, and account type is considered an investment option change, which is only allowed twice each calendar year per beneficiary.\n

\n

\n I have informed my client if they want to change the investment option for those same accounts, they may do so without incurring a second option change as long as they make the change before the close of market trading on the New York Stock Exchange (NYSE), normally 2:00 p.m. MT, the same day as the transfer.\n

\n

\n I have informed my client that if they make a transfer request after the close of market trading, or on a weekend or holiday, any additional changes or cancellations must be received by 2:00 p.m. MT, the following business day. The transfer request may not be changed or canceled after that deadline without it counting as one of the two allowed option changes per calendar year.\n

\n

\n I have confirmed that the beneficiaries on the source and destination accounts involved in this transfer are family members, as defined by Section 529 of the Internal Revenue Code.\n

\n

\n I have informed my client that if the account owner/agent is a Utah taxpayer and that if they are transferring money from an account held by a beneficiary who was younger than age 19 at the time the beneficiary was designated on the account to an account where the beneficiary was age 19 or older when designated on the account:\n

\n
    \n
  • \n my529 will report this transfer on Utah state tax form TC-675H and to the Utah State Tax Commission.\n
  • \n
  • \n Any Utah state income tax credit or deduction claimed by the account owner/agent in a prior tax year must be added back to income in the year of the transfer.\n
  • \n
\n
\n \n }\n label='I have read and understand these Terms and Conditions.'\n />\n
\n
\n );\n}\n\nTermsAndConditionsReview.propTypes = {\n transfer: PropTypes.object.isRequired,\n destinationAccounts: PropTypes.array.isRequired,\n sourceAccount: PropTypes.object.isRequired,\n};\n\nexport function TermsAndConditionsReview({ transfer, destinationAccounts, sourceAccount }) {\n const compactedTargets = transfer.TargetAccounts.filter(account => account.AccountId !== '' &&\n ((transfer.transferType === TransferTypes.partial && account[transfer.transferInputType] !== 0) || (transfer.transferType === TransferTypes.full && account.Percentage > 0))\n ).map(target => ({\n ...destinationAccounts.find(account => account.AccountId === target.AccountId),\n ...target,\n }));\n const pluralize = compactedTargets.length > 1 ? 's' : '';\n const optionChanges = compactedTargets.some(target => target.accountGroupId === sourceAccount.accountGroupId);\n return (\n
\n {transfer.transferType === TransferTypes.full &&\n
\n
Source Account Status:
\n
{transfer.CloseAccount ? 'Will Be Closed' : 'Will Remain Open'}
\n
\n }\n
\n
\n Account Number\n
\n
\n Account #\n
\n {compactedTargets.map(target => (\n
\n {target.details.accountNumber}\n
\n ))}\n
\n
\n
\n Beneficiary Name{pluralize}\n
\n {compactedTargets.map(target => (\n
\n {target.beneficiary.name}\n
\n ))}\n
\n {optionChanges &&\n
\n
\n Option Change\n
\n
\n Opt. Change\n
\n {compactedTargets.map(target => (\n
\n \n {target.accountGroupId === sourceAccount.accountGroupId ? 'check' : 'close'}\n \n
\n ))}\n
\n }\n
\n
\n {transfer.transferInputType}{pluralize}\n
\n {compactedTargets.map(target => (\n
\n {transfer.transferInputType === TransferInputTypes.Amount ? currencyFormatter(target.Amount) : `${target.Percentage}%`}\n
\n ))}\n
\n
\n
Total:
\n
{\n transfer.transferInputType === TransferInputTypes.Amount ?\n currencyFormatter(compactedTargets.reduce((sum, target) => sum + target.Amount, 0)) :\n `${compactedTargets.reduce((sum, target) => sum + target.Percentage, 0)}%`\n }
\n
\n
\n );\n}\n\nexport default TransferTermsAndConditions;\n","/*\n*\n* Transfer Component\n*\n*/\nimport React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { get } from 'lodash';\nimport dayjs from 'dayjs';\nimport { Card, LoadingOverlay } from '@frontend/common';\nimport {\n Step,\n StepButton,\n Stepper,\n Button,\n} from '@mui/material';\nimport TransferSetup from './TransferStepOneContent';\nimport {\n TermsAndConditionsReview,\n TransferTermsAndConditions\n} from './TransferTermsAndConditions';\n\nimport transactionsStyles from '../../styles.module.css';\nimport styles from './styles.module.css';\n\nexport function formatAccountDisplayText(account) {\n const accountNumber = get(account, 'details.accountNumber', '').toString();\n return `${get(account, 'beneficiary.name', '')} ...${accountNumber.substring(accountNumber.length - 5)}`;\n}\n\nexport class Transfer extends React.Component {\n static propTypes = {\n cardTitle: PropTypes.string.isRequired,\n sourceAccount: PropTypes.object,\n destinationAccounts: PropTypes.array,\n save: PropTypes.func.isRequired,\n transfer: PropTypes.object.isRequired,\n canContinue: PropTypes.func.isRequired,\n errors: PropTypes.array.isRequired,\n onTransferChange: PropTypes.func.isRequired,\n onTargetChange: PropTypes.func.isRequired,\n addTargetAccount: PropTypes.func.isRequired,\n removeTargetAccount: PropTypes.func.isRequired,\n showFullBalanceDialog: PropTypes.func.isRequired,\n serverDateTime: PropTypes.string,\n };\n\n static defaultProps = {\n sourceAccount: {},\n destinationAccounts: [],\n };\n\n state = {\n stepIndex: 0,\n termsChecked: false,\n isLoadingSubmit: false,\n };\n\n isSmallWindow = () => window.innerWidth < 600;\n\n onTermsToggled = () => {\n this.setState({\n termsChecked: !this.state.termsChecked\n });\n };\n\n getErrorForInput = (inputKey) => {\n const { errors } = this.props;\n const error = errors.find(err => err.key === inputKey);\n return error !== undefined ? error.message : '';\n };\n\n handlePrevStep = () => {\n this.setState({\n stepIndex: this.state.stepIndex - 1,\n });\n\n window.scrollTo(0, 0);\n };\n\n handleNextStep = () => {\n const { canContinue, } = this.props;\n const { stepIndex, termsChecked, } = this.state;\n\n switch (stepIndex) {\n case 0: {\n canContinue(() => {\n this.setState({\n stepIndex: stepIndex + 1,\n });\n window.scrollTo(0, 0);\n });\n break;\n }\n case 1: {\n if (!termsChecked) {\n return;\n }\n canContinue(() => {\n this.setState({ isLoadingSubmit: true });\n this.props.save()\n .then(() => {\n this.setState({\n stepIndex: this.state.stepIndex + 1\n });\n })\n .catch(() => {\n this.setState({\n isLoadingSubmit: false,\n stepIndex: this.state.stepIndex - 1\n });\n });\n });\n break;\n }\n default: break;\n }\n };\n\n stepperCompose = () => {\n const { stepIndex } = this.state;\n const stepperStyle = {\n width: this.isSmallWindow() ? '' : '650px'\n };\n return (\n \n \n this.setState({ stepIndex: 0 })} disabled={stepIndex === 2}>Select Transfer Amount\n \n \n this.setState({ stepIndex: 1 })} disabled={stepIndex === 2}>Terms & Conditions\n \n \n this.setState({ stepIndex: 2 })}>\n Print Review\n \n \n \n );\n };\n\n stepperContentCompose = () => {\n const {\n stepIndex,\n termsChecked,\n } = this.state;\n const {\n serverDateTime,\n } = this.props;\n\n switch (stepIndex) {\n case 0:\n return (\n \n );\n case 1:\n return [\n ,\n \n ];\n case 2:\n return [\n ,\n
\n
{dayjs(serverDateTime)\n .format('MM/DD/YYYY h:mm A')} MST
\n
\n Please print a copy of this page for your records.\n
\n
,\n ];\n default: break;\n }\n };\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose = () => {\n const { stepIndex, termsChecked, isLoadingSubmit } = this.state;\n const cancelButton = (\n \n Cancel\n \n );\n const nextButton = (\n \n Next\n \n );\n const backButton = (\n \n Back\n \n );\n const submitButton = (\n \n Submit\n \n );\n const printButton = (\n window.print()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Print\n \n );\n const finishButton = (\n this.props.history.goBack()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Finish\n \n );\n let buttons = [];\n switch (stepIndex) {\n case 0:\n buttons = [\n cancelButton,\n nextButton\n ];\n break;\n case 1:\n buttons = [\n cancelButton,\n backButton,\n \n {submitButton}\n \n ];\n break;\n case 2:\n buttons = [\n printButton,\n finishButton,\n ];\n break;\n default: break;\n }\n return buttons;\n };\n\n render() {\n return (\n
\n {/* There are no CSS styles for Transfer_stepperContentContainer */}\n \n {/* There are no CSS styles for Transfer_stepperStepsContainer */}\n
\n
\n {this.stepperCompose()}\n
\n
\n
\n {this.stepperContentCompose()}\n
\n
\n {this.stepperButtonsCompose()}\n
\n
\n
\n );\n }\n}\n\nexport default withRouter(Transfer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal } from '@frontend/common';\n\nexport const FullBalanceDialog = ({ show, onClose, }) => (\n \n
\n

\n You have selected a full-balance transfer of the my529 account shown above. The following will result:\n

\n
    \n
  • \n The entire available balance will be transferred to the account(s) selected. The available balance includes all contributions posted to your account after at least seven business days.\n
  • \n
  • \n Funds not in the available balance include pending transactions out of the account such as:\n
      \n
    • Withdrawals
    • \n
    • Transfers
    • \n
    • Fees
    • \n
    • Contribution reversals
    • \n
    • Contributions that have not cleared the bank
    • \n
    • Gift program contributions
    • \n
    \n
  • \n\n
  • \n All Gift Program contributions to my529 accounts are subject to a hold and may not be available at the time of a full balance transfer, whether they are contributed directly from a bank account, from a debit card or by check.\n
      \n
    • \n Gift Program contributions, made from a bank account or check, to my529 accounts that were established by a first-time account owner less than six months ago will be held for 20 business days after the deposit.\n
    • \n
    • \n Gift Program contributions, made from a bank account or check, to my529 accounts that have been established longer than six months — or from an account owner who has been with my529 over six months — will be held for at least seven business days after the deposit.\n
    • \n
    • \n Gift Program contributions made by debit card cannot be withdrawn until 45 business days after deposit.\n
    • \n
    \n
  • \n
  • \n Your account will be closed unless you check the box below which says, “Leave this account open”. If you are a Utah taxpayer, closing your account may have Utah state income tax implications. Please see Part 9 of the Program Description for more information.\n
  • \n
  • \n Any scheduled electronic contributions will be cancelled unless you check the box below which says, “Leave this account open”.\n
  • \n
\n

\n If the account owner/agent contributes to this account through payroll direct deposit and is closing the account, they must notify their employer to discontinue contributions.\n

\n
\n \n);\n\nFullBalanceDialog.propTypes = {\n show: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default FullBalanceDialog;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal } from '@frontend/common';\n\nexport const OptionChangeDialog = ({ show, onClose, }) => (\n \n
\n

\n This transfer will count as one of the two total investment option changes allowed per beneficiary for this calendar year.\n

\n

\n If, after making this transfer, you want to change the investment option for the same beneficiary's accounts of the same account type,\n you may do so without incurring a second option change as long as you make the change before the close of market trading on the New York Stock Exchange (NYSE),\n normally 2:00 p.m. MT. You also must make any changes or cancellations before the close of market trading.\n

\n

\n If you make a transfer request after the close of market trading, or on a weekend or holiday, any additional changes or cancellations must be received by 2:00 p.m. MT, the following business day.\n

\n
\n \n);\n\nOptionChangeDialog.propTypes = {\n show: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default OptionChangeDialog;\n","export const validationErrors = {\n fullBalanceNotAllocated: 'Full Balance Transfers must be 100% allocated.',\n partialBalancePercentOverMax: 'Total must be less than 100%.',\n partialBalancePercentUnderMinimum: 'Total must be greater than 0%.',\n totalGreaterThanAvailable: 'Total must be less than Available Balance.',\n totalUnderMinimum: 'Total must be at least $1.00.',\n accountOwnerSingleAccount: 'There is only one account under this Account Owner.',\n destinationAccountMissing: 'Destination account is missing.',\n noOptionChangesRemaining: (beneficiaryName) => `No Option Changes Remaining for Beneficiary ${beneficiaryName}.`,\n custodialToOtherType: (typeName) => `${typeName} Accounts cannot be transferred to other account types.`,\n custodialFromOtherType: (typeName) => `${typeName} Accounts cannot be transferred from other account types.`,\n custodialToOtherBeneficiary: (typeName) => `${typeName} Accounts cannot be transferred to other Beneficiaries.`,\n sourceAccountZeroBalance: 'Source Account has no funds to transfer.',\n termsNotChecked: 'I have read and understand these terms and conditions.',\n};\n","/*\n*\n* Transfers Component\n*\n*/\nimport React from 'react';\nimport { withRouter, } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { find, reduce, get, } from 'lodash';\nimport {\n Breadcrumbs,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\nimport {\n getTransfer,\n getAccountDetails,\n getTransferAccounts,\n createNewTransfer,\n updateTransfer,\n} from '../../actions';\nimport {\n getServerDateTime,\n} from 'components/AppRoot/StaticResources/actions';\nimport { getAccountBaseRoute } from '../../helpers';\nimport AccountDetailsCard from './AccountDetailsCard';\nimport Transfer from './Transfer';\nimport {\n FullBalanceDialog,\n OptionChangeDialog,\n} from './Dialogs';\nimport { TransferInputTypes, TransferTypes } from './Transfer/typeConstants';\nimport { validationErrors } from './Transfer/errorConstants';\n\nimport styles from './styles.module.css';\n\nconst select = (state, { match }) => ({\n sourceAccount: state.accounts.cache[match.params.accountId],\n destinationAccounts: state.accounts.transferAccounts[match.params.accountId] || [],\n transfer: match.params.transferId ? state.accounts.transfers[match.params.transferId] : undefined,\n});\n\nexport class Transfers extends React.Component {\n\n static propTypes = {\n sourceAccount: PropTypes.object,\n destinationAccounts: PropTypes.array.isRequired,\n transfer: PropTypes.object,\n createNewTransfer: PropTypes.func.isRequired,\n updateTransfer: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getTransfer: PropTypes.func.isRequired,\n getAccountDetails: PropTypes.func.isRequired,\n getTransferAccounts: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n match: PropTypes.shape({\n params: PropTypes.shape({\n agentId: PropTypes.string.isRequired,\n groupId: PropTypes.string.isRequired,\n accountId: PropTypes.string.isRequired,\n transferId: PropTypes.string,\n }).isRequired,\n }).isRequired,\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n getServerDateTime: PropTypes.func.isRequired,\n };\n\n state = {\n editing: this.props.location.pathname.includes('/edit'),\n isLoading: false,\n sourceAccount: this.props.sourceAccount,\n transfer: this.props.transfer !== undefined\n ?\n {\n ...this.props.transfer,\n transferType: this.props.transfer.Percentage < 100 ? TransferTypes.partial : TransferTypes.full,\n transferInputType: this.props.transfer.Percentage > 0 ? TransferInputTypes.Percentage : TransferInputTypes.Amount,\n }\n :\n {\n AccountId: parseInt(this.props.match.params.accountId),\n Amount: 0,\n Percentage: 0,\n CloseAccount: true,\n TargetAccounts: [{ AccountId: '', Amount: 0, Percentage: 0 }],\n transferType: TransferTypes.partial,\n transferInputType: TransferInputTypes.Amount,\n },\n runValidation: false,\n errors: [],\n isLoadingSubmit: false,\n showOptionChangeModal: false,\n showFullBalanceDialog: false,\n hasSeenFullBalanceDialog: false,\n serverDateTime: null,\n };\n\n setupState = () => {\n const { transfer, sourceAccount } = this.props;\n\n if (this.state.editing) {\n const newTransfer = {\n AccountId: transfer.AccountId,\n Amount: get(transfer, 'Amount', 0),\n Percentage: get(transfer, 'Percentage', 0),\n CloseAccount: get(transfer, 'CloseAccount', true),\n TargetAccounts: get(transfer, 'TargetAccounts', []).map(target => ({\n AccountId: target.AccountId,\n Amount: get(target, 'Amount', 0),\n Percentage: get(target, 'Percentage', 0),\n }))\n };\n this.setState({\n sourceAccount: {\n ...sourceAccount,\n details: {\n ...sourceAccount.details,\n netAvailable: transfer.TargetAccounts.reduce((sum, account) => sum + account.Amount, sourceAccount.details.netAvailable)\n }\n },\n isLoading: false,\n transfer: {\n ...newTransfer,\n transferType: newTransfer.Percentage < 100 ? TransferTypes.partial : TransferTypes.full,\n transferInputType: newTransfer.Percentage > 0 ? TransferInputTypes.Percentage : TransferInputTypes.Amount,\n },\n hasSeenFullBalanceDialog: newTransfer.Percentage === 100,\n });\n }\n else {\n this.setState({\n sourceAccount: this.props.sourceAccount,\n isLoading: false,\n });\n }\n };\n\n transfersDetailsGet = () => {\n const { accountId, transferId } = this.props.match.params;\n const { getTransfer, getAccountDetails, getTransferAccounts, transfer, sourceAccount, destinationAccounts } = this.props;\n if ((this.state.editing && !transfer) || !sourceAccount || destinationAccounts.length === 0) {\n this.setState({ isLoading: true });\n }\n return Promise.all([\n this.state.editing && getTransfer(transferId),\n getAccountDetails(accountId),\n getTransferAccounts(accountId),\n ])\n .catch(() => null)\n .finally(() => {\n this.setupState();\n });\n };\n\n prepareTransferPayload = () => {\n const {\n transfer,\n } = this.state;\n const targets = transfer.TargetAccounts.filter(account => account.AccountId !== '' &&\n ((transfer.transferType === TransferTypes.partial && account[transfer.transferInputType] !== 0) || (transfer.transferType === TransferTypes.full && account.Percentage > 0))\n );\n const transferPayload = {\n AccountId: transfer.AccountId,\n TargetAccounts: targets.map(account => {\n const newAccount = {\n AccountId: account.AccountId,\n };\n if (transfer.transferType === TransferTypes.partial && transfer.transferInputType === TransferInputTypes.Amount) {\n newAccount.Amount = account.Amount;\n }\n else {\n newAccount.Percentage = account.Percentage;\n }\n return newAccount;\n }),\n };\n if (this.props.transfer !== undefined) {\n transferPayload.TradeDate = this.props.transfer.TradeDate;\n transferPayload.TransferId = this.props.transfer.TransferId;\n }\n\n if (transfer.transferType === TransferTypes.full) {\n transferPayload.CloseAccount = transfer.CloseAccount;\n }\n return transferPayload;\n };\n\n editTransfer = () => {\n return this.props.updateTransfer(this.prepareTransferPayload())\n .then(() => {\n this.props.notificationShow('Transfer updated.', 'success');\n // get server timestamp by returning promise here\n return this.props.getServerDateTime()\n .then((response) => {\n const serverDateTime = response.payload.data;\n this.setState({ serverDateTime });\n });\n });\n };\n\n createNewTransfer = () => {\n return this.props.createNewTransfer(this.prepareTransferPayload())\n .then(() => {\n this.props.notificationShow('Transfer created.', 'success');\n // get server timestamp by returning promise here\n return this.props.getServerDateTime()\n .then((response) => {\n const serverDateTime = response.payload.data;\n this.setState({ serverDateTime });\n });\n });\n };\n\n showFullBalanceDialog = () => {\n this.setState({\n showFullBalanceDialog: true,\n });\n };\n\n stateChangeValidationWrapper = (stateChanges) => {\n if (this.state.runValidation) {\n this.setState({\n errors: this.transferFormErrors({\n ...this.state,\n ...stateChanges\n }),\n ...stateChanges\n });\n }\n else {\n this.setState(stateChanges);\n }\n };\n\n onTransferChange = (key, value) => {\n const { transfer } = this.state;\n switch (key) {\n case 'transferType': {\n this.transferTypeToggle();\n break;\n }\n case 'transferInputType': {\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n transferInputType: transfer.transferInputType === TransferInputTypes.Amount ? TransferInputTypes.Percentage : TransferInputTypes.Amount,\n }\n });\n break;\n }\n case 'CloseAccount': {\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n CloseAccount: !transfer.CloseAccount,\n }\n });\n break;\n }\n default: {\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n [key]: value,\n }\n });\n }\n }\n };\n\n onTargetChange = (targetAccountIndex) => {\n return (nextTarget) => {\n const { AccountId } = nextTarget;\n const { destinationAccounts, } = this.props;\n const { sourceAccount, transfer } = this.state;\n let showOptionChangeModal = false;\n if (transfer.TargetAccounts[targetAccountIndex].AccountId !== AccountId) {\n const account = find(destinationAccounts, { AccountId });\n if (account) {\n showOptionChangeModal = account.accountGroupId === sourceAccount.accountGroupId;\n }\n }\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n TargetAccounts: transfer.TargetAccounts.map((account, index) => {\n if (targetAccountIndex === index) {\n return nextTarget;\n }\n return account;\n })\n },\n showOptionChangeModal,\n });\n };\n };\n\n addTargetAccount = () => {\n const { transfer: { TargetAccounts, ...other } } = this.state;\n this.stateChangeValidationWrapper({\n transfer: {\n ...other,\n TargetAccounts: [\n ...TargetAccounts,\n { AccountId: '', Amount: 0, Percentage: 0 }\n ]\n }\n });\n };\n\n removeTargetAccount = index => {\n const { transfer: { TargetAccounts, ...other } } = this.state;\n this.stateChangeValidationWrapper({\n transfer: {\n ...other,\n TargetAccounts: TargetAccounts.filter((_, rowIndex) => rowIndex !== index)\n }\n });\n };\n\n transferTypeToggle = () => {\n const {\n transfer,\n hasSeenFullBalanceDialog,\n } = this.state;\n const newTransferType = transfer.transferType === TransferTypes.partial ? TransferTypes.full : TransferTypes.partial;\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n transferType: newTransferType,\n transferInputType: transfer.transferType === TransferTypes.partial ? TransferInputTypes.Percentage : transfer.transferInputType,\n TargetAccounts: newTransferType === TransferTypes.full && !transfer.TargetAccounts.some(target => target.Percentage > 0) ?\n transfer.TargetAccounts.map((target, index) => {\n // transfer type is being changed to full, so set percentage on first destination to 100%\n if (index === 0 && transfer.transferType === TransferTypes.partial && target.Percentage !== 100) {\n return {\n ...target,\n Percentage: 100\n };\n }\n return target;\n }) : transfer.TargetAccounts,\n },\n showFullBalanceDialog: !hasSeenFullBalanceDialog,\n });\n };\n\n canContinue = (onContinue) => {\n const errors = this.transferFormErrors();\n this.setState({\n errors,\n runValidation: true,\n });\n return errors.length === 0 && ((onContinue && onContinue()) || true);\n };\n\n transferFormErrors = (nextState) => {\n const {\n transfer,\n sourceAccount,\n } = nextState || this.state;\n const errors = [];\n const totalPercentage = reduce(transfer.TargetAccounts, (sum, account) => sum + account.Percentage, 0);\n const totalAmount = reduce(transfer.TargetAccounts, (sum, account) => sum + account.Amount, 0);\n\n // total field\n if (transfer.transferType === TransferTypes.full) {\n // must equal 100% allocation\n if (totalPercentage !== 100) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: validationErrors.fullBalanceNotAllocated,\n });\n }\n }\n else {\n if (transfer.transferInputType === TransferInputTypes.Percentage && totalPercentage > 99) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: validationErrors.partialBalancePercentOverMax\n });\n }\n else if (transfer.transferInputType === TransferInputTypes.Percentage && totalPercentage === 0) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: validationErrors.partialBalancePercentUnderMinimum\n });\n }\n else if (transfer.transferInputType === TransferInputTypes.Amount) {\n if (totalAmount > sourceAccount.details.netAvailable) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: validationErrors.totalGreaterThanAvailable,\n });\n }\n if (totalAmount < 1) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: validationErrors.totalUnderMinimum,\n });\n }\n }\n }\n\n // only 1 row\n if (transfer.TargetAccounts.length === 1) {\n // destination account isn't selected\n if (transfer.TargetAccounts[0].AccountId === '') {\n errors.push({\n key: 'Transfer_destinationContainer-0',\n message: validationErrors.destinationAccountMissing,\n });\n }\n }\n\n transfer.TargetAccounts.forEach((account, index) => {\n // destination has amount/percentage filled in, but no account selected\n if ((\n (transfer.transferType === TransferTypes.full && account.Percentage > 0) ||\n (transfer.transferType === TransferTypes.partial && (\n (transfer.transferInputType === TransferInputTypes.Amount && account.Amount > 0) ||\n (transfer.transferInputType === TransferInputTypes.Percentage && account.Percentage > 0)\n ))\n ) && account.AccountId === '') {\n errors.push({\n key: `Transfer_destinationContainer-${index}`,\n message: validationErrors.destinationAccountMissing,\n });\n }\n });\n return errors;\n };\n\n componentDidMount() {\n this.transfersDetailsGet();\n }\n\n render() {\n const {\n match,\n location,\n destinationAccounts\n } = this.props;\n const {\n isLoading,\n sourceAccount,\n editing,\n transfer,\n serverDateTime,\n } = this.state;\n return (\n
\n
\n {(location.pathname.indexOf('new') > -1 || location.pathname.indexOf('edit') > -1) &&\n -1 ? 'New' : 'Edit Scheduled'} Transfer` },\n ]}\n />}\n
\n
\n \n \n \n
\n
\n \n \n \n
\n {\n this.setState({\n showFullBalanceDialog: false,\n hasSeenFullBalanceDialog: true,\n });\n }}\n />\n {\n this.setState({ showOptionChangeModal: false });\n }}\n />\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n createNewTransfer,\n updateTransfer,\n notificationShow,\n getAccountDetails,\n getTransferAccounts,\n getTransfer,\n getServerDateTime,\n})(Transfers));\n","/*\n*\n* AccountsInGroup Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Modal,\n \n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n} from '@frontend/common';\n\nAccountsInGroup.propTypes = {\n groupAccounts: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n onProportionalSelect: PropTypes.func.isRequired,\n};\n\nexport function AccountsInGroup({ groupAccounts, loading, onClose, onProportionalSelect, open }) {\n \n const tableData = groupAccounts.map(account => ({\n accountId: account.accountId,\n accountNumber: account.accountNumber,\n availableBalance: account.availableBalance.number,\n optionDescription: account.optionDescription,\n }));\n \n return (\n \n

Withdrawing Funds from Multiple Accounts

\n

There are two ways to withdraw funds if you own multiple accounts for the same beneficiary:

\n
    \n
  1. You may select one account and the amount you wish to withdraw or
  2. \n
  3. You may withdraw funds proportionally from all displayed accounts for the same beneficiary
  4. \n
\n
\n \n \n \n \n \n \n \n
\n \n );\n}\n\nexport default AccountsInGroup;","export const cleanDigits = (str) => str ? str.toString().replace(/[^\\d]+/g, '') : ''; // remove all non-digit characters\n\nexport const sanitizeHTML = (str) => str ? str.replace(/[&\"'<>\\\\`:]/g, '') : ''; // remove all dangerous tags\n\nexport const alphaNumericOnly = (str) => str ? str.replace(/[^0-9a-zA-Z]/g, '') : '';\n\nexport const phoneLastFour = (phoneNum) => {\n const cleanPhoneNum = cleanDigits(phoneNum);\n return cleanPhoneNum ? cleanPhoneNum.substr(cleanPhoneNum.length - 4, cleanPhoneNum.length) : '';\n};","/*\n*\n* StateDropdown Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { getEnvironmentVariables } from 'components/AppRoot/StaticResources/actions';\n\nimport { Dropdown } from '@frontend/common';\n\nconst select = (state) => ({\n states: state.static.environmentVars.usStates,\n});\n\n\nexport class StateDropdown extends React.Component {\n\n static propTypes = {\n states: PropTypes.array.isRequired,\n getEnvironmentVariables: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n if (this.props.states.length === 0) {\n this.props.getEnvironmentVariables(['USStates'])\n .catch(() => null);\n }\n }\n\n render() {\n const { states, ...otherProps } = this.props;\n return (\n ({ value: state.abbreviation, display: state.fullName }))}\n {...otherProps}\n />\n );\n }\n}\n\nexport default connect(select, { getEnvironmentVariables })(StateDropdown);\n","/*\n*\n* NewWithdrawals Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { debounce } from 'lodash';\nimport dayjs from 'dayjs';\nimport * as validator from 'utils/helpers/form_validation';\nimport { sanitizeHTML } from 'utils/helpers/sanitation';\n\nimport {\n ACH_PAYMENT,\n ACCOUNT_OWNER,\n ACCOUNT_TYPE_UGMA_UTMA,\n BENEFICIARY,\n CHECK_PAYMENT,\n K12_ED,\n HIGHER_ED,\n FULL_BALANCE,\n ONE_TIME,\n PARTIAL_BALANCE,\n SCHOOL,\n ELECTRONIC_PAYMENT,\n} from '../constants';\nimport {\n Card,\n ConfirmModal,\n CurrencyInput,\n DatePicker,\n Dropdown,\n InfoIcon,\n LoadingOverlay,\n Modal,\n ZipInput,\n currencyFormatter,\n notificationShow,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\nimport StateDropdown from 'components/Features/protected/StateDropdown';\nimport {\n createNewWithdrawal,\n getSchools\n} from '../../../actions';\nimport {\n getServerDateTime,\n} from 'components/AppRoot/StaticResources/actions';\n\nimport {\n Checkbox,\n Radio,\n RadioGroup,\n FormControlLabel,\n Button,\n FormControl,\n Input,\n InputLabel,\n Step,\n Stepper,\n StepButton,\n TextField,\n Collapse,\n FormHelperText,\n Slide,\n} from '@mui/material';\n\nimport events from 'utils/ga';\n\nimport transactionsStyles from '../../styles.module.css';\nimport styles from './styles.module.css';\n\nconst checkMailingText = 'A check will be mailed in 3-5 business days to:';\nconst sellDateText = [\n 'The Sell Date is the day on which my529 will submit an order to sell units of your investment for your withdrawal. Withdrawn funds will not be available on the Sell Date.',\n 'Please allow 2-3 days for the trade to settle – plus mailing time for check requests of up to 2 weeks – when considering which day to schedule the withdrawal.',\n 'If the markets are closed to trading on the selected day due to a holiday, weekend or other event, the sell order will be submitted the next business day. my529 offers no guarantee regarding the timing of transactions.'\n];\n\nconst select = (state) => ({\n schools: state.accounts.schools,\n withdrawalDetails: state.accounts.withdrawalDetails,\n withdrawalVariables: state.static.environmentVars.withdrawalVariables\n});\n\nexport class NewWithdrawals extends React.Component {\n static propTypes = {\n createNewWithdrawal: PropTypes.func.isRequired,\n getSchools: PropTypes.func.isRequired,\n isProportional: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n schools: PropTypes.array.isRequired,\n warningDisplay: PropTypes.func.isRequired,\n withdrawalDetails: PropTypes.object.isRequired,\n withdrawalVariables: PropTypes.object.isRequired,\n getServerDateTime: PropTypes.func.isRequired,\n };\n\n partialBalanceWithdrawalOnly = (this.props.isProportional && !this.props.withdrawalDetails.allowFullWithdrawalGroup) || (!this.props.isProportional && !this.props.withdrawalDetails.allowFullWithdrawalIndividual);\n\n state = {\n createNewWithdrawalLoading: false,\n duplicateWithdrawalModalOpen: false,\n duplicateWithdrawalMessage: '',\n errors: [],\n partialWithdrawalMessageOpen: this.partialBalanceWithdrawalOnly,\n schools: this.props.schools,\n schoolSearchOpen: false,\n schoolSearchLoading: false,\n smallScreen: window.innerWidth <= 1200,\n step0ValidationHasRun: false,\n step1ValidationHasRun: false,\n step2ValidationHasRun: false,\n stepIndex: 0,\n termsChecked: false,\n withdrawal: {\n amount: 0,\n amountType: this.partialBalanceWithdrawalOnly ? PARTIAL_BALANCE : '',\n bankAccount: {},\n leaveAccountOpen: false,\n frequency: ONE_TIME,\n ignoreDuplicates: false,\n paymentType: '',\n proportionalAmounts: [],\n recipientAddress: {\n agent: this.props.withdrawalDetails.agentAddress,\n beneficiary: this.props.withdrawalDetails.beneficiaryAddress,\n school: {\n attn: '',\n name: '',\n street1: '',\n city: '',\n state: { Code: '' },\n postalCode: '',\n schoolId: '',\n fbo: this.props.withdrawalDetails.beneficiaryName,\n studentIdNum: '',\n },\n },\n recipient: '',\n sellDate: this.props.withdrawalVariables.sellDates.length > 0 ? dayjs(this.props.withdrawalVariables.sellDates[0]) : null,\n withdrawalType: '',\n },\n withdrawalDetails: this.props.withdrawalDetails,\n withdrawalVariables: this.props.withdrawalVariables,\n serverDateTime: null,\n };\n\n recipientAddressDebounce = debounce((e, fieldName) => this.recipientAddressHandle(e, fieldName), 200);\n\n amountHandle = ({ floatValue = 0 }) => {\n this.withdrawalStateSet('amount', floatValue);\n\n if (this.props.isProportional) {\n this.proportionalAmountsSet(floatValue);\n }\n }\n\n amountTypeHandle = (e) => {\n const amountType = e.target.value;\n const { isProportional, withdrawalDetails } = this.props;\n\n this.withdrawalStateSet('amountType', amountType);\n\n if (amountType === FULL_BALANCE && isProportional) {\n this.withdrawalStateSet('amount', withdrawalDetails.totalValue.number);\n this.proportionalAmountsSet();\n }\n else if (amountType === FULL_BALANCE && !isProportional) {\n this.withdrawalStateSet('amount', withdrawalDetails.availableBalance.number);\n }\n else if (amountType === PARTIAL_BALANCE && isProportional) {\n this.withdrawalStateSet('amount', 0);\n this.proportionalAmountsSet();\n }\n else {\n this.withdrawalStateSet('amount', 0);\n }\n }\n\n bankAccountSelectHandle = (value) => {\n this.withdrawalStateSet('bankAccount', this.props.withdrawalDetails.agentBankAccounts.find(bankAccount => bankAccount.id === value));\n }\n\n checkAddressCompose = () => {\n const { stepIndex, withdrawal: { recipient, recipientAddress } } = this.state;\n const { withdrawalDetails: { agentAddressChanged, beneficiaryAddressChanged } } = this.props;\n const checkMailingInfo = 'As a financial advisor, you are not permitted to make address changes. Please verify the mailing address on file is accurate before requesting a withdrawal. To make a change, have the account owner/agent contact my529.';\n\n const checkNote = stepIndex !== 3 && (\n \n {checkMailingText}\n \n \n );\n\n const addressChangeMsg = (checkRecipient) => {\n return {`Check withdrawals to the ${checkRecipient} are disabled because of a recent mailing address change.`};\n };\n\n if (recipient === ACCOUNT_OWNER) {\n const agent = recipientAddress.agent;\n\n return (\n
\n {agentAddressChanged ? addressChangeMsg('account agent/account owner') : checkNote}\n

{agent.line1}

\n {agent.line2 &&

{agent.line2}

}\n

{agent.street1}

\n {agent.street2 &&

{agent.street2}

}\n

{agent.city}, {agent.state.Code} {agent.postalCode}

\n
\n );\n }\n else if (recipient === BENEFICIARY) {\n const beneficiary = recipientAddress.beneficiary;\n return (\n
\n {beneficiaryAddressChanged ? addressChangeMsg('beneficiary') : checkNote}\n

{beneficiary.name}

\n

{beneficiary.street1}

\n {beneficiary.street2 &&

{beneficiary.street2}

}\n

{beneficiary.city}, {beneficiary.state.Code} {beneficiary.postalCode}

\n
\n );\n }\n else {\n const school = recipientAddress.school;\n return (\n
\n {checkNote}\n

{school.name}

\n {school.attn &&

{school.attn}

}\n

{school.street1}

\n

{school.city}, {school.state.Code} {school.postalCode}

\n

FBO: {school.fbo}

\n

Student ID: {school.studentIdNum}

\n
\n );\n }\n }\n\n errorGet = (key) => {\n const error = this.state.errors.find(error => error.key === key);\n return error ? error.message : '';\n }\n\n formValidate = (nextStep = () => null) => {\n switch (this.state.stepIndex) {\n case 0: {\n const { isProportional, withdrawalDetails: { availableBalance, totalValue }, withdrawalVariables: { minWithdrawal, maxWithdrawal, sellDates } } = this.props;\n this.setState(({ withdrawal: { amount, amountType, sellDate, withdrawalType } }) => {\n const availBalance = isProportional ? totalValue.number : availableBalance.number;\n const errors = [];\n\n if (amount < minWithdrawal) { // validates amount is more than min withdrawal\n errors.push({\n key: 'amount',\n message: `Minimum withdrawal is ${currencyFormatter(minWithdrawal)}.`\n });\n }\n else if (amount > availBalance) { // validates amount is less than than available balance\n errors.push({\n key: 'amount',\n message: 'Withdrawal exceeds available balance.'\n });\n }\n else if (amount >= maxWithdrawal) { // validates amount is less than online maximum\n errors.push({\n key: 'amount',\n message: `Withdrawals of ${currencyFormatter(maxWithdrawal)} or more require a Signature Guarantee. Visit https://my529.org to complete and submit Withdrawal Request Form 300, which includes a section for a Signature Guarantee.`\n });\n }\n if (!amountType) { // validates amount type (full or partial) is selected\n errors.push({\n key: 'amountType',\n message: 'Amount type is required.'\n });\n }\n if (!withdrawalType) { // validates withdrawal type (HIGHER_ED, ACCOUNT_OWNER, K12_ED) is selected\n errors.push({\n key: 'withdrawalType',\n message: 'Withdrawal type is required.'\n });\n }\n if (!sellDate) { // validates a sell date is selected\n errors.push({\n key: 'sellDate',\n message: 'Sell Date is required.'\n });\n }\n if (!sellDates.some(date => dayjs(date).isSame(sellDate, 'day'))) { // validates that keyed-in date matches a valid sell date\n errors.push({\n key: 'sellDate',\n message: 'Sell Date is not valid.'\n });\n }\n\n return { errors, step0ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n case 1: {\n this.setState(({ withdrawal: { recipient } }) => {\n const errors = [];\n if (!recipient) {\n errors.push({\n key: 'recipient',\n message: 'Recipient is required.'\n });\n }\n return { errors, step1ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n case 2: {\n this.setState(({ withdrawal: { bankAccount, paymentType, recipient, recipientAddress: { school } } }) => {\n const errors = [];\n const formattedPostal = school.postalCode.replace(/\\D/g, '');\n if (recipient === SCHOOL) {\n if (school.name.length < 1) {\n errors.push({\n key: 'school',\n message: 'School is required. Click the button to select one.'\n });\n }\n const street1Error = validator.street1Validator(school.street1.trim());\n if (street1Error) {\n errors.push({\n key: 'street1',\n message: street1Error,\n });\n }\n const cityError = validator.cityValidator(school.city.trim());\n if (cityError) {\n errors.push({\n key: 'city',\n message: cityError,\n });\n }\n if (!school.state.Code) {\n errors.push({\n key: 'state',\n message: 'State is required.'\n });\n }\n if (formattedPostal.length !== 5 && formattedPostal.length !== 9) {\n errors.push({\n key: 'postalCode',\n message: 'Postal code is required.'\n });\n }\n const attnError = validator.alphaNumericOnlyValidator(school.attn);\n if (attnError) {\n errors.push({\n key: 'attn',\n message: 'Please use only alphanumeric characters.',\n });\n }\n const studentIdNumError = validator.alphaNumericOnlyValidator(school.studentIdNum);\n if (studentIdNumError) {\n errors.push({\n key: 'studentIdNum',\n message: 'Please use only alphanumeric characters.',\n });\n }\n }\n if (recipient === ACCOUNT_OWNER && paymentType === ACH_PAYMENT && !bankAccount.id) {\n errors.push({\n key: 'bankAccount',\n message: 'Bank account is required.'\n });\n }\n if (!paymentType) {\n errors.push({\n key: 'paymentType',\n message: 'Payment type is required.'\n });\n }\n return { errors, step2ValidationHasRun: true };\n }, () => this.state.errors.length === 0 && nextStep());\n break;\n }\n default: break;\n }\n }\n\n infoMessagesCompose = (messages) => {\n return (
{messages.map(msg =>

{msg}

)}
);\n }\n\n leaveAccountOpenHandle = () => {\n this.withdrawalStateSet('leaveAccountOpen', !this.state.withdrawal.leaveAccountOpen);\n }\n\n nextStepHandle = () => {\n const { smallScreen, stepIndex } = this.state;\n this.setState({ stepIndex: stepIndex + 1 });\n if (!smallScreen || stepIndex + 1 === 3) {\n window.scrollTo(0, 0);\n }\n events.withdrawalsStep(this.partialBalanceWithdrawalOnly ? `${stepIndex + 1}_partial` : stepIndex + 1);\n }\n\n paymentTypeHandle = (e) => {\n const { withdrawalDetails: { agentBankAccounts, accountType } } = this.props;\n const { recipient } = this.state.withdrawal;\n\n if (\n recipient === SCHOOL ||\n recipient === BENEFICIARY ||\n (recipient === ACCOUNT_OWNER && agentBankAccounts.length === 0) ||\n (recipient === ACCOUNT_OWNER && accountType === ACCOUNT_TYPE_UGMA_UTMA)\n ) {\n this.withdrawalStateSet('paymentType', CHECK_PAYMENT);\n }\n else if (e !== undefined) {\n this.withdrawalStateSet('paymentType', e.target.value);\n }\n }\n\n previousStepHandle = () => {\n const { stepIndex } = this.state;\n this.setState({ stepIndex: stepIndex - 1 });\n events.withdrawalsStep(this.partialBalanceWithdrawalOnly ? `${stepIndex - 1}_partial` : stepIndex - 1);\n }\n\n proportionalAmountsSet = (value) => {\n const { withdrawal: { amount, amountType }, withdrawalDetails: { groupAccounts } } = this.state;\n\n if (amountType === FULL_BALANCE) {\n this.withdrawalStateSet('proportionalAmounts', groupAccounts.map(account => ({ accountId: account.accountId, amount: account.marketValue.number })));\n }\n else {\n this.withdrawalStateSet('proportionalAmounts', groupAccounts.map(account => ({ accountId: account.accountId, amount: (value ? value : amount) * account.percentageOfTotalValue })));\n }\n }\n\n radioButtonLabelGenerate = (label) => {\n return (\n \n
{label.name}
\n
\n \n
\n
\n );\n }\n\n recipientAddressHandle = (e, fieldName) => {\n if (e !== undefined) {\n const addresses = { ...this.state.withdrawal.recipientAddress };\n\n let value;\n if (fieldName === 'postalCode') {\n value = e.formattedValue;\n }\n else {\n value = e.target.value;\n }\n\n this.withdrawalStateSet('recipientAddress', { ...addresses, school: { ...addresses.school, [fieldName]: value } });\n }\n }\n\n recipientHandle = (e) => {\n this.withdrawalStateSet('recipient', e.target.value);\n }\n\n schoolSelect = (schoolId) => {\n const addresses = { ...this.state.withdrawal.recipientAddress };\n const { schools, withdrawalDetails: { schoolAddresses } } = this.props;\n\n if (schoolAddresses.length > 0 && schoolAddresses.find(address => address.schoolId === schoolId)) {\n this.withdrawalStateSet('recipientAddress', { ...addresses, school: schoolAddresses.find(address => address.schoolId === schoolId) });\n }\n else {\n this.withdrawalStateSet('recipientAddress', { ...addresses, school: { ...addresses.school, schoolId, name: schools.find(school => school.schoolId === schoolId).name } });\n }\n this.setState({ schoolSearchOpen: false });\n }\n\n schoolsGet = () => {\n if (this.props.schools.length === 0) {\n this.setState({ schoolSearchLoading: true });\n this.props.getSchools()\n .then(() => {\n this.setState({ schoolSearchLoading: false });\n });\n }\n }\n\n sellDateHandle = (date) => {\n this.withdrawalStateSet('sellDate', date ? date.toDate() : null);\n this.props.warningDisplay(date);\n }\n\n sellDatesDisable = (date) => {\n return this.props.withdrawalVariables.sellDates.every(validWithdrawalDate => !dayjs(validWithdrawalDate).isSame(date, 'day'));\n\n }\n\n stateSelectHandle = (value) => {\n const addresses = { ...this.state.withdrawal.recipientAddress };\n this.withdrawalStateSet('recipientAddress', { ...addresses, school: { ...addresses.school, state: { Code: value } } });\n }\n\n step0Compose = () => { // Amount, Sell Date & Type\n const {\n partialWithdrawalMessageOpen,\n withdrawal: {\n amount,\n amountType,\n leaveAccountOpen,\n proportionalAmounts,\n sellDate,\n withdrawalType,\n },\n } = this.state;\n\n const {\n isProportional,\n withdrawalDetails,\n withdrawalVariables\n } = this.props;\n\n const amountError = this.errorGet('amount');\n const amountTypeError = this.errorGet('amountType');\n const inputStyle = { marginTop: '25px', width: '256px' };\n const withdrawalTypeError = this.errorGet('withdrawalType');\n\n if (Object.keys(withdrawalDetails).length > 0 && this.partialBalanceWithdrawalOnly) {\n events.withdrawalsStep(partialWithdrawalMessageOpen ? 'messaging_partial' : '0_partial');\n const availableBalanceIsMoreThanMax = isProportional ? withdrawalDetails.totalValue.number >= withdrawalVariables.maxWithdrawal : withdrawalDetails.availableBalance.number >= withdrawalVariables.maxWithdrawal;\n const areThereUncollectedFunds = withdrawalDetails.MarketValue > withdrawalDetails.NetAvailable;\n\n return (\n
\n {partialWithdrawalMessageOpen ?\n
\n Only a partial balance withdrawal can be performed at this time.\n {availableBalanceIsMoreThanMax ?\n

A full balance withdrawal is not allowed for one or more of the following reasons:

\n :\n

A full balance withdrawal is not allowed because:

\n }\n
    \n
  • Another transaction is already scheduled.
  • \n {areThereUncollectedFunds &&
  • Withdrawals can be made only from contributed funds that have posted to your account(s) for at least 7 business days.
  • }\n {availableBalanceIsMoreThanMax &&
  • Withdrawals of {currencyFormatter(withdrawalVariables.maxWithdrawal)} or more require a Signature Guarantee. Visit https://my529.org to complete and submit Withdrawal Request Form 300, which includes a section for a Signature Guarantee.
  • }\n
\n this.setState({ partialWithdrawalMessageOpen: false })}\n style={{ marginTop: '12px' }}\n variant='contained'\n >\n Continue\n \n
\n :\n [\n // There are no CSS styles for NewWithdrawals_amountError\n
\n \n
,\n 0} key='partialProportionalAmount'>\n {proportionalAmounts.map(amount => (\n
\n Account {withdrawalDetails.groupAccounts.find(account => account.accountId === amount.accountId).accountNumber}: {currencyFormatter(amount.amount)}\n
\n ))}\n
,\n
\n \n {sellDateText.map(text =>

{text}

)}
} />\n
,\n \n \n {withdrawalVariables.withdrawalTypes.map(type => (\n }\n />\n ))}\n \n {withdrawalTypeError && {withdrawalTypeError}}\n \n ]\n }\n \n );\n }\n else {\n const fullBalanceText = {\n name: 'Full Balance',\n messages: ['Your withdrawal request will result in a zero balance, so my529 will close your account(s) and cancel any automated contributions. Please contact your employer to cancel automated payroll direct deposits. If you would like your zero-balance account(s) to remain open, please check the box below.']\n };\n return (\n
\n \n \n }\n />\n }\n />\n \n {amountTypeError && {amountTypeError}}\n \n\n {/* There are no CSS styles for NewWithdrawals_amountType */}\n
\n \n {/* There are no CSS styles for NewWithdrawals_leaveAccountOpenCheckbox */}\n
\n \n }\n />\n
\n
\n \n {amountType === PARTIAL_BALANCE && // prevents console errors from when it tries to mount but isn't rendered\n // There are no CSS styles for NewWithdrawals_amountError\n
\n \n
\n }\n
\n 0}>\n {proportionalAmounts.map(amount => (\n
\n Account {withdrawalDetails.groupAccounts.find(account => account.accountId === amount.accountId).accountNumber}: {currencyFormatter(amount.amount)}\n
\n ))}\n
\n
\n\n
\n \n {sellDateText.map(text =>

{text}

)}
} />\n
\n\n \n \n {withdrawalVariables.withdrawalTypes.map(type => (\n }\n />\n ))}\n \n {withdrawalTypeError && {withdrawalTypeError}}\n \n \n );\n }\n }\n\n step1Compose = () => { // Recipient\n const { withdrawal: { recipient, withdrawalType } } = this.state;\n const { recipientTypes } = this.props.withdrawalVariables;\n\n const accountOwner = recipientTypes.find(type => type.id === ACCOUNT_OWNER);\n const beneficiary = recipientTypes.find(type => type.id === BENEFICIARY);\n const school = recipientTypes.find(type => type.id === SCHOOL);\n\n const recipientError = this.errorGet('recipient');\n\n if (withdrawalType === K12_ED) {\n return (\n \n
{accountOwner.name}
\n
\n \n
\n
\n );\n }\n else if (withdrawalType === HIGHER_ED) {\n return (\n \n \n }\n />\n }\n />\n }\n />\n \n {recipientError && {recipientError}}\n \n );\n }\n else {\n return (\n \n \n \n
{accountOwner.name}
\n
\n \n
\n \n }\n value={ACCOUNT_OWNER}\n control={}\n />\n }\n />\n \n {recipientError && {recipientError}}\n
\n );\n }\n }\n\n step2Compose = () => { // Payment Method\n const {\n withdrawal: {\n bankAccount,\n paymentType,\n recipient,\n recipientAddress,\n },\n } = this.state;\n const { withdrawalDetails: { agentBankAccounts, accountType }, withdrawalVariables } = this.props;\n const bankAccountError = this.errorGet('bankAccount');\n const paymentTypeError = this.errorGet('paymentType');\n const paymentTypes = withdrawalVariables.paymentTypes.filter(type => type.id !== ELECTRONIC_PAYMENT);\n if (\n (recipient === ACCOUNT_OWNER && agentBankAccounts.length === 0) ||\n (recipient === ACCOUNT_OWNER && accountType === ACCOUNT_TYPE_UGMA_UTMA) ||\n recipient === BENEFICIARY\n ) {\n return this.checkAddressCompose();\n }\n else if (recipient === ACCOUNT_OWNER && agentBankAccounts.length > 0) {\n return (\n
\n \n \n {paymentTypes.map(type => (\n }\n />\n ))}\n \n {paymentTypeError && {paymentTypeError}}\n \n
\n {paymentType === CHECK_PAYMENT && this.checkAddressCompose()}\n \n ({\n value: acct.id,\n display: `${acct.name} ${acct.type}, ${acct.number}`,\n }))}\n FormControlProps={{ style: { minWidth: '300px' } }}\n />\n \n
\n
\n );\n }\n else {\n const formFieldMargin = { marginTop: '18px' };\n const schoolError = this.errorGet('school');\n return (\n
\n \n { this.setState({ schoolSearchOpen: true }); this.schoolsGet(); }} // eslint-disable-line brace-style\n variant='contained'\n style={{ margin: '15px 0px' }}\n >\n Search Eligible Schools\n \n {schoolError && {schoolError}}\n \n \n
\n {checkMailingText}\n { e.persist(); this.recipientAddressDebounce(e, 'name'); }} // eslint-disable-line brace-style\n fullWidth\n style={formFieldMargin}\n />\n { e.persist(); this.recipientAddressDebounce(e, 'attn'); }} // eslint-disable-line brace-style\n fullWidth\n style={formFieldMargin}\n />\n \n Street Address\n { e.persist(); this.recipientAddressDebounce(e, 'street1'); }} // eslint-disable-line brace-style\n fullWidth\n />\n {this.errorGet('street1') && {this.errorGet('street1')}}\n \n \n City\n { e.persist(); this.recipientAddressDebounce(e, 'city'); }} // eslint-disable-line brace-style\n fullWidth\n />\n {this.errorGet('city') && {this.errorGet('city')}}\n \n \n this.recipientAddressDebounce(e, 'postalCode')}\n label='Postal Code'\n style={formFieldMargin}\n value={recipientAddress.school.postalCode}\n />\n \n { e.persist(); this.recipientAddressDebounce(e, 'studentIdNum'); }} // eslint-disable-line brace-style\n fullWidth\n style={formFieldMargin}\n />\n
\n
\n
\n );\n }\n }\n\n step3Compose = () => { // Review, Terms & Conditions\n const {\n termsChecked,\n withdrawal: {\n amount,\n amountType,\n bankAccount,\n leaveAccountOpen,\n recipientAddress,\n sellDate,\n withdrawalType,\n paymentType,\n }\n } = this.state;\n const { paymentTypes, withdrawalTypes } = this.props.withdrawalVariables;\n\n /* eslint-disable quotes */\n return [\n
\n
\n
\n
Amount
\n {currencyFormatter(amount)}\n
\n\n {amountType === FULL_BALANCE ?\n
\n
Account Status
\n {leaveAccountOpen ? 'Will remain open' : 'Will be closed'}\n
\n :\n null\n }\n\n
\n
Sell Date
\n {this.state.withdrawal.frequency} on {dayjs(sellDate).format('L')}\n
\n\n
\n
Withdrawal Type
\n {withdrawalTypes.find(type => type.id === withdrawalType).name}\n
\n\n
\n
Payment Method
\n {paymentTypes.find(type => type.id === paymentType).name}\n
\n
\n\n
\n {paymentType === ACH_PAYMENT ?\n
\n
Recipient
\n
\n

{recipientAddress.agent.name}

\n

{bankAccount.name} {bankAccount.type}, {bankAccount.number}

\n
\n
\n :\n
\n
Recipient
\n {this.checkAddressCompose()}\n
\n }\n
\n
,\n
\n

Terms and Conditions

\n

Please review the following Terms and Conditions regarding withdrawals

\n\n
Use of Funds
\n

I have informed my client that my529 is not responsible for tracking the use of funds withdrawn from my529 accounts or determining their eligibility as qualified higher education expenses (including K-12 tuition expenses). I have informed my client that they are responsible for maintaining adequate records, such as receipts and other documentation, for qualified higher education expenses (including K-12 tuition expenses).

\n

Federal law limits withdrawals for K-12 tuition expenses from all qualified tuition plans, such as my529, to a combined total of $10,000 annually per beneficiary from all 529 plans. I have informed my client that they are responsible for adhering to the federal limit.

\n\n
Nonqualified Withdrawals
\n

{\"I have informed my client that any portion of this withdrawal used for nonqualified higher education expenses will make that amount a nonqualified withdrawal. I have informed my client that the earnings portion of nonqualified withdrawals will be considered income and be subject to federal and applicable state income taxes, as well as an additional 10 percent federal penalty tax. Withdrawals due to the beneficiary's death, disability, scholarship (up to the amount of the scholarship), or U.S. service academy attendance are exempt from the penalty tax (but are still subject to income tax on the earnings portion of that withdrawal).\"}

\n

If any part or all of this withdrawal becomes nonqualified, I have informed my client that either they or the beneficiary, as applicable, will be responsible for reporting the withdrawal on an income tax return for the tax year of the withdrawal and for paying any related taxes or penalties.

\n\n
Tax Forms
\n

I have informed my client that my529 will send IRS Form 1099-Q in January each year after a withdrawal is issued from an account. This form states the total amount, principal, and earnings portion of all withdrawals in a calendar year, for each payee, as applicable.

\n

In addition, I have informed my client that Utah taxpayer/resident account owners will receive a TC-675H tax form each year. This form states the following information for an account owner: total qualifying contributions to count toward a Utah state income tax credit, or deduction, total withdrawals made, and total amount transferred to a nonqualified beneficiary.

\n\n
Request Submission
\n

I certify that the information entered for this withdrawal request is true and accurate.

\n

My client has authorized me to make the requested withdrawal. I authorize and request that my529 make the requested withdrawal.

\n

If the account is an UGMA/UTMA account, the custodian of the account has informed me that they deem the withdrawal request to be necessary for the welfare and benefit of the beneficiary. If the account is owned by a trust, corporation, or other entity, I certify that I am authorized to act on its behalf.

\n
,\n \n this.setState({ termsChecked: !termsChecked })}\n />\n }\n />\n \n ];\n /* eslint-enable quotes */\n }\n\n step4Compose = () => { // Review, Terms & Conditions\n const {\n withdrawal: {\n amount,\n amountType,\n bankAccount,\n leaveAccountOpen,\n recipientAddress,\n sellDate,\n withdrawalType,\n paymentType,\n serverDateTime,\n }\n } = this.state;\n const { paymentTypes, withdrawalTypes } = this.props.withdrawalVariables;\n\n /* eslint-disable quotes */\n return [\n
\n
\n
\n
Amount
\n {currencyFormatter(amount)}\n
\n\n {amountType === FULL_BALANCE ?\n
\n
Account Status
\n {leaveAccountOpen ? 'Will remain open' : 'Will be closed'}\n
\n :\n null\n }\n\n
\n
Sell Date
\n {this.state.withdrawal.frequency} on {dayjs(sellDate).format('L')}\n
\n\n
\n
Withdrawal Type
\n {withdrawalTypes.find(type => type.id === withdrawalType).name}\n
\n\n
\n
Payment Method
\n {paymentTypes.find(type => type.id === paymentType).name}\n
\n
\n\n
\n {paymentType === ACH_PAYMENT ?\n
\n
Recipient
\n
\n

{recipientAddress.agent.name}

\n

{bankAccount.name} {bankAccount.type}, {bankAccount.number}

\n
\n
\n :\n
\n
Recipient
\n {this.checkAddressCompose()}\n
\n }\n
\n
,\n
\n\n
{dayjs(serverDateTime)\n .format('MM/DD/YYYY h:mm A')} MST
\n
\n Please print a copy of this page for your records.\n
\n
\n ];\n /* eslint-enable quotes */\n }\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose = () => {\n const {\n createNewWithdrawalLoading,\n partialWithdrawalMessageOpen,\n stepIndex,\n termsChecked,\n withdrawal: {\n paymentType,\n recipient,\n }\n } = this.state;\n const cancelButton = (\n \n Cancel\n \n );\n const nextButton = (onClick, disabled = false) => (\n \n Next\n \n );\n const backButton = (\n this.previousStepHandle()}\n disabled={createNewWithdrawalLoading}\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Back\n \n );\n const agreeButton = (\n this.withdrawalCreate()}\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n I agree\n \n );\n const printButton = (\n window.print()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Print\n \n );\n const finishButton = (\n this.props.history.goBack()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Finish\n \n );\n\n let buttons = [];\n switch (stepIndex) { // Amount, Sell Date & Type\n case 0:\n if (!partialWithdrawalMessageOpen) {\n buttons = [\n cancelButton,\n nextButton(() => this.formValidate(this.nextStepHandle))\n ];\n }\n break;\n case 1: // Recipient\n buttons = [\n cancelButton,\n backButton,\n nextButton(() => {\n this.formValidate(this.nextStepHandle);\n this.paymentTypeHandle();\n })\n ];\n break;\n case 2: { // Payment Type\n const { withdrawalDetails: { agentAddressChanged, beneficiaryAddressChanged } } = this.props;\n\n let isDisabled = false;\n if (recipient === ACCOUNT_OWNER && paymentType === CHECK_PAYMENT) {\n isDisabled = agentAddressChanged;\n }\n else if (recipient === BENEFICIARY) {\n isDisabled = beneficiaryAddressChanged;\n }\n\n buttons = [\n cancelButton,\n backButton,\n nextButton(() => this.formValidate(this.nextStepHandle), isDisabled)\n ];\n break;\n }\n case 3: // Review, Terms & Conditions\n buttons = [\n cancelButton,\n backButton,\n \n {agreeButton}\n \n ];\n break;\n case 4:\n buttons = [\n printButton,\n finishButton,\n ];\n break;\n default: break;\n }\n return buttons;\n }\n\n stepperContentCompose = () => {\n switch (this.state.stepIndex) {\n case 0: // Amount, Sell Date & Type\n return this.step0Compose();\n\n case 1: // Recipient\n return this.step1Compose();\n\n case 2: // Payment Method\n return this.step2Compose();\n\n case 3: // Review, Terms & Conditions\n return this.step3Compose();\n\n case 4: // Print & Finish\n return this.step4Compose();\n default: break;\n }\n }\n\n withdrawalCreate = () => {\n const {\n withdrawal: {\n amount,\n amountType,\n bankAccount,\n ignoreDuplicates,\n leaveAccountOpen,\n frequency,\n proportionalAmounts,\n recipientAddress,\n paymentType,\n recipient,\n sellDate,\n withdrawalType,\n }\n } = this.state;\n\n const withdrawal = {\n AccountAmounts: proportionalAmounts.map(amount => ({ AccountId: amount.accountId, Amount: amount.amount })),\n AccountId: this.props.match.params.accountId,\n Amount: amount,\n BankAccountId: bankAccount.id,\n CloseAccount: amountType === FULL_BALANCE && !leaveAccountOpen,\n ExpenseType: withdrawalType,\n FullBalance: amountType === FULL_BALANCE,\n IgnoreDuplicates: ignoreDuplicates,\n PayeeAddress: recipient === SCHOOL ? {\n StreetAddress1: sanitizeHTML(recipientAddress.school.street1),\n City: sanitizeHTML(recipientAddress.school.city),\n State: sanitizeHTML(recipientAddress.school.state.Code),\n PostalCode: sanitizeHTML(recipientAddress.school.postalCode.replace(/ /g, '')),\n } : null,\n PayeeType: recipient,\n Proportional: this.props.isProportional,\n ScheduleType: frequency,\n School: {\n Department: sanitizeHTML(recipientAddress.school.attn),\n SchoolId: sanitizeHTML(recipientAddress.school.schoolId),\n StudentNumber: sanitizeHTML(recipientAddress.school.studentIdNum)\n },\n TradeDate: sellDate,\n WithdrawalType: paymentType,\n };\n\n this.setState({ createNewWithdrawalLoading: true });\n\n this.props.createNewWithdrawal(withdrawal)\n .then((response) => {\n const messages = response.payload.data;\n const dupeMsgs = Array.isArray(messages) ? messages.filter(message => message.MessageType === 3) : [];\n if (dupeMsgs.length > 0) {\n const duplicateWithdrawalMessage = dupeMsgs.map(message => message.Message).join('<\\br>');\n this.setState({\n duplicateWithdrawalModalOpen: true,\n duplicateWithdrawalMessage,\n createContributionLoading: false,\n createNewWithdrawalLoading: false,\n });\n }\n else {\n events.withdrawalsStep(this.partialBalanceWithdrawalOnly ? 'final_partial' : 'final');\n this.props.notificationShow('Withdrawal scheduled.', 'success');\n // get server timestamp by returning promise here\n this.props.getServerDateTime()\n .then((response) => {\n const serverDateTime = response.payload.data;\n this.setState({\n serverDateTime,\n createNewWithdrawalLoading: false,\n });\n this.nextStepHandle();\n });\n }\n })\n .catch(() => this.setState({ createNewWithdrawalLoading: false }));\n }\n\n withdrawalStateSet = (key, value) => {\n const { step0ValidationHasRun, step1ValidationHasRun, step2ValidationHasRun, stepIndex } = this.state;\n\n this.setState(({ withdrawal }) => {\n return { withdrawal: { ...withdrawal, [key]: value } };\n });\n\n if (\n (stepIndex === 0 && step0ValidationHasRun) ||\n (stepIndex === 1 && step1ValidationHasRun) ||\n (stepIndex === 2 && step2ValidationHasRun)\n ) {\n this.formValidate();\n }\n }\n\n withdrawalTypeHandle = (e) => {\n const withdrawalType = e.target.value;\n this.withdrawalStateSet('withdrawalType', withdrawalType);\n this.withdrawalStateSet('recipient', withdrawalType === K12_ED ? ACCOUNT_OWNER : ''); // Recipient gets set to ACCOUNT_OWNER if \"K-12 Tution\" is selected\n }\n\n componentDidMount() {\n !this.partialBalanceWithdrawalOnly && events.withdrawalsStep(0);\n }\n\n render() {\n const {\n createNewWithdrawalLoading,\n duplicateWithdrawalModalOpen,\n duplicateWithdrawalMessage,\n schoolSearchOpen,\n smallScreen,\n stepIndex,\n withdrawal,\n } = this.state;\n\n return (\n
\n \n \n \n this.setState({ stepIndex: 0 })} disabled={stepIndex === 4}>\n Amount, Sell Date & Withdrawal Type\n \n \n \n this.setState({ stepIndex: 1 })} disabled={stepIndex === 4}>\n Recipient\n \n \n \n this.setState({ stepIndex: 2 })} disabled={stepIndex === 4}>\n Payment Method\n \n \n \n this.setState({ stepIndex: 3 })} disabled={stepIndex === 4}>\n Terms & Conditions\n \n \n \n this.setState({ stepIndex: 4 })}>\n Print Review\n \n \n \n\n {/* There are no CSS styles for NewWithdrawals_stepperContent */}\n
\n {this.props.loading ? null : this.stepperContentCompose()}\n
\n\n
\n {this.stepperButtonsCompose()}\n
\n
\n\n this.setState({ schoolSearchOpen: false })}\n show={schoolSearchOpen}\n title='Eligible Educational Institutions'\n DialogProps={{ 'TransitionComponent': Transition, fullScreen: true }}\n >\n
\n this.schoolSelect(row.schoolId),\n }\n ]}\n >\n events.tableSearchAccessed('Withdrawals (Eligible Schools)', window.location.pathname)}\n />\n \n \n \n \n \n \n
\n \n\n this.setState({ duplicateWithdrawalModalOpen: false })}\n onConfirm={() => this.setState({ duplicateWithdrawalModalOpen: false, withdrawal: { ...withdrawal, ignoreDuplicates: true } }, () => this.withdrawalCreate())}\n isLoading={createNewWithdrawalLoading}\n />\n
\n );\n }\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nexport default withRouter(connect(select, {\n getSchools,\n notificationShow,\n createNewWithdrawal,\n getServerDateTime,\n})(NewWithdrawals));\n","/*\n*\n* WithdrawalDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n Card,\n InfoIcon,\n LoadingOverlay,\n} from '@frontend/common';\nimport styles from './styles.module.css';\nimport AvailableBalanceInfo from '../../AvailableBalanceInfo';\n\nconst select = (state) => ({\n withdrawalDetails: state.accounts.withdrawalDetails\n});\n\nexport class WithdrawalDetails extends React.Component {\n\n static propTypes = {\n isProportional: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n withdrawalDetails: PropTypes.object.isRequired,\n };\n\n render() {\n const { isProportional, loading, withdrawalDetails } = this.props;\n const availableBalanceMsg = (\n
\n Withdrawals can be made only from contributed funds that have posted to your account(s) for at least 7 days.\n\n

The Available Balance is the current total value of the account minus pending transactions.

\n\n \n
\n );\n\n\n return (\n
\n {loading ?\n
\n \n
\n :\n null\n }\n {isProportional ?\n \n
\n
\n
Account Owner
\n {!loading && withdrawalDetails.agentName}\n
\n
\n
Beneficiary
\n {!loading && withdrawalDetails.beneficiaryName}\n
\n
\n
Account Numbers
\n {!loading && withdrawalDetails.groupAccounts.map(account =>
{account.accountNumber}
)}\n
\n
\n
Account Type
\n {!loading && withdrawalDetails.accountType}\n
\n
\n \n
Total Available Balance
\n \n
\n {!loading && withdrawalDetails.totalValue.display}\n
\n
\n \n :\n \n
\n
\n
Account Owner
\n {!loading && withdrawalDetails.agentName}\n
\n
\n
Beneficiary
\n {!loading && withdrawalDetails.beneficiaryName}\n
\n
\n
Account Number
\n {!loading && withdrawalDetails.accountNumber}\n
\n
\n
Current Option
\n {!loading && withdrawalDetails.optionDescription}\n
\n
\n
Account Type
\n {!loading && withdrawalDetails.accountType}\n
\n
\n
Market Value
\n {!loading && withdrawalDetails.marketValue}\n
\n
\n
\n
Available Balance
\n \n
\n
{!loading && withdrawalDetails.availableBalance.display}
\n
\n
\n \n }\n
\n );\n }\n}\n\nexport default connect(select, {})(WithdrawalDetails);\n","/*\n*\n* Withdrawals Component\n*\n*/\nimport React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\nimport AccountsInGroup from './AccountsInGroup';\nimport NewWithdrawals from './NewWithdrawals';\nimport WithdrawalDetails from './WithdrawalDetails';\nimport {\n getAccounts,\n getAccountTransactionsDetails,\n getAgentBankAccounts,\n getOptionChangeDetails,\n getWithdrawalDetails,\n} from '../../actions';\nimport {\n Breadcrumbs,\n notificationShow\n} from '@frontend/common';\nimport { getEnvironmentVariables } from 'components/AppRoot/StaticResources/actions';\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n withdrawalDetails: state.accounts.withdrawalDetails,\n withdrawalVariables: state.static.environmentVars.withdrawalVariables,\n});\n\nexport class Withdrawals extends React.Component {\n\n static propTypes = {\n accountList: PropTypes.array.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getAccountTransactionsDetails: PropTypes.func.isRequired,\n getAgentBankAccounts: PropTypes.func.isRequired,\n getEnvironmentVariables: PropTypes.func.isRequired,\n getWithdrawalDetails: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n withdrawalDetails: PropTypes.object.isRequired,\n withdrawalVariables: PropTypes.object.isRequired,\n };\n\n state = {\n accountsInGroupModalOpen: false,\n displayWarning: false,\n isProportional: false,\n loading: false,\n };\n\n warningDisplay = (date) => {\n const { tradeCutoff, tradeCutoffWarningTime } = this.props.withdrawalVariables;\n\n if (date) {\n if (dayjs().isSame(dayjs(date), 'day')) {\n date = dayjs();\n }\n else {\n date = dayjs(date);\n }\n }\n\n if (tradeCutoff) {\n const userTime = date ? date : dayjs();\n const warningTime = dayjs(tradeCutoff).subtract(tradeCutoffWarningTime, 'minute');\n\n if (\n dayjs(userTime).isSameOrAfter(warningTime) &&\n dayjs(userTime).isBefore(tradeCutoff)\n ) {\n this.setState({ displayWarning: true });\n }\n else {\n this.setState({ displayWarning: false });\n }\n }\n }\n\n withdrawalDetailsGet = () => {\n const { accountId, agentId, groupId } = this.props.match.params;\n const { accountList, withdrawalVariables: { sellDates } } = this.props;\n\n const apiCalls = [\n this.props.getAccountTransactionsDetails(groupId, accountId),\n this.props.getAgentBankAccounts(agentId, 'withdrawals'),\n this.props.getEnvironmentVariables(sellDates.length !== 0 && ['ValidOneTimeWithdrawalDates'])\n ];\n\n\n\n this.setState({ loading: true });\n\n if (accountList.length === 0) {\n this.props.getAccounts()\n .then(() => {\n return Promise.all(apiCalls)\n .then(() => this.props.getWithdrawalDetails(groupId, accountId))\n .catch(() => this.setState({ loading: false }));\n })\n .catch(() => this.setState({ loading: false }));\n }\n else {\n return Promise.all(apiCalls)\n .then(() => this.props.getWithdrawalDetails(groupId, accountId))\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n componentDidMount() {\n const { withdrawalDetails: { accountId, groupAccounts }, match: { params } } = this.props;\n\n if (accountId !== parseInt(params.accountId)) {\n this.withdrawalDetailsGet();\n }\n if (groupAccounts.length > 1) {\n this.setState({ accountsInGroupModalOpen: true });\n }\n\n this.warningDisplay();\n }\n\n render() {\n const { displayWarning, isProportional, loading, accountsInGroupModalOpen } = this.state;\n const { match: { params }, withdrawalDetails, withdrawalVariables } = this.props;\n\n return (\n
\n
\n \n
\n\n {displayWarning ?\n
\n {`The withdrawal request must be submitted by ${dayjs(withdrawalVariables.tradeCutoff).format('h:mm a')} MT to be eligible for today's trading session.`} {/* eslint-disable-line */}\n
\n :\n null\n }\n\n
\n \n
\n\n
\n \n
\n\n this.setState({ accountsInGroupModalOpen: false })}\n onProportionalSelect={() => this.setState({ accountsInGroupModalOpen: false, isProportional: true })}\n groupAccounts={withdrawalDetails.groupAccounts}\n />\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n getAccounts,\n getAccountTransactionsDetails,\n getAgentBankAccounts,\n getOptionChangeDetails,\n getEnvironmentVariables,\n getWithdrawalDetails,\n notificationShow\n})(Withdrawals));\n","/*\n*\n* Documents Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { startCase } from 'lodash';\n\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\nimport {\n accountDocumentsGet,\n downloadAccountDocumentData,\n getAccountDetails,\n getCountries\n} from '../actions';\n\nimport {\n Breadcrumbs,\n TableDataTypes,\n TableColumnHideOptions,\n LoadingOverlay,\n Card,\n createStatementPdfToNewWindow,\n createCertificatePdfToNewWindow,\n createConfirmationLetterPdfToNewWindow,\n loadingAnimationHTML,\n loadingErrorHTML,\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n notificationShow,\n TAXFORM1099_COPY_PATHS,\n TAXFORMTC675_PATHS,\n TCFORM_ACCOUNT_TYPE_CODES,\n get1099QPdfBytes,\n getTC675HPdfBytes,\n mapPdfDataFrom1099QData,\n mapPdfDataFromTC675HData\n} from '@frontend/common';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n documents: state.accounts.documents,\n accountDetails: state.accounts.selectedAccount,\n DocumentTypes: state.static.environmentVars.DocumentTypes,\n countries: state.accounts.countries,\n});\n\nexport class Documents extends React.Component {\n\n static propTypes = {\n documents: PropTypes.object.isRequired,\n accountDocumentsGet: PropTypes.func.isRequired,\n downloadAccountDocumentData: PropTypes.func.isRequired,\n accountDetails: PropTypes.object.isRequired,\n getAccountDetails: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n DocumentTypes: PropTypes.shape({\n AccountCertificate: PropTypes.string,\n QuarterlyStatement: PropTypes.string,\n FederalTaxForm: PropTypes.string,\n UtahStateTaxForm: PropTypes.string,\n AccountConfirmation: PropTypes.string,\n }).isRequired,\n getCountries: PropTypes.func.isRequired,\n countries: PropTypes.array.isRequired,\n };\n\n state = {\n accountDocs: [],\n initialLoading: false,\n downloadLoading: false,\n };\n\n openPdfStatement(url, documentType, pdf1099Path) {\n const { DocumentTypes, downloadAccountDocumentData, countries } = this.props;\n\n this.setState({ downloadLoading: true });\n const statementWindow = window.open('', '_blank'); // needs to be outside of async call to work in Safari\n statementWindow.document.write(loadingAnimationHTML); // this will get replaced by generated pdf once the api loads all data\n let apiCall;\n switch (documentType) {\n // generate statement\n case DocumentTypes.QuarterlyStatement:\n apiCall = downloadAccountDocumentData(url)\n .then(response => createStatementPdfToNewWindow(response.payload.data, statementWindow, 'Statement'));\n break;\n\n // generate account certificate\n case DocumentTypes.AccountCertificate:\n apiCall = downloadAccountDocumentData(url)\n .then(response => createCertificatePdfToNewWindow(response.payload.data, statementWindow));\n break;\n\n // generate acct upload confirmation letter\n case DocumentTypes.AccountConfirmation:\n apiCall = downloadAccountDocumentData(url)\n .then(response => createConfirmationLetterPdfToNewWindow(response.payload.data, statementWindow));\n break;\n\n // load tax docs\n case DocumentTypes.FederalTaxForm:\n apiCall = downloadAccountDocumentData(url)\n .then(response => {\n const pdfData = mapPdfDataFrom1099QData(response.payload.data, countries);\n try {\n return get1099QPdfBytes(pdfData, pdf1099Path)\n .then(pdfBytes => {\n const file = new Blob([pdfBytes], { type: 'application/pdf' });\n const fileURL = URL.createObjectURL(file);\n statementWindow.location = fileURL; // appeases Safari where window.open is outside of async call\n });\n }\n catch (err) {\n return err;\n }\n });\n break;\n\n case DocumentTypes.UtahStateTaxForm:\n apiCall = downloadAccountDocumentData(url)\n .then(response => {\n try {\n const data = response.payload.data;\n const pdfData = mapPdfDataFromTC675HData(data, this.props.countries); // maps api parameters to pdf form inputs\n let pdfTC675HPath; // this path needs to be decided after data are loaded\n switch (data.AccountType) {\n case TCFORM_ACCOUNT_TYPE_CODES.INDIVIDUAL:\n pdfTC675HPath = TAXFORMTC675_PATHS.INDIVIDUAL_INSTRUCTIONS;\n break;\n case TCFORM_ACCOUNT_TYPE_CODES.INSTITUTIONAL:\n pdfTC675HPath = TAXFORMTC675_PATHS.INSTITUTIONAL_INSTRUCTIONS;\n break;\n case TCFORM_ACCOUNT_TYPE_CODES.UGMAUTMA:\n pdfTC675HPath = TAXFORMTC675_PATHS.UGMAUTMA_INSTRUCTIONS;\n break;\n default: // do nothing\n }\n\n return getTC675HPdfBytes(pdfData, pdfTC675HPath)\n .then(pdfBytes => {\n const file = new Blob([pdfBytes], { type: 'application/pdf' });\n const fileURL = URL.createObjectURL(file);\n statementWindow.location = fileURL; // appeases Safari where window.open is outside of async call\n });\n }\n catch (err) {\n return err;\n }\n });\n break;\n\n default:\n this.setState({ downloadLoading: false });\n this.props.notificationShow('Document type does not exist.', 'error');\n }\n\n // shared promise catch and finally\n apiCall && apiCall\n .catch(() => {\n // show error in a new tab by replacing its html content\n statementWindow.document.close(); // clear first\n statementWindow.document.write(loadingErrorHTML);\n })\n .finally(() => {\n this.setState({ downloadLoading: false });\n });\n }\n\n componentDidMount() {\n const apiCalls = [];\n const { documents, accountDetails, match: { params: { accountId } } } = this.props;\n\n if (this.props.countries.length === 0) {\n this.props.getCountries();\n }\n\n if (parseInt(accountDetails.accountId) !== parseInt(accountId)) {\n apiCalls.push(this.props.getAccountDetails(accountId));\n }\n\n if (documents[accountId]) {\n this.setState({\n accountDocs: documents[accountId],\n });\n }\n else {\n apiCalls.push(\n this.props.accountDocumentsGet(accountId)\n .then(() => {\n this.setState({\n accountDocs: this.props.documents[accountId],\n initialLoading: false,\n });\n })\n .catch(() => null)\n );\n }\n\n if (apiCalls.length > 0) {\n this.setState({ initialLoading: true });\n Promise.all(apiCalls)\n .catch(() => null)\n .finally(() => {\n this.setState({\n initialLoading: false,\n });\n });\n }\n }\n\n render() {\n const { initialLoading } = this.state;\n const { match, accountDetails } = this.props;\n\n if (initialLoading) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n return (\n
\n
\n \n \n
\n \n
Account Owner
\n
{accountDetails.accountOwner.name}
\n
\n \n
Beneficiary
\n
{accountDetails.beneficiary.name}
\n
\n \n
Account Number
\n
{accountDetails.details.accountNumber}
\n
\n \n
Account Type
\n
{accountDetails.details.accountType}
\n \n \n \n \n startCase(data),\n },\n {\n key: 'description',\n title: 'Description',\n type: TableDataTypes.STRING,\n hideOn: [TableColumnHideOptions.PHONE, TableColumnHideOptions.TABLET],\n },\n {\n key: 'year',\n title: 'Year',\n type: TableDataTypes.NUMBER,\n customStyle: { width: '.25fr' },\n },\n {\n key: 'quarter',\n title: 'Quarter',\n type: TableDataTypes.NUMBER,\n customStyle: { width: '.25fr' },\n format: data => data ? `Q${data}` : data,\n },\n ]}\n actions={[\n {\n displayName: 'Download',\n type: 'icon',\n icon: 'picture_as_pdf',\n iconTitle: 'Open PDF',\n onSelect: row => this.openPdfStatement(row.url, row.type, TAXFORM1099_COPY_PATHS.COPY_B_MAIL_INSTRUCTIONS),\n },\n {\n displayName: 'View Additional Pages',\n type: 'menu',\n onSelect: row => this.openPdfStatement(row.additionalDocURL, row.type),\n showIf: row => row.additionalDocURL,\n },\n ]}\n >\n events.tableSearchAccessed('Documents', window.location.pathname)}\n canFilter\n />\n \n \n \n \n \n \n
\n \n \n );\n }\n}\n\nexport default connect(select, {\n accountDocumentsGet,\n downloadAccountDocumentData,\n getAccountDetails,\n notificationShow,\n getCountries,\n})(Documents);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Drawer,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Icon,\n Typography,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.css';\n\nexport function LearnMoreDrawer({ open, onClose, currentYear, annualGiftExclusionAmount, maximumBeneficiaryDeposit, maximumBenficiaryAccountValueForGift }) {\n\n const GiftingLanguage = {\n learn_more_title: 'Gifting Program Dashboard',\n text_learn_more: 'You can have my529 set up Gift Codes for you to allow family and friends to contribute to your account(s).',\n text_faq(currentYear, annualGiftExclusionAmount, maximumBeneficiaryDeposit, maximumBenficiaryAccountValueForGift) {\n return [\n {\n question: 'What is the my529 Gift Program?',\n answer: 'The my529 Gift Program is an easy, free service that allows account owners to invite family and friends to contribute to their my529 college savings account.'\n },\n {\n question: 'How do I invite family and friends to participate in my529\\'s Gift Program?',\n answer: 'To give family and friends the opportunity to contribute to your my529 account, please enroll in my529\\'s Gift Program through Account Access and select Gift Program. When you enroll, you will receive a unique gift code and a URL that links to your personal gift page. When shared with family and friends, the gift code and link ensure the proper deposit of any gift contributions, without disclosing your personal my529 account information. Anyone with your gift code will be able to access your gift page. As the account owner, you decide with whom you\\'d like to share the link. You may share this gift code or link by email, in person, by phone, or by mail. my529 also provides links and default messages to share your gift page using Twitter and Facebook. You may copy and use the URL on your other social media sites as well. You may also turn off access to your page in your my529 Gift Program dashboard.'\n },\n {\n question: 'Do friends and family need to have a my529 account to contribute to my account?',\n answer: 'No. Anyone may contribute to your my529 account as long as he or she has your my529 gift code or link to your gift page.'\n },\n {\n question: 'What if I don\\'t have someone\\'s email address?',\n answer: 'You may also pass along your gift code in person, by mail, or by phone.'\n },\n {\n question: 'How will my friends and family give the gift?',\n answer: 'They may give a gift in two ways—online or by mail. When making an electronic contribution, the giver provides a bank routing and checking account number through your secure online my529 gift page. When making a payment by mail, the giver prints a deposit slip found on your gift page and mails a paper check to my529.'\n },\n {\n question: 'When people give gifts, do they have access to my my529 account information?',\n answer: 'No. When someone gives a gift, the gift code or gift link ensures that the funds will be directed to your my529 account without sharing your account number in the process.'\n },\n {\n question: 'How will I know if I\\'ve received a gift?',\n answer: 'my529 will notify you by email when a gift posts to your account. You will be able to view the gift online in Account Access usually within three days after it has posted to your account, and it will be included in your account balance.'\n },\n {\n question: 'May I specify my unborn baby as a beneficiary on my account to receive gifts before the baby is born?',\n answer: 'Because a U.S. Social Security Number is required for all beneficiaries, your unborn baby cannot yet be named as the beneficiary on the account. You may, however, name yourself as the beneficiary until the baby is born. When your baby is born, simply change the beneficiary on your account to your baby\\'s name using a Beneficiary Change/Correction form (form 510). The new beneficiary must be a \"member of the family\" of the current beneficiary, as defined in the my529 Program Description. Please note that contributions made to accounts before the baby\\'s birth, to a beneficiary age 19 or older, do not qualify for the Utah state income tax credit.'\n },\n {\n question: 'May I return a gift made to my my529 account?',\n answer: 'No. Gifts made to a my529 account are considered \\'completed\\' gifts. Once gift funds are invested in your my529 account, they blend with other contributions. Any withdrawal is treated as a distribution from your account. Returning a gift would be considered a \"nonqualified withdrawal,\" subject to taxes and a 10 percent federal penalty tax on any earnings. To return a gift, you may want to withdraw money from a different type of account, your checking or savings account, for example, to avoid taxes.'\n },\n {\n question: 'What if I have a question about a gift made to my account?',\n answer: 'You may contact my529 toll-free at 800.418.2551 or by email at info@my529.org. Representatives are available to answer questions on regular business days from 7 a.m. to 6 p.m. MT.'\n },\n {\n question: 'Do I owe taxes on gifts made to my my529 account?',\n answer: `You should not owe taxes on gifts made to your my529 account, but people who make large gifts to your account may owe gift taxes. A gift tax or generation skipping transfer (GST) tax may occur for someone making gifts more than ${annualGiftExclusionAmount} per year to any one person. Anyone giving large monetary gifts should consult a tax advisor before sending the contributions to my529. my529 does not provide tax advice to the person giving the gift.`\n },\n {\n question: 'Does the gift count toward my my529 account balance limit?',\n answer: `Yes. For ${currentYear}, my529 will accept contributions until all my529 account balances for the same beneficiary total ${maximumBeneficiaryDeposit}, above which additional contributions are not allowed. However, there is a separate limit for gifts. When the account balance has reached ${maximumBenficiaryAccountValueForGift}, any gift contribution will be returned to the person who made it. Please see the my529 Program Description, downloadable at my529.org, for more information about contribution limits.`\n },\n {\n question: 'When are gift contributions invested?',\n answer: 'If the contribution is received in good order, it will be posted to your my529 account within three business days.'\n },\n {\n question: 'How are gift contributions allocated?',\n answer: 'Gift contributions will be allocated according to the investment option and/or allocations that you, as the account owner, have selected for your my529 account.'\n },\n {\n question: 'Are there any fees associated with giving a gift through the my529 Gift Program?',\n answer: 'No, my529 charges no fees to the giver or the account owner for giving a gift to an account. However, charges for insufficient funds may be assessed.'\n },\n {\n question: 'Will the unique gift code and URL that links to my gift page ever expire?',\n answer: 'No. Both the unique gift code and URL will be active as long as you participate in the my529 Gift Program.'\n },\n {\n question: 'Are gift contributions available for immediate withdrawal?',\n answer: 'If your account ownership with my529 is less than six months old, gift contributions made online using a bank account or using a check by mail are held for 20 business days. If your account ownership has been established for at least six months, online gift contributions are held for at least seven business days. Gift Program contributions made by debit card cannot be withdrawn until 45 business days after deposit.'\n }\n ];\n }\n };\n\n const learnMore = () => (\n
\n
\n \n
\n
\n

{GiftingLanguage.learn_more_title}

\n
\n {GiftingLanguage.text_learn_more}\n
\n {GiftingLanguage.text_faq(currentYear, annualGiftExclusionAmount, maximumBeneficiaryDeposit, maximumBenficiaryAccountValueForGift).map(qa => {\n return (\n \n keyboard_arrow_down}\n aria-controls='learn-more'\n id='learn-more'\n >\n {qa.question}\n \n \n {qa.answer}\n \n \n );\n })}\n
\n );\n\n return (\n \n {learnMore()}\n \n );\n}\n\nLearnMoreDrawer.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n currentYear: PropTypes.string.isRequired,\n annualGiftExclusionAmount: PropTypes.string.isRequired,\n maximumBeneficiaryDeposit: PropTypes.string.isRequired,\n maximumBenficiaryAccountValueForGift: PropTypes.string.isRequired,\n};\n\nexport default LearnMoreDrawer;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter, Link } from 'react-router-dom';\n\nimport {\n Button,\n Switch\n} from '@mui/material';\n\nimport {\n Breadcrumbs,\n LoadingOverlay,\n Card,\n CardAligned,\n currencyFormatter,\n Modal,\n} from '@frontend/common';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport { ACCOUNT_TYPE_UGMA_UTMA } from '../Transactions/Withdrawals/constants';\n\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\nimport { editGiftCodeStatus } from 'components/Features/protected/Accounts/actions';\nimport { getAccountsByAgent } from 'components/Features/protected/Accounts/actions';\n\nimport LearnMore from './LearnMore';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n agentAccounts: state.accounts.selectedAgentAccounts,\n currentYear: state.static.environmentVars.ServerDateTime.substring(0, 4),\n annualGiftExclusionAmount: currencyFormatter(state.static.environmentVars.AnnualGiftExclusionAmount),\n maximumBeneficiaryDeposit: currencyFormatter(state.static.environmentVars.MaximumBeneficiaryDeposit),\n maximumBenficiaryAccountValueForGift: currencyFormatter(state.static.environmentVars.MaximumBenficiaryAccountValueForGift),\n webMessages: state.static.webMessages,\n});\n\nexport class Gifting extends Component {\n\n static propTypes = {\n editGiftCodeStatus: PropTypes.func.isRequired,\n getAccountsByAgent: PropTypes.func.isRequired,\n agentAccounts: PropTypes.array.isRequired,\n currentYear: PropTypes.string.isRequired,\n annualGiftExclusionAmount: PropTypes.string.isRequired,\n maximumBeneficiaryDeposit: PropTypes.string.isRequired,\n maximumBenficiaryAccountValueForGift: PropTypes.string.isRequired,\n webMessages: PropTypes.object.isRequired,\n };\n\n state = {\n initialLoading: true,\n loading: false,\n learnMoreOpen: false,\n showWarning: false,\n savingGifting: false,\n accountIdToChange: 0,\n giftStatusToChange: false,\n };\n\n ShowGiftWarning = (AccountId, GiftCodeActive) => {\n this.setState({\n showWarning: true,\n accountIdToChange: AccountId,\n giftStatusToChange: !GiftCodeActive,\n });\n }\n\n OnGiftActiveChange = () => {\n this.setState({ savingGifting: true, showWarning: false });\n this.props.editGiftCodeStatus(this.state.accountIdToChange, this.state.giftStatusToChange)\n .then(() => {\n this.props.getAccountsByAgent(this.props.match.params.agentId)\n .then(() => {\n this.setState({\n savingGifting: false,\n });\n });\n })\n .catch(() => {\n this.setState({ savingGifting: false });\n });\n }\n\n renderAccountRows() {\n const { agentAccounts } = this.props;\n\n const results = agentAccounts.length === 0 || this.state.loading\n ? 'Beneficiary\\'s have not been configured yet.'\n : agentAccounts\n .filter(acc => acc.accountType !== ACCOUNT_TYPE_UGMA_UTMA)\n .map(acc => {\n const isActive = Boolean(acc.giftCodeActive);\n const statusText = isActive ? 'Enabled' : 'Disabled';\n const giftCode = isActive ? acc.giftCode : 'Inactive';\n const giftCodeColor = isActive ? '#000' : 'rgba(0,0,0,.30)';\n return (\n
\n
\n

Beneficiary

\n

{`${acc.beneficiaryName}`}

\n
\n
\n

Code

\n

{giftCode}

\n
\n
\n

Account

\n

{acc.acctOption}

\n

\n {acc.accountNumber}\n

\n
\n
\n

Status

\n \n this.ShowGiftWarning(acc.accountId, acc.giftCodeActive)}\n value={isActive}\n inputProps={{ 'aria-label': 'secondary checkbox' }}\n />\n \n

{statusText}

\n
\n
\n );\n });\n\n return (\n results\n );\n }\n\n componentDidMount() {\n this.setState({ loading: true });\n this.props.getAccountsByAgent(this.props.match.params.agentId)\n .then(() => {\n this.setState({ loading: false, initialLoading: false });\n });\n }\n\n render() {\n const {\n initialLoading,\n loading,\n learnMoreOpen,\n showWarning,\n } = this.state;\n const {\n agentAccounts,\n currentYear,\n annualGiftExclusionAmount,\n maximumBeneficiaryDeposit,\n maximumBenficiaryAccountValueForGift,\n match,\n webMessages,\n } = this.props;\n if (initialLoading) {\n return (\n \n );\n }\n else {\n return (\n
\n \n \n\n \n\n
Gifting
\n\n \n\n \n {this.renderAccountRows()}\n \n\n \n
\n this.setState({ learnMoreOpen: true })}\n >\n Learn More\n \n
\n\n this.setState({ learnMoreOpen: false })}\n open={learnMoreOpen}\n currentYear={currentYear}\n annualGiftExclusionAmount={annualGiftExclusionAmount}\n maximumBeneficiaryDeposit={maximumBeneficiaryDeposit}\n maximumBenficiaryAccountValueForGift={maximumBenficiaryAccountValueForGift}\n />\n\n this.setState({ showWarning: false })}\n actionButtons={[\n {\n action: () => this.OnGiftActiveChange(),\n label: 'Ok',\n }\n ]}\n >\n
Are you sure you want to make this change? The account owner will be notified via email of this change.
\n
\n\n
\n );\n }\n }\n}\n\nexport default withRouter(connect(select, {\n editGiftCodeStatus,\n getAccountsByAgent,\n})(Gifting));\n","import {\n GETrequest,\n PUTrequest,\n POSTrequest\n} from 'utils/helpers/api_handler';\nimport {\n ACTIVATE_TEMPLATE,\n DEACTIVATE_TEMPLATE,\n GET_TEMPLATES,\n GET_TEMPLATE,\n GET_TEMPLATE_ACCOUNTS,\n SAVE_TEMPLATE,\n} from './constants';\n\nimport { convert3DCalculatorSchemaTo2D } from '@frontend/common';\n\nexport function activateTemplate(id) {\n const response = PUTrequest(`/template/activate/${id}`);\n return {\n type: ACTIVATE_TEMPLATE,\n payload: response\n };\n}\n\nexport function deactivateTemplate(id) {\n const response = PUTrequest(`/template/deactivate/${id}`);\n return {\n type: DEACTIVATE_TEMPLATE,\n payload: response\n };\n}\n\nexport function getTemplate(id, includeZeroAllocations) {\n const response = GETrequest(`/template?templateId=${id}&includeZeroAllocations=${includeZeroAllocations}`);\n return {\n type: GET_TEMPLATE,\n payload: response\n };\n}\n\nexport function getTemplateAccountsList(id) {\n const response = GETrequest(`/template/accounts/${id}`);\n return {\n type: GET_TEMPLATE_ACCOUNTS,\n payload: response\n };\n}\n\nexport function getTemplates() {\n const response = GETrequest('/search/templates');\n return {\n type: GET_TEMPLATES,\n payload: response\n };\n}\n\nexport function saveTemplate(matrixAllocations, template) {\n const populatedTemplate = convert3DCalculatorSchemaTo2D(matrixAllocations, template);\n const response = POSTrequest('/template', populatedTemplate);\n return {\n type: SAVE_TEMPLATE,\n payload: response\n };\n}","/*\n*\n* TemplateView\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { Breadcrumbs, CalculatorForm } from '@frontend/common';\n\nimport { getTemplate } from 'components/Features/protected/Templates/actions';\n\nconst select = (state) => ({\n template: state.templates.template,\n});\n\nexport class TemplateView extends Component {\n\n static propTypes = {\n getTemplate: PropTypes.func.isRequired,\n match: PropTypes.object.isRequired,\n investmentPath: PropTypes.object,\n template: PropTypes.object.isRequired,\n showTemplateBreadcrumbs: PropTypes.bool,\n schema: PropTypes.object,\n hideTemplateName: PropTypes.bool,\n };\n\n static defaultProps = {\n showTemplateBreadcrumbs: true,\n hideTemplateName: false,\n };\n\n state = {\n template: {\n FundName: '',\n FundCategories: []\n },\n loading: false,\n }\n\n componentDidMount() {\n const { investmentPath, match: { params: { id } } } = this.props;\n if (investmentPath) {\n this.setState({ template: investmentPath });\n }\n else if (id) {\n this.setState({ loading: true });\n this.props.getTemplate(`${id}`, false)\n .then(() => this.setState({ template: this.props.template }))\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n const { showTemplateBreadcrumbs, hideTemplateName } = this.props;\n const { template, isStatic, loading } = this.state;\n const templateName = template.TemplateName ? template.TemplateName : (isStatic ? 'New Customized Static' : 'New Customized Age-Based'); // eslint-disable-line no-nested-ternary\n \n return (\n
\n {showTemplateBreadcrumbs &&\n \n }\n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, { getTemplate })(TemplateView));\n","/*\n*\n* AccountInvestmentPath Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n LoadingOverlay,\n Breadcrumbs,\n} from '@frontend/common';\nimport TemplateView from 'components/Features/protected/Templates/TemplateView';\nimport { accountInvestmentPathGet } from '../actions';\nimport { getAccountBaseRoute } from '../helpers';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n investmentPath: state.accounts.investmentPath\n});\n\nexport class AccountInvestmentPath extends React.Component {\n\n static propTypes = {\n accountInvestmentPathGet: PropTypes.func.isRequired,\n investmentPath: PropTypes.object,\n };\n\n state = {\n loading: false,\n };\n\n getInvestmentPath = () => {\n this.setState({ loading: true });\n this.props.accountInvestmentPathGet(this.props.match.params.accountId)\n .catch(() => null)\n .finally(() => {\n this.setState({ loading: false });\n });\n }\n\n componentDidMount() {\n // for simplicity always load\n this.getInvestmentPath();\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.match.params.accountId !== this.props.match.params.accountId ||\n prevProps.investmentPath.TemplateId !== this.props.investmentPath.TemplateId\n ) {\n this.getInvestmentPath();\n }\n }\n\n render() {\n const breadcrumbs = (\n \n );\n\n return (\n
\n
\n {breadcrumbs}\n {this.state.loading\n ?\n \n :\n
\n
\n {this.props.investmentPath.TemplateName}\n
\n \n
\n }\n
\n
\n );\n }\n}\n\nexport default connect(select, { accountInvestmentPathGet })(AccountInvestmentPath);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport bowser from 'bowser';\n\nimport { getAccountBaseRoute } from './helpers';\nimport {\n getAccountTransactionsDetails,\n getOptionChangeDetails,\n transactionPreview,\n getAccounts,\n getAccountsByAgent,\n getAgentBankAccounts,\n getContributionDetails,\n getWithdrawalDetails,\n getAccountDetails,\n getTransferAccounts,\n} from './actions';\nimport { TRANSACTION_TYPES } from './constants';\nimport {\n customOptionsGet,\n optionsGet,\n getEnvironmentVariables,\n} from 'components/AppRoot/StaticResources/actions';\n\nimport AccountDetails from './AccountDetails';\nimport AccountsList from './AccountsList';\nimport PageNotFound from 'components/Features/protected/PageNotFound';\nimport Contributions from './Transactions/Contributions';\nimport OptionChanges from './Transactions/OptionChanges';\nimport Transfers from './Transactions/Transfers';\nimport Withdrawals from './Transactions/Withdrawals';\nimport Documents from './Documents';\nimport Gifting from './Gifting';\nimport AccountInvestmentPath from './AccountInvestmentPath';\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport {\n Modal,\n LoadingOverlay,\n} from '@frontend/common';\nimport { Icon } from '@mui/material';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n accountDetails: state.accounts.selectedAccount,\n accountList: state.accounts.accountList,\n contributionDetails: state.accounts.contributionDetails,\n optionChangeDetails: state.accounts.optionChangeDetails,\n permissions: state.session.permissions,\n withdrawalDetails: state.accounts.withdrawalDetails,\n previewDetails: state.accounts.transactionPreviewDetails,\n options: state.static.options,\n customStaticTemplates: state.static.customStaticOptions,\n customAgeBasedTemplates: state.static.customAgeBasedOptions,\n contributionVariables: state.static.environmentVars.contributionVariables,\n withdrawalVariables: state.static.environmentVars.withdrawalVariables,\n webMessages: state.static.webMessages,\n});\n\n\nexport class Accounts extends React.Component {\n \n static propTypes = {\n webMessages: PropTypes.object.isRequired,\n accountList: PropTypes.array.isRequired,\n accountDetails: PropTypes.object.isRequired,\n contributionDetails: PropTypes.object.isRequired,\n optionChangeDetails: PropTypes.object.isRequired,\n permissions: PropTypes.object.isRequired,\n withdrawalDetails: PropTypes.object.isRequired,\n getAccountTransactionsDetails: PropTypes.func.isRequired,\n getOptionChangeDetails: PropTypes.func.isRequired,\n transactionPreview: PropTypes.func.isRequired,\n previewDetails: PropTypes.object,\n options: PropTypes.array,\n customStaticTemplates: PropTypes.array,\n customAgeBasedTemplates: PropTypes.array,\n optionsGet: PropTypes.func.isRequired,\n customOptionsGet: PropTypes.func.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getAccountsByAgent: PropTypes.func.isRequired,\n getAgentBankAccounts: PropTypes.func.isRequired,\n getEnvironmentVariables: PropTypes.func.isRequired,\n getContributionDetails: PropTypes.func.isRequired,\n contributionVariables: PropTypes.object,\n withdrawalVariables: PropTypes.object,\n getWithdrawalDetails: PropTypes.func.isRequired,\n getAccountDetails: PropTypes.func.isRequired,\n getTransferAccounts: PropTypes.func.isRequired,\n };\n\n state = {\n showTransactionPrepModal: false,\n preparingTransaction: false,\n transactionTitle: '',\n transactionTitleSuffix: '',\n };\n\n accountActionHandle = (action, accountId, groupId, agentId) => {\n const baseURL = getAccountBaseRoute({ agentId, groupId, accountId });\n switch (action) {\n case 'optionChanges': {\n this.optionChangePrepare(accountId, groupId, baseURL);\n break;\n }\n case 'contributions': {\n this.contributionPrepare(accountId, agentId, baseURL);\n break;\n }\n case 'transfers': {\n this.transferPrepare(accountId, baseURL);\n break;\n }\n case 'withdrawals': {\n this.withdrawalPrepare(accountId, groupId, agentId, baseURL);\n break;\n }\n case 'documents': {\n this.props.history.push(`${baseURL}/documents`);\n break;\n }\n case 'gifting': {\n this.props.history.push(`${baseURL}/gifting`);\n break;\n }\n default: {\n if (process.env.NODE_ENV === 'development') {\n console.error('accountActionHandle() requires one of these as the action argument:\\n\\noptionChange\\ncontibutions\\ntransfers\\nwithdrawals\\ndocuments'); // eslint-disable-line no-console\n }\n }\n }\n };\n\n /**\n * @typedef TransactionPreviewFulfilled\n * @param {object} action\n * @returns {Promise}\n */\n\n /**\n *\n * @param transactionType\n * @param accountId\n * @param onFulfilled {TransactionPreviewFulfilled} onFulfilled\n */\n transactionPreviewWrapper = (transactionType, accountId, onFulfilled) => {\n let transactionTitle;\n let transactionTitleSuffix = ' cannot be performed on this account because:';\n switch (transactionType) {\n case TRANSACTION_TYPES.CONTRIBUTION:\n transactionTitle = 'Contributions';\n break;\n case TRANSACTION_TYPES.OPTION_CHANGE:\n transactionTitle = 'Option Changes';\n break;\n case TRANSACTION_TYPES.TRANSFER:\n transactionTitle = 'Transfers';\n transactionTitleSuffix = ' cannot be made from this account because:';\n break;\n case TRANSACTION_TYPES.WITHDRAWAL:\n transactionTitle = 'Withdrawals';\n break;\n default:\n transactionTitle = '';\n break;\n }\n\n this.setState({\n showTransactionPrepModal: true,\n preparingTransaction: true,\n transactionTitle,\n transactionTitleSuffix,\n });\n\n this.props.transactionPreview(transactionType, accountId)\n .then(action => {\n const { previewDetails } = this.props;\n if (previewDetails.canContinue && previewDetails.errors.length === 0) {\n onFulfilled(action)\n .finally(() => {\n this.setState({\n showTransactionPrepModal: false,\n preparingTransaction: false,\n transactionTitle: '',\n transactionTitleSuffix: '',\n });\n });\n }\n else {\n this.setState({ preparingTransaction: false });\n }\n })\n .catch(() => {\n this.setState({ preparingTransaction: false });\n });\n };\n\n contributionPrepare(accountId, agentId, baseURL) {\n this.transactionPreviewWrapper(TRANSACTION_TYPES.CONTRIBUTION, accountId, () => {\n const { contributionVariables } = this.props;\n const apiCalls = [\n this.props.getAccountsByAgent(agentId, 'canContribute=true'),\n this.props.getAgentBankAccounts(agentId, 'contributions'),\n this.props.getEnvironmentVariables(Object.keys(contributionVariables).length !== 0 && ['ValidOneTimeContributionDates', 'CurrentTradeDate']),\n ];\n\n return Promise.all(apiCalls)\n .then(() => {\n this.props.getContributionDetails(accountId);\n this.props.history.push(`${baseURL}/contributions/new`);\n })\n .catch(() => null);\n });\n }\n\n optionChangePrepare(accountId, groupId, baseURL) {\n this.transactionPreviewWrapper(TRANSACTION_TYPES.OPTION_CHANGE, accountId, () => {\n const { accountList, customAgeBasedTemplates, customStaticTemplates, options } = this.props;\n \n const apiCalls = [\n this.props.getAccountTransactionsDetails(groupId, accountId),\n options.length === 0 && this.props.optionsGet(),\n (customAgeBasedTemplates.length === 0 || customStaticTemplates.length === 0) && this.props.customOptionsGet()\n ];\n\n if (accountList.length === 0) {\n return this.props.getAccounts()\n .then(() => {\n Promise.all(apiCalls).then(() => {\n this.props.getOptionChangeDetails(accountId);\n this.props.history.push(`${baseURL}/option-changes/new`);\n });\n })\n .catch(() => null);\n }\n else {\n return Promise.all(apiCalls)\n .then(() => {\n this.props.getOptionChangeDetails(accountId);\n this.props.history.push(`${baseURL}/option-changes/new`);\n })\n .catch(() => null);\n }\n });\n }\n\n withdrawalPrepare(accountId, groupId, agentId, baseURL) {\n this.transactionPreviewWrapper(TRANSACTION_TYPES.WITHDRAWAL, accountId,\n () => {\n const { accountList, withdrawalVariables: { sellDates } } = this.props;\n const apiCalls = [\n this.props.getAccountTransactionsDetails(groupId, accountId),\n this.props.getAgentBankAccounts(agentId, 'withdrawals'),\n this.props.getEnvironmentVariables(sellDates.length !== 0 && ['ValidOneTimeWithdrawalDates'])\n ];\n\n if (accountList.length === 0) {\n return this.props.getAccounts()\n .then(() => {\n Promise.all(apiCalls)\n .then(() => {\n this.props.getWithdrawalDetails(groupId, accountId);\n this.props.history.push(`${baseURL}/withdrawals/new`);\n })\n .catch(() => null);\n })\n .catch(() => null);\n }\n else {\n return Promise.all(apiCalls)\n .then(() => {\n this.props.getWithdrawalDetails(groupId, accountId);\n this.props.history.push(`${baseURL}/withdrawals/new`);\n })\n .catch(() => null);\n }\n });\n }\n\n transferPrepare(accountId, baseURL) {\n this.transactionPreviewWrapper(TRANSACTION_TYPES.TRANSFER, accountId, () => {\n return Promise.all([\n this.props.getAccountDetails(accountId),\n this.props.getTransferAccounts(accountId),\n ]).then(() => {\n this.props.history.push(`${baseURL}/transfers/new`);\n })\n .catch(() => null);\n });\n }\n\n render() {\n const baseRouteURL = '/agents/:agentId/groups/:groupId/accounts/:accountId';\n const { accountDetails, contributionDetails, optionChangeDetails, permissions, withdrawalDetails, previewDetails, webMessages } = this.props;\n const { showTransactionPrepModal, preparingTransaction } = this.state;\n\n return (\n
\n \n ()} />\n }\n />\n {permissions.contributions && ([\n (\n <>\n \n \n \n )}\n />,\n (\n <>\n \n \n \n )}\n />\n ])}\n {permissions.optionChanges && ([\n (\n <>\n \n \n \n )}\n key='optionChangesNew'\n />,\n (\n <>\n \n \n \n )}\n key='optionChangesEdit'\n />\n ])}\n (\n <>\n \n \n \n )}\n key='optionChangesView'\n />\n {permissions.transfers && (\n (\n <>\n \n \n \n )}\n />\n )}\n {permissions.transfers && (\n (\n <>\n \n \n \n )}\n />\n )}\n {permissions.withdrawals && (\n (\n <>\n \n \n \n )}\n />\n )}\n \n \n {!bowser.mobile && !bowser.tablet && }\n \n \n\n this.setState({ showTransactionPrepModal: false })}\n actionButtons={[\n {\n label: 'Cancel',\n action: () => this.setState({ showTransactionPrepModal: false }),\n disabled: preparingTransaction,\n },\n ]}\n fullScreen={false}\n >\n
\n {preparingTransaction && [\n \n Preparing Transaction...\n
,\n \n ]}\n {!preparingTransaction && !previewDetails.canContinue && previewDetails.errors.length > 0 && (\n
\n
{this.state.transactionTitle}{this.state.transactionTitleSuffix}
\n {previewDetails.errors.map((error, index) => (\n \n close\n {error}\n
\n ))}\n
\n )}\n \n \n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n getAccountTransactionsDetails,\n getOptionChangeDetails,\n transactionPreview,\n optionsGet,\n customOptionsGet,\n getAccounts,\n getAccountsByAgent,\n getAgentBankAccounts,\n getContributionDetails,\n getEnvironmentVariables,\n getWithdrawalDetails,\n getAccountDetails,\n getTransferAccounts,\n})(Accounts));\n","/*\n*\n* DashboardHeader Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n Paper,\n} from '@mui/material';\nimport { withStyles, } from '@mui/styles';\nimport { Dropdown } from '@frontend/common';\n\nimport styles from './styles.module.css';\nimport { selectedBeneficiaryBarChartType, VIEW_BY_AGE, VIEW_BY_AGE_BAND } from '../constants';\nimport { changeBeneficiaryBarChart } from '../actions';\n\nconst select = (state) => ({\n selectedBeneficiaryBarChart: state.dashboardSettings.selectedBeneficiaryBarChart\n});\nconst muiStyles = theme => ({\n menuItemRoot: {\n [theme.breakpoints.down('sm')]: {\n fontSize: '19px',\n },\n [theme.breakpoints.up('sm')]: {\n fontSize: '20px',\n },\n fontWeight: 'bold',\n textTransform: 'uppercase',\n },\n menuItemSelected: {\n color: theme.palette.secondary.main,\n backgroundColor: 'rgb(0, 0, 0, .1) !important',\n },\n selectRoot: {\n [theme.breakpoints.down('sm')]: {\n fontSize: '19px',\n },\n [theme.breakpoints.up('sm')]: {\n fontSize: '20px',\n },\n fontWeight: 'bold',\n textTransform: 'uppercase',\n textAlign: 'center',\n color: theme.palette.primary.main,\n },\n});\n\n\nexport class DashboardHeader extends React.Component {\n\n static propTypes = {\n selectedBeneficiaryBarChart: selectedBeneficiaryBarChartType,\n changeBeneficiaryBarChart: PropTypes.func,\n classes: PropTypes.object.isRequired,\n };\n\n handleViewChange = (event) => {\n this.props.changeBeneficiaryBarChart(event);\n }\n\n render() {\n const { selectedBeneficiaryBarChart, classes } = this.props;\n return (\n \n \n \n );\n }\n}\n\nexport default connect(select, { changeBeneficiaryBarChart })(withStyles(muiStyles)(DashboardHeader));\n","import { BENEFICIARY_BAR_CHART_CHANGE } from './constants';\n\nexport function changeBeneficiaryBarChart(graphName) {\n return {\n type: BENEFICIARY_BAR_CHART_CHANGE,\n selectedBeneficiaryBarChart: graphName,\n };\n}\n","/*\n*\n* DashboardMetricsToolbar Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { Card, sizify } from '@frontend/common';\nimport { Tooltip } from '@mui/material';\nimport { selectedBeneficiaryBarChartType } from '../constants';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n selectedBeneficiaryBarChart: state.dashboardSettings.selectedBeneficiaryBarChart,\n});\n\nexport class DashboardMetricsToolbar extends React.Component {\n static propTypes = {\n size: PropTypes.shape({\n windowWidth: PropTypes.number\n }),\n selectedBeneficiaryBarChart: selectedBeneficiaryBarChartType,\n allAccountMetrics: PropTypes.object,\n accountsByAge: PropTypes.array,\n accountsByAgeBand: PropTypes.array,\n activeIndex: PropTypes.number,\n metricConfigs: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string,\n label: PropTypes.string,\n })),\n history: PropTypes.shape({\n push: PropTypes.func\n })\n };\n\n state = {\n cardHovering: ''\n };\n\n onMouseEnterCard = (key) => {\n this.setState({\n cardHovering: key\n });\n };\n\n onMouseLeaveCard = () => {\n this.setState({\n cardHovering: ''\n });\n };\n\n onClickCard = (search) => {\n this.props.history.push({\n pathname: '/accounts',\n search\n });\n };\n\n render() {\n const {\n size,\n selectedBeneficiaryBarChart,\n allAccountMetrics,\n activeIndex = -1,\n } = this.props;\n const { cardHovering } = this.state;\n const dataNode = activeIndex === -1 ? allAccountMetrics :\n (this.props[selectedBeneficiaryBarChart] || [])[activeIndex];\n\n return (\n
\n \n {dataNode === undefined ? '' : dataNode.assets}\n \n this.onMouseEnterCard('accounts')}\n onMouseLeave={() => this.onMouseLeaveCard()}\n onClick={() => this.onClickCard('')}\n >\n
Accounts
\n {dataNode === undefined ? '' : dataNode.accounts}\n \n \n {dataNode === undefined ? '' : dataNode.avgBalance}\n \n this.onMouseEnterCard('upcomingBirthdays')}\n onMouseLeave={() => this.onMouseLeaveCard()}\n onClick={() => this.onClickCard('?upcomingBirthdays=P30D')}\n >\n
Upcoming Birthdays
\n {size.windowWidth > 600 && (\n View accounts with beneficiary
birthdays in next 30 days
}\n position='bottom-start'\n open={cardHovering === 'upcomingBirthdays'}\n style={{ position: 'absolute', marginTop: '30px' }}\n >\n \n \n )}\n {dataNode === undefined ? '' : dataNode.upcomingBirthdays}\n \n this.onMouseEnterCard('zeroBalances')}\n onMouseLeave={() => this.onMouseLeaveCard()}\n onClick={() => this.onClickCard('?zeroBalances=true')}\n >\n
Zero Balances
\n {size.windowWidth > 600 && (\n \n \n \n )}\n {dataNode === undefined ? '' : dataNode.zeroBalances}\n \n \n );\n }\n}\n\nexport default withRouter(connect(select, {})(sizify(DashboardMetricsToolbar)));\n","/*\n*\n* BeneficiaryAgeBarChart Component\n*\n*/\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Paper } from '@mui/material';\nimport {\n ResponsiveContainer,\n BarChart,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Bar,\n Cell,\n} from 'recharts';\nimport { LoadingOverlay, sizify } from '@frontend/common';\nimport { selectedBeneficiaryBarChartType } from '../constants';\nimport styles from './styles.module.css';\n\nconst frontendConfig = window.frontendConfig;\nconst location = window.location;\n\nconst select = (state) => ({\n selectedBeneficiaryBarChart: state.dashboardSettings.selectedBeneficiaryBarChart,\n});\n\nexport class BeneficiaryAgeBarChart extends Component {\n static propTypes = {\n loading: PropTypes.bool.isRequired,\n size: PropTypes.shape({\n windowHeight: PropTypes.number\n }),\n activeIndex: PropTypes.number,\n selectedBeneficiaryBarChart: selectedBeneficiaryBarChartType,\n accountsByAge: PropTypes.array,\n accountsByAgeBand: PropTypes.array,\n onMouseEnterBar: PropTypes.func,\n onMouseLeaveBar: PropTypes.func,\n onMouseClickBar: PropTypes.func,\n };\n\n /**\n * Handles mouse movement on BarChart and sends index of item hovered to parent component for Metric Toolbar\n * @param data object passed from Recharts that indicates which item is hovered\n */\n onMouseMove = (data) => {\n if (data.activeTooltipIndex !== undefined) {\n this.props.onMouseEnterBar(data.activeTooltipIndex);\n }\n };\n\n render() {\n const nonProd = location.hostname.toLowerCase() !== 'fa.my529.org' && (!Object.prototype.hasOwnProperty.call(frontendConfig, 'envWarning') || frontendConfig.envWarning);\n const { selectedBeneficiaryBarChart, activeIndex, size, loading, onMouseLeaveBar, onMouseClickBar } = this.props;\n const chartHeight = size.windowHeight - 350 < 200 ? 200 : size.windowHeight - (nonProd ? 400 : 350);\n const margin = (size.windowHeight - (chartHeight + 350)) / 2;\n return (\n = 0 ? margin + 25 : 0}px auto ${margin >= 0 ? margin : 0}px`\n }}\n >\n \n {loading\n ? \n : null\n }\n \n \n \n \n \n (
)}\n />\n \n {\n this.props[selectedBeneficiaryBarChart].map((data, index) => (\n \n ))\n }\n \n \n \n \n
\n );\n }\n}\n\nexport default connect(select, {})(sizify(BeneficiaryAgeBarChart));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport DashboardHeader from './DashboardHeader';\nimport DashboardMetricsToolbar from './DashboardMetricsToolbar';\nimport BeneficiaryAgeBarChart from './BeneficiaryAgeBarChart';\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\nimport qs from 'qs';\nimport { getAccounts } from 'components/Features/protected/Accounts/actions';\nimport { portfolioProvidersGet } from 'components/Features/protected/ManageData/actions';\nimport { getAgeBrackets } from 'components/AppRoot/StaticResources/actions';\nimport { selectedBeneficiaryBarChartType } from './constants';\nimport { accountsByAgeFilter, accountsByAgeBandFilter, accountsMetricTransformer } from 'utils/helpers/data_filters';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n selectedBeneficiaryBarChart: state.dashboardSettings.selectedBeneficiaryBarChart,\n ageBrackets: state.static.ageBrackets,\n webMessages: state.static.webMessages,\n});\n\nexport class Dashboard extends Component {\n static propTypes = {\n getAccounts: PropTypes.func.isRequired,\n getAgeBrackets: PropTypes.func.isRequired,\n portfolioProvidersGet: PropTypes.func.isRequired,\n accountList: PropTypes.array,\n ageBrackets: PropTypes.array,\n selectedBeneficiaryBarChart: selectedBeneficiaryBarChartType,\n webMessages: PropTypes.object.isRequired,\n };\n\n state = {\n allAccountMetrics: {},\n accountsByAge: [],\n accountsByAgeBand: [],\n loading: false,\n activeIndex: -1,\n };\n\n /**\n * Changes the activeIndex for the Metrics Toolbar to know which item in the graph the user's mouse is currently over.\n * @param index {number} index of the item currently active\n */\n onMouseEnterBar = (index) => {\n if (index !== this.state.activeIndex) {\n this.setState({ activeIndex: index });\n }\n }\n\n /**\n * Resets the activeIndex to -1, which indicates to Metrics Toolbar to switch back to all account data for metrics.\n */\n onMouseLeaveBar = () => {\n this.setState({ activeIndex: -1 });\n }\n\n /**\n * Redirects to account list with filters applied to data\n */\n onMouseClickBar = () => {\n const { selectedBeneficiaryBarChart } = this.props;\n const { activeIndex } = this.state;\n const value = this.state[selectedBeneficiaryBarChart][activeIndex].key;\n const key = selectedBeneficiaryBarChart === 'accountsByAge' ? 'age' : 'ageGroup';\n this.props.history.push({\n pathname: '/accounts',\n search: `?${qs.stringify({ [key]: value })}`\n });\n }\n\n /**\n * Handles initial setup of data for graph and and metrics toolbar\n */\n setupChartData() {\n if (!this.props.accountList || this.props.accountList.length === 0 ||\n !this.props.ageBrackets || this.props.ageBrackets.length === 0) {\n this.setState({ loading: true });\n Promise.all([ this.props.getAgeBrackets(), this.props.getAccounts(), this.props.portfolioProvidersGet() ])\n .then(() => {\n this.setState({\n accountsByAge: accountsByAgeFilter(this.props.accountList),\n accountsByAgeBand: accountsByAgeBandFilter(this.props.accountList, this.props.ageBrackets),\n allAccountMetrics: accountsMetricTransformer(this.props.accountList),\n loading: false,\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n else {\n this.setState({\n accountsByAge: accountsByAgeFilter(this.props.accountList),\n accountsByAgeBand: accountsByAgeBandFilter(this.props.accountList, this.props.ageBrackets),\n allAccountMetrics: accountsMetricTransformer(this.props.accountList),\n });\n }\n }\n\n componentDidMount() {\n this.setupChartData();\n }\n\n render() {\n const { webMessages } = this.props;\n\n return (\n
\n \n \n \n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n getAccounts,\n getAgeBrackets,\n portfolioProvidersGet,\n})(Dashboard));\n","/*\n*\n* TemplateAccountsList Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { cloneDeep, find } from 'lodash';\nimport { \n Modal,\n properCase,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\nimport { getTemplateAccountsList } from 'components/Features/protected/Templates/actions';\nimport { getAccountBaseRoute } from 'components/Features/protected/Accounts/helpers';\n\nimport events from 'utils/ga';\n\nconst select = (state) => ({\n templateAccountsList: state.templates.templateAccountsList,\n});\n\nexport class TemplateAccountsList extends React.Component {\n\n static propTypes = {\n getTemplateAccountsList: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n selectedTemplate: PropTypes.object.isRequired,\n templateAccountsList: PropTypes.array.isRequired,\n };\n \n state = {\n loading: false,\n templateAccountsList: []\n };\n\n templateAccountsListGet(id) {\n this.setState({ loading: true });\n\n this.props.getTemplateAccountsList(id)\n .then(() => {\n this.setState({\n loading: false,\n templateAccountsList: this.tableDataFormat(this.props.templateAccountsList)\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n tableDataFormat(tableData) {\n tableData = cloneDeep(tableData);\n \n tableData.forEach(data => {\n data.AgentName = properCase(`${data.AgtFirst} ${data.AgtLast}`);\n data.BeneficiaryName = properCase(`${data.BenFirst} ${data.BenLast}`);\n });\n\n return tableData;\n }\n\n rowMenuHandle(id) {\n this.props.onClose();\n const account = find(this.props.templateAccountsList, { AccountId: parseInt(id) }) || {};\n this.props.history.push(getAccountBaseRoute({ agentId: account.AgentId, groupId: account.AccountGroupId, accountId: id }));\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.open && this.props.selectedTemplate.id !== prevProps.selectedTemplate.id) {\n this.templateAccountsListGet(this.props.selectedTemplate.id);\n }\n }\n\n render() {\n return (\n \n
\n this.rowMenuHandle(row.AccountId),\n }]}\n >\n events.tableSearchAccessed('Accounts With Templates', window.location.pathname)}\n />\n \n \n \n \n \n \n
\n \n );\n }\n}\n\nexport default withRouter(connect(select, { getTemplateAccountsList })(TemplateAccountsList));\n","/*\n*\n* TemplateActivate\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { activateTemplate } from 'components/Features/protected/Templates/actions';\nimport {\n customOptionsGet\n} from 'components/AppRoot/StaticResources/actions';\nimport { ConfirmModal, notificationShow } from '@frontend/common';\n\n\nexport class TemplateActivate extends Component {\n\n static propTypes = {\n activateTemplate: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n selectedTemplate: PropTypes.object.isRequired,\n templatesGet: PropTypes.func.isRequired,\n customOptionsGet: PropTypes.func.isRequired,\n };\n\n state = {\n activateModalLoading: false,\n };\n\n activateModalBodyCompose = () => {\n return `Activating '${this.props.selectedTemplate.name}' moves the template to the Active tab. It can be deactivated at any time, and investments that were set up using this template remain unaffected.`;\n }\n\n templateActivate = () => {\n this.setState({\n activateModalLoading: true,\n });\n\n this.props.activateTemplate(this.props.selectedTemplate.id)\n .then(() => {\n this.props.notificationShow('Template activated.', 'success');\n this.props.templatesGet();\n this.props.onClose();\n })\n .then(() => this.props.customOptionsGet()) // update custom templates\n .catch(() => null)\n .finally(() => this.setState({ activateModalLoading: false }));\n }\n\n render() {\n return (\n this.templateActivate(id)}\n show={this.props.open}\n title='Activate Template?'\n />\n );\n }\n}\n\nexport default connect(null, { \n activateTemplate, \n notificationShow,\n customOptionsGet,\n})(TemplateActivate);\n","/*\n*\n* TemplateDeactivate\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { deactivateTemplate } from 'components/Features/protected/Templates/actions';\nimport {\n customOptionsGet\n} from 'components/AppRoot/StaticResources/actions';\nimport { ConfirmModal, notificationShow } from '@frontend/common';\n\n\nexport class TemplateDeactivate extends Component {\n\n static propTypes = {\n deactivateTemplate: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n selectedTemplate: PropTypes.object.isRequired,\n templatesGet: PropTypes.func.isRequired,\n customOptionsGet: PropTypes.func.isRequired,\n };\n\n state = {\n deactivateModalLoading: false,\n };\n\n deactivateModalBodyCompose = () => {\n return `Deactivating '${this.props.selectedTemplate.name}' moves the template to the Deactivated tab. It can be reactivated at any time, and investments that were set up using this template remain unaffected.`;\n }\n\n templateDeactivate() {\n this.setState({\n deactivateModalLoading: true,\n });\n\n this.props.deactivateTemplate(this.props.selectedTemplate.id)\n .then(() => {\n this.props.notificationShow('Template deactivated.', 'success');\n this.props.templatesGet();\n this.props.onClose();\n })\n .then(() => this.props.customOptionsGet()) // update custom templates\n .catch(() => null)\n .finally(() => this.setState({ deactivateModalLoading: false }));\n }\n\n render() {\n return (\n this.templateDeactivate(id)}\n show={this.props.open}\n title='Deactivate Template?'\n />\n );\n }\n}\n\nexport default connect(null, {\n deactivateTemplate,\n notificationShow,\n customOptionsGet,\n})(TemplateDeactivate);\n","/*\n*\n* TemplatesList\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n Tabs,\n Tab,\n} from '@mui/material';\n\nimport { getTemplates } from 'components/Features/protected/Templates/actions';\nimport {\n FloatingActionButton,\n Modal,\n notificationShow,\n properCase,\n Dropdown,\n AgeBasedTemplateIcon,\n StaticTemplateIcon,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport TemplateAccountsList from './TemplateAccountsList';\nimport TemplateActivate from './TemplateActivate';\nimport TemplateDeactivate from './TemplateDeactivate';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n activeTemplates: state.templates.activeTemplates,\n deactivatedTemplates: state.templates.deactivatedTemplates,\n permissions: state.session.permissions,\n webMessages: state.static.webMessages,\n});\n\nexport class TemplatesList extends Component {\n\n static propTypes = {\n activeTemplates: PropTypes.array.isRequired,\n deactivatedTemplates: PropTypes.array.isRequired,\n getTemplates: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n permissions: PropTypes.object.isRequired,\n webMessages: PropTypes.object.isRequired,\n };\n\n state = {\n accountsViewModalLoading: false,\n accountsViewModalOpen: false,\n activateModalOpen: false,\n activeTab: 'active',\n activeTemplates: [],\n canEditTemplates: this.props.permissions.editTemplates,\n copyModalOpen: false,\n deactivatedTemplates: [],\n deactivateModalOpen: false,\n loading: false,\n messages: [],\n selectedTemplate: {\n id: 0,\n name: ''\n },\n viewTemplateModalOpen: false,\n };\n\n fabButtonsCompose() {\n const options = [\n {\n title: 'Copy Existing Template',\n icon: 'content_copy',\n action: () => this.setState({ copyModalOpen: true })\n },\n {\n title: 'New Static Template',\n icon: ,\n action: () => this.props.history.push('/templates/new/static')\n },\n {\n title: 'New Age-Based Template',\n icon: ,\n action: () => this.props.history.push('/templates/new/age-based')\n },\n ];\n\n if (this.state.activeTemplates.concat(this.state.deactivatedTemplates).length === 0) {\n return options.slice(1);\n }\n\n return options;\n }\n\n tableDataFormat(tableData) {\n tableData.forEach(data => {\n data.TpDeactivatedByAdvisor = properCase(data.TpDeactivatedByAdvisor);\n data.TpCreatedByAdvisor = properCase(data.TpCreatedByAdvisor);\n data.TpTypeDescription = properCase(data.TpTypeDescription);\n });\n\n return tableData;\n }\n\n templatesGet() {\n this.props.getTemplates()\n .then(() => {\n this.setState({\n activeTemplates: this.tableDataFormat(this.props.activeTemplates),\n deactivatedTemplates: this.tableDataFormat(this.props.deactivatedTemplates),\n loading: false,\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n templateModalClose(modalName) {\n this.setState({\n [modalName]: false,\n selectedTemplate: {\n id: 0,\n name: ''\n },\n });\n }\n\n templateSelectionCompose = () => {\n return this.state.activeTemplates\n .concat(this.state.deactivatedTemplates)\n .map(template => ({\n value: template.CustomTemplateHeaderId,\n display: template.TpName,\n }));\n }\n\n componentDidMount() {\n if (this.props.activeTemplates.length === 0) {\n this.setState({\n loading: true,\n }, () => this.templatesGet());\n }\n else {\n this.setState({\n activeTemplates: this.tableDataFormat(this.props.activeTemplates),\n deactivatedTemplates: this.tableDataFormat(this.props.deactivatedTemplates),\n }, () => this.templatesGet());\n }\n }\n\n render() {\n const { loading, activeTemplates, deactivatedTemplates, canEditTemplates, activeTab } = this.state;\n const actions = [\n {\n displayName: 'View Template',\n type: 'menu',\n onSelect: row => this.props.history.push(`/templates/view/${row.CustomTemplateHeaderId}`),\n },\n {\n displayName: 'View Accounts',\n type: 'menu',\n onSelect: row => this.setState({\n accountsViewModalOpen: true,\n accountsViewModalLoading: true,\n selectedTemplate: {\n id: row.CustomTemplateHeaderId,\n name: row.TpName,\n }\n }),\n },\n {\n displayName: 'Activate',\n type: 'menu',\n onSelect: row => this.setState({\n activateModalOpen: true,\n selectedTemplate: {\n id: row.CustomTemplateHeaderId,\n name: row.TpName,\n }\n }),\n showIf: () => canEditTemplates && activeTab === 'deactivated'\n },\n {\n displayName: 'Deactivate',\n type: 'menu',\n onSelect: row => this.setState({\n deactivateModalOpen: true,\n selectedTemplate: {\n id: row.CustomTemplateHeaderId,\n name: row.TpName,\n }\n }),\n showIf: () => canEditTemplates && activeTab !== 'deactivated'\n },\n ];\n const baseColumns = [\n {\n key: 'TpName',\n title: 'Name',\n type: 'string',\n },\n {\n key: 'TpTypeDescription',\n title: 'Type',\n type: 'string',\n hideOn: ['phone'],\n },\n ];\n\n const { webMessages } = this.props;\n return (\n

\n \n this.setState({ activeTab: value })}\n variant='fullWidth'\n >\n \n \n \n
\n {activeTab === 'active' && (\n \n events.tableSearchAccessed('Templates List (Activated)', window.location.pathname)}\n />\n \n \n \n \n \n \n )}\n {activeTab === 'deactivated' && (\n \n events.tableSearchAccessed('Templates List (Deactivated)', window.location.pathname)}\n />\n \n \n \n \n \n \n )}\n
\n\n {canEditTemplates && (\n \n )}\n\n this.templateModalClose('copyModalOpen'),\n disabled: this.state.loading,\n },\n {\n label: 'Copy',\n action: () => { this.props.history.push(`/templates/copy/${this.state.selectedTemplate.id}`); this.templateModalClose('copyModalOpen'); }, //eslint-disable-line brace-style\n disabled: this.state.selectedTemplate.id === 0,\n loading: this.state.loading,\n buttonType: 'contained',\n }\n ]}\n onCloseModal={() => this.templateModalClose('copyModalOpen')}\n show={this.state.copyModalOpen}\n title='Copy Template'\n >\n
\n this.setState({ selectedTemplate: { id: value, name: '' } })}\n options={this.templateSelectionCompose()}\n />\n
\n \n\n this.templateModalClose('accountsViewModalOpen')}\n open={this.state.accountsViewModalOpen}\n selectedTemplate={this.state.selectedTemplate}\n />\n\n this.templateModalClose('activateModalOpen')}\n open={this.state.activateModalOpen}\n selectedTemplate={this.state.selectedTemplate}\n templatesGet={() => this.templatesGet()}\n />\n\n this.templateModalClose('deactivateModalOpen')}\n open={this.state.deactivateModalOpen}\n selectedTemplate={this.state.selectedTemplate}\n templatesGet={() => this.templatesGet()}\n />\n
\n );\n }\n}\n\nexport default withRouter(connect(select, { getTemplates, notificationShow })(TemplatesList));\n","/*\n*\n* TemplateCopy\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { Breadcrumbs, CalculatorForm } from '@frontend/common';\n\nimport { getServerDateTime } from 'components/AppRoot/StaticResources/actions';\nimport { getTemplate } from 'components/Features/protected/Templates/actions';\n\nconst select = (state) => ({\n template: state.templates.template,\n serverDateTime: state.static.serverDateTime,\n});\n\nexport class TemplateCopy extends Component {\n\n static propTypes = {\n getTemplate: PropTypes.func.isRequired,\n match: PropTypes.object.isRequired,\n template: PropTypes.object.isRequired,\n getServerDateTime: PropTypes.func.isRequired,\n serverDateTime: PropTypes.string,\n onAllocationChange: PropTypes.func.isRequired,\n onTemplateNameChange: PropTypes.func.isRequired,\n onSave: PropTypes.func.isRequired,\n onMount: PropTypes.func.isRequired,\n };\n\n state = {\n template: {\n FundName: '',\n FundCategories: []\n },\n loading: true,\n serverDateTime: null,\n templateName: ''\n };\n\n componentDidMount() {\n const {\n getTemplate, match,\n getServerDateTime, serverDateTime, onMount\n } = this.props;\n\n const promises = [];\n\n // get current date (calculator needs for the agreement year)\n if (!serverDateTime) {\n promises.push(getServerDateTime());\n }\n\n promises.push(getTemplate(`${match.params.id}`, true)\n .then(() => {\n const template = { ...this.props.template, TemplateName: '' };\n this.setState({ template });\n // pass to parent\n onMount(template);\n })\n .catch(() => null));\n\n this.setState({ loading: true });\n Promise.all(promises)\n .finally(() => {\n this.setState({ loading: false });\n });\n }\n\n render() {\n const {\n serverDateTime, onAllocationChange,\n onTemplateNameChange, onSave\n } = this.props;\n const { loading, template } = this.state;\n const isStatic = template.TemplateType === 'S';\n const newCustomTemplateTitle = isStatic ? 'New Customized Static' : 'New Customized Age-Based';\n\n return (\n
\n \n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, { \n getTemplate,\n getServerDateTime \n})(TemplateCopy));","/*\n*\n* TemplateNewCustom\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n getServerDateTime,\n getNewStaticSchema,\n getNewAgeBasedSchema,\n} from 'components/AppRoot/StaticResources/actions';\n\nimport { Breadcrumbs, CalculatorForm } from '@frontend/common';\n\nconst select = (state) => ({\n newStaticSchema: state.static.newStaticSchema,\n newAgeBasedSchema: state.static.newAgeBasedSchema,\n serverDateTime: state.static.serverDateTime,\n});\n\nexport class TemplateNewCustom extends Component {\n static propTypes = {\n getNewStaticSchema: PropTypes.func.isRequired,\n getNewAgeBasedSchema: PropTypes.func.isRequired,\n newStaticSchema: PropTypes.object.isRequired,\n newAgeBasedSchema: PropTypes.object.isRequired,\n getServerDateTime: PropTypes.func.isRequired,\n serverDateTime: PropTypes.string,\n isStatic: PropTypes.bool.isRequired,\n onAllocationChange: PropTypes.func.isRequired,\n onTemplateNameChange: PropTypes.func.isRequired,\n onSave: PropTypes.func.isRequired,\n onMount: PropTypes.func.isRequired,\n };\n\n selectCurrSchema = (isStatic, staticSchema, ageBasedSchema) => isStatic ? staticSchema : ageBasedSchema;\n\n state = {\n currSchema: this.selectCurrSchema(this.props.isStatic, this.props.newStaticSchema, this.props.newAgeBasedSchema),\n loadingOnMount: false,\n templateName: '',\n }\n\n componentDidMount() {\n const {\n isStatic, getNewStaticSchema, newStaticSchema,\n getNewAgeBasedSchema, newAgeBasedSchema,\n getServerDateTime, onMount\n } = this.props;\n\n const promises = [];\n const getSchemaApi = isStatic ? getNewStaticSchema : getNewAgeBasedSchema;\n let currSchema = this.selectCurrSchema(isStatic, newStaticSchema, newAgeBasedSchema);\n\n if (currSchema.FundCategories.length === 0) {\n promises.push(\n getSchemaApi()\n .then(() => {\n currSchema = this.selectCurrSchema(isStatic, this.props.newStaticSchema, this.props.newAgeBasedSchema);\n this.setState({ currSchema });\n }));\n }\n\n // get current date (calculator needs for the agreement year) - probably better to get always a fresh one\n promises.push(getServerDateTime());\n this.setState({ loadingOnMount: true });\n Promise.all(promises)\n .then(() => {\n // pass to parent\n onMount(currSchema);\n })\n .finally(() => {\n this.setState({ loadingOnMount: false });\n });\n }\n\n render() {\n const {\n serverDateTime, isStatic,\n onAllocationChange, onTemplateNameChange, onSave\n } = this.props;\n const { loadingOnMount, currSchema } = this.state;\n const newCustomTemplateTitle = isStatic ? 'New Customized Static' : 'New Customized Age-Based';\n return (\n
\n \n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n getNewStaticSchema,\n getNewAgeBasedSchema,\n getServerDateTime\n})(TemplateNewCustom));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { saveTemplate } from 'components/Features/protected/Templates/actions';\nimport {\n customOptionsGet\n} from 'components/AppRoot/StaticResources/actions';\nimport { allNotificationsHide, notificationShow } from '@frontend/common';\nimport TemplatesList from './TemplatesList';\nimport TemplateCopy from './TemplateCopy';\nimport TemplateNewCustom from './TemplateNewCustom';\nimport TemplateView from './TemplateView';\nimport PageNotFound from 'components/Features/protected/PageNotFound';\n\nexport class Templates extends React.Component {\n static propTypes = {\n allNotificationsHide: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n saveTemplate: PropTypes.func.isRequired,\n customOptionsGet: PropTypes.func.isRequired\n };\n\n state = {\n template: {},\n loadingOnSave: false,\n templateName: '',\n calculatorErrors: {\n templateNameNot1To40CharsError: '',\n hasAnyBracketTotalNot100Error: '',\n hasAllocationAmountError: '',\n hasBracketTotalSumOver100Error: ''\n },\n matrixAllocations: [],\n }\n\n onTemplateNameChange = (templateName, calculatorErrors) => {\n this.setState({ templateName, calculatorErrors });\n }\n\n onAllocationChange = (matrixAllocations, calculatorErrors) => {\n const { hasAllocationAmountError, hasBracketTotalSumOver100Error } = calculatorErrors;\n // throw a toast on specific form errors\n if (hasAllocationAmountError || hasBracketTotalSumOver100Error) {\n hasBracketTotalSumOver100Error && this.props.notificationShow(hasBracketTotalSumOver100Error, 'error');\n hasAllocationAmountError && this.props.notificationShow(hasAllocationAmountError, 'error');\n }\n else {\n this.props.allNotificationsHide();\n }\n\n this.setState({ matrixAllocations, calculatorErrors });\n }\n\n onSave = () => {\n // validate template name and allocations and save to api\n const {\n matrixAllocations,\n templateName,\n template,\n calculatorErrors: {\n hasAnyBracketTotalNot100Error,\n hasAllocationAmountError,\n templateNameNot1To40CharsError,\n hasBracketTotalSumOver100Error,\n }\n } = this.state;\n\n const {\n allNotificationsHide, notificationShow, history,\n saveTemplate, customOptionsGet\n } = this.props;\n\n if (!hasAnyBracketTotalNot100Error && !hasAllocationAmountError && !templateNameNot1To40CharsError && !hasBracketTotalSumOver100Error) {\n this.setState({ loadingOnSave: true });\n const updatedTemplate = { ...template, TemplateName: templateName.trim() };\n saveTemplate(matrixAllocations, updatedTemplate)\n .then(() => {\n allNotificationsHide();\n notificationShow('Template saved.', 'success');\n this.setState({\n loadingOnSave: false,\n templateName: ''\n }, () => history.push('/templates'));\n })\n .then(() => customOptionsGet()) // update custom templates\n .catch(() => this.setState({ loadingOnSave: false }));\n }\n else {\n // show error toasts\n hasAnyBracketTotalNot100Error && notificationShow(hasAnyBracketTotalNot100Error, 'error');\n hasAllocationAmountError && notificationShow(hasAllocationAmountError, 'error');\n templateNameNot1To40CharsError && notificationShow(templateNameNot1To40CharsError, 'error');\n hasBracketTotalSumOver100Error && notificationShow(hasBracketTotalSumOver100Error, 'error');\n }\n }\n\n render() {\n const additionalProps = {\n onAllocationChange: this.onAllocationChange,\n onTemplateNameChange: this.onTemplateNameChange,\n onMount: (template) => this.setState({ template }),\n onSave: this.onSave\n };\n\n return (\n \n \n (\n \n )}\n />\n (\n \n )}\n />\n (\n \n )}\n />\n \n \n \n );\n }\n}\n\nexport default withRouter(connect(null, {\n allNotificationsHide,\n notificationShow,\n saveTemplate,\n customOptionsGet\n})(Templates));","export function saveFile(file, fileName) {\n const hiddenElement = document.createElement('a');\n const fileURL = URL.createObjectURL(file);\n hiddenElement.href = fileURL;\n hiddenElement.download = fileName || 'download';\n document.body.appendChild(hiddenElement);\n hiddenElement.click();\n setTimeout(() => {\n document.body.removeChild(hiddenElement);\n URL.revokeObjectURL(fileURL);\n }, 50);\n}","/*\n*\n* NewAccounts Actions\n*\n*/\nimport { GETrequest, POSTrequest, PUTrequest, DELETErequest } from 'utils/helpers/api_handler';\nimport {\n NEW_ACCOUNTS_LIST_GET,\n ACCOUNTS_UPLOAD,\n NEW_ACCOUNT_DETAILS_GET,\n NEW_ACCOUNT_UPDATE,\n NEW_ACCOUNT_APPROVE,\n NEW_ACCOUNT_DOWNLOAD,\n RESOLVE_BIRTHDATE,\n RESOLVE_EMAIL,\n RESOLVE_POA_LEVEL,\n RESOLVE_SSN,\n RESOLVE_FED_TAX,\n RESOLVE_STATE_TAX,\n BLANK_ACCOUNT_GET,\n SINGLE_ACCOUNT_CREATE,\n NEW_ACCOUNT_RESET,\n NEW_ACCOUNT_DELETE,\n} from './constants';\n\nexport function newAccountsListGet() {\n const response = GETrequest('/accounts/new-accounts');\n\n return {\n type: NEW_ACCOUNTS_LIST_GET,\n payload: response,\n };\n}\n\nexport function accountsUpload(formData) {\n const response = POSTrequest('/accounts/new-accounts/upload', formData);\n\n return {\n type: ACCOUNTS_UPLOAD,\n payload: response,\n };\n}\n\nexport function newAccountDetailsGet(id) {\n const response = GETrequest(`/accounts/new-accounts/${id}`);\n\n return {\n type: NEW_ACCOUNT_DETAILS_GET,\n payload: response,\n };\n}\n\nexport function newAccountUpdate(id, newAccount) {\n const response = PUTrequest(`/accounts/new-accounts/${id}`, newAccount);\n\n return {\n type: NEW_ACCOUNT_UPDATE,\n payload: response,\n };\n}\n\nexport function newAccountApprove(id) {\n const response = POSTrequest(`/accounts/new-accounts/approve/${id}`);\n\n return {\n type: NEW_ACCOUNT_APPROVE,\n payload: response,\n };\n}\n\nexport function newAccountDownload(id) {\n const response = GETrequest(`/accounts/new-accounts/${id}/downloadforms`, { responseType: 'blob' });\n\n return {\n type: NEW_ACCOUNT_DOWNLOAD,\n payload: response,\n };\n}\n\nexport function resolveBirthdate(ssn, birthdate) {\n const response = POSTrequest('/accounts/new-accounts/resolve/birthdate', {\n rightSsn: ssn,\n rightBirthdate: birthdate,\n });\n\n return {\n type: RESOLVE_BIRTHDATE,\n payload: response,\n };\n}\n\nexport function resolveEmail(ssn, email) {\n const response = POSTrequest('/accounts/new-accounts/resolve/email', {\n rightSsn: ssn,\n rightEmail: email,\n });\n\n return {\n type: RESOLVE_EMAIL,\n payload: response,\n };\n}\n\nexport function resolvePOALevel(ssn, otherSSN, poaLevel) {\n const response = POSTrequest('/accounts/new-accounts/resolve/poa', {\n agentSsn: ssn,\n beneficiarySsn: otherSSN,\n rightPOALevel: poaLevel,\n });\n\n return {\n type: RESOLVE_POA_LEVEL,\n payload: response,\n };\n}\n\nexport function resolveSSN(email, correctSSN) {\n const response = POSTrequest('/accounts/new-accounts/resolve/email', {\n rightSsn: correctSSN,\n rightEmail: email,\n });\n\n return {\n type: RESOLVE_SSN,\n payload: response,\n };\n}\n\nexport function resolveFedTax(agentSsn, beneficiarySsn, rightFedDocs) {\n const payload = POSTrequest('/accounts/new-accounts/resolve/fed', { agentSsn, beneficiarySsn, rightFedDocs });\n\n return {\n type: RESOLVE_FED_TAX,\n payload,\n };\n}\n\nexport function resolveStateTax(agentSsn, beneficiarySsn, rightStateDocs) {\n const payload = POSTrequest('/accounts/new-accounts/resolve/state', { agentSsn, beneficiarySsn, rightStateDocs });\n\n return {\n type: RESOLVE_STATE_TAX,\n payload,\n };\n}\n\nexport function blankAccountGet() {\n const response = GETrequest('/accounts/new-accounts/new');\n return {\n type: BLANK_ACCOUNT_GET,\n payload: response,\n };\n}\n\nexport function singleAccountCreate(account) {\n const response = POSTrequest('/accounts/new-accounts', account);\n\n return {\n type: SINGLE_ACCOUNT_CREATE,\n payload: response,\n };\n}\n\nexport function newAccountReset(id) {\n const response = POSTrequest(`/accounts/new-accounts/reset/${id}`);\n\n return {\n type: NEW_ACCOUNT_RESET,\n payload: response,\n };\n}\n\nexport function newAccountDelete(id) {\n const response = DELETErequest(`/accounts/new-accounts/${id}`);\n\n return {\n type: NEW_ACCOUNT_DELETE,\n payload: response,\n };\n}","/*\n*\n* BulkUploadModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { truncate } from 'lodash';\n\nimport {\n Button,\n Icon,\n} from '@mui/material';\n\nimport {\n Modal,\n notificationShow,\n allNotificationsHide\n} from '@frontend/common';\nimport { accountsUpload, newAccountsListGet } from 'components/Features/protected/NewAccounts/actions';\n\nimport styles from './styles.module.css';\n\nconst frontendConfig = window.frontendConfig;\n\nexport class BulkUploadModal extends React.Component {\n\n static propTypes = {\n show: PropTypes.bool.isRequired,\n onModalClose: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n accountsUpload: PropTypes.func.isRequired,\n newAccountsListGet: PropTypes.func.isRequired,\n };\n\n state = {\n fileName: '',\n file: {},\n fileUploading: false,\n };\n\n fileUpload = () => {\n this.setState({ fileUploading: true });\n\n const formData = new FormData();\n formData.append('file', this.state.file);\n this.props.accountsUpload(formData)\n .then(() => {\n this.props.allNotificationsHide();\n this.props.notificationShow('File uploaded.', 'success');\n this.props.newAccountsListGet();\n this.modalCloseHandle();\n this.setState({ fileUploading: false });\n })\n .catch(() => this.setState({ fileUploading: false }));\n }\n\n onFileSelect = (e) => {\n const file = e.target.files[0];\n if (file) {\n this.setState({\n fileName: file.name,\n file,\n });\n }\n }\n\n modalCloseHandle = () => {\n this.props.onModalClose();\n document.getElementById('uploadInput').value = '';\n this.setState({\n fileName: '',\n file: {},\n });\n }\n\n spreadsheetDownload = () => {\n window.location = `${frontendConfig.api}/accounts/new-accounts/download`;\n }\n\n render() {\n const { fileUploading } = this.state;\n return (\n this.modalCloseHandle(false)}\n actionButtons={[\n {\n label: 'Cancel',\n action: this.modalCloseHandle,\n disabled: fileUploading,\n },\n {\n label: 'Upload',\n action: this.fileUpload,\n disabled: !this.state.fileName,\n loading: fileUploading,\n buttonType: 'contained',\n },\n ]}\n >\n
\n \n file_download\n Download Spreadsheet\n \n
\n document.getElementById('uploadInput').click()}\n disabled={fileUploading}\n >\n Choose File\n \n \n
\n
{truncate(this.state.fileName, { length: 40 }) || 'No file selected.'}
\n
\n \n );\n }\n}\n\nexport default connect(null, {\n notificationShow,\n allNotificationsHide,\n accountsUpload,\n newAccountsListGet\n})(BulkUploadModal);\n","/*\n*\n* AccountStatus Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { statuses } from '../constants';\n\nimport Tippy from '@tippyjs/react';\n\nimport styles from './styles.module.css';\n\n\nexport function AccountStatus({ status }) {\n const statusConfig = {\n [statuses.LOADED]: {\n message: 'Needs Advisor review and approval.',\n color: 'var(--warn)',\n },\n [statuses.ADVISOR_APPROVED]: {\n message: 'Needs client review and approval.',\n color: 'var(--warn)',\n },\n [statuses.CLIENT_REJECTED]: {\n message: 'Account not opened.',\n color: 'var(--error)',\n },\n [statuses.EXPIRED]: {\n message: 'Reset required.',\n color: 'var(--error)',\n },\n [statuses.SECURITY_FAILURE]: {\n message: 'ID verification required. Contact my529.',\n color: 'var(--error)',\n },\n [statuses.CLIENT_APPROVED]: {\n message: 'Account is open.',\n color: '#41AD49',\n },\n };\n\n if (!statusConfig[status]) {\n return (\n
\n
\n
{status}
\n
\n );\n }\n\n return (\n \n
\n
\n
{status}
\n
\n \n );\n}\n\nAccountStatus.propTypes = {\n status: PropTypes.string.isRequired,\n};\n\nexport default AccountStatus;\n","/*\n*\n* NewAccountsList Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport bowser from 'bowser';\nimport { saveFile } from 'utils/helpers/files';\nimport { withRouter } from 'react-router-dom';\n\nimport { newAccountsListGet, newAccountDownload } from '../actions';\nimport { statuses } from '../constants';\n\nimport BulkUploadModal from './BulkUploadModal';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport {\n FloatingActionButton,\n notificationShow,\n Modal,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\nimport AccountStatus from '../AccountStatus';\n\nimport events from 'utils/ga';\n\nexport const select = (state) => ({\n webMessages: state.static.webMessages,\n allowNewAccounts: state.newAccounts.allowNewAccounts,\n simpleAccounts: Object.values(state.newAccounts.accounts).map(account => ({\n /* eslint-disable indent */\n id: account.PoaAccountApplicationId,\n benName: `${account.BeneficiaryFirstName || ''} ${account.BeneficiaryLastName || ''}`,\n ownerName: `${account.OwnerFirstName || ''} ${account.OwnerLastName || ''}`,\n option: account.TemplateName ? account.TemplateName : account.OptionName,\n dateLoaded: account.Date,\n status: account.Status,\n statusOrder: (account.Status === statuses.CLIENT_APPROVED && `2-${account.Status}`)\n || ((\n account.Status === statuses.EXPIRED\n || account.Status === statuses.SECURITY_FAILURE\n || account.Status === statuses.CLIENT_REJECTED\n ) && `0-${account.Status}`)\n || `1-${account.Status}`,\n /* eslint-enable indent */\n })),\n});\n\n\nexport class NewAccountsList extends React.Component {\n\n static propTypes = {\n webMessages: PropTypes.object.isRequired,\n simpleAccounts: PropTypes.array.isRequired,\n allowNewAccounts: PropTypes.bool.isRequired,\n newAccountsListGet: PropTypes.func.isRequired,\n newAccountDownload: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n showUploadModal: false,\n showDownloadedModal: false,\n };\n\n downloadHandle = (row) => {\n this.props.newAccountDownload(row.id)\n .then(action => {\n const downloadedData = action.payload.data;\n if (!downloadedData) {\n this.props.notificationShow('', 'genericError');\n }\n else {\n const fileBlob = new Blob([downloadedData], { type: 'application/zip' });\n const fileName = `FormsFor${row.benName.replace(/\\s/g, '')}.zip`;\n\n if (bowser.name === 'Internet Explorer' || bowser.name === 'Microsoft Edge') {\n navigator.msSaveBlob(fileBlob, fileName);\n }\n else {\n saveFile(fileBlob, fileName);\n }\n this.setState({\n showDownloadedModal: true,\n });\n }\n })\n .catch(() => null);\n }\n\n componentDidMount() {\n if (this.props.simpleAccounts.length === 0) {\n this.setState({ loading: true });\n this.props.newAccountsListGet()\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n else {\n this.props.newAccountsListGet()\n .catch(() => null);\n }\n }\n\n render() {\n const { loading } = this.state;\n const { history, simpleAccounts, webMessages, allowNewAccounts, notificationShow } = this.props;\n\n const fabOptions = [{\n title: 'Single Account',\n icon: 'account_circle',\n action: () => this.props.history.push('/new-accounts/add'),\n }];\n\n if (!bowser.mobile && !bowser.tablet) {\n fabOptions.push({\n title: 'Bulk Upload',\n icon: 'file_upload',\n action: () => this.setState({ showUploadModal: true }),\n });\n }\n\n return (\n
\n \n\n \n },\n ]}\n emptyMessage='No new accounts. Click the + button to begin.'\n actions={[\n {\n displayName: 'View Account',\n type: 'menu',\n onSelect: row => history.push(`/new-accounts/${row.id}`),\n showIf: row => row.status !== statuses.LOADED\n },\n {\n displayName: 'Review',\n type: 'menu',\n onSelect: row => history.push(`/new-accounts/${row.id}`),\n showIf: row => row.status === statuses.LOADED\n },\n {\n displayName: 'Download Application',\n type: 'menu',\n onSelect: row => this.downloadHandle(row),\n showIf: row => row.status === statuses.LOADED || row.status === statuses.ADVISOR_APPROVED\n },\n ]}\n >\n events.tableSearchAccessed('New Accounts List', window.location.pathname)}\n />\n \n \n \n \n \n \n\n notificationShow('New account applications are blocked due to a firm merger.', 'warning')}\n mainButtonTitle='Add Account(s)'\n />\n\n this.setState({ showUploadModal: false })}\n />\n\n this.setState({ showDownloadedModal: false }),\n },\n ]}\n onCloseModal={() => this.setState({ showDownloadedModal: false })}\n >\n

Your account application has been downloaded. Please note that some fields of the downloaded application will need to be filled out before submission. You will be required to select the investment option desired for the account again. If you are using a customized investment template, you will need to print that out separately.

\n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n newAccountsListGet,\n newAccountDownload,\n notificationShow,\n})(NewAccountsList));\n","export const errorTypes = {\n EMAIL_ERROR: 'Email',\n AGENT_ERROR: 'Agent',\n BENEFICIARY_ERROR: 'Beneficiary',\n SUCCESSOR_ERROR: 'Successor',\n SECONDARY_SUCCESSOR_ERROR: 'SSuccessor',\n POA_LEVEL_ERROR: 'POALevel',\n SSN_ERROR: 'SSN',\n FED_TAX_ERROR: 'CanViewFedTaxDocs',\n STATE_TAX_ERROR: 'CanViewStateTaxDocs',\n};\n\nexport const detailedErrors = [\n {\n type: errorTypes.EMAIL_ERROR,\n description: 'Agent Email',\n },\n {\n type: errorTypes.AGENT_ERROR,\n description: 'Agent Birthdate',\n },\n {\n type: errorTypes.BENEFICIARY_ERROR,\n description: 'Beneficiary Birthdate',\n },\n {\n type: errorTypes.SUCCESSOR_ERROR,\n description: 'Successor Birthdate',\n },\n {\n type: errorTypes.SECONDARY_SUCCESSOR_ERROR,\n description: 'Secondary Successor Birthdate',\n },\n {\n type: errorTypes.POA_LEVEL_ERROR,\n description: 'Access Level',\n },\n {\n type: errorTypes.SSN_ERROR,\n description: 'Agent Social Security Number',\n },\n {\n type: errorTypes.FED_TAX_ERROR,\n description: 'View Federal Tax Documents',\n },\n {\n type: errorTypes.STATE_TAX_ERROR,\n description: 'View State Tax Documents',\n },\n];","/*\n*\n* ConflictErrorResolveModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n resolveBirthdate,\n resolveEmail,\n resolvePOALevel,\n resolveSSN,\n resolveFedTax,\n resolveStateTax,\n} from 'components/Features/protected/NewAccounts/actions';\nimport { errorTypes, detailedErrors } from '../constants';\n\nimport {\n Modal,\n} from '@frontend/common';\nimport {\n FormControlLabel,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\nimport styles from './styles.module.css';\n\n\nexport class ConflictErrorResolveModal extends React.Component {\n\n static propTypes = {\n show: PropTypes.bool.isRequired,\n onCloseModal: PropTypes.func.isRequired,\n conflictErrors: PropTypes.array.isRequired,\n resolveBirthdate: PropTypes.func.isRequired,\n resolveEmail: PropTypes.func.isRequired,\n resolvePOALevel: PropTypes.func.isRequired,\n resolveSSN: PropTypes.func.isRequired,\n resolveFedTax: PropTypes.func.isRequired,\n resolveStateTax: PropTypes.func.isRequired,\n approveAccount: PropTypes.func.isRequired,\n };\n\n state = {\n canSave: false,\n loading: false,\n };\n\n conflictPickersCompile() {\n const conflicts = this.props.conflictErrors.map((error) => {\n const errorDetails = detailedErrors.find(errorDetail => errorDetail.type === error.type) || {};\n const radioButtons = (\n this.onRadioButtonSelect(`resolved${error.type}`, value)}\n value={this.state[`resolved${error.type}`]}\n >\n {error.options.map(errorOption => (\n }\n />\n ))}\n \n );\n\n return (\n
\n {errorDetails.description}\n
\n {radioButtons}\n
\n );\n });\n\n return (\n
\n
Select the correct information below to resolve discrepancies between uploaded accounts.
\n {conflicts}\n
\n );\n }\n\n onRadioButtonSelect(key, value) {\n this.setState({\n [key]: value,\n }, () => {\n const canSave = this.props.conflictErrors.every(error => {\n return this.state[`resolved${error.type}`];\n });\n this.setState({ canSave });\n });\n }\n\n onSave = () => {\n this.setState({ loading: true });\n const { conflictErrors } = this.props;\n const apiActions = [];\n const hasEmailAndSSNConflict = Boolean(conflictErrors.find(error => error.type === errorTypes.SSN_ERROR))\n && Boolean(conflictErrors.find(error => error.type === errorTypes.EMAIL_ERROR));\n\n conflictErrors.forEach(error => {\n switch (error.type) {\n case errorTypes.AGENT_ERROR:\n case errorTypes.BENEFICIARY_ERROR:\n case errorTypes.SUCCESSOR_ERROR:\n case errorTypes.SECONDARY_SUCCESSOR_ERROR: {\n apiActions.push(this.props.resolveBirthdate(error.ssn, this.state[`resolved${error.type}`]));\n break;\n }\n case errorTypes.EMAIL_ERROR: {\n apiActions.push(this.props.resolveEmail(hasEmailAndSSNConflict ? this.state.resolvedSSN : error.ssn, this.state.resolvedEmail));\n break;\n }\n case errorTypes.SSN_ERROR: {\n apiActions.push(this.props.resolveSSN(hasEmailAndSSNConflict ? this.state.resolvedEmail : error.email, this.state.resolvedSSN));\n break;\n }\n case errorTypes.POA_LEVEL_ERROR: {\n apiActions.push(this.props.resolvePOALevel(error.ssn, error.otherSSN, this.state.resolvedPOALevel));\n break;\n }\n case errorTypes.FED_TAX_ERROR: {\n apiActions.push(this.props.resolveFedTax(error.ssn, error.otherSSN, this.state.resolvedCanViewFedTaxDocs));\n break;\n }\n case errorTypes.STATE_TAX_ERROR: {\n apiActions.push(this.props.resolveStateTax(error.ssn, error.otherSSN, this.state.resolvedCanViewStateTaxDocs));\n break;\n }\n default: break;\n }\n });\n\n Promise.all(apiActions)\n .then(() => this.props.approveAccount())\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n \n componentDidUpdate(prevProps) {\n if (prevProps.show !== this.props.show) {\n if (this.props.show && this.props.conflictErrors.length > 0) {\n const conflicts = {};\n this.props.conflictErrors.forEach(error => {\n conflicts[`resolved${error.type}`] = null;\n });\n this.setState({\n canSave: false,\n ...conflicts\n });\n }\n else if (!this.props.show) {\n this.setState({ canSave: false });\n }\n }\n }\n\n render() {\n return (\n \n {this.conflictPickersCompile()}\n \n );\n }\n}\n\nexport default connect(null, {\n resolveBirthdate,\n resolveEmail,\n resolvePOALevel,\n resolveSSN,\n resolveFedTax,\n resolveStateTax,\n})(ConflictErrorResolveModal);\n","/*\n*\n* StaticErrorResolveModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n resolveBirthdate,\n resolveEmail,\n resolvePOALevel,\n resolveSSN,\n resolveFedTax,\n resolveStateTax,\n} from 'components/Features/protected/NewAccounts/actions';\nimport { errorTypes, detailedErrors } from '../constants';\n\nimport {\n Modal,\n} from '@frontend/common';\n\nimport styles from './styles.module.css';\n\n\nexport class StaticErrorResolveModal extends React.Component {\n\n static propTypes = {\n staticErrors: PropTypes.array.isRequired,\n resolveBirthdate: PropTypes.func.isRequired,\n resolveEmail: PropTypes.func.isRequired,\n resolvePOALevel: PropTypes.func.isRequired,\n resolveSSN: PropTypes.func.isRequired,\n resolveFedTax: PropTypes.func.isRequired,\n resolveStateTax: PropTypes.func.isRequired,\n onCloseModal: PropTypes.func.isRequired,\n show: PropTypes.bool.isRequired,\n approveAccount: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n };\n\n applyHandle = () => {\n this.setState({ loading: true });\n const apiActions = [];\n this.props.staticErrors.forEach(error => {\n switch (error.type) {\n case errorTypes.AGENT_ERROR:\n case errorTypes.BENEFICIARY_ERROR:\n case errorTypes.SUCCESSOR_ERROR:\n case errorTypes.SECONDARY_SUCCESSOR_ERROR: {\n apiActions.push(this.props.resolveBirthdate(error.ssn, error.approvedValue));\n break;\n }\n case errorTypes.EMAIL_ERROR: {\n apiActions.push(this.props.resolveEmail(error.ssn, error.approvedValue));\n break;\n }\n case errorTypes.SSN_ERROR: {\n apiActions.push(this.props.resolveSSN(error.email, error.approvedValue));\n break;\n }\n case errorTypes.POA_LEVEL_ERROR: {\n apiActions.push(this.props.resolvePOALevel(error.ssn, error.otherSSN, error.approvedValue));\n break;\n }\n case errorTypes.FED_TAX_ERROR: {\n apiActions.push(this.props.resolveFedTax(error.ssn, error.otherSSN, error.approvedValue));\n break;\n }\n case errorTypes.STATE_TAX_ERROR: {\n apiActions.push(this.props.resolveStateTax(error.ssn, error.otherSSN, error.approvedValue));\n break;\n }\n default: break;\n }\n });\n\n Promise.all(apiActions)\n .then(() => this.props.approveAccount())\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n\n approvedValuesCompose() {\n const approvedValues = this.props.staticErrors.map(error => {\n const errorDetails = detailedErrors.find(errorDetail => errorDetail.type === error.type) || {};\n return (\n
\n
{errorDetails.description}
\n
\n
{error.approvedValue}
\n
\n );\n });\n\n return (\n
\n
This new account has information that conflicts with accounts already approved by the client.
\n {approvedValues}\n
Either apply the above information to all associated new accounts, or cancel and manually edit this new account to match previously approved accounts.
\n
\n );\n }\n\n render() {\n return (\n \n {this.approvedValuesCompose()}\n \n );\n }\n}\n\nexport default connect(null, {\n resolveBirthdate,\n resolveEmail,\n resolvePOALevel,\n resolveSSN,\n resolveFedTax,\n resolveStateTax,\n})(StaticErrorResolveModal);\n","/*\n*\n* NewAccountForm Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { find, isEqual } from 'lodash';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\n\nimport {\n relationshipsGet,\n optionsGet,\n customOptionsGet,\n poaLevelsGet,\n} from 'components/AppRoot/StaticResources/actions';\nimport { statuses } from '../constants';\n\nimport {\n TextField,\n Tabs,\n Tab,\n} from '@mui/material';\n\nimport {\n Checkbox,\n Card,\n DatePicker,\n Dropdown,\n PhoneNumberInput,\n notificationShow,\n allNotificationsHide,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\nimport StateDropdown from 'components/Features/protected/StateDropdown';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n relationships: state.static.relationships,\n options: state.static.options,\n customStaticOptions: state.static.customStaticOptions,\n customAgeBasedOptions: state.static.customAgeBasedOptions,\n poaLevels: state.static.poaLevels,\n});\n\nconst errorTabStyles = {\n backgroundColor: 'rgba(255, 0, 0, 0.25)',\n color: 'rgb(255, 0, 0)',\n};\n\n\nexport class NewAccountForm extends React.Component {\n\n static propTypes = {\n account: PropTypes.object.isRequired,\n updateAccount: PropTypes.func.isRequired,\n disableInputs: PropTypes.bool,\n formErrors: PropTypes.array,\n relationships: PropTypes.array.isRequired,\n options: PropTypes.array.isRequired,\n customStaticOptions: PropTypes.array.isRequired,\n customAgeBasedOptions: PropTypes.array.isRequired,\n poaLevels: PropTypes.array.isRequired,\n tabErrorCounts: PropTypes.object,\n relationshipsGet: PropTypes.func.isRequired,\n optionsGet: PropTypes.func.isRequired,\n customOptionsGet: PropTypes.func.isRequired,\n poaLevelsGet: PropTypes.func.isRequired,\n toggleUseOwnerAddresses: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n disableInputs: false,\n tabErrorCounts: {},\n formErrors: [],\n };\n\n state = {\n useOwnerAddresses: false,\n activeAOAddressTab: 0,\n activeBeneAddressTab: 0,\n activeSuccessorTab: 0,\n };\n\n addressInputsCompose(addressType) {\n let overrideProps = {};\n let type = addressType;\n if (this.state.useOwnerAddresses && addressType.toLowerCase().includes('beneficiary')) {\n overrideProps = { disabled: true };\n type = addressType.replace('Beneficiary', 'Owner');\n }\n\n const stateInputKey = `${type}State`;\n return [\n this.textFieldCompose(`${type}Address1`, 'Street Address 1', overrideProps),\n this.textFieldCompose(`${type}Address2`, 'Street Address 2', overrideProps),\n this.textFieldCompose(`${type}City`, 'City', overrideProps),\n this.updateAccount({ target: { name: stateInputKey, value } })}\n FormControlProps={{ key: stateInputKey, disabled: this.props.disableInputs || overrideProps.disabled }}\n autoComplete={'off'}\n SelectProps={{ name: stateInputKey, inputProps: { name: stateInputKey } }}\n />,\n this.textFieldCompose(`${type}ZipCode`, 'ZIP Code', overrideProps),\n ];\n }\n\n datePickerCompose(key, label) {\n const error = this.inputErrorTextGet(key);\n return (\n this.updateAccount({ target: { name: key, value: date && date.isValid() ? dayjs(date).format('L') : date } })}\n autoComplete={'off'}\n disabled={this.props.disableInputs}\n maxDate={dayjs()}\n error={Boolean(error)}\n helperText={error}\n disableFuture\n fullWidth={true}\n />\n );\n }\n\n dropdownCompose(key, label, menuItems) {\n return (\n this.updateAccount({ target: { name: key, value } })}\n FormControlProps={{ key, disabled: this.props.disableInputs }}\n SelectProps={{ name: key, inputProps: { name: key } }}\n />\n );\n }\n\n generalFormErrorsCompose(section) {\n const errors = [];\n this.props.formErrors.forEach(error => {\n if (error.input === `${section}General`) {\n errors.push(error.message);\n }\n });\n\n return (\n
\n {errors.map((error, index) => (
{error}
))}\n
\n );\n }\n\n inputErrorTextGet(input) {\n const error = find(this.props.formErrors, { input });\n return error ? error.message : '';\n }\n\n menuOptionsCompose(items, valueKey, primaryTextKey) {\n return items.map(item => ({\n value: valueKey ? item[valueKey] : item,\n display: primaryTextKey ? item[primaryTextKey] : item,\n }));\n }\n\n optionAllocationsDataCompile() {\n const optionName = this.props.account.OptionName;\n const templateName = this.props.account.TemplateName;\n const beneficiaryAge = dayjs(this.props.account.BeneficiaryBirthdate).isValid() ? dayjs().diff(this.props.account.BeneficiaryBirthdate, 'year') : 0;\n\n let funds = [];\n const option = find(this.props.options, { name: optionName });\n\n if (option) {\n if (option.name === 'Customized Static' && templateName && this.props.customStaticOptions.length > 0) {\n const template = find(this.props.customStaticOptions, { name: templateName });\n if (template) {\n funds = template.funds.map(fund => ({\n id: fund.id,\n name: fund.name,\n ticker: fund.ticker,\n fees: fund.fee + (option.my529Fee * 100),\n percentage: fund.percentage * 100,\n }));\n }\n }\n else if (option.name === 'Customized Age-Based' && templateName && this.props.customAgeBasedOptions.length > 0) {\n let activeAgeBracket = {};\n const template = find(this.props.customAgeBasedOptions, { name: templateName });\n if (template) {\n template.ageBrackets.forEach(ageBracket => {\n if (beneficiaryAge >= ageBracket.minAge) {\n activeAgeBracket = ageBracket;\n }\n });\n funds = activeAgeBracket.funds.map(fund => ({\n id: fund.id,\n name: fund.name,\n ticker: fund.ticker,\n fees: fund.fee + (option.my529Fee * 100),\n percentage: fund.percentage * 100,\n }));\n }\n }\n else if (option.optionType === 'S' || option.optionType === 'T') {\n funds = option.funds.map(fund => ({\n id: fund.id,\n name: fund.name,\n ticker: fund.ticker,\n fees: fund.fee + (option.my529Fee * 100),\n percentage: fund.percentage * 100,\n }));\n }\n }\n\n return funds;\n }\n\n textFieldCompose(key, label, overrideProps) {\n const error = this.inputErrorTextGet(key);\n \n return (\n \n );\n }\n\n phoneInputCompose(key, label, overrideProps) {\n const error = this.inputErrorTextGet(key);\n \n return (\n this.updateAccount({ target: { name: key, value, } })}\n disabled={this.props.disableInputs}\n error={Boolean(error)}\n helperText={error}\n fullWidth\n {...overrideProps}\n />\n );\n }\n\n toggleCompose(key, label, overrideProps) {\n return (\n \n this.updateAccount({ target: { name: key, value: e.target.checked } })}\n {...overrideProps}\n />\n
{this.inputErrorTextGet(key)}
\n
\n );\n }\n\n toggleUseOwnerAddresses = (useOwnerAddresses) => {\n this.setState({\n useOwnerAddresses\n }, () => {\n this.props.toggleUseOwnerAddresses(useOwnerAddresses);\n });\n }\n\n updateAccount = (e) => {\n this.props.updateAccount(e.target.name, e.target.value);\n }\n\n componentDidMount() {\n const apiCalls = [this.props.customOptionsGet()];\n\n if (this.props.relationships.length === 0) {\n apiCalls.push(this.props.relationshipsGet());\n }\n\n if (this.props.options.length === 0) {\n apiCalls.push(this.props.optionsGet());\n }\n\n if (this.props.poaLevels.length === 0) {\n apiCalls.push(this.props.poaLevelsGet());\n }\n\n Promise.all(apiCalls)\n .catch(() => null);\n }\n\n componentDidUpdate(prevProps) {\n const { account } = this.props;\n const { BeneficiaryIsResident, BeneficiaryMailingState, OwnerIsResident, OwnerMailingState, Status, } = account;\n\n if (\n isEqual(account, prevProps.account)\n && !isEqual(this.props.formErrors, prevProps.formErrors)\n && this.props.formErrors.length > 0\n ) {\n const tabErrorCounts = this.props.tabErrorCounts;\n this.setState({\n activeAOAddressTab: tabErrorCounts.aoMailing === 0 && tabErrorCounts.aoPhysical > 0 ? 1 : 0,\n activeBeneAddressTab: tabErrorCounts.beneMailing === 0 && tabErrorCounts.benePhysical > 0 ? 1 : 0,\n activeSuccessorTab: tabErrorCounts.successor === 0 && tabErrorCounts.ssuccessor > 0 ? 1 : 0,\n });\n }\n\n // display warning toast when residency checkbox doesn't match up with selected state\n if (\n (!Status || Status === statuses.LOADED) // only trigger when form is new or in \"Loaded\" status\n && (BeneficiaryIsResident !== prevProps.account.BeneficiaryIsResident\n || BeneficiaryMailingState !== prevProps.account.BeneficiaryMailingState\n || OwnerIsResident !== prevProps.account.OwnerIsResident\n || OwnerMailingState !== prevProps.account.OwnerMailingState)\n ) {\n const isBeneStateUtah = BeneficiaryMailingState === 'UT';\n const isOwnerStateUtah = OwnerMailingState === 'UT';\n let beneWarningTriggered = false;\n\n if (BeneficiaryMailingState\n && ((!BeneficiaryIsResident && isBeneStateUtah) || (BeneficiaryIsResident && !isBeneStateUtah))\n && !this.state.useOwnerAddresses) { // Don't show bene warning, if it is using the owner's address\n this.props.notificationShow('The selected state for the beneficary\\'s address doesn\\'t match their declared Utah residency.', 'warning');\n beneWarningTriggered = true;\n }\n else this.props.allNotificationsHide();\n if (OwnerMailingState\n && ((!OwnerIsResident && isOwnerStateUtah) || (OwnerIsResident && !isOwnerStateUtah))) {\n this.props.notificationShow('The selected state for the owner\\'s address doesn\\'t match their declared Utah residency.', 'warning');\n }\n else if (!beneWarningTriggered) this.props.allNotificationsHide();\n }\n }\n\n componentWillUnmount() {\n this.props.allNotificationsHide(); // mainly here to remove the residency warning toasts\n }\n\n render() {\n const { activeAOAddressTab, activeBeneAddressTab, activeSuccessorTab, useOwnerAddresses, } = this.state;\n const optionAllocationsData = this.optionAllocationsDataCompile();\n /* eslint-disable indent */\n return (\n
\n \n {this.generalFormErrorsCompose('AO')}\n
\n
\n {this.textFieldCompose('OwnerFirstName', 'First Name')}\n {this.textFieldCompose('OwnerMiddleName', 'Middle Name')}\n {this.textFieldCompose('OwnerLastName', 'Last Name')}\n {this.textFieldCompose('OwnerSSN', 'Social Security Number')}\n {this.datePickerCompose('OwnerBirthdate', 'Birthdate')}\n
\n
\n {this.textFieldCompose('OwnerEmail', 'Email')}\n {this.phoneInputCompose('PhoneNumber1', 'Primary Phone')}\n {this.phoneInputCompose('PhoneNumber2', 'Alternate Phone')}\n
\n
\n {this.toggleCompose('OwnerIsResident', 'Utah Resident')}\n this.setState({ activeAOAddressTab: value })}\n value={activeAOAddressTab}\n variant='fullWidth'\n >\n 0 ? errorTabStyles : {}}\n />\n 0 ? errorTabStyles : {}}\n />\n \n {activeAOAddressTab === 0 && this.addressInputsCompose('OwnerMailing')}\n {activeAOAddressTab === 1 && this.addressInputsCompose('OwnerPhysical')}\n
\n
\n \n \n {this.generalFormErrorsCompose('Bene')}\n
\n
\n {this.textFieldCompose('BeneficiaryFirstName', 'First Name')}\n {this.textFieldCompose('BeneficiaryMiddleName', 'Middle Name')}\n {this.textFieldCompose('BeneficiaryLastName', 'Last Name')}\n
\n
\n {this.textFieldCompose('BeneficiarySSN', 'Social Security Number')}\n {this.datePickerCompose('BeneficiaryBirthdate', 'Birthdate')}\n {this.dropdownCompose('Relationship', 'Relationship to Account Owner', this.menuOptionsCompose(this.props.relationships, 'key', 'value'))}\n
\n
\n {this.toggleCompose('BeneficiaryIsResident', 'Utah Resident', { disabled: useOwnerAddresses || this.props.disableInputs })}\n {this.toggleCompose('useOwnerAddresses', 'Use Account Owner Addresses', {\n checked: useOwnerAddresses,\n onChange: (e) => this.toggleUseOwnerAddresses(e.target.checked),\n })}\n this.setState({ activeBeneAddressTab: value })}\n value={this.state.activeBeneAddressTab}\n variant='fullWidth'\n >\n 0 ? errorTabStyles : {}}\n />\n 0 ? errorTabStyles : {}}\n />\n \n {activeBeneAddressTab === 0 && this.addressInputsCompose('BeneficiaryMailing')}\n {activeBeneAddressTab === 1 && this.addressInputsCompose('BeneficiaryPhysical')}\n
\n
\n \n \n {this.generalFormErrorsCompose('Successor')}\n {this.generalFormErrorsCompose('SSuccessor')}\n
\n this.setState({ activeSuccessorTab: value })}\n value={this.state.activeSuccessorTab}\n variant='fullWidth'\n >\n 0 ? errorTabStyles : {}}\n />\n 0 ? errorTabStyles : {}}\n />\n \n {activeSuccessorTab === 0 && [\n this.textFieldCompose('SuccessorFirstName', 'First Name'),\n this.textFieldCompose('SuccessorMiddleName', 'Middle Name'),\n this.textFieldCompose('SuccessorLastName', 'Last Name'),\n this.textFieldCompose('SuccessorSSN', 'Social Security Number'),\n this.datePickerCompose('SuccessorBirthdate', 'Birthdate'),\n ]}\n {activeSuccessorTab === 1 && [\n this.textFieldCompose('SSuccessorFirstName', 'First Name'),\n this.textFieldCompose('SSuccessorMiddleName', 'Middle Name'),\n this.textFieldCompose('SSuccessorLastName', 'Last Name'),\n this.textFieldCompose('SSuccessorSSN', 'Social Security Number'),\n this.datePickerCompose('SSuccessorBirthDate', 'Birthdate'),\n ]}\n
\n \n \n {this.generalFormErrorsCompose('POA')}\n
\n {this.dropdownCompose('OptionName', 'Investment Option', this.menuOptionsCompose(this.props.options, 'name', 'name'))}\n {(this.props.account.OptionName && this.props.account.OptionName.includes('Customized')) &&\n this.dropdownCompose(\n 'TemplateName',\n 'Customized Template',\n this.menuOptionsCompose(this.props.account.OptionName === 'Customized Static' ? this.props.customStaticOptions : this.props.customAgeBasedOptions, 'name', 'name'))\n }\n {this.toggleCompose('CanViewFedTaxDocs', 'View Federal Tax Documents')}\n {this.toggleCompose('CanViewStateTaxDocs', 'View Utah State Tax Documents')}\n {this.dropdownCompose('PoaLevel', 'Access Level', this.menuOptionsCompose(this.props.poaLevels, 'key', 'displayName'))}\n {this.textFieldCompose('PromoCode', 'Promo Code')}\n
\n \n {this.props.account.OptionName && (\n \n {this.props.account.OptionName.includes('Customized') && (!this.props.account.TemplateName || optionAllocationsData.length === 0)\n ?
\n Select a customized template under Account Settings to display option allocations.\n
\n :
\n `${data.toFixed(3)}%`,\n hideOn: ['phone'],\n },\n {\n key: 'percentage',\n title: 'Allocation',\n type: 'number',\n format: data => `${data.toFixed(2)}%`,\n },\n ]}\n >\n events.tableSearchAccessed('Option Allocations', window.location.pathname)}\n />\n \n \n \n \n \n \n
\n }\n \n )}\n
\n );\n /* eslint-enable indent */\n }\n}\n\nexport default connect(select, {\n relationshipsGet,\n optionsGet,\n customOptionsGet,\n poaLevelsGet,\n notificationShow,\n allNotificationsHide,\n})(NewAccountForm);\n","/*\n*\n* NewAccountReview Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter, Prompt } from 'react-router-dom';\nimport {\n cloneDeep,\n findIndex,\n isEqual,\n} from 'lodash';\nimport dayjs from 'dayjs';\n\nimport {\n newAccountDetailsGet,\n newAccountUpdate,\n newAccountsListGet,\n newAccountApprove,\n newAccountDownload,\n newAccountReset,\n newAccountDelete,\n} from '../actions';\nimport { statuses } from '../constants';\nimport bowser from 'bowser';\nimport { saveFile } from 'utils/helpers/files';\n\nimport ConflictErrorResolveModal from './ConflictErrorResolveModal';\nimport StaticErrorResolveModal from './StaticErrorResolveModal';\nimport NewAccountForm from '../NewAccountForm';\nimport {\n Breadcrumbs,\n LoadingOverlay,\n FloatingActionButton,\n Modal,\n ConfirmModal,\n notificationShow,\n allNotificationsHide,\n} from '@frontend/common';\nimport AccountStatus from '../AccountStatus';\n\nimport styles from './styles.module.css';\n\n/* eslint-disable indent */\nexport const select = (state, { match }) => {\n const cachedAccount = state.newAccounts.accounts[match.params.id];\n const parseDate = date => !date || (date instanceof Date) || dayjs.isDayjs(date) ? date : dayjs(date, 'YYYY-MM-DD').toDate();\n\n return {\n accountDetails: cachedAccount\n ? {\n ...cachedAccount,\n BeneficiaryBirthdate: parseDate(cachedAccount.BeneficiaryBirthdate),\n OwnerBirthdate: parseDate(cachedAccount.OwnerBirthdate),\n SuccessorBirthdate: parseDate(cachedAccount.SuccessorBirthdate),\n SSuccessorBirthDate: parseDate(cachedAccount.SSuccessorBirthDate),\n }\n : {},\n formErrors: state.newAccounts.formErrors,\n staticErrors: state.newAccounts.staticErrors,\n conflictErrors: state.newAccounts.conflictErrors,\n };\n};\n/* eslint-enable indent */\n\n\nexport class NewAccountReview extends React.Component {\n\n static propTypes = {\n accountDetails: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n newAccountDetailsGet: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n newAccountUpdate: PropTypes.func.isRequired,\n newAccountsListGet: PropTypes.func.isRequired,\n newAccountApprove: PropTypes.func.isRequired,\n newAccountDownload: PropTypes.func.isRequired,\n formErrors: PropTypes.array,\n staticErrors: PropTypes.array,\n conflictErrors: PropTypes.array,\n allNotificationsHide: PropTypes.func.isRequired,\n newAccountDelete: PropTypes.func.isRequired,\n newAccountReset: PropTypes.func.isRequired,\n };\n\n state = {\n newAccount: {},\n loading: false,\n useOwnerAddresses: false,\n showApproveConfirmModal: false,\n showDownloadedModal: false,\n approveApplicationLoading: false,\n showConflictErrorResolveModal: false,\n showStaticErrorResolveModal: false,\n formErrors: [],\n tabErrorCounts: {},\n showDeleteModal: false,\n deleteApplicationLoading: false,\n showResetModal: false,\n resetApplicationLoading: false,\n };\n\n approveHandle = (reloadAccount) => {\n this.setState({\n approveApplicationLoading: true,\n showConflictErrorResolveModal: false,\n showStaticErrorResolveModal: false,\n }, () => {\n window.scrollTo(0, 0);\n });\n\n if (reloadAccount) {\n this.setState({ loading: true });\n this.props.newAccountDetailsGet(this.props.match.params.id)\n .catch(() => null);\n }\n this.props.newAccountApprove(this.props.match.params.id)\n .then(() => {\n this.setState({\n approveApplicationLoading: false,\n loading: false,\n showApproveConfirmModal: false,\n });\n const { formErrors, staticErrors, conflictErrors, notificationShow } = this.props;\n\n if (formErrors.length > 0) {\n this.setState({\n editing: true,\n formErrors: cloneDeep(formErrors),\n tabErrorCounts: this.tabErrorsTotal(formErrors),\n });\n notificationShow(`There ${formErrors.length > 1 ? `are ${formErrors.length} issues` : 'is 1 issue'} with the new account data entered. Please review all the form inputs.`, 'error');\n }\n else if (staticErrors.length > 0) {\n this.setState({ showStaticErrorResolveModal: true });\n }\n else if (conflictErrors.length > 0) {\n this.setState({ showConflictErrorResolveModal: true });\n }\n else {\n notificationShow('Account approved.', 'success');\n this.props.newAccountsListGet()\n .catch(() => null);\n this.props.history.push('/new-accounts');\n }\n })\n .catch(() => this.setState({ loading: false, approveApplicationLoading: false }));\n }\n\n downloadHandle = () => {\n this.props.newAccountDownload(this.props.match.params.id)\n .then(action => {\n const downloadedData = action.payload.data;\n if (!downloadedData) {\n this.props.notificationShow('', 'genericError');\n }\n else {\n const fileBlob = new Blob([downloadedData], { type: 'application/zip' });\n const benFirstName = this.state.newAccount.BeneficiaryFirstName ? this.state.newAccount.BeneficiaryFirstName : '';\n const benLastName = this.state.newAccount.BeneficiaryLastName ? this.state.newAccount.BeneficiaryLastName : '';\n const fileName = `FormsFor${benFirstName + benLastName}.zip`;\n\n if (bowser.name === 'Internet Explorer' || bowser.name === 'Microsoft Edge') {\n navigator.msSaveBlob(fileBlob, fileName);\n }\n else {\n saveFile(fileBlob, fileName);\n }\n this.setState({\n showDownloadedModal: true,\n });\n }\n })\n .catch(() => null);\n }\n\n deleteHandle = () => {\n this.setState({ deleteApplicationLoading: true });\n this.props.newAccountDelete(this.props.match.params.id)\n .then(() => {\n this.props.newAccountsListGet()\n .catch(() => null);\n this.props.notificationShow('Account deleted.', 'success');\n this.props.history.push('/new-accounts');\n })\n .catch(() => this.setState({ deleteApplicationLoading: false }));\n }\n\n copyOwnerAddresses(account) {\n const updatedAccount = cloneDeep(account);\n\n updatedAccount.BeneficiaryMailingAddress1 = updatedAccount.OwnerMailingAddress1;\n updatedAccount.BeneficiaryMailingAddress2 = updatedAccount.OwnerMailingAddress2;\n updatedAccount.BeneficiaryMailingCity = updatedAccount.OwnerMailingCity;\n updatedAccount.BeneficiaryMailingState = updatedAccount.OwnerMailingState;\n updatedAccount.BeneficiaryMailingZipCode = updatedAccount.OwnerMailingZipCode;\n updatedAccount.BeneficiaryPhysicalAddress1 = updatedAccount.OwnerPhysicalAddress1;\n updatedAccount.BeneficiaryPhysicalAddress2 = updatedAccount.OwnerPhysicalAddress2;\n updatedAccount.BeneficiaryPhysicalCity = updatedAccount.OwnerPhysicalCity;\n updatedAccount.BeneficiaryPhysicalState = updatedAccount.OwnerPhysicalState;\n updatedAccount.BeneficiaryPhysicalZipCode = updatedAccount.OwnerPhysicalZipCode;\n updatedAccount.BeneficiaryIsResident = updatedAccount.OwnerIsResident;\n\n return updatedAccount;\n }\n\n fabCompose() {\n let fabOptions = [];\n const status = this.state.newAccount.Status;\n\n if (status === statuses.LOADED) {\n if (!isEqual(this.props.accountDetails, this.state.newAccount)) {\n fabOptions = [\n {\n title: 'Save & Approve',\n icon: 'check',\n action: () => this.saveNewAccountChanges(true),\n },\n {\n title: 'Save Changes',\n icon: 'save',\n action: () => this.saveNewAccountChanges(false),\n },\n {\n title: 'Revert Changes',\n icon: 'undo',\n action: this.revertChanges,\n },\n ];\n }\n else {\n fabOptions = [\n {\n title: 'Approve',\n icon: 'check',\n action: () => this.setState({ showApproveConfirmModal: true }),\n },\n {\n title: 'Download Application',\n icon: 'download',\n action: () => this.downloadHandle(),\n },\n ];\n }\n\n fabOptions.push({\n title: 'Delete',\n icon: 'delete',\n action: () => this.setState({ showDeleteModal: true }),\n });\n }\n else if (status !== statuses.LOADED && status !== statuses.CLIENT_APPROVED) {\n fabOptions = [{\n title: 'Reset',\n icon: 'restore',\n action: () => this.setState({ showResetModal: true }),\n }];\n }\n\n if (fabOptions.length > 0) {\n const hasMultipleOptions = fabOptions.length > 1;\n return (\n \n );\n }\n\n return null;\n }\n\n resetAccountHandle = () => {\n this.setState({ resetApplicationLoading: true });\n this.props.newAccountReset(this.props.match.params.id)\n .then(() => {\n this.props.notificationShow('Account reset.', 'success');\n this.props.newAccountsListGet()\n .catch(() => null);\n this.props.history.push('/new-accounts');\n })\n .catch(() => this.setState({ resetApplicationLoading: false }));\n }\n\n revertChanges = () => {\n this.setState({\n newAccount: cloneDeep(this.props.accountDetails),\n useOwnerAddresses: false,\n formErrors: [],\n tabErrorCounts: this.tabErrorsTotal([]),\n });\n this.props.allNotificationsHide();\n }\n\n saveNewAccountChanges = (tryApproving) => {\n window.scrollTo(0, 0);\n this.props.allNotificationsHide();\n this.setState({ loading: true });\n let account = this.state.newAccount;\n if (this.state.useOwnerAddresses) {\n account = this.copyOwnerAddresses(this.state.newAccount);\n }\n this.props.newAccountUpdate(this.props.match.params.id, account)\n .then(() => {\n this.props.notificationShow('Account updated.', 'success');\n this.setState({\n loading: false,\n editing: false,\n showApproveConfirmModal: tryApproving,\n formErrors: [],\n tabErrorCounts: this.tabErrorsTotal([]),\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n setReloadBlock = (propsAccount) => {\n window.onbeforeunload = () => {\n if (!isEqual(propsAccount, this.state.newAccount) && propsAccount.Status === statuses.LOADED) {\n return 'Are you sure you want to reload page? All unsaved changes will be lost.';\n }\n };\n }\n\n tabErrorsTotal = (formErrors) => {\n const tabErrorCounts = {\n aoMailing: 0,\n aoPhysical: 0,\n beneMailing: 0,\n benePhysical: 0,\n successor: 0,\n ssuccessor: 0,\n };\n\n formErrors.forEach(error => {\n if (error.input.includes('OwnerMailing')) {\n tabErrorCounts.aoMailing++;\n }\n else if (error.input.includes('OwnerPhysical')) {\n tabErrorCounts.aoPhysical++;\n }\n else if (error.input.includes('BeneficiaryMailing')) {\n tabErrorCounts.beneMailing++;\n }\n else if (error.input.includes('BeneficiaryPhysical')) {\n tabErrorCounts.benePhysical++;\n }\n else if (error.input.includes('Successor')) {\n if (error.input.includes('SSuccessor')) {\n tabErrorCounts.ssuccessor++;\n }\n else {\n tabErrorCounts.successor++;\n }\n }\n });\n\n return tabErrorCounts;\n }\n\n updateNewAccount = (input, newValue) => {\n const updatedNewAccount = cloneDeep(this.state.newAccount);\n const updatedFormErrors = cloneDeep(this.state.formErrors);\n const errorIndex = findIndex(updatedFormErrors, { input });\n\n updatedNewAccount[input] = newValue;\n\n if (errorIndex > -1) {\n updatedFormErrors.splice(errorIndex, 1);\n }\n if (input === 'OptionName') {\n updatedNewAccount.TemplateName = '';\n }\n if (input === 'OwnerEmail') {\n updatedNewAccount.OwnerEmail = newValue.trim();\n }\n\n this.setState({\n newAccount: updatedNewAccount,\n formErrors: updatedFormErrors,\n tabErrorCounts: this.tabErrorsTotal(updatedFormErrors),\n });\n }\n\n componentDidMount() {\n if (Object.keys(this.props.accountDetails).length === 0) {\n this.setState({ loading: true });\n this.props.newAccountsListGet()\n .then(({ payload }) => {\n if (!payload.data.find(account => account.PoaAccountApplicationId === this.props.match.params.id)) {\n this.props.history.push('/new-accounts');\n }\n else {\n const { accountDetails } = this.props;\n this.setState({\n newAccount: cloneDeep(accountDetails),\n loading: false,\n }, () => this.setReloadBlock(accountDetails));\n }\n })\n .catch(() => this.setState({ loading: false }));\n }\n else {\n const { accountDetails } = this.props;\n this.setState({ newAccount: cloneDeep(accountDetails) }, () => this.setReloadBlock(accountDetails));\n\n this.props.newAccountDetailsGet(this.props.match.params.id)\n .catch(() => null);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { accountDetails } = this.props;\n if (!isEqual(accountDetails, prevProps.accountDetails)) {\n this.setState({ newAccount: cloneDeep(accountDetails) }, () => this.setReloadBlock(accountDetails));\n }\n }\n\n componentWillUnmount() {\n window.onbeforeunload = () => null;\n }\n\n /* eslint-disable indent */\n render() {\n const { loading, newAccount: { Status: status }, newAccount } = this.state;\n\n return (\n
\n
\n {loading && (\n \n )}\n
\n \n \n
\n { // updates bene address now, so it can be properly updated and saved\n const updatedAccount = useOwnerAddresses ? this.copyOwnerAddresses(newAccount) : newAccount;\n this.setState({ newAccount: updatedAccount, useOwnerAddresses });\n }}\n />\n
\n\n {!loading && status && this.fabCompose()}\n\n By clicking Confirm, you certify that the information entered for your client's account application is accurate and complete. The account agreement will be sent via email to your client for review and approval.

}\n show={this.state.showApproveConfirmModal}\n onModalClose={() => this.setState({ showApproveConfirmModal: false })}\n isLoading={this.state.approveApplicationLoading}\n onConfirm={() => this.approveHandle(false)}\n />\n\n this.setState({ showConflictErrorResolveModal: false })}\n conflictErrors={this.props.conflictErrors}\n approveAccount={() => this.approveHandle(true)}\n />\n\n this.setState({ showStaticErrorResolveModal: false })}\n staticErrors={this.props.staticErrors}\n approveAccount={() => this.approveHandle(true)}\n />\n\n \n\n this.setState({ showDeleteModal: false })}\n onConfirm={this.deleteHandle}\n body={

Are you sure? The account application will be permanently deleted.

}\n isLoading={this.state.deleteApplicationLoading}\n />\n\n this.setState({ showResetModal: false })}\n onConfirm={this.resetAccountHandle}\n body={

Are you sure? Resetting will cancel any email links sent to the client and return the account application to a "Loaded" state.

}\n isLoading={this.state.resetApplicationLoading}\n />\n\n this.setState({ showDownloadedModal: false }),\n },\n ]}\n onCloseModal={() => this.setState({ showDownloadedModal: false })}\n >\n

Your account application has been downloaded. Please note that some fields of the downloaded application will need to be filled out before submission. You will be required to select the investment option desired for the account again. If you are using a customized investment template, you will need to print that out separately.

\n \n
\n );\n }\n /* eslint-enable indent */\n}\n\nexport default withRouter(connect(select, {\n newAccountDetailsGet,\n newAccountUpdate,\n notificationShow,\n newAccountsListGet,\n newAccountApprove,\n newAccountDownload,\n allNotificationsHide,\n newAccountReset,\n newAccountDelete,\n})(NewAccountReview));\n","/*\n*\n* AddSingleAccount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { withRouter, Prompt } from 'react-router-dom';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport {\n blankAccountGet,\n singleAccountCreate,\n newAccountsListGet,\n} from '../actions';\n\nimport NewAccountForm from '../NewAccountForm';\nimport {\n Breadcrumbs,\n LoadingOverlay,\n FloatingActionButton,\n notificationShow,\n} from '@frontend/common';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n blankAccount: state.newAccounts.blankAccount,\n webMessages: state.static.webMessages,\n});\n\nexport class AddSingleAccount extends React.Component {\n\n static propTypes = {\n webMessages: PropTypes.object.isRequired,\n blankAccount: PropTypes.object,\n notificationShow: PropTypes.func.isRequired,\n blankAccountGet: PropTypes.func.isRequired,\n singleAccountCreate: PropTypes.func.isRequired,\n newAccountsListGet: PropTypes.func.isRequired,\n };\n\n state = {\n useOwnerAddresses: false,\n account: {},\n loading: false,\n };\n\n createAccountHandle = () => {\n this.setState({ loading: true });\n let account = cloneDeep(this.state.account);\n\n if (this.state.useOwnerAddresses) {\n account = this.copyOwnerAddresses(account);\n }\n\n this.props.singleAccountCreate(account)\n .then(() => {\n this.props.notificationShow('New account added.', 'success');\n this.props.newAccountsListGet()\n .catch(() => null);\n this.props.history.push('/new-accounts');\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n updateAccount = (input, value) => {\n const updatedAccount = cloneDeep(this.state.account);\n\n updatedAccount[input] = value;\n if (input === 'OptionName') {\n updatedAccount.TemplateName = '';\n }\n if (input === 'OwnerEmail') {\n updatedAccount.OwnerEmail = value.trim();\n }\n\n this.setState({\n account: updatedAccount,\n });\n }\n\n copyOwnerAddresses(account) {\n const updatedAccount = cloneDeep(account);\n\n updatedAccount.BeneficiaryMailingAddress1 = updatedAccount.OwnerMailingAddress1;\n updatedAccount.BeneficiaryMailingAddress2 = updatedAccount.OwnerMailingAddress2;\n updatedAccount.BeneficiaryMailingCity = updatedAccount.OwnerMailingCity;\n updatedAccount.BeneficiaryMailingState = updatedAccount.OwnerMailingState;\n updatedAccount.BeneficiaryMailingZipCode = updatedAccount.OwnerMailingZipCode;\n updatedAccount.BeneficiaryPhysicalAddress1 = updatedAccount.OwnerPhysicalAddress1;\n updatedAccount.BeneficiaryPhysicalAddress2 = updatedAccount.OwnerPhysicalAddress2;\n updatedAccount.BeneficiaryPhysicalCity = updatedAccount.OwnerPhysicalCity;\n updatedAccount.BeneficiaryPhysicalState = updatedAccount.OwnerPhysicalState;\n updatedAccount.BeneficiaryPhysicalZipCode = updatedAccount.OwnerPhysicalZipCode;\n updatedAccount.BeneficiaryIsResident = updatedAccount.OwnerIsResident;\n\n return updatedAccount;\n }\n\n componentDidMount() {\n if (Object.keys(this.props.blankAccount).length === 0) {\n this.setState({ loading: true });\n this.props.blankAccountGet()\n .then(() => {\n const blankAccount = cloneDeep(this.props.blankAccount);\n this.setState({\n account: blankAccount,\n loading: false,\n });\n\n window.onbeforeunload = () => {\n if (!isEqual(blankAccount, this.state.account)) {\n return 'Are you sure you want to reload page? All unsaved changes will be lost.';\n }\n };\n })\n .catch(() => this.setState({ loading: false }));\n }\n else {\n const blankAccount = cloneDeep(this.props.blankAccount);\n this.setState({ account: blankAccount });\n\n window.onbeforeunload = () => {\n if (!isEqual(blankAccount, this.state.account)) {\n return 'Are you sure you want to reload page? All unsaved changes will be lost.';\n }\n };\n }\n }\n\n componentWillUnmount() {\n window.onbeforeunload = () => null;\n }\n\n /* eslint-disable indent */\n render() {\n const { blankAccount, webMessages } = this.props;\n const { account, loading } = this.state;\n\n return (\n
\n
\n
\n \n {loading\n ?\n \n :\n null\n }\n \n
\n { // updates bene address now, so it can be properly updated and saved\n const updatedAccount = useOwnerAddresses ? this.copyOwnerAddresses(account) : account;\n this.setState({ account: updatedAccount, useOwnerAddresses });\n }}\n />\n
\n\n \n\n \n
\n );\n }\n /* eslint-enable indent */\n}\n\nexport default withRouter(connect(select, {\n blankAccountGet,\n singleAccountCreate,\n newAccountsListGet,\n notificationShow,\n})(AddSingleAccount));\n","/*\n*\n* NewAccounts Component\n*\n*/\nimport React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\nimport NewAccountsList from './NewAccountsList';\nimport NewAccountReview from './NewAccountReview';\nimport AddSingleAccount from './AddSingleAccount';\nimport PageNotFound from 'components/Features/protected/PageNotFound';\n\n\nexport class NewAccounts extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nexport default NewAccounts;\n","/*\n*\n* ManageLPOA Actions\n*\n*/\nimport {\n LPOA_SETTINGS_GET,\n LPOA_SETTINGS_UPDATE,\n LPOA_ADDRESS_UPDATE,\n} from './constants';\nimport {\n GETrequest,\n PUTrequest\n} from 'utils/helpers/api_handler';\n\nexport function lpoaSettingsGet() {\n const response = GETrequest('/administration/authorizedrepresentative');\n\n return {\n type: LPOA_SETTINGS_GET,\n payload: response,\n };\n}\n\nexport function lpoaSettingsUpdate(lpoaSettingsObject) {\n const response = PUTrequest('/administration/authorizedrepresentative', lpoaSettingsObject);\n\n return {\n type: LPOA_SETTINGS_UPDATE,\n payload: response,\n };\n}\n\nexport function lpoaAddressUpdate(lpoaAddresses) {\n const payload = PUTrequest('/administration/authorizedrepresentative/address', lpoaAddresses);\n\n return {\n type: LPOA_ADDRESS_UPDATE,\n payload,\n };\n}","import { find } from 'lodash';\n\nconst permissions = [\n {\n permissionName: 'AllowView',\n description: '',\n label: 'View Account Information',\n },\n {\n permissionName: 'AllowContribute',\n description: 'A financial advisor may set up scheduled electronic contributions online or by submitting a Scheduled Electronic Contributions Authorization/Change Form 200 on behalf of client accounts.',\n label: 'Contributions',\n },\n {\n permissionName: 'AllowOptionChange',\n description: 'A financial advisor may change the investment option selected for each beneficiary on an account twice per calendar year. An investment option change can be made online or by submitting an Investment Option Change Form 405.',\n label: 'Investment Option Changes',\n },\n {\n permissionName: 'AllowTransfer',\n description: 'A financial advisor may schedule an internal transfer for the same account owner/agent online or by submitting an Internal Transfer Form 400.',\n label: 'Transfers',\n },\n {\n permissionName: 'AllowWithdraw',\n description: 'A financial advisor may initiate a withdrawal from my529 client accounts online or by submitting a Withdrawal Request Form 300. A withdrawal may be made payable only to the account owner, the beneficiary, or an eligible educational institution.',\n label: 'Withdrawals',\n },\n {\n permissionName: 'AllowViewStateTaxDocuments',\n description: 'For Utah residents/taxpayers only: Unless otherwise stated by the my529 account owner, a financial advisor may access a TC-675H form, which contains aggregated information about contributions, withdrawals, and transfers.',\n label: 'State Tax Documents',\n },\n {\n permissionName: 'AllowViewFederalTaxDocuments',\n description: 'Unless otherwise specified by the my529 account owner, a financial advisor may access the 1099-Q tax form, which contains aggregated information about withdrawals from the account.',\n label: 'Federal Tax Documents',\n },\n {\n permissionName: 'AdvisorEdit',\n description: 'Add additional users, assign/edit permissions and assign/edit access to client accounts. This feature is only available for Entity Limited Power of Attorney.',\n label: 'Create / Edit Users',\n },\n {\n permissionName: 'TemplateEdit',\n description: 'Create customized age-based and static investment option templates that may be saved and applied to client accounts.',\n label: 'Create Customized Templates',\n },\n {\n permissionName: 'DataImportSetup',\n description: 'Set up/edit link to a participating my529 data solution provider. This feature is only available for Entity Limited Power of Attorney.',\n label: 'Data Integration - Manage',\n },\n {\n permissionName: 'DataImport',\n description: 'Manually download client data that can imported into Morningstar Office or Schwab Portfolio Center. Please note that any user downloading the data files will have access, via those data files, to any my529 accounts designated on the Accounts to Export page, even if that user is not designated on the power of attorney agreement. This feature is only available for Entity Limited Power of Attorney.',\n label: 'Data Integration - Download',\n },\n {\n permissionName: 'AccountReports',\n description: 'Download reports containing detailed information on linked client accounts. This feature is only available for Entity Limited Power of Attorney.',\n label: 'Client Reports',\n },\n {\n permissionName: 'AdminReports',\n description: 'Download reports containing detailed information on authorized users for your firm. This feature is only available for Entity Limited Power of Attorney.',\n label: 'Admin and Compliance Reports',\n },\n {\n permissionName: 'BulkStatementDownload',\n description: 'A financial advisor may bulk download the most current statements for all my529 accounts authorized under the LPOA.',\n label: 'Bulk Statement Download'\n }\n];\n\nexport function permissionGet(permissionName) {\n const permission = find(permissions, { permissionName });\n return permission ? permission : {};\n}","/*\n*\n* ManageLPOA Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEqual } from 'lodash';\n\nimport {\n lpoaSettingsGet,\n lpoaSettingsUpdate,\n lpoaAddressUpdate,\n} from './actions';\nimport { permissionGet } from 'utils/config/permissions_details';\nimport * as validator from 'utils/helpers/form_validation';\n\nimport {\n Checkbox,\n InfoIcon,\n LoadingOverlay,\n ConfirmModal,\n notificationShow,\n Card,\n} from '@frontend/common';\nimport StateDropdown from 'components/Features/protected/StateDropdown';\nimport {\n Button,\n Icon,\n TextField,\n Tabs,\n Tab,\n} from '@mui/material';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n lpoaSettings: state.manageLPOA.settings,\n permissions: state.session.permissions,\n fullSettingsObject: state.manageLPOA.fullSettingsObject,\n addresses: state.manageLPOA.addresses,\n});\nconst MAILING = 'mailing';\nconst PHYSICAL = 'physical';\n\n\nexport class ManageLPOA extends React.Component {\n\n static propTypes = {\n lpoaSettings: PropTypes.object.isRequired,\n lpoaSettingsGet: PropTypes.func.isRequired,\n permissions: PropTypes.object.isRequired,\n fullSettingsObject: PropTypes.object.isRequired,\n notificationShow: PropTypes.func.isRequired,\n lpoaSettingsUpdate: PropTypes.func.isRequired,\n addresses: PropTypes.object.isRequired,\n lpoaAddressUpdate: PropTypes.func.isRequired,\n };\n\n state = {\n lpoaSettingsLoading: false,\n showUpdateLPOASettingsModal: false,\n updateLPOALoading: false,\n updateAddressLoading: false,\n lpoaSettings: {\n AllowContribute: false,\n AllowOptionChange: false,\n AllowTransfer: false,\n AllowWithdraw: false,\n AllowViewStateTaxDocuments: false,\n AllowViewFederalTaxDocuments: false,\n },\n mailing: {\n id: 0,\n street1: '',\n street2: '',\n city: '',\n state: '',\n zip: '',\n },\n physical: {\n id: 0,\n street1: '',\n street2: '',\n city: '',\n state: '',\n zip: '',\n },\n addressInputErrors: [],\n addressTabIndex: 0,\n };\n\n addressesValidate() {\n const errors = [];\n const requiredFieldError = (input, addressType) => ({\n input,\n addressType,\n message: 'Field is required.'\n });\n\n const { mailing } = this.state;\n if (!mailing.street1 && !mailing.city && !mailing.state && !mailing.zip) {\n errors.push({\n input: MAILING,\n addressType: MAILING,\n message: 'Mailing address is required.'\n });\n }\n [MAILING, PHYSICAL].forEach(addressType => {\n const { [addressType]: { street1, street2, city, state, zip } } = this.state;\n if (street1 || street2 || city || state || zip) {\n if (!street1) errors.push(requiredFieldError(`${addressType}StreetAddress1`, addressType));\n const cityError = validator.cityValidator(city);\n if (cityError) {\n errors.push({\n input: `${addressType}City`,\n addressType,\n message: cityError\n });\n }\n if (!state) errors.push(requiredFieldError(`${addressType}State`, addressType));\n if (!zip) errors.push(requiredFieldError(`${addressType}Zip`, addressType));\n }\n });\n\n this.setState({\n addressInputErrors: errors,\n });\n\n return errors.length === 0;\n }\n\n addressForApiFormat(address) {\n const { id, street1, street2, city, state, zip } = address;\n if (!street1 && !street2 && !city && !state && !zip) {\n return null;\n }\n\n return {\n AddressId: id,\n StreetAddress1: street1,\n StreetAddress2: street2,\n City: city,\n State: state,\n PostalCode: zip,\n Country: 'US',\n };\n }\n\n addressFormCompose(addressType) {\n const { [addressType]: address, updateAddressLoading, lpoaSettingsLoading } = this.state;\n const street1Name = `${addressType}StreetAddress1`;\n const street2Name = `${addressType}StreetAddress2`;\n const cityName = `${addressType}City`;\n const stateName = `${addressType}State`;\n const zipName = `${addressType}Zip`;\n\n return [\n this.addressInputUpdate(addressType, 'street1', e.target.value, street1Name)}\n disabled={lpoaSettingsLoading || updateAddressLoading}\n error={Boolean(this.errorGet(street1Name))}\n helperText={this.errorGet(street1Name)}\n fullWidth\n />,\n this.addressInputUpdate(addressType, 'street2', e.target.value, street2Name)}\n disabled={lpoaSettingsLoading || updateAddressLoading}\n error={Boolean(this.errorGet(street2Name))}\n helperText={this.errorGet(street2Name)}\n fullWidth\n />,\n this.addressInputUpdate(addressType, 'city', e.target.value, cityName)}\n disabled={lpoaSettingsLoading || updateAddressLoading}\n error={Boolean(this.errorGet(cityName))}\n helperText={this.errorGet(cityName)}\n fullWidth\n />,\n this.addressInputUpdate(addressType, 'state', value, stateName)}\n FormControlProps={{ disabled: lpoaSettingsLoading || updateAddressLoading }}\n />,\n this.addressInputUpdate(addressType, 'zip', e.target.value, zipName)}\n disabled={lpoaSettingsLoading || updateAddressLoading}\n error={Boolean(this.errorGet(zipName))}\n helperText={this.errorGet(zipName)}\n fullWidth\n />\n ];\n }\n\n addressInputUpdate(addressType, key, value, inputName) {\n const updatedErrors = [...this.state.addressInputErrors];\n const errorIndex = updatedErrors.findIndex(error => error.input === inputName);\n if (errorIndex > -1) updatedErrors.splice(errorIndex, 1);\n\n this.setState({\n [addressType]: {\n ...this.state[addressType],\n [key]: value,\n },\n addressInputErrors: updatedErrors,\n });\n }\n\n errorGet = (input) => {\n const error = this.state.addressInputErrors.find(error => error.input === input);\n return error ? error.message : '';\n }\n\n toggleCompose(key) {\n const permission = permissionGet(key);\n return (\n \n {permission.label}\n \n
\n }\n checked={this.state.lpoaSettings[key] || false}\n onChange={e => this.setState({ lpoaSettings: { ...this.state.lpoaSettings, [key]: e.target.checked } })}\n />\n );\n }\n\n updateAddressesButtonDisable = () => {\n const { addresses: { mailing, physical } } = this.props;\n const { mailing: stateMailing, physical: statePhysical } = this.state;\n return (\n Object.keys(mailing).every(addressInput => stateMailing[addressInput] === mailing[addressInput])\n && Object.keys(physical).every(addressInput => statePhysical[addressInput] === physical[addressInput])\n );\n }\n\n updatePermissionsButtonDisable = () => {\n const { lpoaSettings } = this.props;\n const { lpoaSettings: stateLPOASettings } = this.state;\n return Object.keys(lpoaSettings).every(permission => stateLPOASettings[permission] === lpoaSettings[permission]);\n }\n\n updateAddressHandle = () => {\n if (this.addressesValidate()) {\n const data = {\n MailingAddress: this.addressForApiFormat(this.state.mailing),\n PhysicalAddress: this.addressForApiFormat(this.state.physical),\n };\n\n this.setState({ updateAddressLoading: true });\n this.props.lpoaAddressUpdate(data)\n .then(() => this.props.notificationShow('Addresses updated.', 'success'))\n .catch(() => null)\n .finally(() => this.setState({ updateAddressLoading: false }));\n }\n }\n\n updatePermissionsHandle = () => {\n this.setState({ updateLPOALoading: true });\n const updatedFullSettingsObject = {\n ...this.props.fullSettingsObject,\n ...this.state.lpoaSettings,\n };\n\n this.props.lpoaSettingsUpdate(updatedFullSettingsObject)\n .then(() => {\n this.props.notificationShow('LPOA settings updated.', 'success');\n this.setState({\n updateLPOALoading: false,\n showUpdateLPOASettingsModal: false,\n });\n })\n .catch(() => this.setState({ updateLPOALoading: false }));\n }\n\n componentDidMount() {\n if (\n Object.keys(this.props.lpoaSettings).length === 0\n || Object.keys(this.props.addresses.mailing).length === 0\n || Object.keys(this.props.addresses.physical).length === 0\n ) {\n this.setState({ lpoaSettingsLoading: true });\n this.props.lpoaSettingsGet()\n .then(() => {\n const { lpoaSettings, addresses } = this.props;\n this.setState({\n lpoaSettingsLoading: false,\n lpoaSettings: { ...lpoaSettings },\n mailing: addresses.mailing,\n physical: addresses.physical,\n });\n })\n .catch(() => this.setState({ lpoaSettingsLoading: false }));\n }\n else {\n const { lpoaSettings, addresses } = this.props;\n this.setState({\n lpoaSettings: { ...lpoaSettings },\n mailing: addresses.mailing,\n physical: addresses.physical,\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(this.props.lpoaSettings, prevProps.lpoaSettings)) {\n this.setState({ lpoaSettings: { ...this.props.lpoaSettings } });\n }\n if (!isEqual(this.props.addresses, prevProps.addresses)) {\n const { addresses } = this.props;\n this.setState({\n mailing: addresses.mailing,\n physical: addresses.physical,\n });\n }\n }\n\n render() {\n const { lpoaSettingsLoading, addressTabIndex } = this.state;\n const { permissions } = this.props;\n const errorStyles = {\n backgroundColor: 'rgba(255, 0, 0, 0.25)',\n color: 'var(--error)',\n };\n\n /* eslint-disable indent */\n return (\n
\n {permissions.editLPOASettings && (\n \n \n
\n
\n
\n
Level 1
\n
\n
\n done\n {permissionGet('AllowView').label}\n
\n
\n
\n
Level 2
\n
\n {this.toggleCompose('AllowContribute')}\n {this.toggleCompose('AllowOptionChange')}\n {this.toggleCompose('AllowTransfer')}\n
\n
\n
Level 3
\n
\n {this.toggleCompose('AllowWithdraw')}\n
\n
\n
Tax Documents
\n
\n {this.toggleCompose('AllowViewStateTaxDocuments')}\n {this.toggleCompose('AllowViewFederalTaxDocuments')}\n
\n
\n
\n this.setState({ showUpdateLPOASettingsModal: true })}\n >\n Update\n \n
\n
\n \n \n )}\n {permissions.editLPOAContactInfo && (\n \n \n
\n
\n this.setState({ addressTabIndex: value })}\n variant='fullWidth'\n >\n error.addressType === MAILING).length > 0 ? errorStyles : {}}\n />\n error.addressType === PHYSICAL).length > 0 ? errorStyles : {}}\n />\n \n {addressTabIndex === 0 && [\n this.errorGet(MAILING) && (
{this.errorGet(MAILING)}
),\n
{this.addressFormCompose(MAILING)}
\n ]}\n {addressTabIndex === 1 && this.addressFormCompose(PHYSICAL)}\n
\n
\n \n \n Update\n \n \n
\n
\n \n \n )}\n\n this.setState({ showUpdateLPOASettingsModal: false })}\n onConfirm={this.updatePermissionsHandle}\n isLoading={this.state.updateLPOALoading}\n />\n
\n );\n /* eslint-enable indent */\n }\n}\n\nexport default connect(select, {\n lpoaSettingsGet,\n lpoaSettingsUpdate,\n notificationShow,\n lpoaAddressUpdate,\n})(ManageLPOA);\n","/*\n*\n* ManageUsers Actions\n*\n*/\nimport {\n USERS_LIST_GET,\n USER_DETAILS_GET,\n USER_UPDATE,\n POA_ACCOUNTS_GET,\n USER_CREATE,\n PRIMARY_CONTACTS_ASSIGN,\n DEACTIVATE_USER,\n REACTIVATE_USER,\n ACTIVATION_EMAIL_RESEND,\n} from './constants';\nimport {\n GETrequest,\n PUTrequest,\n POSTrequest,\n} from 'utils/helpers/api_handler';\n\nexport function usersListGet() {\n const response = GETrequest('/administration/authorizedrepresentative/advisors');\n\n return {\n type: USERS_LIST_GET,\n payload: response,\n };\n}\n\nexport function userDetailsGet(id) {\n const response = GETrequest(`/administration/financialadvisor/${id}`);\n\n return {\n type: USER_DETAILS_GET,\n payload: response,\n };\n}\n\nexport function userUpdate(id, userObject) {\n const response = PUTrequest(`/administration/financialadvisor/${id}`, userObject);\n\n return {\n type: USER_UPDATE,\n payload: response,\n };\n}\n\nexport function poaAccountsGet() {\n const response = GETrequest('/administration/authorizedrepresentative/powerofattorney');\n\n return {\n type: POA_ACCOUNTS_GET,\n payload: response,\n };\n}\n\nexport function userCreate(user) {\n const response = POSTrequest('/administration/financialadvisor', user);\n\n return {\n type: USER_CREATE,\n payload: response,\n };\n}\n\nexport function primaryContactsAssign(advisorId, poaIds) {\n const payload = PUTrequest(`/administration/financialadvisor/${advisorId}/primarycontacts`, poaIds);\n\n return {\n type: PRIMARY_CONTACTS_ASSIGN,\n payload,\n };\n}\n\nexport function deactivateUser(advisorId) {\n const payload = PUTrequest(`/administration/financialadvisor/${advisorId}/deactivate`);\n\n return {\n type: DEACTIVATE_USER,\n payload,\n meta: { advisorId },\n };\n}\n\nexport function reactivateUser(advisorId) {\n const payload = PUTrequest(`/administration/financialadvisor/${advisorId}/reactivate`);\n\n return {\n type: REACTIVATE_USER,\n payload,\n meta: { advisorId },\n };\n}\n\nexport function activationEmailResend(advisorId) {\n const payload = POSTrequest(`/administration/financialadvisor/resend/${advisorId}`);\n\n return {\n type: ACTIVATION_EMAIL_RESEND,\n payload,\n };\n}\n","/*\n*\n* UsersList Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport dayjs from 'dayjs';\nimport { partition } from 'lodash';\nimport {\n Tabs,\n Tab,\n} from '@mui/material';\nimport {\n properCase,\n FloatingActionButton,\n notificationShow,\n ConfirmModal,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport {\n usersListGet,\n deactivateUser,\n reactivateUser,\n activationEmailResend,\n} from '../actions';\nimport { getAccounts } from 'components/Features/protected/Accounts/actions';\n\nimport events from 'utils/ga';\n\nexport const select = (state) => ({\n users: Object.values(state.manageUsers.users).map(user => ({\n id: user.advisorId,\n name: `${properCase(user.FirstName)} ${properCase(user.LastName)}`,\n email: user.EmailAddress,\n status: user.status,\n lastLogin: user.lastLogin\n ? dayjs(user.lastLogin).format('MM/DD/YYYY h:mm A')\n : 'Never',\n deactivationDate: user.DeactivationDate\n ? dayjs(user.DeactivationDate).format('MM/DD/YYYY h:mm A')\n : 'Never',\n activationDate: user.ActivationDate\n ? dayjs(user.ActivationDate).format('MM/DD/YYYY h:mm A')\n : 'Never',\n })),\n session: state.session,\n});\n\nexport class UsersList extends React.Component {\n\n static propTypes = {\n users: PropTypes.array.isRequired,\n usersListGet: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n deactivateUser: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n activationEmailResend: PropTypes.func.isRequired,\n reactivateUser: PropTypes.func.isRequired,\n session: PropTypes.object.isRequired,\n getAccounts: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n selectedUserId: null,\n selectedUserName: '',\n showDeactivateConfirmationModal: false,\n deactivateUserLoading: false,\n showResendEmailModal: false,\n resendEmailLoading: false,\n activeTab: 'active',\n showReactivateConfirmationModal: false,\n reactivateUserLoading: false,\n };\n\n reactivateUserHandler = () => {\n this.setState({ reactivateUserLoading: true });\n this.props.reactivateUser(this.state.selectedUserId)\n .then(() => {\n this.props.notificationShow('User reactivated.', 'success');\n const reactivatedUserId = this.state.selectedUserId;\n this.setState({\n reactivateUserLoading: false,\n showReactivateConfirmationModal: false,\n selectedUserId: null,\n }, () => {\n this.setState({ selectedUserName: '' });\n // redirect to the just reactivated user details\n this.props.history.push(`/manage-users/${reactivatedUserId}`);\n });\n })\n .catch(() => this.setState({ reactivateUserLoading: false }));\n };\n\n deactivateUserHandler = () => {\n this.setState({ deactivateUserLoading: true });\n this.props.deactivateUser(this.state.selectedUserId)\n .then(() => {\n this.props.notificationShow('User deactivated.', 'success');\n this.props.getAccounts()\n .catch(() => null);\n this.setState({\n deactivateUserLoading: false,\n showDeactivateConfirmationModal: false,\n selectedUserId: null,\n }, () => {\n this.setState({ selectedUserName: '' });\n });\n })\n .catch(() => this.setState({ deactivateUserLoading: false }));\n };\n\n resendActivationEmailHandle = (advisorId) => {\n this.setState({ resendEmailLoading: true });\n this.props.activationEmailResend(advisorId)\n .then(() => {\n this.props.notificationShow('Activation email sent.', 'success');\n this.setState({\n selectedUserId: null,\n showResendEmailModal: false,\n }, () => {\n this.setState({\n selectedUserName: '',\n resendEmailLoading: false,\n });\n });\n })\n .catch(() => this.setState({ resendEmailLoading: false }));\n };\n\n componentDidMount() {\n if (this.props.users.length === 0) {\n this.setState({ loading: true });\n this.props.usersListGet()\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n const {\n selectedUserName,\n selectedUserId,\n showDeactivateConfirmationModal,\n deactivateUserLoading,\n loading,\n activeTab,\n showReactivateConfirmationModal,\n reactivateUserLoading,\n } = this.state;\n const { users, session } = this.props;\n const usersPartition = partition(users, user => user.status !== 'Deactivated'); // [[activeUsers], [deactivatedUsers]]\n\n return (\n
\n
Master Administrator: {session.claims.MasterAdminName}
\n this.setState({ activeTab: value })}\n variant='fullWidth'\n >\n \n \n \n {/* There are no CSS styles for UsersList_table */}\n
\n {activeTab === 'active' && (\n this.props.history.push(`/manage-users/${row.id}`),\n },\n {\n displayName: 'Assign Primary Contact',\n type: 'menu',\n onSelect: row => this.props.history.push(`/manage-users/${row.id}/primary-contact`),\n },\n {\n displayName: 'Resend Activation Email',\n type: 'menu',\n onSelect: row => this.setState({\n showResendEmailModal: true,\n selectedUserName: row.name,\n selectedUserId: row.id,\n }),\n showIf: row => row.status === 'Unactivated',\n },\n {\n displayName: 'Deactivate',\n type: 'menu',\n onSelect: row => this.setState({\n selectedUserName: row.name,\n selectedUserId: row.id,\n showDeactivateConfirmationModal: true,\n }),\n showIf: row => row.id !== parseInt(session.claims.FinancialAdvisorId),\n },\n ]}\n >\n events.tableSearchAccessed('Users List', window.location.pathname)}\n />\n \n \n \n \n \n \n )}\n {activeTab === 'deactivated' && (\n this.props.history.push(`/manage-users/${row.id}`),\n },\n {\n displayName: 'Reactivate',\n type: 'menu',\n onSelect: row => this.setState({\n selectedUserName: row.name,\n selectedUserId: row.id,\n showReactivateConfirmationModal: true,\n }),\n },\n ]}\n >\n events.tableSearchAccessed('Users List', window.location.pathname)}\n />\n \n \n \n \n \n \n )}\n
\n\n this.setState({ showDeactivateConfirmationModal: false })}\n onConfirm={() => this.deactivateUserHandler()}\n isLoading={deactivateUserLoading}\n />\n\n this.setState({ showReactivateConfirmationModal: false })}\n onConfirm={() => this.reactivateUserHandler()}\n isLoading={reactivateUserLoading}\n />\n\n this.setState({ showResendEmailModal: false, })}\n onConfirm={() => this.resendActivationEmailHandle(selectedUserId)}\n isLoading={this.state.resendEmailLoading}\n />\n\n this.props.history.push('/manage-users/new')}\n />\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n usersListGet,\n deactivateUser,\n notificationShow,\n activationEmailResend,\n reactivateUser,\n getAccounts,\n})(UsersList));\n","/*\n*\n* AssignAccounts Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { filter, cloneDeep, isEqual } from 'lodash';\n\nimport {\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport {\n RadioGroup,\n Radio,\n FormControlLabel,\n} from '@mui/material';\n\nimport events from 'utils/ga';\n\nimport styles from './styles.module.css';\n\n\nexport class AssignAccounts extends React.Component {\n\n static propTypes = {\n accounts: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n loading: PropTypes.bool,\n allAccountsSelected: PropTypes.bool,\n disableInputs: PropTypes.bool,\n };\n\n static defaultProps = {\n loading: false,\n };\n\n state = {\n accounts: [],\n accountAssignment: this.accountAssignmentGet(this.props.accounts),\n };\n\n accountAssignmentGet(accounts) {\n const selectedAccounts = filter(accounts, data => data.selected);\n if (!this.props.allAccountsSelected && selectedAccounts.length === 0) {\n return 'none';\n }\n else if (selectedAccounts.length !== accounts.length) {\n return 'some';\n }\n\n return 'all';\n }\n\n onRadioButtonToggle(selectedButton) {\n const updatedAccounts = cloneDeep(this.state.accounts);\n const poaIds = [];\n if (selectedButton === 'all') {\n updatedAccounts.forEach(account => {\n account.selected = true;\n poaIds.push(account.id);\n });\n }\n else if (selectedButton === 'some') {\n filter(updatedAccounts, data => data.selected)\n .forEach(account => {\n poaIds.push(account.id);\n });\n }\n\n this.setState({\n accountAssignment: selectedButton,\n }, () => {\n this.props.onChange(updatedAccounts, poaIds, selectedButton);\n });\n }\n\n componentDidMount() {\n this.setState({\n accounts: cloneDeep(this.props.accounts),\n accountAssignment: this.accountAssignmentGet(this.props.accounts),\n });\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(this.props, prevProps)) {\n if (this.state.accountAssignment !== 'some') {\n this.setState({\n accounts: cloneDeep(this.props.accounts),\n accountAssignment: this.accountAssignmentGet(this.props.accounts),\n });\n }\n else {\n this.setState({\n accounts: cloneDeep(this.props.accounts),\n });\n }\n }\n }\n\n render() {\n const { loading, disableInputs } = this.props;\n\n return (\n
\n
\n this.onRadioButtonToggle(e.target.value)}\n >\n \n }\n />\n \n }\n />\n \n
\n
{filter(this.state.accounts, data => data.selected).length} of {this.state.accounts.length} accounts selected.
\n
\n {\n const poaIds = rows.filter(row => row.selected).map(row => row.id);\n const selectedAccounts = this.state.accounts.filter(row => row.selected);\n\n if (selectedAccounts.length !== poaIds.length) { // check for change in selections\n const accountAssignment = this.accountAssignmentGet(rows);\n this.setState({\n accountAssignment,\n }, () => this.props.onChange(rows, poaIds, accountAssignment));\n }\n }}\n columns={[\n {\n key: 'ownerName',\n title: 'Account Owner/Agent',\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'beneficiaryName',\n title: 'Beneficiary',\n type: 'string',\n },\n ]}\n >\n events.tableSearchAccessed('Assigned Accounts', window.location.pathname)}\n />\n \n \n \n \n \n \n
\n
\n );\n }\n}\n\nexport default AssignAccounts;\n","/*\n*\n* NewUser Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport {\n cloneDeep,\n find,\n findIndex,\n} from 'lodash';\n\nimport { lpoaSettingsGet } from 'components/Features/protected/ManageLPOA/actions';\nimport { poaAccountsGet, userCreate, usersListGet } from '../actions';\nimport { permissionGet } from 'utils/config/permissions_details';\n\nimport {\n Card,\n sizify,\n emailValidate,\n Breadcrumbs,\n InfoIcon,\n Checkbox,\n LoadingOverlay,\n notificationShow,\n Modal,\n PhoneNumberInput,\n} from '@frontend/common';\nimport AssignAccounts from '../AssignAccounts';\n\nimport {\n Button,\n TextField,\n Step,\n Stepper,\n StepButton,\n} from '@mui/material';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n lpoaSettings: state.manageLPOA.settings,\n poaAccounts: state.manageUsers.poaAccounts,\n newPin: state.manageUsers.createdUserPin,\n});\n\n\nexport class NewUser extends React.Component {\n\n static propTypes = {\n size: PropTypes.object.isRequired,\n lpoaSettings: PropTypes.object.isRequired,\n lpoaSettingsGet: PropTypes.func.isRequired,\n poaAccounts: PropTypes.array.isRequired,\n poaAccountsGet: PropTypes.func.isRequired,\n userCreate: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n usersListGet: PropTypes.func.isRequired,\n newPin: PropTypes.string,\n };\n\n state = {\n activeStep: 0,\n user: {\n FirstName: '',\n LastName: '',\n Email: '',\n PhoneNumber1: '',\n PhoneNumber2: '',\n AllowContribute: false,\n AllowOptionChange: false,\n AllowTransfer: false,\n AllowWithdraw: false,\n AllowViewStateTaxDocuments: false,\n AllowViewFederalTaxDocuments: false,\n AdvisorEdit: false,\n TemplateEdit: false,\n DataImportSetup: false,\n DataImport: false,\n AccountReports: false,\n AdminReports: false,\n POAIds: [],\n ViewAllAccounts: true,\n },\n contactInputErrors: [],\n accountAssignment: 'all',\n accounts: [],\n loading: false,\n showPINModal: false,\n pin: '',\n };\n\n accountAssignmentChange = (updatedAccounts, selectedIds, selectedButton) => {\n if (this.state.user.ViewAllAccounts !== (selectedButton === 'all')) {\n this.userUpdate('ViewAllAccounts', selectedButton === 'all');\n }\n this.setState({\n accounts: updatedAccounts,\n }, () => {\n this.userUpdate('POAIds', selectedIds);\n });\n }\n\n accountsFormat(accounts) {\n return accounts.map(account => ({\n ...account,\n selected: true,\n }));\n }\n\n buttonsCompose() {\n switch (this.state.activeStep) {\n case 0: {\n return (\n
\n \n Next\n \n
\n );\n }\n case 1: {\n return (\n
\n this.setState({ activeStep: 0 })}\n >\n Back\n \n this.setState({ activeStep: 2 })}\n >\n Next\n \n
\n );\n }\n case 2: {\n const { loading } = this.state;\n return (\n
\n this.setState({ activeStep: 1 })}\n disabled={loading}\n >\n Back\n \n \n \n Finish\n \n \n
\n );\n }\n default: break;\n }\n }\n\n contactInfoValidate = (e) => {\n e.preventDefault();\n const errors = [];\n if (!this.state.user.FirstName) {\n errors.push({\n input: 'FirstName',\n message: 'First Name is required.'\n });\n }\n\n if (!this.state.user.LastName) {\n errors.push({\n input: 'LastName',\n message: 'Last Name is required.'\n });\n }\n\n if (!this.state.user.EmailAddress) {\n errors.push({\n input: 'EmailAddress',\n message: 'Email is required.'\n });\n }\n else if (this.state.user.EmailAddress && !emailValidate(this.state.user.EmailAddress)) {\n errors.push({\n input: 'EmailAddress',\n message: 'Invalid email address.'\n });\n }\n\n if (errors.length > 0) {\n this.setState({\n contactInputErrors: errors,\n });\n }\n else {\n this.setState({\n contactInputErrors: [],\n activeStep: 1,\n });\n }\n }\n\n errorGet(input) {\n const error = find(this.state.contactInputErrors, { input });\n return error ? error.message : '';\n }\n\n lpoaSettingsMatch = (user) => {\n return {\n ...user,\n ...this.props.lpoaSettings,\n };\n }\n\n permissionsToggleCompose(key) {\n const toggleDetails = permissionGet(key);\n return (\n
\n {toggleDetails.label}
}\n checked={this.state.user[key] || false}\n onChange={e => this.userUpdate(key, e.target.checked)}\n />\n \n );\n }\n\n stepCompose() {\n const { accounts, activeStep, loading, user, } = this.state;\n\n switch (activeStep) {\n case 0: {\n return (\n \n this.userUpdate('FirstName', e.target.value)}\n error={Boolean(this.errorGet('FirstName'))}\n helperText={this.errorGet('FirstName')}\n fullWidth\n autoFocus\n />\n this.userUpdate('LastName', e.target.value)}\n error={Boolean(this.errorGet('LastName'))}\n helperText={this.errorGet('LastName')}\n fullWidth\n />\n this.userUpdate('EmailAddress', e.target.value)}\n error={Boolean(this.errorGet('EmailAddress'))}\n helperText={this.errorGet('EmailAddress')}\n fullWidth\n />\n this.userUpdate('PhoneNumber1', value)}\n value={user.PhoneNumber1 || ''}\n fullWidth\n />\n this.userUpdate('PhoneNumber2', value)}\n value={user.PhoneNumber2 || ''}\n fullWidth\n />\n \n
\n \n ]}\n {(!loading && poas.length === 0) && (\n
\n The user currently has no accounts selected and therefore cannot be set as a Primary Contact. You can assign accounts on the
\n user's details page.\n
\n )}\n \n \n );\n }\n}\n\nexport default connect(select, {\n userDetailsGet,\n primaryContactsAssign,\n notificationShow,\n getAccounts,\n usersListGet\n})(PrimaryContact);\n","/*\n*\n* ManageUsers Component\n*\n*/\nimport React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\nimport UsersList from './UsersList';\nimport NewUser from './NewUser';\nimport UserDetails from './UserDetails';\nimport PrimaryContact from './PrimaryContact';\nimport PageNotFound from 'components/Features/protected/PageNotFound';\n\n\nexport class ManageUsers extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n \n \n );\n }\n}\n\nexport default ManageUsers;\n","/*\n*\n* PersistentDrawer Component\n*\n*/\nimport React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Divider,\n Icon,\n Drawer,\n IconButton,\n List,\n ListItem,\n} from '@mui/material';\n\nimport {\n sizify,\n} from '@frontend/common';\n\nimport styles from './styles.module.css';\n\nexport class LeftMenuItem extends React.Component {\n static displayName = 'LeftMenuItem';\n render() {\n return this.props.children;\n }\n}\n\nexport class LeftMenuItems extends React.Component {\n static displayName = 'LeftMenuItems';\n render() {\n return this.props.children;\n }\n}\n\nexport class Row extends React.Component {\n static displayName = 'Row';\n render() {\n return this.props.children;\n }\n}\n\nexport class RightDrawer extends React.Component {\n static displayName = 'RightDrawer';\n render() {\n return this.props.children;\n }\n}\n\nexport class PersistentDrawers extends React.Component {\n\n static propTypes = {\n drawerWidth: PropTypes.string.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number.isRequired,\n }).isRequired,\n marginTop: PropTypes.string,\n };\n\n state = {\n rowsOpen: [],\n };\n\n handleDrawerToggle = (drawerIndex) => {\n // first close all drawers\n const rowsOpen = this.state.rowsOpen.map(() => false);\n rowsOpen[drawerIndex] = !this.state.rowsOpen[drawerIndex];\n this.setState({ rowsOpen });\n };\n\n isDrawerOpen = () => this.state.rowsOpen.reduce((rowOpen, isOneOpen) => rowOpen || isOneOpen, false);\n\n componentDidMount() {\n const rowsOpen = [];\n this.props.children\n .filter((child) => child)\n .filter((child) => child.type.displayName === 'Row')\n .map(() => rowsOpen.push(false));\n this.setState({ rowsOpen });\n }\n\n render() {\n const { size, drawerWidth, children, marginTop } = this.props;\n\n let isDrawerFullWidth = false;\n let drawerWidthCalculated = drawerWidth;\n if (size.windowWidth < 650) {\n drawerWidthCalculated = '100%';\n isDrawerFullWidth = true;\n }\n const mainMarginRight = this.isDrawerOpen() ? drawerWidthCalculated : '0px';\n\n const rows = children\n .filter((child) => child)\n .filter((child) => child.type.displayName === 'Row');\n\n const leftMenuItems = rows\n .map((row) => row.props.children\n .filter((child) => child)\n .find(child => child.type.displayName === 'LeftMenuItems'));\n\n const drawers = rows\n .map((row) => row.props.children\n .filter((child) => child)\n .find((child) => child.type.displayName === 'RightDrawer'));\n\n return (\n
\n \n \n {\n leftMenuItems.map((items, itemsIndex) => {\n return (\n \n this.handleDrawerToggle(itemsIndex)}\n className={styles.row}\n disableGutters={isDrawerFullWidth}\n >\n
\n {items.props.children\n .filter(child => child.type.displayName === 'LeftMenuItem')\n .map((leftMenuItem, itemIndex) => {\n const firstColStyle = itemIndex === 0 ? styles.title : '';\n return (\n
\n {leftMenuItem.props.children}\n
\n );\n })\n }\n
\n \n {
\n {this.state.rowsOpen[itemsIndex] ? 'keyboard_arrow_left' : 'keyboard_arrow_right'}\n
}\n \n \n
\n );\n })\n }\n
\n \n
\n
\n {\n drawers.map((rightDrawer, index) => (\n \n \n
\n {isDrawerFullWidth &&\n
\n this.handleDrawerToggle(index)}\n >\n keyboard_arrow_left\n \n
\n }\n
\n {rightDrawer.props.title}\n
\n
\n this.handleDrawerToggle(index)}\n >\n close\n \n
\n
\n \n
\n {rightDrawer}\n
\n \n
\n ))}\n
\n
\n
\n );\n }\n}\n\nexport default sizify(PersistentDrawers);\n","/*\n*\n* Username Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n TextField,\n Button,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow,\n PasswordInput,\n} from '@frontend/common';\n\nimport { usernameChange } from 'components/AppRoot/Navigation/actions';\n\nimport styles from '../styles.module.css';\n\nconst select = (state) => ({\n claims: state.session.claims,\n});\n\nexport class Username extends React.Component {\n static propTypes = {\n notificationShow: PropTypes.func.isRequired, \n usernameChange: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n };\n\n state = {\n username: '',\n usernameError: '',\n usernamePassword: '',\n usernamePasswordError: '',\n loading: false,\n }\n\n disableUpdateButton = () => {\n const { username } = this.state;\n\n const err_field_required = 'Field is required.';\n\n let usernameError = '';\n if (!username) {\n usernameError = err_field_required;\n }\n\n return Boolean(usernameError);\n }\n\n usernameInputsValidate = () => {\n const { username, usernamePassword } = this.state;\n const { claims: { Login } } = this.props;\n \n let usernameError = '';\n let usernamePasswordError = '';\n\n const err_field_required = 'Field is required.';\n const err_different_username = 'Username is same as current';\n const err_username_with_numbers = 'Username cannot have more than 3 consecutive digits.';\n const err_username_length = 'Field cannot exceed 40 characters.';\n const err_username_spaces = 'Field cannot contain leading or trailing spaces.';\n const err_username_min_length = 'Username must be at least 6 characters.'; \n\n if (username.match(/\\d\\d\\d\\d/)) {\n usernameError = err_username_with_numbers;\n }\n\n if (username.length > 40) {\n usernameError = err_username_length;\n }\n\n if (username.match(/^\\s+|\\s+$/)) {\n usernameError = err_username_spaces;\n }\n\n if (username.length > 0 && username.length < 6) {\n usernameError = err_username_min_length;\n }\n\n if (username.toLowerCase() === Login.toLowerCase()) {\n usernameError = err_different_username;\n }\n\n if (!usernamePassword) {\n usernamePasswordError = err_field_required;\n }\n\n this.setState({ usernameError, usernamePasswordError });\n const hasError = Boolean(usernameError) || Boolean(usernamePasswordError);\n\n return !hasError;\n }\n\n onUsernameChange = (e) => {\n // also reset username errors\n this.setState({\n username: e.target.value,\n usernameError: '',\n });\n }\n\n onUsernamePasswordChange = (e) => {\n // also reset password errors\n this.setState({\n usernamePassword: e.target.value,\n usernamePasswordError: '',\n });\n }\n\n onSubmitUsername = (e) => {\n e.preventDefault();\n const { username, usernamePassword } = this.state;\n // if validation doesn't return any errors proceed with api call\n if (this.usernameInputsValidate()) {\n this.setState({ loading: true });\n this.props.usernameChange(username, usernamePassword)\n .then(() => {\n this.props.notificationShow('Username updated.', 'success');\n this.setState({ loading: false, usernamePassword: '' });\n })\n .catch(() => {\n this.setState({ loading: false });\n });\n }\n }\n\n render() {\n const { claims: { Login } } = this.props;\n const { username, usernameError, usernamePassword, usernamePasswordError, loading } = this.state;\n\n return (\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n Change Username\n \n \n
\n
\n );\n }\n}\n\nexport default connect(select, { \n usernameChange,\n notificationShow\n})(Username);\n","/*\n*\n* MyInfo Actions\n*\n*/\nimport { POSTrequest, GETrequest, PUTrequest } from 'utils/helpers/api_handler';\nimport {\n PASSWORD_CHANGE,\n ADVISOR_GET,\n CONTACT_INFO_UPDATE,\n} from './constants';\n\nexport function passwordChange(oldpassword, newpassword1, newpassword2) {\n const payload = POSTrequest('/authentication/changepassword', {\n oldpassword,\n newpassword1,\n newpassword2\n });\n\n return {\n type: PASSWORD_CHANGE,\n payload,\n };\n}\n\nexport function advisorGet() {\n const payload = GETrequest('/administration/financialadvisor/self');\n return {\n type: ADVISOR_GET,\n payload,\n };\n}\n\nexport function contactInfoUpdate(advisor) {\n const payload = PUTrequest('/administration/financialadvisor/self/update', advisor);\n return {\n type: CONTACT_INFO_UPDATE,\n payload,\n };\n}","/*\n*\n* Password Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { passwordChange } from '../actions';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n PasswordRequirements,\n LoadingOverlay,\n notificationShow,\n PasswordInput,\n} from '@frontend/common';\n\nimport styles from '../styles.module.css';\n\nconst select = (state) => ({\n passwordRequirements: state.static.passwordRequirements,\n});\n\nexport class Password extends React.Component {\n static propTypes = {\n passwordRequirements: PropTypes.array.isRequired,\n passwordChange: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n };\n\n state = {\n currentPassword: '',\n newPassword: '',\n newPasswordConfirm: '',\n currentPasswordError: '',\n newPasswordError: '',\n newPasswordConfirmError: '',\n passwordIsValid: false,\n loading: false,\n }\n\n onInputChange = (e, keyName) => {\n // clear also error\n this.setState({\n [keyName]: e.target.value,\n [`${keyName}Error`]: ''\n });\n }\n\n disableSubmitButton = () => {\n const { currentPassword, newPassword } = this.state;\n\n const err_field_required = 'Field is required.';\n\n let currentPasswordError = '';\n let newPasswordError = '';\n\n if (!currentPassword) {\n currentPasswordError = err_field_required;\n }\n\n if (!newPassword) {\n newPasswordError = err_field_required;\n }\n\n return Boolean(currentPasswordError) || Boolean(newPasswordError);\n }\n\n passwordInputsValidate() {\n const { newPassword, newPasswordConfirm, passwordIsValid } = this.state;\n\n const err_field_required = 'Field is required.';\n const err_fails_requirements = 'Password does not meet criteria.';\n const err_confirmed_not_match = 'Confirmed password does not match above password.';\n\n const currentPasswordError = '';\n let newPasswordError = '';\n let newPasswordConfirmError = '';\n\n if (!newPasswordConfirm) {\n newPasswordConfirmError = err_field_required;\n }\n\n if (newPassword && !passwordIsValid) {\n newPasswordError = err_fails_requirements;\n }\n\n if (newPassword && newPasswordConfirm && newPassword !== newPasswordConfirm) {\n newPasswordConfirmError = err_confirmed_not_match;\n }\n\n this.setState({ currentPasswordError, newPasswordError, newPasswordConfirmError });\n const hasError = Boolean(currentPasswordError) || Boolean(newPasswordError) || Boolean(newPasswordConfirmError);\n\n return !hasError;\n }\n\n onSubmitPassword = (e) => {\n e.preventDefault();\n if (this.passwordInputsValidate()) {\n this.setState({ loading: true });\n this.props.passwordChange(this.state.currentPassword, this.state.newPassword, this.state.newPasswordConfirm)\n .then(() => {\n this.props.notificationShow('Password updated.', 'success');\n this.setState({\n currentPassword: '',\n newPassword: '',\n newPasswordConfirm: '',\n });\n })\n .catch((response) => {\n response.payload.data.forEach(error => {\n if (error.Field === 'OldPassword') {\n this.setState({ currentPasswordError: error.Message });\n }\n });\n })\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n const {\n loading, currentPassword, newPassword, newPasswordConfirm,\n currentPasswordError, newPasswordError, newPasswordConfirmError,\n } = this.state;\n\n return (\n
\n
\n this.onInputChange(e, 'currentPassword')}\n errorText={currentPasswordError}\n disabled={loading}\n fullWidth\n variant='standard'\n />\n
\n
\n this.onInputChange(e, 'newPassword')}\n errorText={newPasswordError}\n disabled={loading}\n fullWidth\n variant='standard'\n />\n
\n
\n this.onInputChange(e, 'newPasswordConfirm')}\n errorText={newPasswordConfirmError}\n disabled={loading}\n fullWidth\n variant='standard'\n\n />\n
\n
\n this.setState({ passwordIsValid })}\n />\n
\n
\n \n \n Change Password\n \n \n
\n
\n );\n }\n}\n\nexport default connect(select, {\n passwordChange,\n notificationShow\n})(Password);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\nimport {\n InfoIcon,\n LoadingOverlay,\n PhoneNumberInput\n} from '@frontend/common';\n\nimport { REGISTER_METHODS } from '../../constants.js';\n\nimport styles from '../../styles.module.css';\n\nexport class RegisterPhoneAndMethod extends Component {\n\n static propTypes = {\n onSubmit: PropTypes.func.isRequired,\n defaultMethod: PropTypes.string.isRequired,\n defaultPhoneNumber: PropTypes.string.isRequired,\n isLoading: PropTypes.bool.isRequired,\n };\n\n state = {\n value: {\n phoneNumber: this.props.defaultPhoneNumber,\n method: this.props.defaultMethod,\n },\n errors: {\n phoneNumber: '',\n method: '',\n },\n };\n\n onSubmit = () => {\n const { value } = this.state;\n\n // error checking here\n const errors = {\n phoneNumber: '',\n method: '',\n };\n\n if (value.method === REGISTER_METHODS.SMS || value.method === REGISTER_METHODS.CALL) {\n if (value.phoneNumber === '') {\n errors.phoneNumber = 'Phone is required.';\n }\n else if (value.phoneNumber.length < 10) {\n errors.phoneNumber = 'Phone number needs to be 10 digits.';\n }\n }\n\n if (value.method === '') {\n errors.method = '2FA method is required.';\n }\n\n this.setState({ errors });\n const hasError = Object.values(errors).some(err => err !== '');\n this.props.onSubmit(value, hasError); // for parent\n }\n\n onPhoneChange = (phoneNumber) => {\n const value = { ...this.state.value, phoneNumber: phoneNumber.replace(/\\D/g, '') };\n const errors = { ...this.state.errors, phoneNumber: '' };\n this.setState({ value, errors });\n }\n\n onMethodChange = (method) => {\n const value = { ...this.state.value, method };\n const errors = { ...this.state.errors, method: '' };\n this.setState({ value, errors });\n };\n\n render() {\n const { isLoading } = this.props;\n const { value, errors } = this.state;\n\n return (\n <>\n

Register for Two Factor Authentication

\n\n
\n
Step 1: Choose a registration method you would like to use. You have the option to change this method in your account settings after logging in.
\n
\n\n
\n this.onMethodChange(e.target.value)}\n >\n } label='Text Me' style={{ marginTop: '5px' }} />\n } label='Call Me' style={{ marginTop: '5px' }} />\n\n
\n
\n } label='Authenticator' />\n \n
\n
\n\n \n {errors.method}\n
\n\n {(value.method === REGISTER_METHODS.SMS || value.method === REGISTER_METHODS.CALL) &&\n <>\n
\n
Step 2: Please enter the 10 digit US phone number you would like to use to register for 2FA.
\n
\n\n
\n this.onPhoneChange(formattedValue)}\n errorText={errors.phoneNumber}\n variant='outlined'\n />\n
\n\n \n }\n\n
\n \n \n Register\n \n \n
\n \n );\n }\n}\n\nexport default RegisterPhoneAndMethod;","import { GETrequest, POSTrequest, PUTrequest } from 'utils/helpers/api_handler';\nimport {\n TWO_FACTOR_REGISTRATION,\n TWO_FACTOR_REGISTRATION_UPDATE,\n TWO_FACTOR_TOKEN_VERIFICATION,\n TWO_FACTOR_TOKEN,\n TWO_FACTOR_QRCODES,\n TWO_FACTOR_PREFERRED_METHOD,\n TWO_FACTOR_SAVE_PREFERRED_METHOD,\n VERIFY_PIN,\n} from './constants';\n\nexport function verifyPIN(PIN) {\n const response = POSTrequest('/TwoFactor/SecurityPIN/Answer', { Answer: PIN });\n return {\n type: VERIFY_PIN,\n payload: response\n };\n}\n\nexport function twoFactorRegistration(regInfo) {\n const response = POSTrequest('/TwoFactor/Registrations', regInfo);\n return {\n type: TWO_FACTOR_REGISTRATION,\n payload: response,\n };\n}\n\nexport function twoFactorRegistrationUpdate(regInfo) {\n const response = PUTrequest('/TwoFactor/Registrations', regInfo);\n return {\n type: TWO_FACTOR_REGISTRATION_UPDATE,\n payload: response,\n };\n}\n\nexport function twoFactorTokenVerification(token, method) {\n const response = GETrequest(`/TwoFactor/TokenVerification/${token}`, {\n params: {\n method,\n }\n });\n return {\n type: TWO_FACTOR_TOKEN_VERIFICATION,\n payload: response\n };\n}\n\nexport function getTwoFactorToken(method) {\n const response = GETrequest(`/TwoFactor/Token/${method}`);\n return {\n type: TWO_FACTOR_TOKEN,\n payload: response\n };\n}\n\n// will be used on initial 2FA registration, when security code does NOT need to be validated\nexport function getInitialTwoFactorQRCode() {\n const response = GETrequest('/TwoFactor/QRCodes/Initial');\n return {\n type: TWO_FACTOR_QRCODES,\n payload: response\n };\n}\n\n// will be used on updating 2FA registration, when security code does need to be validated\nexport function getTwoFactorQRCode() {\n const response = GETrequest('/TwoFactor/QRCodes');\n return {\n type: TWO_FACTOR_QRCODES,\n payload: response\n };\n}\n\nexport function getPreferredMethod() {\n const response = GETrequest('/TwoFactor/Users');\n return {\n type: TWO_FACTOR_PREFERRED_METHOD,\n payload: response\n };\n}\n\nexport function savePreferredMethod(preferredMethod) {\n const response = PUTrequest('/TwoFactor/Users', preferredMethod);\n return {\n type: TWO_FACTOR_SAVE_PREFERRED_METHOD,\n payload: response,\n };\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { tokenValidator } from 'utils/helpers/form_validation';\nimport { cleanDigits } from 'utils/helpers/sanitation';\n\nimport {\n Button,\n TextField\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n twoFactorTokenVerification,\n} from '../actions';\n\nimport styles from '../styles.module.css';\n\nexport class SubmitToken extends Component {\n\n static propTypes = {\n twoFactorTokenVerification: PropTypes.func.isRequired,\n onVerificationSuccess: PropTypes.func.isRequired,\n onVerificationFail: PropTypes.func,\n disabled: PropTypes.bool,\n getIsSubmitting: PropTypes.func,\n method: PropTypes.string.isRequired,\n };\n\n state = {\n isSubmitting: false,\n token: '',\n tokenError: '',\n attemptWarning: false,\n };\n\n handleTokenInput = e => {\n this.setState({\n tokenError: '',\n token: e.target.value\n });\n }\n\n onTokenSubmit(e) {\n e.preventDefault();\n const { token } = this.state;\n const { method, twoFactorTokenVerification, onVerificationFail, onVerificationSuccess } = this.props;\n\n const tokenError = tokenValidator(token);\n if (tokenError) {\n this.setState({ tokenError });\n }\n else {\n this.setState({ isSubmitting: true });\n // strip non numeric characters to prevent SQL injection\n let sanitizedToken = cleanDigits(token);\n // prevent sending empty string if no digits but count as a failed attempt \n sanitizedToken = sanitizedToken ? sanitizedToken : '1';\n twoFactorTokenVerification(sanitizedToken, method)\n .then(response => {\n const { AttemptsRemaining, Verified } = response.payload.data;\n\n if (!Verified) {\n let attemptWarning = '';\n if (AttemptsRemaining === 0) {\n // pass to parent if method exists\n onVerificationFail && onVerificationFail();\n }\n else if (AttemptsRemaining === 1) {\n attemptWarning = 'Warning: You have one more attempt to validate the security code before you will be logged out of the website. Security code is invalid';\n }\n\n this.setState({\n isSubmitting: false,\n attemptWarning,\n tokenError: 'Security code is invalid',\n });\n }\n else {\n onVerificationSuccess();\n }\n });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.isSubmitting !== this.state.isSubmitting) {\n // pass to parent if method exists\n this.props.getIsSubmitting && this.props.getIsSubmitting(this.state.isSubmitting);\n }\n }\n\n render() {\n const { disabled } = this.props;\n const { isSubmitting, tokenError, attemptWarning, token } = this.state;\n\n return (\n <>\n this.onTokenSubmit(e)}\n >\n
\n \n
\n
\n \n \n Submit security code\n \n \n
\n \n
{attemptWarning}
\n \n );\n }\n}\n\nexport default connect(null, {\n twoFactorTokenVerification,\n})(SubmitToken);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { phoneLastFour } from 'utils/helpers/sanitation';\n\nimport SubmitToken from '../../SubmitToken';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n getTwoFactorToken,\n} from '../../actions';\n\nimport { REGISTER_METHODS } from '../../constants.js';\n\nimport styles from '../../styles.module.css';\n\nexport class VerifySmsOrCall extends Component {\n\n static propTypes = {\n onVerificationSuccess: PropTypes.func.isRequired,\n onVerificationFail: PropTypes.func.isRequired,\n method: PropTypes.string.isRequired,\n phoneNumber: PropTypes.string.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n };\n\n state = {\n isSubmitting: false,\n isResubmitting: false,\n attemptWarning: '',\n };\n\n resubmitPhoneCode = () => {\n const { method, getTwoFactorToken } = this.props;\n this.setState({ isResubmitting: true });\n getTwoFactorToken(method);\n setTimeout(() => {\n this.setState({ isResubmitting: false });\n }, 5000);\n }\n\n render() {\n const { method, phoneNumber, onVerificationSuccess, onVerificationFail } = this.props;\n const { isSubmitting, isResubmitting } = this.state;\n\n const lastFour = phoneLastFour(phoneNumber);\n let resubmitBtn, sendConfirmMsg;\n switch (method) {\n case REGISTER_METHODS.CALL:\n resubmitBtn = isResubmitting ? 'calling...' : 'call me again';\n sendConfirmMsg = `We called (***) ***-${lastFour} with a security code`;\n break;\n case REGISTER_METHODS.SMS:\n resubmitBtn = isResubmitting ? 'sending...' : 'resend code';\n sendConfirmMsg = `We sent a security code to (***) ***-${lastFour}`;\n break;\n default: break;\n }\n\n return (\n <>\n

Security Code

\n
{sendConfirmMsg}
\n\n this.setState({ isSubmitting })}\n onVerificationSuccess={onVerificationSuccess}\n onVerificationFail={onVerificationFail}\n />\n\n
\n \n \n {resubmitBtn}\n \n \n
\n \n );\n }\n}\n\nexport default connect(null, {\n getTwoFactorToken,\n})(VerifySmsOrCall);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport QRCode from 'react-qr-code';\n\nimport SubmitToken from '../../SubmitToken';\n\nimport {\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n getInitialTwoFactorQRCode,\n getTwoFactorQRCode,\n} from '../../actions';\n\nimport { REGISTER_METHODS } from '../../constants';\n\nimport { TWO_FACTOR_TYPES } from 'components/AppRoot/Navigation/constants';\n\nimport styles from '../../styles.module.css';\n\nexport class RegisterAuthenticator extends Component {\n\n static propTypes = {\n getInitialTwoFactorQRCode: PropTypes.func.isRequired,\n getTwoFactorQRCode: PropTypes.func.isRequired,\n onVerificationSuccess: PropTypes.func.isRequired,\n onVerificationFail: PropTypes.func,\n registerType: PropTypes.string,\n };\n\n state = {\n isLoading: false,\n QRCodeInfo: null\n };\n\n handleInput = name => e => {\n if (this.state.token) {\n this.setState({\n token: false,\n tokenError: '',\n [name]: e.target.value\n });\n }\n else {\n this.setState({ [name]: e.target.value });\n }\n }\n\n componentDidMount() {\n const { getInitialTwoFactorQRCode, getTwoFactorQRCode, registerType } = this.props;\n // If initial 2FA registration, the endpoint does not need to validate security code. Update is done on MyInfo page and requires security code validation.\n const getQRCode = registerType === TWO_FACTOR_TYPES.UPDATE ? getTwoFactorQRCode : getInitialTwoFactorQRCode;\n\n this.setState({ isLoading: true });\n getQRCode()\n .then((response) => {\n const { ImageUrl, Code } = response.payload.data;\n this.setState({ isLoading: false, QRCodeInfo: { ImageUrl, Code } });\n })\n .catch(() => {\n this.setState({ isLoading: false });\n });\n }\n\n render() {\n const { onVerificationSuccess, onVerificationFail } = this.props;\n const { isLoading, QRCodeInfo } = this.state;\n return (\n
\n \n

Get code from an authenticator app

\n\n
\n
Step 1: Download authenticator app
\n
Step 2: Scan the QR image or enter the code below the image into your authenticator app
\n
\n\n
\n {QRCodeInfo && }\n

\n {QRCodeInfo && QRCodeInfo.Code}\n
\n\n
\n
Step 3: Enter the my529 security code you see in your authenticator app
\n
\n
\n\n \n\n
\n );\n }\n}\n\nexport default connect(null, {\n getInitialTwoFactorQRCode,\n getTwoFactorQRCode,\n})(RegisterAuthenticator);","/*\n*\n* TwoFA Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { phoneLastFour } from 'utils/helpers/sanitation';\n\nimport RegisterPhoneAndMethod from 'components/Features/protected/Multifactor/Registration/RegisterPhoneAndMethod';\nimport VerifySmsOrCall from 'components/Features/protected/Multifactor/Registration/VerifySmsOrCall';\nimport RegisterAuthenticator from 'components/Features/protected/Multifactor/Registration/RegisterAuthenticator';\n\nimport {\n IconBtnTooltip,\n notificationShow,\n allNotificationsHide\n} from '@frontend/common';\n\nimport {\n Button,\n TextField,\n InputAdornment,\n Dialog,\n} from '@mui/material';\n\nimport {\n twoFactorRegistrationUpdate,\n getTwoFactorToken,\n savePreferredMethod\n} from 'components/Features/protected/Multifactor/actions';\n\nimport { userLogout, clearStore } from 'components/AppRoot/Navigation/actions';\nimport { REGISTER_METHODS } from 'components/Features/protected/Multifactor/constants.js';\nimport { TWO_FACTOR_TYPES } from 'components/AppRoot/Navigation/constants';\n\nimport parentStyles from '../styles.module.css';\nimport styles from './styles.module.css';\n\n// registration steps\nconst REGISTRATION_STEPS = {\n REGISTER_PHONE_AND_METHOD: 'registerPhoneAndMethod',\n VERIFY_SMS_OR_PHONE: 'verifySmsOrPhone',\n VERIFY_OTHER_AUTHORIZATION: 'verifyOtherAuthorization',\n};\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n preferredInfo: state.multifactor.preferredInfo,\n});\n\nexport class TwoFA extends React.Component {\n static propTypes = {\n userLogout: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n twoFactorRegistrationUpdate: PropTypes.func.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n savePreferredMethod: PropTypes.func.isRequired,\n };\n\n state = {\n isRegistrationOpen: false,\n registrationStep: REGISTRATION_STEPS.REGISTER_PHONE_AND_METHOD, // TODO: will change with preferred method\n isLoading: false,\n method: this.props.preferredInfo.PreferredMethod,\n phoneNumber: this.props.preferredInfo.PhoneNumber,\n }\n\n logOut = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.notificationShow('You have logged out.', 'success');\n this.props.clearStore();\n });\n }\n\n onRegisterPhoneAndMethodUpdateSubmit = ({ phoneNumber, method }, hasError) => {\n this.setState({ method, phoneNumber });\n\n if (!hasError) {\n // clear all error toasts\n this.props.allNotificationsHide();\n\n const regParams = {\n countryCode: '+1', // always US\n phoneNumber,\n emailAddress: this.props.userDetails.email,\n verificationMethod: method\n };\n\n this.setState({ isLoading: true });\n this.props.twoFactorRegistrationUpdate(regParams)\n .then(() => {\n switch (method) {\n // only sms and call will need api call to push security code to user's phone\n case REGISTER_METHODS.SMS:\n case REGISTER_METHODS.CALL:\n this.props.getTwoFactorToken(method)\n .then(() => this.setState({ isLoading: false, registrationStep: REGISTRATION_STEPS.VERIFY_SMS_OR_PHONE }))\n .catch(() => this.setState({ isLoading: false }));\n break;\n case REGISTER_METHODS.INAPPTOKEN:\n this.setState({ isLoading: false, registrationStep: REGISTRATION_STEPS.VERIFY_OTHER_AUTHORIZATION });\n break;\n\n default: // do nothing;\n }\n })\n .catch(() => {\n this.setState({ isLoading: false });\n });\n }\n }\n\n onVerificationSuccess = () => {\n // save 2FA user preferences\n const params = {\n AlwaysRequired: false, // assuming user has no saying in their user preferences\n PreferredMethod: this.state.method // submits selected method based on if text or phone is chosen\n };\n this.setState({ isLoading: true });\n this.props.savePreferredMethod(params)\n .then(() => {\n this.setState({ isLoading: false, isRegistrationOpen: false }); // close the dialog\n })\n .catch(() => this.setState({ isLoading: false }));\n }\n\n onClickPhoneNumberEdit = () => {\n this.setState({\n isRegistrationOpen: true,\n registrationStep: REGISTRATION_STEPS.REGISTER_PHONE_AND_METHOD,\n });\n }\n\n onClickOtherAuthenticator = () => {\n this.setState({\n isRegistrationOpen: true,\n registrationStep: REGISTRATION_STEPS.VERIFY_OTHER_AUTHORIZATION,\n method: REGISTER_METHODS.INAPPTOKEN,\n });\n }\n\n render() {\n const { preferredInfo } = this.props;\n const { isRegistrationOpen, isLoading, registrationStep, method, phoneNumber } = this.state;\n\n const twoFAPhoneNumberLastFour = `(***) ***-${phoneLastFour(preferredInfo.PhoneNumber)}`;\n\n const useAnotherMethodButton = () => (\n
\n this.setState({ registrationStep: REGISTRATION_STEPS.REGISTER_PHONE_AND_METHOD })}\n >\n Use another method\n \n
\n );\n\n const cancelButton = () => (\n
\n this.setState({ isRegistrationOpen: false })}\n className={styles.buttons}\n >\n Cancel\n \n
\n );\n\n let render2FARegistrationStep;\n switch (registrationStep) {\n case REGISTRATION_STEPS.REGISTER_PHONE_AND_METHOD:\n render2FARegistrationStep = (\n <>\n \n {cancelButton()}\n \n );\n break;\n\n case REGISTRATION_STEPS.VERIFY_SMS_OR_PHONE:\n render2FARegistrationStep = (\n <>\n \n {useAnotherMethodButton()}\n {cancelButton()}\n \n );\n break;\n\n case REGISTRATION_STEPS.VERIFY_OTHER_AUTHORIZATION:\n render2FARegistrationStep = (\n <>\n \n {cancelButton()}\n \n );\n break;\n\n default: // do nothing\n }\n\n return (\n <>\n
\n
\n \n \n ,\n }}\n />\n
\n\n
Authenticator Option
\n
\n \n Authenticator\n \n
\n
\n\n \n
\n {render2FARegistrationStep}\n\n
\n window.open('https://advisor.my529.org/faq-two-factor-authentication/', '_blank', 'noopener noreferrer')}\n className={styles.buttons}\n >\n Learn More\n \n
\n\n
\n
\n \n );\n }\n}\n\nexport default connect(select, {\n twoFactorRegistrationUpdate,\n getTwoFactorToken,\n notificationShow,\n allNotificationsHide,\n userLogout,\n clearStore,\n savePreferredMethod\n})(TwoFA);\n","/*\n*\n* Email Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n TextField,\n Button,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\n\nimport { emailValidator } from 'utils/helpers/form_validation';\n\nimport { contactInfoUpdate } from '../actions';\n\nimport styles from '../styles.module.css';\n\nconst select = (state) => ({\n advisor: state.myInfo.advisor,\n});\n\nexport class Email extends React.Component {\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n advisor: PropTypes.object.isRequired,\n contactInfoUpdate: PropTypes.func.isRequired,\n };\n\n state = {\n newEmail: '',\n confirmEmail: '',\n newEmailError: '',\n confirmEmailError: '',\n submitting: false,\n }\n\n onEmailChange = (keyName, value) => {\n // also reset username errors\n this.setState({\n [keyName]: value,\n newEmailError: '',\n confirmEmailError: '',\n });\n }\n\n disableSubmitButton = () => {\n return !this.state.newEmail || !this.state.confirmEmail;\n }\n\n emailInputValidate = () => {\n const { advisor: { EmailAddress } } = this.props;\n const { newEmail, confirmEmail } = this.state;\n\n let newEmailError = '';\n let confirmEmailError = '';\n\n newEmailError = emailValidator(newEmail);\n\n confirmEmailError = emailValidator(confirmEmail);\n\n if (EmailAddress.toLowerCase() === newEmail.toLowerCase()) {\n newEmailError = 'Email address is same as current.';\n }\n\n if (newEmail.toLowerCase() !== confirmEmail.toLowerCase()) {\n confirmEmailError = 'Emails must match.';\n }\n\n this.setState({ newEmailError, confirmEmailError });\n const hasError = Boolean(newEmailError) || Boolean(confirmEmailError);\n\n return !hasError;\n }\n\n onEmailSubmit = (e) => {\n e.preventDefault();\n if (this.emailInputValidate()) {\n const { newEmail } = this.state;\n\n const updatedAdvisor = {\n FinancialAdvisorId: this.props.advisor.FinancialAdvisorId,\n EmailAddress: newEmail\n };\n this.setState({ submitting: true });\n this.props.contactInfoUpdate(updatedAdvisor)\n .then(() => {\n this.props.notificationShow('Advisor email updated.', 'success');\n })\n .finally(() => this.setState({ submitting: false }));\n }\n }\n\n render() {\n const { advisor: { EmailAddress } } = this.props;\n const {\n newEmail, confirmEmail, submitting,\n newEmailError, confirmEmailError,\n } = this.state;\n\n return (\n
\n\n
\n \n
\n\n
\n this.onEmailChange('newEmail', e.target.value)}\n error={Boolean(newEmailError)}\n helperText={newEmailError}\n disabled={submitting}\n fullWidth\n />\n
\n\n
\n this.onEmailChange('confirmEmail', e.target.value)}\n error={Boolean(confirmEmailError)}\n helperText={confirmEmailError}\n disabled={submitting}\n fullWidth\n />\n
\n\n
\n \n \n Change Email\n \n \n\n
\n\n
\n );\n }\n}\n\nexport default connect(select, {\n contactInfoUpdate,\n notificationShow\n})(Email);\n","/*\n*\n* PhoneNumbers Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n notificationShow,\n PhoneNumberInput,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport { phoneHasNo10Digits } from 'utils/helpers/form_validation';\nimport { cleanDigits } from 'utils/helpers/sanitation';\n\nimport { contactInfoUpdate } from '../actions';\n\nimport styles from '../styles.module.css';\n\nconst select = (state) => ({\n advisor: state.myInfo.advisor,\n});\n\nexport class PhoneNumbers extends React.Component {\n static propTypes = {\n advisor: PropTypes.object.isRequired,\n notificationShow: PropTypes.func.isRequired,\n contactInfoUpdate: PropTypes.func.isRequired,\n }\n\n state = {\n primaryPhone: this.props.advisor.PhoneNumber1,\n alternatePhone: this.props.advisor.PhoneNumber2,\n primaryPhoneError: '',\n alternatePhoneError: '',\n submitting: false,\n };\n\n disableUpdateButton = () => {\n const { primaryPhone, alternatePhone } = this.state;\n const { PhoneNumber1, PhoneNumber2 } = this.props.advisor;\n\n return cleanDigits(primaryPhone) === cleanDigits(PhoneNumber1) && cleanDigits(alternatePhone) === cleanDigits(PhoneNumber2);\n }\n\n phoneInputsValidate() {\n const { primaryPhone, alternatePhone } = this.state;\n\n let primaryPhoneError = '';\n let alternatePhoneError = '';\n\n if (primaryPhone) {\n primaryPhoneError = phoneHasNo10Digits(primaryPhone);\n }\n\n if (alternatePhone) {\n alternatePhoneError = phoneHasNo10Digits(alternatePhone);\n }\n\n this.setState({ primaryPhoneError, alternatePhoneError });\n const hasError = Boolean(primaryPhoneError) || Boolean(alternatePhoneError);\n\n return !hasError;\n }\n\n onPhoneChange = (keyName, value) => {\n // set value and clear related field error\n this.setState({ [keyName]: value, primaryPhoneError: '', [`${keyName}Error`]: '' });\n }\n\n onSubmitPhoneNumbers = (e) => {\n e.preventDefault();\n if (this.phoneInputsValidate()) {\n const { primaryPhone, alternatePhone } = this.state;\n const updatedAdvisor = {\n FinancialAdvisorId: this.props.advisor.FinancialAdvisorId,\n PhoneNumber1: primaryPhone,\n PhoneNumber2: alternatePhone,\n };\n this.setState({ submitting: true });\n this.props.contactInfoUpdate(updatedAdvisor)\n .then(() => {\n this.props.notificationShow('Advisor phone numbers updated.', 'success');\n })\n .finally(() => this.setState({ submitting: false }));\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n advisor: {\n PhoneNumber1,\n PhoneNumber2\n }\n } = this.props;\n\n if (\n prevProps.advisor.PhoneNumber1 !== PhoneNumber1 ||\n prevProps.advisor.PhoneNumber2 !== PhoneNumber2\n ) {\n this.setState({ primaryPhone: PhoneNumber1, alternatePhone: PhoneNumber2 });\n }\n }\n\n render() {\n const { primaryPhone, alternatePhone, primaryPhoneError, alternatePhoneError, submitting } = this.state;\n\n return (\n
\n
Warning: Changing a phone number here will not change the phone number you have registered for two factor authentication.
\n\n
\n this.onPhoneChange('primaryPhone', value)}\n value={primaryPhone}\n fullWidth\n errorText={primaryPhoneError}\n disabled={submitting}\n />\n
\n\n
\n this.onPhoneChange('alternatePhone', value)}\n value={alternatePhone}\n fullWidth\n errorText={alternatePhoneError}\n disabled={submitting}\n />\n
\n\n
\n \n \n Update\n \n \n
\n
\n );\n }\n}\n\nexport default connect(select, {\n notificationShow,\n contactInfoUpdate,\n})(PhoneNumbers);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n InfoIcon,\n} from '@frontend/common';\n\nimport {\n Icon,\n} from '@mui/material';\n\nimport { permissionGet } from 'utils/config/permissions_details';\n\nimport styles from './styles.module.css';\n\nexport class Permissions extends React.Component {\n static propTypes = {\n permissions: PropTypes.object.isRequired,\n };\n\n permissionCompose(permissionName, enabled) {\n const permission = permissionGet(permissionName);\n /* eslint-disable indent */\n return (\n
\n
\n {permission.label}\n \n
\n \n {enabled\n ? done\n : close\n }\n \n
\n );\n /* eslint-enable indent */\n }\n\n render() {\n const { permissions } = this.props;\n\n return (\n <>\n

Permissions

\n
\n
\n
\n
Transactions
\n
\n {this.permissionCompose('AllowContribute', permissions.AllowContribute)}\n {this.permissionCompose('AllowOptionChange', permissions.AllowOptionChange)}\n {this.permissionCompose('AllowTransfer', permissions.AllowTransfer)}\n {this.permissionCompose('AllowWithdraw', permissions.AllowWithdraw)}\n
\n
\n
Tax Documents
\n
\n {this.permissionCompose('AllowViewStateTaxDocuments', permissions.AllowViewStateTaxDocuments)}\n {this.permissionCompose('AllowViewFederalTaxDocuments', permissions.AllowViewFederalTaxDocuments)}\n
\n
\n
\n
\n
Administration
\n
\n {this.permissionCompose('AdvisorEdit', permissions.AdvisorEdit)}\n {this.permissionCompose('TemplateEdit', permissions.TemplateEdit)}\n {this.permissionCompose('DataImportSetup', permissions.DataImportSetup)}\n {this.permissionCompose('DataImport', permissions.DataImport)}\n {this.permissionCompose('BulkStatementDownload', permissions.BulkStatementDownload)}\n
\n
\n
Reports
\n
\n {this.permissionCompose('AccountReports', permissions.AccountReports)}\n {this.permissionCompose('AdminReports', permissions.AdminReports)}\n
\n
\n
\n \n );\n }\n}\n\nexport default Permissions;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Switch,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n InfoIcon,\n notificationShow\n} from '@frontend/common';\n\nimport { contactInfoUpdate } from '../actions';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n advisor: state.myInfo.advisor,\n});\n\n\nexport class NotificationToggles extends React.Component {\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n advisor: PropTypes.object.isRequired,\n contactInfoUpdate: PropTypes.func.isRequired,\n };\n\n state = {\n togglingClientNotifications: false,\n togglingTransactionNotifications: false,\n }\n\n onNotificationToggle = (keyName) => {\n const updatedAdvisor = {\n FinancialAdvisorId: this.props.advisor.FinancialAdvisorId,\n [keyName]: !this.props.advisor[keyName],\n };\n this.setState({ [`toggling${keyName}`]: true });\n this.props.contactInfoUpdate(updatedAdvisor)\n .then(() => {\n this.props.notificationShow('Notifications updated.', 'success');\n })\n .finally(() => this.setState({ [`toggling${keyName}`]: false }));\n }\n\n render() {\n const { togglingClientNotifications, togglingTransactionNotifications } = this.state;\n const {\n advisor: {\n TransactionNotifications,\n ClientNotifications,\n }\n } = this.props;\n\n return (\n
\n {/* There are no CSS styles for container */}\n
\n
\n
\n
\n Transaction Notifications\n
\n\n
\n
\n \n this.onNotificationToggle('TransactionNotifications')} />\n \n
\n
\n\n
\n
\n
\n Client Notifications\n
\n\n
\n
\n \n this.onNotificationToggle('ClientNotifications')} />\n \n
\n
\n\n\n
\n
\n\n );\n }\n\n}\n\nexport default connect(select, {\n contactInfoUpdate,\n notificationShow\n})(NotificationToggles);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n TextField,\n Button,\n} from '@mui/material';\n\nimport {\n My529Logo,\n InfoIcon,\n IconBtnTooltip,\n LoadingOverlay,\n notificationShow,\n properCase,\n} from '@frontend/common';\n\nimport { advisorNameUpdate } from 'components/AppRoot/Navigation/actions';\nimport { contactInfoUpdate } from '../actions';\n\n\nimport styles from '../styles.module.css';\n\nconst select = (state) => ({\n lpoaHelpNumber: state.static.environmentVars.lpoaHelpNumber,\n advisor: state.myInfo.advisor,\n claims: state.session.claims,\n});\n\nexport class NameHeaderWithEdit extends React.Component {\n static propTypes = {\n lpoaHelpNumber: PropTypes.string.isRequired,\n notificationShow: PropTypes.func.isRequired,\n advisor: PropTypes.object.isRequired,\n advisorNameUpdate: PropTypes.func.isRequired,\n contactInfoUpdate: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n };\n\n state = {\n showNameEdit: false,\n firstName: '',\n lastName: '',\n firstNameError: '',\n lastNameError: '',\n submitting: false,\n }\n\n disableUpdateButton = () => {\n const { firstName, lastName } = this.state;\n const { FirstName, LastName } = this.props.advisor;\n let firstNameError = '';\n let lastNameError = '';\n if (!firstName) {\n firstNameError = 'Field is required.';\n }\n\n if (!lastName) {\n lastNameError = 'Field is required.';\n }\n\n if (firstName === FirstName && lastName === LastName) {\n firstNameError = 'No change to update.';\n lastNameError = 'No change to update.';\n }\n\n return Boolean(firstNameError) && Boolean(lastNameError);\n }\n\n onNameSubmit = (e) => {\n e.preventDefault();\n const { firstName, lastName } = this.state;\n\n const updatedAdvisor = {\n FinancialAdvisorId: this.props.advisor.FinancialAdvisorId,\n FirstName: firstName,\n LastName: lastName\n };\n this.setState({ submitting: true });\n this.props.contactInfoUpdate(updatedAdvisor)\n .then(() => {\n this.props.advisorNameUpdate(properCase(`${firstName} ${lastName}`));\n this.props.notificationShow('Advisor name updated.', 'success');\n })\n .finally(() => this.setState({ submitting: false }));\n }\n\n onNameChange = (keyName, value) => {\n // set value and clear all errors\n this.setState({ [keyName]: value, firstNameError: '', lastNameError: '' });\n }\n\n onCancel = () => {\n const { FirstName, LastName } = this.props.advisor;\n // also clear form errors and set name to the default one\n this.setState({\n showNameEdit: false,\n firstNameError: '',\n lastNameError: '',\n firstName: FirstName,\n lastName: LastName\n });\n }\n\n componentDidMount() {\n // set advisor name to its default values if already in Redux\n const { FirstName, LastName } = this.props.advisor;\n this.setState({\n firstName: FirstName,\n lastName: LastName\n });\n }\n\n componentDidUpdate(prevProps) {\n // once adviser details loads set advisor name to its default values if not already in Redux\n const { FirstName, LastName } = this.props.advisor;\n if (prevProps.advisor.FirstName !== FirstName || prevProps.advisor.LastName !== LastName) {\n this.setState({\n firstName: FirstName,\n lastName: LastName\n });\n }\n }\n\n render() {\n const {\n claims: { MasterAdmin },\n advisor: { FirstName, LastName },\n lpoaHelpNumber\n } = this.props;\n const { \n showNameEdit, firstName, lastName, \n firstNameError, lastNameError, submitting \n } = this.state;\n\n const isMasterAdmin = MasterAdmin === 'true';\n\n return (\n
\n
\n
Advisor
\n
\n

\n {!showNameEdit\n ?\n `${FirstName} ${LastName}`\n :\n (\n
\n
\n this.onNameChange('firstName', e.target.value)}\n error={Boolean(firstNameError)}\n helperText={firstNameError}\n disabled={submitting}\n />\n
\n
\n this.onNameChange('lastName', e.target.value)}\n error={Boolean(lastNameError)}\n helperText={lastNameError}\n disabled={submitting}\n />\n
\n {/* There are no CSS styles for myInfo_nameEditButton */}\n
\n \n \n Update\n \n \n
\n
\n \n Cancel\n \n
\n
\n )\n\n }\n

\n {isMasterAdmin\n ?\n \n :\n
\n {!showNameEdit &&\n this.setState({ showNameEdit: true })}\n title='Change advisor name'\n />\n }\n\n
\n }\n
\n
\n
\n
\n );\n }\n}\n\nexport default connect(select, {\n advisorNameUpdate,\n contactInfoUpdate,\n notificationShow\n})(NameHeaderWithEdit);\n","/*\n*\n* MyInfo Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport PersistentDrawers, { Row, LeftMenuItems, LeftMenuItem, RightDrawer } from './PersistentDrawers';\n\nimport {\n LoadingOverlay,\n notificationShow,\n InfoIcon,\n phoneFormatter,\n} from '@frontend/common';\n\nimport Username from './Username';\nimport Password from './Password';\nimport TwoFA from './TwoFA';\nimport Email from './Email';\nimport PhoneNumbers from './PhoneNumbers';\nimport Permissions from './Permissions';\nimport NotificationToggles from './NotificationToggles';\nimport NameHeaderWithEdit from './NameHeaderWithEdit';\n\nimport { getPreferredMethod } from 'components/Features/protected/Multifactor/actions';\nimport { passwordChange, advisorGet, contactInfoUpdate } from './actions';\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\nimport { usernameChange, advisorNameUpdate } from 'components/AppRoot/Navigation/actions';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n passwordRequirements: state.static.passwordRequirements,\n claims: state.session.claims,\n advisor: state.myInfo.advisor,\n lpoaHelpNumber: state.static.environmentVars.lpoaHelpNumber,\n preferredInfo: state.multifactor.preferredInfo,\n is2FABypassed: state.session.is2FABypassed,\n});\n\nexport class MyInfo extends React.Component {\n static propTypes = {\n lpoaHelpNumber: PropTypes.string.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n passwordChange: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n advisor: PropTypes.object.isRequired,\n advisorGet: PropTypes.func.isRequired,\n usernameChange: PropTypes.func.isRequired,\n contactInfoUpdate: PropTypes.func.isRequired,\n advisorNameUpdate: PropTypes.func.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n is2FABypassed: PropTypes.bool.isRequired,\n };\n\n state = {\n ClientNotifications: null,\n TransactionNotifications: null,\n loading: false,\n };\n\n componentDidMount() {\n const promises = [];\n\n if (this.props.passwordRequirements.length === 0) {\n promises.push(this.props.passwordRequirementsGet());\n }\n\n if (this.props.advisor.Pin === '') {\n promises.push(this.props.advisorGet());\n }\n\n promises.push(this.props.getPreferredMethod());\n\n this.setState({ loading: true });\n Promise.all(promises)\n .then(() => {\n this.setState({ loading: false });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n render() {\n const { loading } = this.state;\n const {\n advisor: {\n EmailAddress,\n permissions,\n PhoneNumber1,\n PhoneNumber2,\n },\n claims: {\n Login,\n },\n preferredInfo,\n is2FABypassed,\n } = this.props;\n\n return (\n
\n \n \n \n \n \n \n
\n Username\n
\n
\n \n
\n {Login}\n
\n
\n
\n \n \n \n
\n\n \n \n \n
\n Password\n
\n
\n \n
\n **********\n
\n
\n
\n \n \n \n
\n {preferredInfo.IsRegistered && !is2FABypassed && (\n \n \n \n
\n Two-Factor Authentication\n
\n
\n \n
\n {preferredInfo.IsRegistered ? 'Registered' : 'Not Registered'}\n
\n
\n
\n \n \n \n
\n )}\n \n \n \n
\n Email\n
\n
\n \n
\n {EmailAddress}\n
\n
\n
\n \n \n \n
\n\n \n \n \n
\n Phone Numbers\n
\n
\n \n
\n Primary: {phoneFormatter(PhoneNumber1)}\n
\n
\n Alternate: {phoneFormatter(PhoneNumber2)}\n
\n
\n
\n \n Phone Numbers\n
\n )}\n >\n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default connect(select, {\n passwordRequirementsGet,\n passwordChange,\n notificationShow,\n advisorGet,\n usernameChange,\n contactInfoUpdate,\n advisorNameUpdate,\n getPreferredMethod\n})(MyInfo);\n","/*\n*\n* Reports Actions\n*\n*/\nimport {\n REPORTS_GET,\n REPORT_RUN,\n REPORT_DOWNLOAD,\n} from './constants';\n\nimport { GETrequest, POSTrequest } from 'utils/helpers/api_handler';\n\nexport function reportsGet() {\n const payload = GETrequest('/reports');\n\n return {\n type: REPORTS_GET,\n payload,\n };\n}\n\nexport function reportRun(reportId, params) {\n const payload = POSTrequest(`/reports/${reportId}`, params);\n\n return {\n type: REPORT_RUN,\n payload,\n };\n}\n\nexport function reportDownload(reportId, params) {\n const payload = POSTrequest(`/reports/${reportId}/download`, params);\n\n return {\n type: REPORT_DOWNLOAD,\n payload,\n };\n}","/*\n*\n* ReportCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nimport { Paper } from '@mui/material';\n\nimport styles from './styles.module.css';\n\nexport class ReportCard extends React.Component {\n\n static propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n };\n \n state = {\n hovered: false,\n };\n\n render() {\n const { id, name, description } = this.props;\n\n return (\n this.setState({ hovered: true })}\n onMouseLeave={() => this.setState({ hovered: false })}\n onClick={() => this.props.history.push(`/reports/${id}`)}\n >\n \n
{name}
\n
\n
{description}
\n
\n \n );\n }\n}\n\nexport default withRouter(ReportCard);\n","/*\n*\n* ReportsList Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { reportsGet } from '../actions';\nimport ReportCard from './ReportCard';\n\nimport { LoadingOverlay } from '@frontend/common';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n permissions: state.session.permissions,\n reports: Object.values(state.reports.reports),\n});\n\n\nexport class ReportsList extends React.Component {\n\n static propTypes = {\n permissions: PropTypes.object.isRequired,\n reports: PropTypes.array.isRequired,\n reportsGet: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n };\n\n reportCardCompose(report) {\n return (\n \n );\n }\n\n componentDidMount() {\n if (this.props.reports.length === 0) {\n this.setState({ loading: true });\n this.props.reportsGet()\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n /* eslint-disable indent */\n const { reports, permissions } = this.props;\n const { loading } = this.state;\n const accountReports = reports.filter(report => report.category === 'account');\n const adminReports = reports.filter(report => report.category === 'admin');\n\n return (\n
\n {loading && (\n
\n \n
\n )}\n
\n {(permissions.accountReports && accountReports.length > 0) && (\n
\n
Clients
\n
\n {accountReports.map(report => this.reportCardCompose(report))}\n
\n )}\n {(permissions.adminReports && adminReports.length > 0) && (\n
\n
Admin and Compliance
\n
\n {adminReports.map(report => this.reportCardCompose(report))}\n
\n )}\n
\n
\n );\n /* eslint-enable indent */\n }\n}\n\nexport default connect(select, { reportsGet })(ReportsList);\n","/*\n*\n* RunReport Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep, kebabCase } from 'lodash';\nimport dayjs from 'dayjs';\nimport bowser from 'bowser';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n reportsGet,\n reportRun,\n reportDownload,\n} from '../actions';\nimport { saveFile } from 'utils/helpers/files';\n\nimport {\n Card,\n LoadingOverlay,\n DataTable,\n notificationShow,\n Breadcrumbs,\n DatePicker,\n} from '@frontend/common';\nimport { Button, Chip, } from '@mui/material';\n\nimport styles from './styles.module.css';\n\nconst reportsWithFilter = [ // used to turn on Filter for specific reports\n {\n id: 22, // LPOA Upcoming Transactions Report\n columnsForFiltering: ['Transaction Type', 'Recurrence'],\n },\n {\n id: 25, // LPOA Completed Transactions Detail Report\n columnsForFiltering: ['Transaction Type',],\n },\n];\n\nexport const select = (state, { match }) => {\n const report = state.reports.reports[match.params.reportId];\n return {\n reportDetails: report ? report : { params: [] },\n claims: state.session.claims,\n };\n};\n\n\nexport class RunReport extends React.Component {\n\n static propTypes = {\n reportDetails: PropTypes.object.isRequired,\n reportsGet: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n reportRun: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n reportDownload: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n reportRunning: false,\n reportDownloading: false,\n params: [],\n reportHasRun: false,\n reportData: {\n tableMapping: {\n id: 'id',\n headers: {},\n },\n rows: [],\n },\n inputErrors: {},\n activeGraphDateFilter: {},\n dateFilters: [\n { label: '1 Month', filterDate: dayjs().subtract('1', 'month') },\n { label: '3 Month', filterDate: dayjs().subtract('3', 'month') },\n { label: '6 Month', filterDate: dayjs().subtract('6', 'month') },\n { label: 'YTD', filterDate: dayjs().startOf('year') },\n { label: '1 Year', filterDate: dayjs().subtract('1', 'year') },\n ],\n columnsForFiltering: [],\n showFilter: false,\n };\n\n dataTableCompose() {\n const { reportHasRun, reportRunning, reportDownloading, reportData, columnsForFiltering, showFilter } = this.state;\n if (reportData.rows.length > 0) {\n return (\n
\n \n
\n );\n }\n else if (reportHasRun && !reportRunning && reportData.rows.length === 0) {\n return (\n
There is no report data for the selected criteria.
\n );\n }\n else {\n return null;\n }\n }\n\n downloadReport = () => {\n if (this.paramInputsVerify()) {\n this.setState({ reportDownloading: true });\n this.props.reportDownload(this.props.match.params.reportId, this.reportParamsCompile())\n .then(action => {\n const downloadedData = action.payload.data;\n if (!downloadedData) {\n this.props.notificationShow('', 'genericError');\n }\n else {\n const blob = new Blob([downloadedData], { type: 'text/csv;charset=utf-8' });\n const fileName = `${kebabCase(this.props.reportDetails.name)}-${dayjs().format('MM-DD-YY')}.csv`;\n\n if (bowser.name === 'Internet Explorer' || bowser.name === 'Microsoft Edge') {\n navigator.msSaveBlob(blob, fileName);\n }\n else {\n saveFile(blob, fileName);\n }\n }\n })\n .catch(() => null)\n .finally(() => this.setState({ reportDownloading: false }));\n }\n }\n\n mapParams(props) {\n const { claims, reportDetails } = props;\n\n return reportDetails.params.map(param => ({\n name: param.name,\n value: (param.name === 'AuthorizedRepresentativeId' && claims.AuthorizedRepresentativeId)\n || (param.name === 'FinancialAdvisorId' && claims.FinancialAdvisorId)\n || null,\n }));\n }\n\n paramInputsCompose() {\n const { activeGraphDateFilter, dateFilters, inputErrors, reportRunning, } = this.state;\n const params = this.props.reportDetails.params.filter(param => param.type === 'datetime');\n\n return (\n <>\n
\n {params.map(param => {\n const paramInputs = this.state.params.find(({ name }) => name === param.name);\n return (\n this.paramInputUpdate(param.name, date ? date.toDate() : date)}\n shouldDisableDate={date => date >= new Date().setHours(0, 0, 0, 0)}\n error={Boolean(inputErrors[param.name])}\n helperText={inputErrors[param.name]}\n />\n );\n })}\n
\n\n {params.length === 2 &&\n
\n {dateFilters.map(dateFilter => {\n const isActiveChip = activeGraphDateFilter.label === dateFilter.label;\n\n return (\n this.filterByDateRange(dateFilter)}\n style={{ margin: '2px 5px 2px 0', }}\n variant='filled'\n />\n );\n })}\n
}\n \n );\n }\n\n filterByDateRange = dateFilter => {\n const updatedParams = cloneDeep(this.state.params);\n const inputErrors = cloneDeep(this.state.inputErrors);\n const startDateIndex = this.state.params.findIndex(param => param.name === 'StartDate');\n const endDateIndex = this.state.params.findIndex(param => param.name === 'EndDate');\n\n if (startDateIndex > -1) {\n updatedParams[startDateIndex].value = dateFilter.filterDate;\n delete inputErrors.StartDate;\n }\n if (endDateIndex > -1) {\n updatedParams[endDateIndex].value = dayjs().subtract('1', 'day');\n delete inputErrors.EndDate;\n }\n\n this.setState({ activeGraphDateFilter: dateFilter, params: updatedParams, inputErrors });\n }\n\n paramInputUpdate(paramName, value) {\n const updatedParams = cloneDeep(this.state.params);\n const inputErrors = cloneDeep(this.state.inputErrors);\n const paramIndex = this.state.params.findIndex(param => param.name === paramName);\n\n if (paramIndex > -1) {\n updatedParams[paramIndex].value = value;\n delete inputErrors[paramName];\n this.setState({\n params: updatedParams,\n reportHasRun: false,\n inputErrors,\n activeGraphDateFilter: {},\n });\n }\n }\n\n paramInputsVerify = () => {\n const inputErrors = {};\n this.state.params.forEach(param => {\n if (!param.value) {\n inputErrors[param.name] = 'Field is required.';\n }\n });\n\n this.setState({ inputErrors });\n\n return Object.keys(inputErrors).length === 0;\n }\n\n reportParamsCompile = () => {\n const formattedParams = {};\n this.state.params.forEach(param => {\n formattedParams[param.name] = param.value;\n });\n\n return formattedParams;\n }\n\n runReport = () => {\n const defaultReportData = {\n tableMapping: {\n id: 'id',\n headers: {},\n },\n rows: [],\n };\n if (this.paramInputsVerify()) {\n this.setState({\n reportRunning: true,\n reportData: { ...defaultReportData }\n });\n this.props.reportRun(this.props.match.params.reportId, this.reportParamsCompile())\n .then(action => {\n if (action.payload.status === 200) {\n const reportData = { ...defaultReportData };\n const columnNames = action.payload.data.ColumnNames;\n const rows = action.payload.data.Data;\n\n columnNames.forEach(name => {\n reportData.tableMapping.headers[name] = name;\n });\n\n reportData.rows = [];\n rows.forEach((row, index) => {\n const rowData = { id: index };\n row.forEach((cell, index) => {\n rowData[columnNames[index]] = cell;\n });\n\n reportData.rows.push(rowData);\n });\n\n if (reportData.rows.length > 5000) {\n this.props.notificationShow('Only displaying 5,000 rows as the selected report parameters returned a large data set. Please download report to see all data.', 'warning');\n reportData.rows = reportData.rows.slice(0, 4999);\n }\n\n this.setState({\n reportData,\n reportHasRun: true,\n });\n }\n })\n .catch(() => null)\n .finally(() => this.setState({ reportRunning: false }));\n }\n }\n\n componentDidMount() {\n const { reportDetails } = this.props;\n if (!reportDetails.id || reportDetails.params.length === 0) {\n this.setState({ loading: true });\n this.props.reportsGet()\n .then(() => {\n if (!this.props.reportDetails.id) {\n this.props.history.push('/reports');\n }\n else {\n this.setState({\n loading: false,\n params: this.mapParams(this.props),\n });\n }\n })\n .catch(() => null);\n }\n else {\n this.setState({\n loading: false,\n params: this.mapParams(this.props),\n });\n }\n\n // set any potential columns that can be filter to pass into the DataTable for the Filter\n const reportWithFilter = reportsWithFilter.find(report => report.id === reportDetails.id);\n const showFilter = reportWithFilter !== undefined;\n const columnsForFiltering = showFilter ? reportWithFilter.columnsForFiltering : [];\n this.setState({ showFilter, columnsForFiltering });\n }\n\n render() {\n if (this.state.loading) {\n return (\n
\n \n
\n );\n }\n else {\n return (\n
\n
\n \n
\n \n
{this.props.reportDetails.description}
\n
\n {this.paramInputsCompose()}\n
\n \n \n Run Report\n \n \n
\n
\n \n {this.dataTableCompose()}\n
\n );\n }\n }\n}\n\nexport default withRouter(connect(select, {\n reportsGet,\n reportRun,\n notificationShow,\n reportDownload,\n})(RunReport));\n","/*\n*\n* Reports Component\n*\n*/\nimport React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\nimport ReportsList from './ReportsList';\nimport RunReport from './RunReport';\nimport PageNotFound from 'components/Features/protected/PageNotFound';\n\n\nexport class Reports extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default Reports;\n","/*\n*\n* AccountsToExport Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEqual } from 'lodash';\n\nimport { poasForExportGet, poasForExportUpdate } from '../actions';\n\nimport AssignAccounts from 'components/Features/protected/ManageUsers/AssignAccounts';\nimport {\n Card,\n LoadingOverlay,\n notificationShow\n} from '@frontend/common';\n\nimport { Button } from '@mui/material';\nimport { Prompt } from 'react-router-dom';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n poas: state.manageData.poasForExport,\n});\n\nexport class AccountsToExport extends React.Component {\n\n static propTypes = {\n poas: PropTypes.array.isRequired,\n poasForExportGet: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n poasForExportUpdate: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n };\n\n state = {\n loading: false,\n updateLoading: false,\n poas: [],\n };\n\n updateHandle = () => {\n this.setState({\n updateLoading: true,\n });\n const updatedIds = this.state.poas\n .filter(poa => poa.selected)\n .map(poa => poa.id);\n\n this.props.poasForExportUpdate(updatedIds.length === this.props.poas.length, updatedIds)\n .then(() => {\n this.props.notificationShow('Accounts for export updated.', 'success');\n // redirect to home\n this.props.history.push('/');\n })\n .catch(() => null)\n .finally(() => this.setState({ updateLoading: false }));\n }\n\n componentDidMount() {\n const { poas } = this.props;\n if (poas.length > 0) {\n this.setState({ poas });\n }\n else {\n this.setState({\n loading: true,\n });\n this.props.poasForExportGet()\n .then(() => {\n this.setState({\n loading: false,\n poas: this.props.poas,\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n window.onbeforeunload = () => {\n if (!isEqual(poas, this.state.poas)) {\n return 'Are you sure you want to leave? There are unsaved changes on this page.';\n }\n };\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(this.props.poas, prevProps.poas)) {\n this.setState({\n poas: this.props.poas,\n });\n\n window.onbeforeunload = () => {\n if (!isEqual(this.props.poas, this.state.poas)) {\n return 'Are you sure you want to leave? There are unsaved changes on this page.';\n }\n };\n }\n }\n\n componentWillUnmount() {\n window.onbeforeunload = () => null;\n }\n\n render() {\n const { poas, loading, updateLoading } = this.state;\n return (\n
\n \n this.setState({ poas: updatedAccounts })}\n loading={loading}\n />\n
\n \n \n Done\n \n \n
\n \n\n \n
\n );\n }\n}\n\nexport default connect(select, {\n poasForExportGet,\n notificationShow,\n poasForExportUpdate\n})(AccountsToExport);\n","/*\n*\n* ProviderTile Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Button } from '@mui/material';\n\nimport imagePaths from '../images/imagePaths';\n\nimport styles from './styles.module.css';\n\n\nexport class ProviderTile extends React.Component {\n\n static propTypes = {\n provider: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n name: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n authorizedDate: PropTypes.string,\n }).isRequired,\n editing: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n type: PropTypes.oneOf(['backOffice', 'portfolioProvider']),\n onViewAuthorizationClick: PropTypes.func,\n };\n\n static defaultProps = {\n onViewAuthorizationClick: () => null,\n };\n\n state = {\n hovering: false,\n };\n\n render() {\n const { hovering } = this.state;\n const { provider: { id, name, enabled }, editing, onClick, type } = this.props;\n const imagePath = imagePaths[id.toString()];\n let image = null;\n\n if (imagePath) {\n image = {name};\n }\n \n return (\n onClick(this.props.provider) : () => null }\n onMouseEnter={() => this.setState({ hovering: true })}\n onMouseLeave={() => this.setState({ hovering: false })}\n onTouchStart={() => this.setState({ hovering: true })}\n onTouchCancel={() => this.setState({ hovering: false })}\n >\n {image\n ? image\n : {name}\n }\n
\n {!editing && hovering && enabled && type === 'backOffice' && (\n this.props.onViewAuthorizationClick(this.props.provider)}\n >\n View Authorization\n \n )}\n
\n \n );\n }\n}\n\nexport default ProviderTile;\n","/*\n*\n* BackOfficeAuthorization Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\n\nimport styles from './styles.module.css';\n\n\nexport function BackOfficeAuthorization({ firmName, address, providerName, date }) {\n return (\n
\n
Authorization to Disclose Information and Agreement to Indemnify
\n
\n

The undersigned Advisor Firm, located at {address}, executes this Authorization to Disclose Information and Agreement to Indemnify ("Authorization") in favor of my529 on the date set forth below.

\n

\n This Authorization is intended to provide a value-added service to Advisor Firm and the undersigned hereby expressly authorizes my529 to disclose information, including confidential information,\n relating to my529 accounts owned by its clients to back-office service provider, {providerName} ("Servicer"). Servicer, in turn, may use such information to enable you to access such\n client information as part of the services that the Servicer provides to you.\n

\n

\n The undersigned, as an entity that may be granted Limited Power of Attorney (LPOA) authority with my529 accounts, acknowledges and represents that it has obtained from its clients all necessary authorizations\n for the release of this information and has done so in a manner consistent with all applicable privacy laws and regulations. Further, the undersigned hereby agrees to indemnify and to hold my529 harmless from and\n against any and all claims arising in connection with this Authorization and my529's reliance thereon.\n

\n
\n
\n
Acknowledged and agreed to by:
\n
{firmName}
\n
{dayjs(date, 'YYYY-MM-DDTHH:mm').format('dddd, MMMM D, YYYY')}
\n
\n
\n );\n}\n\nBackOfficeAuthorization.propTypes = {\n firmName: PropTypes.string.isRequired,\n address: PropTypes.string.isRequired,\n providerName: PropTypes.string.isRequired,\n date: PropTypes.string,\n};\n\nBackOfficeAuthorization.defaultProps = {\n date: dayjs().toISOString(),\n};\n\nexport default BackOfficeAuthorization;\n","/*\n*\n* ExternalProvidersCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep, findIndex, isEqual } from 'lodash';\nimport ReactDOMServer from 'react-dom/server';\n\n// atob/btoa methods were used because of Checkmarx high severity issue\n\nimport {\n Card,\n LoadingOverlay,\n sizify,\n notificationShow,\n Modal,\n} from '@frontend/common';\nimport {\n Button,\n Stepper,\n Step,\n StepButton,\n Collapse,\n} from '@mui/material';\nimport ProviderTile from '../ProviderTile';\nimport BackOfficeAuthorization from '../BackOfficeAuthorization';\n\nimport { backOfficesUpdate } from '../../actions';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n lpoaDetails: state.session.lpoaDetails,\n});\n\n\nexport class ExternalProvidersCard extends React.Component {\n\n static propTypes = {\n lpoaDetails: PropTypes.object.isRequired,\n backOffices: PropTypes.array.isRequired,\n backOfficesUpdate: PropTypes.func.isRequired,\n size: PropTypes.object.isRequired,\n notificationShow: PropTypes.func.isRequired,\n afterSave: PropTypes.func,\n };\n\n state = {\n editing: false,\n backOffices: [],\n editingStep: 0,\n loading: false,\n showAuthorizationModal: false,\n authorizationModalProvider: {\n name: '',\n date: null,\n },\n };\n\n authorizationStepCompose() {\n const enabledBackOffices = this.enabledBackOfficesGet();\n const { firmName } = this.props.lpoaDetails;\n if (enabledBackOffices.length === 0) {\n return (\n
By unselecting all providers, my529 account data will no longer be provided to any external service providers. Click "Save" to remove all providers.
\n );\n }\n\n return enabledBackOffices.map(office => (\n \n ));\n }\n\n buttonsCompose() {\n const { editing, editingStep, loading, backOffices } = this.state;\n const scrollToTop = (callback) => {\n callback();\n window.scrollTo(0, 0);\n };\n const buttons = [];\n\n if (!editing) {\n buttons.push(\n scrollToTop(() => this.setState({ editing: true }))}\n >\n Edit\n \n );\n }\n else {\n if (editingStep === 0) {\n buttons.push(\n scrollToTop(() => this.setState({ editingStep: 1 }))}\n disabled={isEqual(backOffices, this.props.backOffices)}\n >\n Next\n \n );\n }\n else if (editingStep === 1) {\n buttons.push(\n \n \n {this.enabledBackOfficesGet().length > 0 ? 'Agree & Save' : 'Save'}\n \n \n );\n }\n\n buttons.unshift(\n scrollToTop(() => this.setState({ editing: false, backOffices: this.props.backOffices, editingStep: 0 }))}\n disabled={loading}\n >\n Cancel\n \n );\n }\n\n return buttons;\n }\n\n enabledBackOfficesGet = () => {\n return this.state.backOffices.filter(office => office.enabled);\n }\n\n firmAddressCompose = () => {\n const { address: { street1, street2, street3, city, state, zip } } = this.props.lpoaDetails;\n return btoa(`${street1}${street2 ? `, ${street2}` : ''}${street3 ? `, ${street3}` : ''}, ${city}, ${state} ${zip}`);\n }\n\n onTileClick = (backOffice) => {\n const updatedBackOffices = cloneDeep(this.state.backOffices);\n const index = findIndex(updatedBackOffices, { id: backOffice.id });\n if (index > -1) {\n updatedBackOffices[index].enabled = !updatedBackOffices[index].enabled;\n }\n\n this.setState({\n backOffices: updatedBackOffices,\n });\n }\n\n printAuthorization = () => {\n const { lpoaDetails: { firmName } } = this.props;\n const { authorizationModalProvider: { name, date } } = this.state;\n\n const printWindow = window.open();\n printWindow.document.write(\n ReactDOMServer.renderToStaticMarkup(\n
\n \n \n
\n )\n );\n printWindow.print();\n printWindow.close();\n }\n\n updateBackOfficesHandle = () => {\n this.setState({ loading: true });\n const backOfficeIds = this.enabledBackOfficesGet().map(office => office.id);\n this.props.backOfficesUpdate(backOfficeIds)\n .then(() => {\n this.props.notificationShow('External Providers updated.', 'success');\n this.setState({\n loading: false,\n editing: false,\n editingStep: 0,\n backOffices: this.props.backOffices,\n }, () => {\n this.props.afterSave(this.enabledBackOfficesGet());\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n componentDidMount() {\n this.setState({\n backOffices: this.props.backOffices,\n });\n }\n\n render() {\n const { editing, backOffices, editingStep } = this.state;\n const { size: { windowWidth }, lpoaDetails: { firmName } } = this.props;\n\n return (\n \n \n
\n \n \n this.setState({ editingStep: 0 })}>Select\n \n \n this.setState({ editingStep: 1 })}>Authorize\n \n \n
\n
\n\n {editingStep === 0 && (\n
\n
\n {backOffices.map(firm => {\n return (\n this.setState({ showAuthorizationModal: true, authorizationModalProvider: { name: provider.name, date: provider.authorizedDate } })}\n />\n );\n })}\n
\n
\n )}\n\n {editingStep === 1 && this.authorizationStepCompose()}\n\n
\n {this.buttonsCompose()}\n
\n\n 600 ? 'Authorization Agreement' : 'Authorization'}\n onCloseModal={() => this.setState({ showAuthorizationModal: false, authorizationModalProvider: { name: '', date: null } })}\n maxWidth='md'\n actionButtons={[\n {\n label: 'Print',\n action: this.printAuthorization,\n buttonType: 'contained',\n },\n {\n label: 'Close',\n action: () => this.setState({ showAuthorizationModal: false, authorizationModalProvider: { name: '', date: null } })\n },\n ]}\n >\n \n \n \n );\n }\n}\n\nexport default connect(select, { backOfficesUpdate, notificationShow })(sizify(ExternalProvidersCard));\n","/*\n*\n* PortfolioDataCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep, findIndex, isEqual } from 'lodash';\n\nimport { portfolioProvidersUpdate } from '../../actions';\n\nimport {\n Card,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\nimport { Button } from '@mui/material';\nimport ProviderTile from '../ProviderTile';\n\nimport styles from './styles.module.css';\n\n\nexport class PortfolioDataCard extends React.Component {\n\n static propTypes = {\n portfolioProviders: PropTypes.array.isRequired,\n afterSave: PropTypes.func.isRequired,\n portfolioProvidersUpdate: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n };\n\n state = {\n editing: false,\n providers: [],\n loading: false,\n };\n\n onTileClick = (provider) => {\n const updatedProviders = cloneDeep(this.state.providers);\n const index = findIndex(updatedProviders, { id: provider.id });\n if (index > -1) {\n updatedProviders[index].enabled = !updatedProviders[index].enabled;\n }\n\n this.setState({\n providers: updatedProviders,\n });\n }\n\n selectedProvidersGet = () => {\n return this.state.providers.filter(provider => provider.enabled);\n }\n\n updateProvidersHandle = () => {\n this.setState({ loading: true });\n const selectedProviderCodes = this.selectedProvidersGet().map(provider => provider.id);\n this.props.portfolioProvidersUpdate(selectedProviderCodes)\n .then(() => {\n this.props.notificationShow('Portfolio Providers updated.', 'success');\n this.setState({\n editing: false,\n loading: false,\n providers: this.props.portfolioProviders,\n }, () => {\n this.props.afterSave(this.selectedProvidersGet());\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n componentDidMount() {\n this.setState({\n providers: this.props.portfolioProviders,\n });\n }\n\n render() {\n const { editing, providers, loading } = this.state;\n\n /* eslint-disable indent */\n return (\n \n
\n {providers.map(provider => {\n return (\n \n );\n })}\n
\n
\n {editing\n ? [\n this.setState({ editing: false, providers: this.props.portfolioProviders })}\n disabled={loading}\n >\n Cancel\n ,\n \n \n Save\n \n ,\n ]\n : this.setState({ editing: true })}\n >\n Edit\n \n }\n
\n \n );\n /* eslint-enable indent */\n }\n}\n\nexport default connect(null, { portfolioProvidersUpdate, notificationShow })(PortfolioDataCard);\n","/*\n*\n* SetupData Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { backOfficesGet, portfolioProvidersGet } from '../actions';\n\nimport {\n LoadingOverlay,\n sizify,\n notificationShow,\n Modal,\n} from '@frontend/common';\n\nimport ExternalProvidersCard from './ExternalProvidersCard';\nimport PortfolioDataCard from './PortfolioDataCard';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n backOffices: state.manageData.backOffices,\n portfolioProviders: state.manageData.portfolioProviders,\n});\n\nexport class SetupData extends React.Component {\n\n static propTypes = {\n backOffices: PropTypes.array.isRequired,\n backOfficesGet: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n portfolioProviders: PropTypes.array.isRequired,\n portfolioProvidersGet: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n showUpdateAccountsModal: false,\n };\n\n componentDidMount() {\n if (this.props.backOffices.length === 0 || this.props.portfolioProviders.length === 0) {\n this.setState({ loading: true });\n Promise.all([\n this.props.backOfficesGet(),\n this.props.portfolioProvidersGet(),\n ])\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n const { loading, showUpdateAccountsModal } = this.state;\n if (loading) {\n return (\n // There are no CSS styles for SetupData_loading\n
\n \n
\n );\n }\n\n return (\n
\n selectedProviders.length > 0 ? this.setState({ showUpdateAccountsModal: true }) : null }\n />\n\n selectedProviders.length > 0 ? this.setState({ showUpdateAccountsModal: true }) : null }\n />\n\n this.setState({ showUpdateAccountsModal: false })}\n actionButtons={[\n {\n label: 'Update',\n action: () => this.props.history.push('/manage-data/accounts'),\n buttonType: 'contained',\n },\n {\n label: 'Not Now',\n action: () => this.setState({ showUpdateAccountsModal: false, editing: false, editingStep: 0 }),\n },\n ]}\n >\n Would you like to update the list of my529 accounts to be included in either the direct data feed to external service providers or the manual download?\n \n
\n );\n }\n}\n\nexport default connect(select, {\n backOfficesGet,\n portfolioProvidersGet,\n notificationShow,\n})(withRouter(sizify(SetupData)));\n","/*\n*\n* PortfolioDataDownload Component\n*\n*/\n/* eslint-disable newline-per-chained-call */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\n\nimport { portfolioProvidersGet, portfolioDataDownload } from '../actions';\nimport { saveFile } from 'utils/helpers/files';\nimport languageConfig from './languageConfig';\n\nimport {\n LoadingOverlay,\n Card,\n DatePicker,\n notificationShow,\n} from '@frontend/common';\nimport {\n Radio,\n RadioGroup,\n FormControlLabel,\n Button,\n} from '@mui/material';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n providers: state.manageData.portfolioProviders,\n oldestSelectableDate: state.static.environmentVars.downloadPortfolioData.oldestSelectableDate\n});\n\nexport class PortfolioDataDownload extends React.Component {\n\n static propTypes = {\n providers: PropTypes.array.isRequired,\n portfolioProvidersGet: PropTypes.func.isRequired,\n portfolioDataDownload: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n oldestSelectableDate: PropTypes.oneOf([PropTypes.object, PropTypes.string]).isRequired,\n };\n\n state = {\n loading: false,\n downloadLoading: false,\n selectedProvider: '',\n startDate: this.previousBusinessDayGet(dayjs()).toDate(),\n endDate: this.previousBusinessDayGet(dayjs()).toDate(),\n errors: {\n endDate: '',\n startDate: ''\n },\n };\n\n dateRangeVerify = () => {\n const { startDate, endDate } = this.state;\n const dateDiff = dayjs(endDate).diff(dayjs(startDate), 'day');\n let weekendCount = 0;\n const errors = {\n endDate: '',\n startDate: ''\n };\n\n const { oldestSelectableDate } = this.props;\n const yesterday = dayjs().subtract(1, 'day');\n\n for (let i = dateDiff; i > 0; i--) {\n const day = dayjs(endDate).subtract(i, 'day');\n if (day.day() === 0 || day.day() === 6) {\n weekendCount++;\n }\n }\n\n if (!dayjs(startDate).isBetween(oldestSelectableDate, yesterday, null, '[]')) {\n errors.startDate = `Start date must occure between ${dayjs(oldestSelectableDate).format('MM/DD/YYYY')} and ${dayjs(yesterday).format('MM/DD/YYYY')}`;\n }\n\n if (endDate < startDate) {\n errors.endDate = 'End date must occur after start date.';\n }\n else if ((dateDiff - weekendCount) >= 30) {\n errors.endDate = 'Date must occur within 30 weekdays after start date.';\n }\n else if (!dayjs(endDate).isBetween(startDate, yesterday, null, '[]')) {\n errors.endDate = `End date must occure between ${dayjs(startDate).format('MM/DD/YYYY')} and ${dayjs(yesterday).format('MM/DD/YYYY')}`;\n }\n\n this.setState({ errors });\n const errorMessages = Object.values(errors).find(val => val);\n return !errorMessages || errorMessages.length === 0;\n }\n\n downloadDataHandle = () => {\n if (this.dateRangeVerify()) {\n this.setState({ downloadLoading: true });\n const { selectedProvider, startDate, endDate } = this.state;\n this.props.portfolioDataDownload(selectedProvider, startDate, endDate)\n .then(({ payload: { data, headers, status } }) => {\n /* \n Blob response type must be set by axios post request in actions and api errors are handled by middleware now.\n There is no other way to change the download file name in a blob so Steven's solution saveFile() is good.\n But this requires backend to set 'Access-Control-Expose-Headers' to expose'content-disposition' header where the file name is extracted from\n otherwise browser CORS rules will remove it.\n */\n if (status === 200) {\n const fileName = headers['content-disposition'].split('filename=')[1].split('.zip')[0];\n saveFile(data, fileName);\n }\n else if (status === 400) {\n // Since this API call mandates that the data come back formatted as a blob, the JSON data \n // is tucked into that blob. This unwraps that and converts the Blob to JSON.\n const fr = new FileReader();\n fr.onload = (e) => {\n const jsonArray = JSON.parse(e.target.result);\n jsonArray.forEach(error => this.props.notificationShow(error.Message, 'error'));\n };\n fr.readAsText(data);\n }\n\n })\n .catch(() => null)\n .finally(() => this.setState({ downloadLoading: false }));\n }\n }\n\n enabledProvidersGet(providers) {\n return providers.filter(provider => provider.enabled);\n }\n\n languageCompose() {\n const config = languageConfig[this.state.selectedProvider];\n if (config) {\n return (\n
\n The {config.interfaceName} allows you to import your clients' account information into {config.toolName}.\n Click the button below to download several files bundled into one importable ".zip" archive that contains relevant account data as of a specified date.\n
\n );\n }\n\n return null;\n }\n\n previousBusinessDayGet(dayjsDate) {\n if (dayjsDate.day() === 0 || dayjsDate.day() === 1) {\n return dayjsDate.subtract(dayjsDate.day() === 1 ? 3 : 2, 'day');\n }\n\n return dayjsDate.subtract(1, 'day');\n }\n\n shouldDisableDate(date) {\n return date.day() === 0 || date.day() === 6;\n }\n\n componentDidMount() {\n if (this.props.providers.length === 0) {\n this.setState({ loading: true });\n this.props.portfolioProvidersGet()\n .then(() => {\n const enabledProviders = this.enabledProvidersGet(this.props.providers);\n this.setState({\n loading: false,\n selectedProvider: enabledProviders.length === 1 ? enabledProviders[0].id : '',\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n else {\n const enabledProviders = this.enabledProvidersGet(this.props.providers);\n if (enabledProviders.length === 1) {\n this.setState({\n selectedProvider: enabledProviders[0].id,\n });\n }\n }\n }\n\n render() {\n const { loading, downloadLoading, selectedProvider, startDate, endDate, errors } = this.state;\n const { providers, oldestSelectableDate } = this.props;\n const enabledProviders = this.enabledProvidersGet(providers);\n const yesterday = dayjs().subtract(1, 'day');\n\n if (loading) {\n return (\n // There are no CSS styles for PortfolioDownload_container\n
\n \n
\n );\n }\n\n /* eslint-disable indent */\n return (\n
\n \n {enabledProviders.length > 1\n ?\n this.setState({ selectedProvider })}\n >\n {enabledProviders.map(provider => (\n }\n />\n ))}\n \n :\n enabledProviders.length === 1 && (
{enabledProviders[0].name}
)\n }\n {this.languageCompose()}\n
\n this.setState({ startDate: startDate ? startDate.toDate() : null, errors: {} })}\n shouldDisableDate={this.shouldDisableDate}\n minDate={oldestSelectableDate}\n maxDate={yesterday}\n error={Boolean(errors.startDate)}\n helperText={errors.startDate}\n disabled={downloadLoading}\n />\n this.setState({ endDate: endDate ? endDate.toDate() : null, errors: {} })}\n shouldDisableDate={this.shouldDisableDate}\n minDate={oldestSelectableDate}\n maxDate={yesterday}\n error={Boolean(errors.endDate)}\n helperText={errors.endDate}\n disabled={downloadLoading}\n />\n
\n
\n \n \n Download\n \n \n
\n \n
\n );\n /* eslint-enable indent */\n }\n}\n\nexport default connect(select, {\n portfolioProvidersGet,\n portfolioDataDownload,\n notificationShow,\n})(PortfolioDataDownload);\n","/*\n*\n* ManageData Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Switch, Route } from 'react-router-dom';\n\nimport AccountsToExport from './AccountsToExport';\nimport SetupData from './SetupData';\nimport PortfolioDataDownload from './PortfolioDataDownload';\nimport PageNotFound from 'components/Features/protected/PageNotFound';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nconst select = (state) => ({\n permissions: state.session.permissions,\n webMessages: state.static.webMessages,\n});\n\n\nexport class ManageData extends React.Component {\n\n static propTypes = {\n permissions: PropTypes.object.isRequired,\n webMessages: PropTypes.object.isRequired,\n };\n\n render() {\n const { setupData, downloadData } = this.props.permissions;\n const { webMessages } = this.props;\n return (\n

\n \n \n {setupData && ()}\n {downloadData && ()}\n {setupData && ()}\n \n \n
\n );\n }\n}\n\nexport default connect(select, {})(ManageData);\n","/*\n*\n* LPOASettings Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEmpty } from 'lodash';\n\nimport { lpoaSettingsGet } from 'components/Features/protected/ManageLPOA/actions';\nimport { permissionGet } from 'utils/config/permissions_details';\n\nimport {\n LoadingOverlay,\n Card,\n InfoIcon,\n properCase,\n} from '@frontend/common';\nimport {\n Icon,\n Collapse\n} from '@mui/material';\nimport { primaryContactDescription } from 'components/Features/protected/ManageUsers/PrimaryContact';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n lpoaSettings: state.manageLPOA.settings,\n claims: state.session.claims,\n staticDocs: state.static.documents,\n users: state.manageUsers.users,\n});\n\n\nexport class LPOASettings extends React.Component {\n\n static propTypes = {\n lpoaSettings: PropTypes.object.isRequired,\n lpoaSettingsGet: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n staticDocs: PropTypes.object.isRequired,\n users: PropTypes.object.isRequired,\n };\n\n state = {\n loading: false,\n defaultPrimaryContact: this.props.claims.DefaultPrimaryContactName,\n showAuthorizationInstructions: false,\n };\n\n settingCompose(settingKey) {\n const settingConfig = permissionGet(settingKey);\n const settingEnabled = this.props.lpoaSettings[settingKey];\n\n if (settingConfig.label) {\n return (\n
\n
\n {settingConfig.label}\n \n
\n \n {settingEnabled\n ? done\n : clear\n }\n \n
\n );\n }\n\n return null;\n }\n\n componentDidMount() {\n const { claims, lpoaSettings, lpoaSettingsGet, users, } = this.props;\n\n if (Object.keys(lpoaSettings).length === 0) {\n this.setState({ loading: true });\n lpoaSettingsGet()\n .catch(() => null)\n .finally(() => this.setState({ loading: false }));\n }\n\n if (!isEmpty(users)) {\n let defaultPrimaryContact = Object.values(users).filter(user => user.IsDefaultPrimaryContact)[0] || null;\n defaultPrimaryContact = defaultPrimaryContact ? defaultPrimaryContact : claims.MasterAdminName;\n this.setState({ defaultPrimaryContact });\n }\n }\n\n render() {\n const { LPOAAuthorizationCode, MasterAdminName } = this.props.claims;\n const { defaultPrimaryContact, showAuthorizationInstructions } = this.state;\n\n /* eslint-disable indent */\n return (\n
\n \n \n
\n {MasterAdminName && (\n
\n Master Admin\n {properCase(MasterAdminName)}\n
\n )}\n {defaultPrimaryContact && (\n
\n
\n Default Primary Contact\n \n
\n {properCase(defaultPrimaryContact)}\n
\n )}\n
\n
Level 1
\n
\n
\n
\n {permissionGet('AllowView').label}\n
\n \n done\n \n
\n
\n
\n
Level 2
\n
\n {this.settingCompose('AllowContribute')}\n {this.settingCompose('AllowOptionChange')}\n {this.settingCompose('AllowTransfer')}\n
\n
\n
Level 3
\n
\n {this.settingCompose('AllowWithdraw')}\n
\n
\n
Tax Documents
\n
\n {this.settingCompose('AllowViewStateTaxDocuments')}\n {this.settingCompose('AllowViewFederalTaxDocuments')}\n
\n
\n \n \n \n
\n
\n {LPOAAuthorizationCode\n ? [\n {LPOAAuthorizationCode},\n this.setState({ showAuthorizationInstructions: !showAuthorizationInstructions })}\n >\n {showAuthorizationInstructions ? 'clear' : 'help_outline'}\n \n ]\n : Not enabled.\n }\n
\n {(LPOAAuthorizationCode) && (\n \n
\n Your clients may grant limited power of attorney authority to your firm through their my529 Account Access\n if you provide them with this Limited Power of Attorney (LPOA) Online Authorization Code. You may wish to include \n these instructions\n  when communicating this code to your clients.\n
\n
\n )}\n
\n \n
\n );\n /* eslint-enable indent */\n }\n}\n\nexport default connect(select, { lpoaSettingsGet })(LPOASettings);\n","/*\n*\n* BulkOptionChange Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport {\n Card,\n notificationShow,\n LoadingOverlay,\n InfoIcon,\n Dropdown,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport {\n Stepper,\n Step,\n StepButton,\n Button,\n Input,\n FormControlLabel,\n RadioGroup,\n Radio,\n} from '@mui/material';\n\nimport {\n STATIC,\n ENROLLMENTDATE,\n CUSTOMIZED_AGEBASED_TEMPLATES,\n CUSTOMIZED_STATIC_TEMPLATES,\n} from '../Accounts/Transactions/OptionChanges/NewOptions/constants';\n\nimport { customOptionsGet, optionsGet } from 'components/AppRoot/StaticResources/actions';\nimport { getCandidatesForBulkOptionChange, createBulkOptionChange } from '../Accounts/actions';\n\nimport events from 'utils/ga';\n\nimport TermsAndConditions from '../Accounts/Transactions/OptionChanges/TermsAndConditions';\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n customStaticOptions: state.static.customStaticOptions,\n customAgeBasedOptions: state.static.customAgeBasedOptions,\n predefinedOptions: state.static.options.filter(opt => (opt.name.search('Customized') === -1)),\n candidates: state.accounts.bulkOptionChangeCandidates,\n documents: state.static.documents,\n webMessages: state.static.webMessages,\n});\n\nexport class BulkOptionChange extends React.Component {\n static propTypes = {\n webMessages: PropTypes.object.isRequired,\n customOptionsGet: PropTypes.func.isRequired,\n optionsGet: PropTypes.func.isRequired,\n customStaticOptions: PropTypes.array.isRequired,\n customAgeBasedOptions: PropTypes.array.isRequired,\n predefinedOptions: PropTypes.array.isRequired,\n notificationShow: PropTypes.func.isRequired,\n candidates: PropTypes.arrayOf(PropTypes.shape({\n // Ids\n AccountGroupId: PropTypes.number.isRequired,\n AccountId: PropTypes.number.isRequired,\n AccountNumber: PropTypes.number.isRequired,\n // Names + meta\n Agent: PropTypes.string.isRequired,\n Beneficiary: PropTypes.string.isRequired,\n OptionName: PropTypes.string.isRequired,\n RemainingOptionChanges: PropTypes.number.isRequired,\n // Flags\n AccountGroupConflict: PropTypes.bool.isRequired,\n OptionChangePendingConflict: PropTypes.bool.isRequired,\n OptionConflict: PropTypes.bool.isRequired,\n })).isRequired,\n getCandidatesForBulkOptionChange: PropTypes.func.isRequired,\n createBulkOptionChange: PropTypes.func.isRequired,\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n }).isRequired,\n documents: PropTypes.object.isRequired,\n };\n\n state = {\n stepIndex: 0,\n loading: true,\n isLoadingSubmit: false,\n selectedCategoryName: '',\n selectedOptionId: '',\n optionCategories: [],\n isLoadingAccounts: false,\n selectableCandidates: [],\n selectedCandidateIds: [],\n termsChecked: [false, false],\n accountSelection: 'none',\n accountGroupConflicts: 0,\n optionChangePendingConflicts: 0,\n optionConflicts: 0,\n zeroOptionChanges: 0,\n };\n\n onOptionCategoryChange = value => {\n this.setState({\n selectedCategoryName: value,\n selectedOptionId: '',\n });\n };\n\n onOptionChange = value => {\n this.setState({\n selectedOptionId: value,\n isLoadingAccounts: true,\n });\n const queryKey = this.state.selectedCategoryName === STATIC ? 'optionId' : 'customTemplateHeaderId';\n this.props.getCandidatesForBulkOptionChange(`?${queryKey}=${value}`).then(this.prepareCandidates);\n };\n\n prepareCandidates = () => {\n const { selectedCandidateIds } = this.state;\n const { candidates } = this.props;\n const newSelectableCandidates = candidates.filter(candidate =>\n !(candidate.AccountGroupConflict || candidate.OptionChangePendingConflict || candidate.OptionConflict) &&\n candidate.RemainingOptionChanges > 0\n );\n const newSelectableIds = newSelectableCandidates.map(candidate => candidate.AccountId);\n const newSelectedIds = selectedCandidateIds.filter(selectedId => newSelectableIds.includes(selectedId));\n\n\n this.setState({\n isLoadingAccounts: false,\n selectableCandidates: newSelectableCandidates.map(account => {\n if (newSelectedIds.includes(account.AccountId)) {\n return {\n ...account,\n selected: true\n };\n }\n return {\n ...account,\n selected: false\n };\n }),\n selectedCandidateIds: newSelectedIds,\n accountSelection: this.accountSelectionGet(newSelectedIds, newSelectableCandidates),\n accountGroupConflicts: candidates.reduce((sum, candidate) => candidate.AccountGroupConflict ? sum + 1 : sum, 0),\n optionChangePendingConflicts: candidates.reduce((sum, candidate) => candidate.OptionChangePendingConflict ? sum + 1 : sum, 0),\n optionConflicts: candidates.reduce((sum, candidate) => candidate.OptionConflict ? sum + 1 : sum, 0),\n zeroOptionChanges: candidates.reduce((sum, candidate) => candidate.RemainingOptionChanges === 0 ? sum + 1 : sum, 0),\n });\n };\n\n handleNextStep = () => {\n const { createBulkOptionChange, notificationShow, history, } = this.props;\n const { stepIndex, selectedCategoryName, selectedOptionId, selectedCandidateIds, } = this.state;\n if (stepIndex === 2) {\n this.setState({ isLoadingSubmit: true });\n createBulkOptionChange({\n AccountIds: selectedCandidateIds,\n [selectedCategoryName === STATIC || selectedCategoryName === ENROLLMENTDATE ? 'OptionId' : 'CustomTemplateHeaderId']: selectedOptionId,\n }).then(action => {\n const messages = (action.payload.data || []).filter(message => message.MessageType === 1);\n if (messages.length === 0) {\n notificationShow('Bulk Option Change scheduled.', 'success');\n }\n else {\n notificationShow(`Bulk Option Change scheduled for ${selectedCandidateIds - messages.length} of ${selectedCandidateIds} accounts.`, 'warning');\n }\n })\n .catch(() => null)\n .finally(() => {\n this.setState({ isLoadingSubmit: false });\n history.push('/');\n });\n }\n else {\n this.setState({\n stepIndex: stepIndex + 1,\n });\n }\n window.scrollTo(0, 0);\n };\n\n handlePrevStep = () => {\n this.setState({\n stepIndex: this.state.stepIndex - 1,\n });\n window.scrollTo(0, 0);\n };\n\n stepZeroContent = () => {\n const { selectedCategoryName, selectedOptionId, optionCategories } = this.state;\n const selectedCategory = optionCategories.find(category => category.name.search(selectedCategoryName) !== -1);\n return (\n // There are no CSS styles for NewOptions_multipleSelectFieldContainer\n
\n
\n \n ({ value: category.name }))}\n FormControlProps={{ style: { width: '285px' } }}\n InputLabelProps={{ htmlFor: 'optionCategorySelect' }}\n SelectProps={{ inputProps: { id: 'optionCategorySelect' } }}\n />\n \n
\n {(selectedCategoryName !== '' && selectedCategory !== undefined && selectedCategory.options.length > 0) && (\n
\n ({\n value: option.id,\n display: option.name,\n props: { disabled: option.id === '' },\n }))}\n FormControlProps={{ style: { width: '285px' } }}\n InputLabelProps={{ htmlFor: 'optionSelect' }}\n SelectProps={{\n inputProps: { id: 'optionSelect' },\n input: \n }}\n />\n
\n )}\n
\n );\n };\n\n accountSelectionGet = (selectedCandidateIds, selectableCandidates = this.state.selectableCandidates) => {\n if (selectableCandidates.length > 0 && selectedCandidateIds.length === 0) {\n return 'none';\n }\n else if (selectedCandidateIds.length !== selectableCandidates.length ||\n (this.state.accountSelection === 'some' && selectedCandidateIds.length > 0)) {\n return 'some';\n }\n return 'all';\n };\n\n onRadioButtonToggle = (val) => {\n const { selectedCandidateIds, selectableCandidates } = this.state;\n let nextSelected = selectedCandidateIds;\n let nextCandidates = selectableCandidates;\n\n if (val === 'all') {\n nextCandidates = selectableCandidates.map(account => ({\n ...account,\n selected: true,\n }));\n nextSelected = this.state.selectableCandidates.map(candidate => candidate.AccountId);\n }\n else if (val === 'none') {\n nextSelected = [];\n nextCandidates = selectableCandidates.map(account => ({\n ...account,\n selected: false,\n }));\n }\n\n this.setState({\n selectableCandidates: nextCandidates,\n selectedCandidateIds: nextSelected,\n accountSelection: val,\n });\n };\n\n stepOneContent = () => {\n const { accountSelection, selectableCandidates, selectedCandidateIds, isLoadingAccounts,\n accountGroupConflicts, optionChangePendingConflicts, optionConflicts, zeroOptionChanges,\n } = this.state;\n return (\n
\n {selectableCandidates.length < this.props.candidates.length &&\n
\n
\n Accounts not eligible for Bulk Option Change:\n \n
\n
    \n {/* There are no CSS styles for BulkOptionChange_ineligibleCount */}\n {accountGroupConflicts > 0 &&\n
  • \n {accountGroupConflicts} account(s) in account groups (more than one account for the same account owner/beneficiary combination)\n
  • \n }\n {optionChangePendingConflicts > 0 &&\n
  • \n {optionChangePendingConflicts} account(s) with pending option changes\n
  • \n }\n {optionConflicts > 0 &&\n
  • \n {optionConflicts} account(s) already in selected option\n
  • \n }\n {zeroOptionChanges > 0 &&\n
  • \n {zeroOptionChanges} account(s) with no option changes left\n
  • \n }\n
\n
\n }\n
\n
\n this.onRadioButtonToggle(e.target.value)}\n >\n }\n />\n }\n />\n }\n />\n \n
\n
\n \n {selectedCandidateIds.length}\n of {selectableCandidates.length} accounts selected\n
\n
\n
\n {\n const selectedCandidateIds = rows.filter(row => row.selected).map(row => row.AccountId);\n this.setState({\n selectedCandidateIds,\n selectableCandidates: rows,\n accountSelection: this.accountSelectionGet(selectedCandidateIds),\n });\n }}\n columns={[\n {\n key: 'AccountNumber',\n title: 'Account Number',\n type: 'number',\n customStyle: { width: '.75fr' },\n hideOn: ['phone'],\n },\n {\n key: 'Agent',\n title: 'Account Owner / Agent',\n type: 'string',\n },\n {\n key: 'Beneficiary',\n title: 'Beneficiary',\n type: 'string',\n },\n {\n key: 'OptionName',\n title: 'Investment Option',\n type: 'string',\n hideOn: ['phone', 'tablet'],\n customStyle: { width: '1.25fr' },\n },\n {\n key: 'RemainingOptionChanges',\n title: 'Remaining Option Changes',\n type: 'number',\n hideOn: ['phone', 'tablet'],\n customStyle: { width: '125px' },\n },\n ]}\n >\n events.tableSearchAccessed('Bulk Option Change', window.location.pathname)}\n />\n \n \n \n \n \n \n
\n
\n );\n };\n\n stepTwoContent = () => {\n const { termsChecked } = this.state;\n return (\n this.setState({ termsChecked: [!termsChecked[0], termsChecked[1]] }),\n },\n {\n checked: termsChecked[1],\n label: 'I understand that this will send emails for all accounts selected.',\n onCheck: () => this.setState({ termsChecked: [termsChecked[0], !termsChecked[1]] }),\n }\n ]}\n documents={this.props.documents}\n />\n );\n };\n\n stepperContentCompose = () => {\n switch (this.state.stepIndex) {\n case 0: return this.stepZeroContent();\n case 1: return this.stepOneContent();\n case 2: return this.stepTwoContent();\n default: break;\n }\n };\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose = () => {\n const { isLoadingSubmit, selectedOptionId, selectedCandidateIds, termsChecked } = this.state;\n const cancelButton = (\n \n Cancel\n \n );\n const nextButton = (disabled = false) => (\n this.handleNextStep()}\n variant='contained'\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Next\n \n );\n const backButton = (\n this.handlePrevStep()}\n variant='text'\n disabled={isLoadingSubmit}\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Back\n \n );\n const submitButton = (\n this.handleNextStep()}\n variant='contained'\n disabled={!termsChecked.reduce((sum, val) => sum && val, true)}\n style={{ marginLeft: '5px', marginRight: '5px' }}\n >\n Submit\n \n );\n\n let buttons = [];\n switch (this.state.stepIndex) {\n case 0:\n buttons = [\n cancelButton,\n nextButton(selectedOptionId === '')\n ];\n break;\n case 1:\n buttons = [\n cancelButton,\n backButton,\n nextButton(selectedCandidateIds.length === 0)\n ];\n break;\n case 2:\n buttons = [\n cancelButton,\n backButton,\n \n {submitButton}\n \n ];\n break;\n default: break;\n }\n return buttons;\n };\n\n componentDidMount() {\n Promise.all([\n this.props.customOptionsGet(),\n this.props.optionsGet(),\n ]).then(() => {\n const { customAgeBasedOptions, customStaticOptions, predefinedOptions } = this.props;\n const optionCategories = [STATIC, ENROLLMENTDATE];\n\n if (this.props.customStaticOptions.length > 0) {\n optionCategories.splice(2, 0, CUSTOMIZED_STATIC_TEMPLATES);\n }\n if (this.props.customAgeBasedOptions.length > 0) {\n optionCategories.splice(2, 0, CUSTOMIZED_AGEBASED_TEMPLATES);\n }\n\n this.setState({\n optionCategories: optionCategories.map(categoryName => {\n let options;\n switch (categoryName) {\n case STATIC: {\n options = predefinedOptions.filter(option => option.optionType === 'S');\n break;\n }\n\n case ENROLLMENTDATE: {\n options = predefinedOptions.filter(option => option.optionType === 'T');\n break;\n }\n\n case CUSTOMIZED_AGEBASED_TEMPLATES: {\n options = customAgeBasedOptions;\n break;\n }\n\n case CUSTOMIZED_STATIC_TEMPLATES: {\n options = customStaticOptions;\n break;\n }\n default: break;\n }\n return {\n name: categoryName,\n options,\n };\n }),\n loading: false\n });\n })\n .catch(() => null);\n }\n\n render() {\n const { webMessages } = this.props;\n\n return (\n <>\n \n
\n \n \n \n this.setState({ stepIndex: 0 })}>Select New Option\n \n \n this.setState({ stepIndex: 1 })}>Select Accounts\n \n \n this.setState({ stepIndex: 2 })}>Terms & Conditions\n \n \n
\n {this.stepperContentCompose()}\n
\n
\n {this.stepperButtonsCompose()}\n
\n
\n
\n \n );\n }\n}\n\nexport default connect(select, {\n customOptionsGet,\n optionsGet,\n notificationShow,\n getCandidatesForBulkOptionChange,\n createBulkOptionChange,\n})(BulkOptionChange);\n","/*\n*\n* AppTour Component\n*\n*/\n/* eslint-disable quotes */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { saveUserPreference } from 'components/AppRoot/Navigation/actions';\nimport { USER_PREFERENCE_KEYS } from 'components/AppRoot/Navigation/constants';\n\nimport events from 'utils/ga';\n\nimport {\n Dialog,\n DialogContent,\n MobileStepper,\n Button,\n IconButton,\n Icon,\n Tooltip,\n MenuItem,\n Fab,\n} from '@mui/material';\nimport { withStyles, } from '@mui/styles';\nimport { Checkbox } from '@frontend/common';\nimport Tippy from '@tippyjs/react';\n\nimport styles from './styles.module.css';\n\nconst select = ({ session }) => ({\n show: session.isValid && !JSON.parse(session.userPreferences[USER_PREFERENCE_KEYS.hasSeenTour]),\n userId: session.claims.UserId,\n});\n\nconst muiStyles = theme => ({\n stepperRoot: {\n backgroundColor: '#fff',\n },\n stepperDotActive: {\n backgroundColor: theme.palette.secondary.main,\n },\n iconButtonRoot: {\n color: '#000',\n },\n});\n\n\nexport class AppTour extends React.Component {\n\n static propTypes = {\n show: PropTypes.bool.isRequired,\n saveUserPreference: PropTypes.func.isRequired,\n userId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n };\n\n state = {\n setUserPreference: false,\n step: 0,\n showRowMenu: false,\n show: this.props.show || false,\n };\n\n completeTour = () => {\n events.viewAppTourStep(this.state.step === 5 ? 'finish' : 'skip');\n this.setState({ show: false });\n this.state.setUserPreference && this.props.saveUserPreference(this.props.userId, USER_PREFERENCE_KEYS.hasSeenTour, true)\n .catch(() => null);\n }\n\n fabStepCompose() {\n return (\n
\n

Page Actions

\n

Page actions can often be found in a floating button in the bottom right-hand corner. It looks like this (icon may differ):

\n
\n \n \n add\n \n \n
\n
\n );\n }\n\n infoIconStepCompose() {\n return (\n
\n

Additional Information

\n

{\"When additional information is available about a term or feature, you'll see an icon like the one below. Simply hover over the icon to reveal more information.\"}

\n \n info_outline\n \n
\n );\n }\n\n nextStep(totalSteps) {\n const { step } = this.state;\n if (step < totalSteps - 1) {\n events.viewAppTourStep(step + 2);\n this.setState({\n step: step + 1,\n showRowMenu: false,\n });\n }\n }\n\n onKeypress = (e, stepCount) => {\n if (e.keyCode === 39) { // keyboard right\n this.nextStep(stepCount);\n }\n else if (e.keyCode === 37) { // keyboard left\n this.previousStep(stepCount);\n }\n }\n\n previousStep = () => {\n const { step } = this.state;\n if (step !== 0) {\n events.viewAppTourStep((step + 1) - 1);\n this.setState({\n step: step - 1,\n showRowMenu: false,\n });\n }\n };\n\n rowMenuStepCompose() {\n const { showRowMenu } = this.state;\n return (\n
\n

Tables - Row Menu

\n

{\"You will see many data tables throughout the application. Often times, each row will have a menu that can be used to view more details or take an action. The menu icon looks like this:\"}

\n
\n this.setState({ showRowMenu: !showRowMenu })}\n >\n more_vertical\n \n
\n this.setState({ showRowMenu: false })}>View Account\n this.setState({ showRowMenu: false })}>Withdrawals\n
\n
\n
\n );\n }\n\n searchStepCompose() {\n return (\n
\n

Tables - Search and Filter

\n

Data tables will often have the ability to search/filter the data. That is done by clicking on the below icon and typing a search term.

\n \n search\n \n
\n );\n }\n\n siteNavigationStepCompose() {\n return (\n
\n

Site Navigation

\n

The main navigation menu is located in a hidden side drawer. You can reveal the menu by clicking on the icon in the top left-hand corner. It looks like this:

\n \n menu\n \n
\n );\n }\n\n welcomeMessageCompose() {\n return (\n
\n

{'Welcome!'}

\n

{\"Welcome to my529’s suite of Financial Advisor tools! We’re excited to have you here. Before you begin, we would like to highlight a couple features and tools you will be using frequently. Let’s take a look!\"}

\n
\n );\n }\n\n componentDidMount() {\n if (this.props.show) {\n events.viewAppTourStep(1);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { show } = this.props;\n if (prevProps.show !== show) {\n if (show) {\n events.viewAppTourStep(1);\n }\n this.setState({\n show,\n step: 0,\n });\n }\n }\n\n render() {\n const { setUserPreference, step } = this.state;\n const { classes } = this.props;\n const tourSteps = [\n this.welcomeMessageCompose(),\n this.siteNavigationStepCompose(),\n this.rowMenuStepCompose(),\n this.searchStepCompose(),\n this.fabStepCompose(),\n this.infoIconStepCompose(),\n ];\n\n return (\n this.onKeypress(e, tourSteps.length)}\n >\n \n {tourSteps[step]}\n
\n this.nextStep(tourSteps.length)}\n disabled={step === tourSteps.length - 1}\n >\n Next\n keyboard_arrow_right\n \n }\n backButton={\n \n keyboard_arrow_left\n Back\n \n }\n />\n this.setState({ setUserPreference: !setUserPreference })}\n />\n \n
\n
\n \n );\n }\n}\n\nexport default connect(select, { saveUserPreference })(withStyles(muiStyles)(AppTour));\n","/*\n*\n* BulkStatementDownload Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { Button } from '@mui/material';\n\nimport {\n Card,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\n\nimport { \n bulkStatementsAvailableGet,\n bulkStatementsDownloadGet,\n} from './actions';\n\nimport { saveFile } from 'utils/helpers/files';\n\nimport styles from './styles.module.css';\n\nconst select = (state) => ({\n claims: state.session.claims,\n});\n\nexport class BulkStatementDownload extends React.Component {\n static propTypes = {\n bulkStatementsAvailableGet: PropTypes.func.isRequired,\n bulkStatementsDownloadGet: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n };\n\n state = {\n areStatementsAvailable: true,\n isLoading: false,\n };\n\n downloadBulkStatements = () => {\n this.setState({ isLoading: true });\n this.props.bulkStatementsAvailableGet()\n .then(response => {\n this.setState({ areStatementsAvailable: response.payload.data }, () => {\n if (response.payload.data) {\n this.props.notificationShow('Starting download', 'success');\n this.props.bulkStatementsDownloadGet()\n .then(({ payload: { data, headers, status } }) => {\n if (status === 200) {\n const fileName = headers['content-disposition'].split('filename=')[1].split('.zip')[0];\n saveFile(data, fileName);\n }\n });\n }\n else {\n this.props.notificationShow('No statements available', 'error');\n }\n });\n })\n .finally(() => {\n this.setState({ isLoading: false });\n });\n }\n\n render() {\n const { areStatementsAvailable, isLoading } = this.state;\n\n return (\n
\n \n
\n Click here to download the most recent quarterly statements for your firm's linked client accounts.\n Please note that these statements are generated on demand and may be formatted differently from the statement your client receives.\n
\n
\n \n \n Download\n \n \n
\n
\n
\n );\n }\n}\n\nexport default connect(select, {\n bulkStatementsAvailableGet,\n bulkStatementsDownloadGet,\n notificationShow,\n})(BulkStatementDownload);\n","/*\n*\n* BulkStatementDownload actions\n*\n*/\nimport {\n BULK_STATEMENTS_AVAILABLE_GET,\n BULK_STATEMENTS_DOWNLOAD_GET,\n} from './constants';\n\nimport { GETrequest } from 'utils/helpers/api_handler';\n\nexport function bulkStatementsAvailableGet() {\n const response = GETrequest('/Accounts/bulkStatementsAvailable');\n\n return {\n type: BULK_STATEMENTS_AVAILABLE_GET,\n payload: response,\n };\n}\n\nexport function bulkStatementsDownloadGet() {\n const response = GETrequest('/Accounts/bulkStatements', { responseType: 'blob' });\n\n return {\n type: BULK_STATEMENTS_DOWNLOAD_GET,\n payload: response,\n };\n}\n","/*\n*\n* BulkStatementDownload constants\n*\n*/\nexport const BULK_STATEMENTS_AVAILABLE_GET = 'app/Features/protected/BulkStatementDownload/BULK_STATEMENTS_AVAILABLE_GET';\nexport const BULK_STATEMENTS_DOWNLOAD_GET = 'app/Features/protected/BulkStatementDownload/BULK_STATEMENTS_DOWNLOAD_GET';\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport { Button } from '@mui/material';\n\nimport { LoadingOverlay } from '@frontend/common';\n\nimport { resetClaims } from 'components/AppRoot/Navigation/actions';\n\nimport styles from '../../styles.module.css';\n\nexport class Confirmation extends Component {\n\n static propTypes = {\n resetClaims: PropTypes.func.isRequired,\n };\n\n state = {\n isLoading: false,\n };\n\n resetClaims() {\n this.setState({ isLoading: true });\n this.props.resetClaims()\n .then(() => {\n this.props.history.push('/'); // might need saved previous path\n });\n }\n\n render() {\n return (\n <>\n

Congratulations!

\n

You have successfully registered for two factor authentication

\n

When you are later prompted to use 2FA you will be required to enter a security code, or an authenticator app generated security code.

\n
\n \n this.resetClaims()}\n fullWidth\n >\n Done\n \n \n
\n \n );\n }\n}\n\nexport default withRouter(connect(null, {\n resetClaims\n})(Confirmation));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n notificationShow,\n allNotificationsHide\n} from '@frontend/common';\n\nimport {\n twoFactorRegistration,\n twoFactorRegistrationUpdate,\n getTwoFactorToken,\n savePreferredMethod\n} from '../actions';\n\nimport RegisterPhoneAndMethod from './RegisterPhoneAndMethod';\nimport VerifySmsOrCall from './VerifySmsOrCall';\nimport Confirmation from './Confirmation';\nimport RegisterAuthenticator from './RegisterAuthenticator';\n\nimport { userLogout, clearStore } from 'components/AppRoot/Navigation/actions';\nimport { advisorGet } from 'components/Features/protected/MyInfo/actions';\n\nimport { REGISTER_METHODS } from '../constants.js';\nimport { TWO_FACTOR_TYPES } from 'components/AppRoot/Navigation/constants';\n\nimport styles from '../styles.module.css';\n\n// registration steps\nconst REGISTRATION_STEPS = {\n REGISTER_PHONE_AND_METHOD: 'registerPhoneAndMethod',\n VERIFY_SMS_OR_PHONE: 'verifySmsOrPhone',\n VERIFY_OTHER_AUTHORIZATION: 'verifyOtherAuthorization',\n CONFIRMATION: 'confirmation'\n};\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n claims: state.session.claims,\n});\n\nexport class Registration extends Component {\n\n static propTypes = {\n twoFactorRegistration: PropTypes.func.isRequired,\n twoFactorRegistrationUpdate: PropTypes.func.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n claims: PropTypes.object.isRequired,\n savePreferredMethod: PropTypes.func.isRequired,\n advisorGet: PropTypes.func.isRequired,\n };\n\n state = {\n isLoading: false,\n registrationStep: REGISTRATION_STEPS.REGISTER_PHONE_AND_METHOD, // TODO: will change with preferred method\n method: '',\n phoneNumber: '',\n };\n\n logOut = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.notificationShow('You have logged out.', 'success');\n this.props.clearStore();\n this.props.history.push('/login');\n });\n }\n\n onRegisterPhoneAndMethodSubmit = ({ phoneNumber, method }, hasError) => {\n this.setState({ method, phoneNumber });\n\n if (!hasError) {\n // clear all error toasts\n this.props.allNotificationsHide();\n\n const regParams = {\n countryCode: '+1', // always US\n phoneNumber,\n emailAddress: this.props.userDetails.email,\n verificationMethod: method\n };\n\n this.setState({ isLoading: true });\n this.props.twoFactorRegistration(regParams)\n .then(() => {\n switch (method) {\n // only sms and call will need api call to push security code to user's phone\n case REGISTER_METHODS.SMS:\n case REGISTER_METHODS.CALL:\n this.props.getTwoFactorToken(method)\n .then(() => this.setState({ isLoading: false, registrationStep: REGISTRATION_STEPS.VERIFY_SMS_OR_PHONE }))\n .catch(() => this.setState({ isLoading: false }));\n break;\n case REGISTER_METHODS.INAPPTOKEN:\n this.setState({ isLoading: false, registrationStep: REGISTRATION_STEPS.VERIFY_OTHER_AUTHORIZATION });\n break;\n\n default: // do nothing;\n }\n })\n .catch(() => {\n this.setState({ isLoading: false });\n });\n }\n }\n\n onVerificationSuccess = () => {\n // save 2FA user preferences\n const params = {\n AlwaysRequired: false, // assuming user has no saying in their user preferences\n PreferredMethod: this.state.method // submits selected method based on if text or phone is chosen\n };\n this.setState({ isLoading: true });\n // also get advisor details with PIN here\n Promise.all([this.props.savePreferredMethod(params), this.props.advisorGet()])\n .then(() => {\n // process again and will throw an error on submitting already registered user.\n this.setState({ registrationStep: REGISTRATION_STEPS.CONFIRMATION, isLoading: false });\n })\n .catch(() => this.setState({ isLoading: false }));\n }\n\n render() {\n const { isLoading, registrationStep, method, phoneNumber } = this.state;\n\n let render2FARegistrationStep;\n\n const useAnotherMethodButton = () => (\n
\n this.setState({ registrationStep: REGISTRATION_STEPS.REGISTER_PHONE_AND_METHOD })}\n >\n Use another method\n \n
\n );\n\n const cancelButton = () => (\n
\n \n Cancel\n \n
\n );\n\n switch (registrationStep) {\n case REGISTRATION_STEPS.REGISTER_PHONE_AND_METHOD:\n render2FARegistrationStep = (\n <>\n \n {cancelButton()}\n \n );\n break;\n\n case REGISTRATION_STEPS.VERIFY_SMS_OR_PHONE:\n render2FARegistrationStep = (\n <>\n \n {useAnotherMethodButton()}\n {cancelButton()}\n \n );\n break;\n\n case REGISTRATION_STEPS.VERIFY_OTHER_AUTHORIZATION:\n render2FARegistrationStep = (\n <>\n \n {useAnotherMethodButton()}\n {cancelButton()}\n \n );\n break;\n\n case REGISTRATION_STEPS.CONFIRMATION:\n render2FARegistrationStep = (\n <>\n \n \n );\n break;\n\n default: // do nothing\n }\n\n return (\n
\n\n {render2FARegistrationStep}\n\n
\n window.open('https://my529.org/faq-two-factor-authentication/', '_blank', 'noopener noreferrer')}\n className={styles.buttons}\n >\n Learn More\n \n
\n\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n twoFactorRegistration,\n twoFactorRegistrationUpdate,\n getTwoFactorToken,\n userLogout,\n clearStore,\n notificationShow,\n allNotificationsHide,\n savePreferredMethod,\n advisorGet,\n})(Registration));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { pinValidator } from 'utils/helpers/form_validation';\nimport { alphaNumericOnly } from 'utils/helpers/sanitation';\n\nimport {\n Button,\n TextField,\n Slide\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow\n} from '@frontend/common';\n\nimport {\n verifyPIN,\n} from '../actions';\n\nimport {\n clearStore,\n userLogout,\n} from 'components/AppRoot/Navigation/actions';\n\nimport styles from '../styles.module.css';\n\nconst select = (state) => ({\n claims: state.session.claims,\n PINVerification: state.multifactor.PINVerification,\n});\n\nexport class VerifyIdentity extends Component {\n\n static propTypes = {\n clearStore: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n verifyPIN: PropTypes.func.isRequired,\n PINVerification: PropTypes.object.isRequired,\n };\n\n state = {\n isLoading: false,\n PIN: '',\n PINError: '',\n regMethod: '',\n };\n\n onInputChange = (name, value) => {\n this.setState({ [name]: value, PINError: '' });\n }\n\n onPINSubmit = (e) => {\n e.preventDefault();\n const { PIN } = this.state;\n const PINError = pinValidator(PIN);\n if (PINError) {\n this.setState({ PINError });\n }\n else {\n this.setState({ isLoading: true });\n // strip non alpha-numeric characters to prevent SQL injection\n const sanitizedPIN = alphaNumericOnly(PIN);\n this.props.verifyPIN(sanitizedPIN)\n .then(() => {\n const { IdentityVerified, LockedOut } = this.props.PINVerification;\n if (LockedOut) { // 2 bad PIN's provided\n this.setState({ isLoading: false });\n this.props.notificationShow('You are unable to verify your identity at this time. Please try again after 30 minutes.', 'error');\n setTimeout(() => this.logOut(), 4000);\n }\n else if (IdentityVerified) { // Good PIN\n // redirect user to 2FA registration\n this.props.history.push('/multifactor/register');\n }\n else {\n this.setState({\n isLoading: false,\n PINError: 'PIN is incorrect.'\n });\n }\n });\n }\n }\n\n renderPIN() {\n const { PIN, PINError, isLoading } = this.state;\n\n return (\n \n

The device you are using is not registered with my529. Verify your identity by entering in your unique advisor PIN.

\n
\n this.onInputChange('PIN', e.target.value || '')}\n value={PIN}\n variant='filled'\n inputProps={{ style: { textAlign: 'center' } }}\n autoFocus\n />\n
\n
\n \n \n Verify your pin\n \n \n
\n\n\n \n );\n }\n\n logOut = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.notificationShow('You have logged out.', 'success');\n });\n this.props.clearStore();\n this.props.history.push('/login');\n }\n\n render() {\n return (\n
\n

Verify Your Identity

\n\n {this.renderPIN()}\n\n window.open('https://my529.org/faq-two-factor-authentication/', '_blank', 'noopener noreferrer')}\n >\n Learn More\n
\n
\n );\n }\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nexport default withRouter(connect(select, {\n clearStore,\n userLogout,\n notificationShow,\n verifyPIN,\n})(VerifyIdentity));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { phoneLastFour } from 'utils/helpers/sanitation';\n\nimport {\n Button,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n} from '@frontend/common';\n\n\nimport {\n getTwoFactorToken,\n} from '../../actions';\n\nimport { REGISTER_METHODS } from '../../constants';\n\nimport styles from '../../styles.module.css';\n\nconst msg_send_security_code = (fourDigits) => `Send a security code to (***) ***-${fourDigits}`;\n\nexport class PhoneMethods extends Component {\n\n static propTypes = {\n preferredMethod: PropTypes.string.isRequired,\n phoneNumber: PropTypes.string.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n onSubmitPhoneSuccess: PropTypes.func.isRequired,\n };\n\n state = {\n isLoading: false,\n selectedMethod: this.props.preferredMethod,\n phoneNumber: '',\n selectedMethodError: '',\n };\n\n submitPhoneMethod() {\n const { getTwoFactorToken, onSubmitPhoneSuccess } = this.props;\n const { selectedMethod } = this.state;\n\n if (selectedMethod === REGISTER_METHODS.SMS || selectedMethod === REGISTER_METHODS.CALL) {\n this.setState({ isLoading: true });\n getTwoFactorToken(selectedMethod)\n .then(() => {\n this.setState({ isLoading: false });\n onSubmitPhoneSuccess(selectedMethod);\n });\n }\n else {\n this.setState({ selectedMethodError: 'Please select an option.' });\n }\n }\n\n render() {\n const { phoneNumber } = this.props;\n const { selectedMethod, selectedMethodError, isLoading } = this.state;\n\n return (\n
\n

{msg_send_security_code(phoneLastFour(phoneNumber))}

\n
\n this.setState({ selectedMethod: e.target.value })}>\n } label='Text Me' />\n } label='Call Me' style={{ marginTop: '5px' }} />\n \n {selectedMethodError}\n
\n\n \n this.submitPhoneMethod()}\n >\n Request code\n \n \n
\n );\n }\n}\n\nexport default connect(null, {\n getTwoFactorToken,\n})(PhoneMethods);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { phoneLastFour } from 'utils/helpers/sanitation';\n\nimport SubmitToken from '../../SubmitToken';\n\nimport { userLogout, clearStore } from 'components/AppRoot/Navigation/actions';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow\n} from '@frontend/common';\n\nimport {\n getTwoFactorToken,\n} from '../../actions';\n\nimport { REGISTER_METHODS } from '../../constants';\n\nimport styles from '../../styles.module.css';\n\nconst msg_security_code = (fourDigits) => `We sent a security code to (***) ***-${fourDigits}`;\nconst msg_we_called = (fourDigits) => `We called (***) ***-${fourDigits} with a security code`;\n\nexport class PhoneAuthenticate extends Component {\n\n static propTypes = {\n phoneNumber: PropTypes.string.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n selectedMethod: PropTypes.string.isRequired,\n onVerificationSuccess: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n };\n\n state = {\n isSubmitting: false,\n attemptWarning: '',\n isResubmitting: false,\n };\n\n reSubmitPhoneCode() {\n const { selectedMethod } = this.props;\n this.setState({ isResubmitting: true, attemptWarning: '' });\n this.props.getTwoFactorToken(selectedMethod);\n setTimeout(() => {\n this.setState({ isResubmitting: false });\n }, 5000);\n }\n\n logOut = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.notificationShow('You have logged out.', 'success');\n });\n this.props.clearStore();\n this.props.history.push('/login');\n }\n\n render() {\n const { phoneNumber, selectedMethod, onVerificationSuccess } = this.props;\n const { isResubmitting, isSubmitting } = this.state;\n const sendConfirmMsg = selectedMethod === REGISTER_METHODS.CALL ? msg_we_called(phoneLastFour(phoneNumber)) : msg_security_code(phoneLastFour(phoneNumber));\n let resubmitBtn;\n switch (selectedMethod) {\n case REGISTER_METHODS.CALL:\n resubmitBtn = isResubmitting ? 'calling...' : 'call me again';\n break;\n case REGISTER_METHODS.SMS:\n resubmitBtn = isResubmitting ? 'sending...' : 'resend code';\n break;\n default: break;\n }\n\n return (\n
\n

Security Code

\n {sendConfirmMsg}\n\n this.setState({ isSubmitting })}\n onVerificationSuccess={() => onVerificationSuccess(selectedMethod)}\n onVerificationFail={this.logOut}\n />\n\n \n this.reSubmitPhoneCode()}\n >\n {resubmitBtn}\n \n \n\n
\n );\n }\n}\n\nexport default connect(null, {\n getTwoFactorToken,\n notificationShow,\n userLogout,\n clearStore\n})(PhoneAuthenticate);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport PhoneMethods from './PhoneMethods';\nimport PhoneAuthenticate from './PhoneAuthenticate';\nimport SubmitToken from '../SubmitToken';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n notificationShow,\n} from '@frontend/common';\n\nimport {\n getPreferredMethod,\n savePreferredMethod,\n} from '../actions';\nimport { advisorGet } from 'components/Features/protected/MyInfo/actions';\n\nimport { resetClaims, userLogout, clearStore } from 'components/AppRoot/Navigation/actions';\n\nimport { REGISTER_METHODS } from '../constants';\n\nimport styles from '../styles.module.css';\n\nconst select = (state) => ({\n claims: state.session.claims,\n});\n\nconst AUTHENTICATION_STEPS = {\n SHOW_SMS_OR_CALL_SELECTION: 'SHOW_SMS_OR_CALL_SELECTION',\n PHONE_AUTH: 'PHONE_AUTH',\n SHOW_OTHER_AUTHENTICATOR: 'SHOW_OTHER_AUTHENTICATOR',\n};\n\nexport class Authentication extends Component {\n\n static propTypes = {\n claims: PropTypes.object.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n savePreferredMethod: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n resetClaims: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n advisorGet: PropTypes.func.isRequired,\n };\n\n state = {\n isLoading: false,\n selectedMethod: '',\n authenticationStep: '',\n phoneNumber: '',\n attemptWarning: '',\n token: '',\n isResubmitting: false,\n verifiedAppCode: false,\n };\n\n resetClaims() {\n this.props.resetClaims()\n .then(() => {\n this.props.history.push('/'); // might need saved previous path\n });\n }\n\n logOut = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.notificationShow('You have logged out.', 'success');\n });\n this.props.clearStore();\n this.props.history.push('/login');\n };\n\n onVerificationSuccess = (selectedMethod) => {\n const params = {\n AlwaysRequired: false, // assuming user has no saying in their user preferences\n PreferredMethod: selectedMethod\n };\n // also load advisor details with PIN here\n Promise.all([this.props.savePreferredMethod(params), this.props.advisorGet()])\n .then(() => this.resetClaims()); // updates claims and opens home \n }\n\n componentDidMount() {\n this.setState({ isLoading: true });\n this.props.getPreferredMethod()\n .then((response) => {\n const { PreferredMethod, PhoneNumber, CountryCode, VerifiedAppCode } = response.payload.data;\n\n let authenticationStep;\n switch (PreferredMethod) {\n case REGISTER_METHODS.SMS:\n case REGISTER_METHODS.CALL:\n authenticationStep = AUTHENTICATION_STEPS.SHOW_SMS_OR_CALL_SELECTION;\n break;\n case REGISTER_METHODS.INAPPTOKEN:\n authenticationStep = AUTHENTICATION_STEPS.SHOW_OTHER_AUTHENTICATOR;\n break;\n default: break;\n }\n\n this.setState({\n isLoading: false,\n selectedMethod: PreferredMethod,\n authenticationStep,\n phoneNumber: PhoneNumber,\n countryCode: CountryCode,\n verifiedAppCode: VerifiedAppCode\n });\n });\n }\n\n render() {\n const {\n authenticationStep, selectedMethod, isLoading, phoneNumber, countryCode,\n verifiedAppCode\n } = this.state;\n\n const isDomestic = countryCode === '+1'; // this is for existing users with intl phone numbers\n\n let render2FAVerificationStep;\n const useToken = () => (\n
\n this.setState({ authenticationStep: AUTHENTICATION_STEPS.SHOW_OTHER_AUTHENTICATOR })}\n >\n Use authenticator\n \n
\n );\n\n const useTextOrPhone = () => (\n
\n this.setState({ authenticationStep: AUTHENTICATION_STEPS.SHOW_SMS_OR_CALL_SELECTION })}\n >\n Use text or phone call\n \n
\n );\n\n switch (authenticationStep) {\n case AUTHENTICATION_STEPS.SHOW_SMS_OR_CALL_SELECTION:\n render2FAVerificationStep = (\n <>\n this.setState({ authenticationStep: AUTHENTICATION_STEPS.PHONE_AUTH, selectedMethod })}\n />\n {verifiedAppCode && useToken()}\n \n );\n break;\n case AUTHENTICATION_STEPS.PHONE_AUTH:\n render2FAVerificationStep = (\n this.onVerificationSuccess(selectedMethod)}\n />\n );\n break;\n case AUTHENTICATION_STEPS.SHOW_OTHER_AUTHENTICATOR:\n render2FAVerificationStep = (\n <>\n

Enter a security code from your authenticator app

\n this.onVerificationSuccess(REGISTER_METHODS.INAPPTOKEN)}\n onVerificationFail={this.logOut}\n />\n {phoneNumber && isDomestic && useTextOrPhone()}\n \n );\n break;\n default: break;\n }\n\n return (\n <>\n {render2FAVerificationStep}\n
\n \n Cancel\n \n
\n \n );\n }\n}\n\nexport default connect(select, {\n getPreferredMethod,\n savePreferredMethod,\n resetClaims,\n userLogout,\n clearStore,\n notificationShow,\n advisorGet,\n})(Authentication);","import React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\n\nimport TwoFAGraphic from '../2FAGraphic.png';\n\nimport { Button } from '@mui/material';\n\nimport styles from '../styles.module.css';\n\nexport class Welcome extends Component {\n\n state = {\n learnMoreOpen: false,\n };\n\n render() {\n return (\n <>\n Two Factor Authentication\n

my529 requires two factor authentication

\n\n
\n Two Factor Authentication (2FA) adds a layer of protection to your account. It combines something you know, such as a username and password, with something you have, such as a device through which you can access a security code.\n
\n\n
\n this.props.history.push('/multifactor/verify-identity')}\n className={styles.buttons}\n style={{ marginTop: '20px' }}\n >\n Get Started\n \n
\n\n
\n window.open('https://my529.org/faq-two-factor-authentication/', '_blank', 'noopener noreferrer')}\n >\n Learn More\n \n\n
\n\n \n );\n }\n}\n\nexport default withRouter(Welcome);","import React, { Component } from 'react';\nimport { Switch, withRouter, Route } from 'react-router-dom';\n\nimport { Paper } from '@mui/material';\n\nimport { My529Logo } from '@frontend/common';\n\nimport Registration from './Registration/index';\nimport VerifyIdentity from './VerifyIdentity/index';\nimport Authentication from './Authentication/index';\nimport Welcome from './Welcome/index';\n\nimport styles from './styles.module.css';\n\nexport class Multifactor extends Component {\n\n render() {\n return (\n
\n \n
\n
\n \n ()} />\n ()} />\n ()} />\n ()} />\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(Multifactor);","import { cloneDeep } from 'lodash';\n\nexport function getTitle(path) {\n \n // Priority is placed to titles placed LOWER on this list\n const titles = [\n { matcher: /^\\/$/, title: 'Home' },\n { matcher: '/accounts', title: 'Accounts' },\n { matcher: '/new-accounts', title: 'New Accounts' },\n { matcher: '/notfound', title: 'Page Not Found' },\n { matcher: '/templates', title: 'Customized Templates' },\n { matcher: /^\\/accounts\\/[0-9]*$/, title: 'Account Details' },\n { matcher: /^\\/accounts\\/[0-9]*\\/option-changes/, title: 'Option Changes' },\n { matcher: /^\\/accounts\\/[0-9]*\\/contributions/, title: 'Contributions' },\n { matcher: /^\\/accounts\\/[0-9]*\\/withdrawals/, title: 'Withdrawals' },\n { matcher: '/manage-lpoa', title: 'Manage LPOA' },\n { matcher: '/manage-users', title: 'Manage Users' },\n { matcher: '/my-info', title: 'My Info' },\n { matcher: '/reports', title: 'Reports' },\n { matcher: '/manage-data', title: 'Manage Data' },\n { matcher: '/manage-data/download', title: 'Download Data' },\n { matcher: '/lpoa-settings', title: 'LPOA Settings' },\n { matcher: '/bulk-option-change', title: 'Bulk Option Change' },\n { matcher: '/bulk-statement-download', title: 'Bulk Statement Download' },\n ];\n\n let currentTitle = '';\n const rootTitle = 'my529 Financial Advisor Portal';\n\n cloneDeep(titles).reverse().some(title => { // eslint-disable-line newline-per-chained-call\n if (path.match(title.matcher)) {\n currentTitle = title.title;\n return true;\n }\n\n return false;\n });\n\n document.title = currentTitle ? `${currentTitle} | ${rootTitle}` : rootTitle;\n return currentTitle || rootTitle;\n}","import React from 'react';\nimport { persistClientErrors } from './error_handler';\n\n\nexport class ErrorBoundary extends React.Component {\n\n state = { \n error: '',\n errorInfo: ''\n };\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n error,\n errorInfo\n });\n persistClientErrors({\n name: error.name,\n message: error.message,\n stack: error.stack,\n });\n }\n \n render() {\n \n const styles = {\n position: 'fixed',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n };\n \n \n if (this.state.errorInfo) {\n return (\n
\n Ooops! Something didn't go as planned.\n
\n );\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n Switch,\n withRouter,\n} from 'react-router-dom';\n\nimport {\n LegalFooter,\n notificationShow,\n SplashScreen,\n} from '@frontend/common';\n\nimport ProtectedRoute from './ProtectedRoute';\nimport PublicRoute from './PublicRoute';\n\nimport Header from './Header';\nimport Sidenav from './Sidenav';\nimport Login from 'components/Features/public/Login';\nimport ActivateUser from 'components/Features/public/ActivateUser';\nimport ForgotPassword from 'components/Features/public/ForgotPassword';\nimport ResetPassword from 'components/Features/public/ResetPassword';\nimport ForgotUsername from 'components/Features/public/ForgotUsername';\nimport Accounts from 'components/Features/protected/Accounts';\nimport Dashboard from 'components/Features/protected/Dashboard';\nimport PageNotFound from 'components/Features/protected/PageNotFound';\nimport Templates from 'components/Features/protected/Templates';\nimport NewAccounts from 'components/Features/protected/NewAccounts';\nimport ManageLPOA from 'components/Features/protected/ManageLPOA';\nimport ManageUsers from 'components/Features/protected/ManageUsers';\nimport MyInfo from 'components/Features/protected/MyInfo';\nimport Reports from 'components/Features/protected/Reports';\nimport ManageData from 'components/Features/protected/ManageData';\nimport LPOASettings from 'components/Features/protected/LPOASettings';\nimport BulkOptionChange from 'components/Features/protected/BulkOptionChange';\nimport AppTour from 'components/Features/protected/AppTour';\nimport BulkStatementDownload from 'components/Features/protected/BulkStatementDownload';\n\n// Potentially Blocked Components - see ProtectedRoute\nimport Multifactor from 'components/Features/protected/Multifactor';\n\nimport { getTitle } from 'utils/helpers/title_handler';\nimport ErrorBoundary from 'utils/helpers/error_boundary';\n\nimport { userLogout, clearStore, toggleSplashHasDisplayed, } from './actions';\n\nimport styles from './styles.module.css';\n\nconst frontendConfig = window.frontendConfig;\nconst location = window.location;\nconst appVersion = window.appVersion;\n\nconst select = (state) => ({\n isValid: state.session.isValid,\n accountBlocked: state.session.accountBlocked,\n showSideNav: state.session.showSideNav,\n permissions: state.session.permissions,\n splashHasDisplayed: state.session.splashHasDisplayed,\n documents: state.static.documents,\n isAccountListLoaded: state.accounts.accountList.length > 0,\n isAgeBracketsLoaded: state.static.ageBrackets.length > 0,\n claims: state.session.claims,\n});\n\nexport class Navigation extends Component {\n\n static propTypes = {\n isValid: PropTypes.bool.isRequired,\n accountBlocked: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n showSideNav: PropTypes.bool.isRequired,\n userLogout: PropTypes.func.isRequired,\n permissions: PropTypes.object.isRequired,\n documents: PropTypes.object.isRequired,\n clearStore: PropTypes.func.isRequired,\n isAccountListLoaded: PropTypes.bool.isRequired,\n isAgeBracketsLoaded: PropTypes.bool.isRequired,\n splashHasDisplayed: PropTypes.bool.isRequired,\n toggleSplashHasDisplayed: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n };\n\n state = {\n showSideNav: false,\n showEnvMessage: location.hostname.toLowerCase() !== 'fa.my529.org' && (!Object.prototype.hasOwnProperty.call(frontendConfig, 'envWarning') || frontendConfig.envWarning),\n };\n\n logOut = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.notificationShow('You have logged out.', 'success');\n });\n this.props.clearStore();\n this.props.history.push('/login');\n }\n\n componentDidMount() {\n const storedVersion = localStorage.getItem('fa_version');\n if (!storedVersion || storedVersion !== appVersion) {\n localStorage.setItem('fa_version', appVersion);\n }\n }\n\n render() {\n const {\n permissions, splashHasDisplayed, toggleSplashHasDisplayed, isAccountListLoaded,\n isAgeBracketsLoaded, isValid, accountBlocked, documents, claims,\n } = this.props;\n const { showEnvMessage } = this.state;\n return (\n
\n {!accountBlocked &&\n this.setState({ showSideNav: true })}\n showMenus={this.props.isValid}\n pageTitle={getTitle(this.props.history.location.pathname)}\n className='hideOnPrint'\n />}\n {!accountBlocked &&\n this.setState({ showSideNav: false })}\n onOpen={() => this.setState({ showSideNav: true })}\n handleLogout={this.logOut}\n className='hideOnPrint'\n />}\n
\n
\n \n \n \n \n \n \n \n {accountBlocked && }\n {!accountBlocked && }\n {!accountBlocked && }\n {!accountBlocked && }\n {!accountBlocked && }\n {!accountBlocked && permissions.optionChanges && }\n {!accountBlocked && (permissions.editLPOAContactInfo || permissions.editLPOASettings) && }\n {!accountBlocked && (permissions.manageUsers && permissions.isFirmEntity) && }\n {!accountBlocked && (permissions.adminReports || permissions.accountReports) && }\n {!accountBlocked && (permissions.setupData || permissions.downloadData) && }\n {!accountBlocked && }\n {!accountBlocked && }\n {!accountBlocked && claims.BulkStatementDownload === 'true' && }\n \n \n \n
\n {splashHasDisplayed && }\n {isValid && !accountBlocked && !splashHasDisplayed &&\n }\n \n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n notificationShow,\n userLogout,\n clearStore,\n toggleSplashHasDisplayed,\n})(Navigation));\n","/* \n*\n* AppRoot\n*\n*/\nimport React, { Component } from 'react';\n\nimport { ThemeProvider, createTheme, StyledEngineProvider, } from '@mui/material/styles';\nimport material_ui_theme from 'utils/config/material_ui_theme';\n\nimport { Notifications } from '@frontend/common';\nimport Navigation from './Navigation';\n\nimport './styles.css';\n\nexport default class AppRoot extends Component {\n\n render() {\n return (\n \n \n \n \n \n \n );\n }\n\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\n\nimport React from 'react';\nimport { createRoot, } from 'react-dom/client';\nimport { BrowserRouter } from 'react-router-dom';\nimport { configureStore, } from '@reduxjs/toolkit';\nimport { Provider } from 'react-redux';\nimport promise from 'redux-promise';\nimport { get, set, clear } from 'idb-keyval';\n\nimport { apiResponse } from 'utils/helpers/middleware';\n\nimport throttle from 'lodash/throttle';\n\nimport rootReducer from './reducers';\nimport AppRoot from 'components/AppRoot/index';\n\nif (process.env.NODE_ENV !== 'test') {\n require('./utils/ga/analytics.js');\n}\n\nexport let store = {};\n\nget('fa_idb') // retrieve redux store from IndexedDB\n .then(val => {\n \n let preloadedState = undefined;\n const token = sessionStorage.getItem('token');\n if (val && token !== null) {\n preloadedState = JSON.parse(val);\n }\n else {\n clear();\n }\n\n // check if in dev environment\n const URL = window.location.host;\n const isDevEnv = Boolean(window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) // eslint-disable-line no-underscore-dangle\n && (URL.includes('localhost') || URL.includes('dev') || URL.includes('qa'));\n\n // create store\n store = configureStore({\n reducer: rootReducer,\n preloadedState,\n middleware: [promise, apiResponse],\n devTools: isDevEnv, // makes sure devTools are turn off in prod\n });\n\n store.subscribe(throttle(() => {\n const serializedState = JSON.stringify(store.getState());\n set('fa_idb', serializedState); // save redux store to IndexedDB\n }), 1000);\n \n const container = document.getElementById('root');\n const root = createRoot(container);\n\n if (process.env.NODE_ENV !== 'test') {\n root.render(\n \n \n \n \n \n );\n }\n\n });","module.exports = [\n {\n id: 'HigherEd',\n messages: [\n \"All withdrawn money will be used to pay for the beneficiary's qualified higher education expenses.\" // eslint-disable-line quotes\n ]\n },\n {\n id: 'K-12Tuition',\n messages: [\n \"All withdrawn money will be used to pay for the beneficiary’s qualified K-12 tuition expenses, up to $10,000 per year.\" // eslint-disable-line quotes\n ]\n },\n {\n id: 'NonQualified',\n messages: [\n 'The money will not be used to pay for qualified higher education expenses or K-12 tuition expenses.'\n ]\n },\n {\n id: 'P',\n messages: [\n 'The account owner/agent will receive IRS Form 1099-Q. If the account owner is also a Utah taxpayer/resident, they will receive Form TC-675H.',\n 'my529 will send the tax forms in January of the following year.'\n ]\n },\n {\n id: 'B',\n messages: [\n 'The beneficiary will receive IRS Form 1099-Q. If the account owner is a Utah taxpayer/resident, they will receive Form TC-675H.',\n 'my529 will send the tax forms in January of the following year.'\n ]\n },\n {\n id: 'I',\n messages: [\n \"my529 will make the withdrawal check payable to the eligible educational institution and send it directly to the school. Please allow up to 2-3 weeks for processing and delivery. The check stub will include the beneficiary’s name and student ID (if provided by the account owner). The beneficiary will receive IRS Form 1099-Q. If the account owner is a Utah taxpayer/resident, they will receive Form TC-675H.\", // eslint-disable-line quotes\n 'my529 will send the tax forms in January of the following year.'\n ]\n }\n];","// extracted by mini-css-extract-plugin\nmodule.exports = {\"banner\":\"styles_banner__1806A\",\"bannerMessages\":\"styles_bannerMessages__3Sv1J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Login_linkContainer\":\"styles_Login_linkContainer__19262\",\"Login_button\":\"styles_Login_button__SzWpE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ActivateUser_buttons\":\"styles_ActivateUser_buttons__B5hLN\",\"ActivateUser_passwordRequirements\":\"styles_ActivateUser_passwordRequirements__1jhLy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ResetPassword_divPadding\":\"styles_ResetPassword_divPadding__7pJUD\",\"ResetPassword_buttons\":\"styles_ResetPassword_buttons__2utBq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ContributionDetails_detailsTitle\":\"styles_ContributionDetails_detailsTitle__2DQpo\",\"ContributionDetails_accountDetailsAO\":\"styles_ContributionDetails_accountDetailsAO__2rvaS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"DashboardHeader_container\":\"styles_DashboardHeader_container__2igtF\",\"DashboardHeader_ViewSelect\":\"styles_DashboardHeader_ViewSelect__1YQa5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TemplatesList_table\":\"styles_TemplatesList_table__10j2v\",\"TemplatesList_copyTemplate\":\"styles_TemplatesList_copyTemplate__33QIZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountStatus_statusIndicator\":\"styles_AccountStatus_statusIndicator__2m17k\",\"tippy-tooltip\":\"styles_tippy-tooltip__3BUC2\",\"newAccountStatus-theme\":\"styles_newAccountStatus-theme__14TjV\",\"tippy-backdrop\":\"styles_tippy-backdrop__31nX-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ConflictErrorResolveModal_conflictsContainer\":\"styles_ConflictErrorResolveModal_conflictsContainer__21AxD\",\"ConflictErrorResolveModal_conflictSection\":\"styles_ConflictErrorResolveModal_conflictSection__2Chk6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Transfer_termsCheckbox\":\"styles_Transfer_termsCheckbox__31vwV\",\"Transfer_reviewCloseAccount\":\"styles_Transfer_reviewCloseAccount__2k874\",\"Transfer_reviewAccountNumber\":\"styles_Transfer_reviewAccountNumber__3x40o\",\"Transfer_reviewBeneficiaryName\":\"styles_Transfer_reviewBeneficiaryName__3J03o\",\"Transfer_reviewOptionChange\":\"styles_Transfer_reviewOptionChange__31xFo\",\"Transfer_reviewAmount\":\"styles_Transfer_reviewAmount__2I7yd\",\"Transfer_reviewTotalAmount\":\"styles_Transfer_reviewTotalAmount__1mFZJ\",\"Transfer_reviewContainer\":\"styles_Transfer_reviewContainer__jhDdr\",\"Transfer_reviewContainerCompact\":\"styles_Transfer_reviewContainerCompact__1VDPI\",\"Transfer_detailsTitle\":\"styles_Transfer_detailsTitle__2jK6G\",\"Transfer_detail\":\"styles_Transfer_detail__1j9de\",\"mobile\":\"styles_mobile__1IHDX\",\"Transfer_Header\":\"styles_Transfer_Header__1TjWd\",\"Transfer_termsAndConditions\":\"styles_Transfer_termsAndConditions__2U08r\",\"desktop\":\"styles_desktop__u3c2p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"OptionChangeDetails_container\":\"styles_OptionChangeDetails_container__2_4BJ\",\"OptionChangeDetails_accountDetailsCard\":\"styles_OptionChangeDetails_accountDetailsCard__1Otwb\",\"OptionChangeDetails_loading\":\"styles_OptionChangeDetails_loading__Xcryy\",\"OptionChangeDetails_optionDetailsCard\":\"styles_OptionChangeDetails_optionDetailsCard__2u3ir\",\"OptionChangeDetails_accountDetails\":\"styles_OptionChangeDetails_accountDetails__2z-BJ\",\"OptionChangeDetails_accountDetailsAO\":\"styles_OptionChangeDetails_accountDetailsAO__2sSfJ\",\"OptionChangeDetails_accountDetailsBen\":\"styles_OptionChangeDetails_accountDetailsBen__3OWs9\",\"OptionChangeDetails_accountDetailsAcctNum\":\"styles_OptionChangeDetails_accountDetailsAcctNum__VGn5_\",\"OptionChangeDetails_accountDetailsTotalVal\":\"styles_OptionChangeDetails_accountDetailsTotalVal__3vWAA\",\"OptionChangeDetails_accountDetailsAcctType\":\"styles_OptionChangeDetails_accountDetailsAcctType__3cMPV\",\"OptionChangeDetails_accountDetailsAccountsInGroup\":\"styles_OptionChangeDetails_accountDetailsAccountsInGroup__1n9AL\",\"OptionChangeDetails_optionDetailsCurrentOpt\":\"styles_OptionChangeDetails_optionDetailsCurrentOpt__3--3o\",\"OptionChangeDetails_optionDetailsRemainingOpts\":\"styles_OptionChangeDetails_optionDetailsRemainingOpts__1E0lH\",\"OptionChangeDetails_detailsTitle\":\"styles_OptionChangeDetails_detailsTitle__1392a\",\"OptionChangeDetails_zeroOptionChangesRemaining\":\"styles_OptionChangeDetails_zeroOptionChangesRemaining__1pBCX\",\"OptionChangeDetails_accountDetailsAccountsInGroupInfo\":\"styles_OptionChangeDetails_accountDetailsAccountsInGroupInfo__25w1H\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Transfer_stepOneContainer\":\"styles_Transfer_stepOneContainer__1bJAV\",\"Transfer_transferTypeContainer\":\"styles_Transfer_transferTypeContainer__1SMWQ\",\"Transfer_accountsSelection\":\"styles_Transfer_accountsSelection__kiA5P\",\"Transfer_destinationRow\":\"styles_Transfer_destinationRow__UzmOY\",\"Transfer_numberInput\":\"styles_Transfer_numberInput__jcjFp\",\"Transfer_sourceAccountDescription\":\"styles_Transfer_sourceAccountDescription__WTJS8\",\"Transfer_sourceAccountName\":\"styles_Transfer_sourceAccountName__3f4q_\",\"error\":\"styles_error__BM93S\",\"Transfer_sourceAccountLabel\":\"styles_Transfer_sourceAccountLabel__1a7uC\",\"Transfer_keepAccountOpenCheckbox\":\"styles_Transfer_keepAccountOpenCheckbox__1KPXQ\",\"Transfer_iconContainer\":\"styles_Transfer_iconContainer__7_FEa\",\"Transfer_fullBalanceInfoIcon\":\"styles_Transfer_fullBalanceInfoIcon__1DyXs\",\"Transfer_inputContainer\":\"styles_Transfer_inputContainer__Hnxc-\",\"Transfer_addIconContainer\":\"styles_Transfer_addIconContainer__LJXfr\",\"Transfer_amountTotal\":\"styles_Transfer_amountTotal__2N44C\",\"Transfer_destinationFooter\":\"styles_Transfer_destinationFooter__1xe9x\",\"Transfer_transferTypeToggleContainer\":\"styles_Transfer_transferTypeToggleContainer__1h83y\",\"Transfer_optionChangeIndicator\":\"styles_Transfer_optionChangeIndicator__GZ9GQ\",\"row-0\":\"styles_row-0__1XAeJ\",\"InfoIcon_container\":\"styles_InfoIcon_container__25tvK\",\"Transfer_transferType_radioButtonGroup\":\"styles_Transfer_transferType_radioButtonGroup__1piMr\",\"Transfer_sourceColumn\":\"styles_Transfer_sourceColumn__2x2bK\",\"Transfer_sourceContainer\":\"styles_Transfer_sourceContainer__8Z1nd\",\"Transfer_destinationColumn\":\"styles_Transfer_destinationColumn__C_jxd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewAccountForm_toggle\":\"styles_NewAccountForm_toggle__3SQDD\",\"NewAccountForm_error\":\"styles_NewAccountForm_error__20Qr-\",\"NewAccountForm_cards\":\"styles_NewAccountForm_cards__3Fl8c\",\"NewAccountForm_owner\":\"styles_NewAccountForm_owner__36G32\",\"NewAccountForm_beneficiary\":\"styles_NewAccountForm_beneficiary__2Nlcp\",\"NewAccountForm_successors\":\"styles_NewAccountForm_successors__3ZBl3\",\"NewAccountForm_settings\":\"styles_NewAccountForm_settings__2eTRh\",\"NewAccountForm_funds\":\"styles_NewAccountForm_funds__1sdET\",\"NewAccountForm_ownerPersonalDetails_group1\":\"styles_NewAccountForm_ownerPersonalDetails_group1__2ganR\",\"NewAccountForm_ownerPersonalDetails_group2\":\"styles_NewAccountForm_ownerPersonalDetails_group2__2KT06\",\"NewAccountForm_ownerAddresses\":\"styles_NewAccountForm_ownerAddresses__2prqe\",\"NewAccountForm_ownerForm\":\"styles_NewAccountForm_ownerForm__20qVK\",\"NewAccountForm_beneficiaryPersonalDetails_group1\":\"styles_NewAccountForm_beneficiaryPersonalDetails_group1__1Gu33\",\"NewAccountForm_beneficiaryPersonalDetails_group2\":\"styles_NewAccountForm_beneficiaryPersonalDetails_group2__9gCjz\",\"NewAccountForm_beneficiaryAddresses\":\"styles_NewAccountForm_beneficiaryAddresses__1r_mc\",\"NewAccountForm_beneficiaryForm\":\"styles_NewAccountForm_beneficiaryForm__1hUGA\",\"NewAccountForm_successorsForm\":\"styles_NewAccountForm_successorsForm__kt01s\",\"NewAccountForm_settingsForm\":\"styles_NewAccountForm_settingsForm__1Z5Qn\",\"NewAccountForm_fundsMessage\":\"styles_NewAccountForm_fundsMessage__NyHRJ\",\"NewAccountForm_fundsTable\":\"styles_NewAccountForm_fundsTable__P-5TV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"UserDetails_page\":\"styles_UserDetails_page__1DA8s\",\"UserDetails_container\":\"styles_UserDetails_container__3C4ng\",\"UserDetails_cards\":\"styles_UserDetails_cards__2h42u\",\"UserDetails_contact\":\"styles_UserDetails_contact__1-eE2\",\"UserDetails_permissions\":\"styles_UserDetails_permissions__2g4ZJ\",\"UserDetails_accounts\":\"styles_UserDetails_accounts__Q_Hf0\",\"UserDetails_contactInputsContainer\":\"styles_UserDetails_contactInputsContainer__3ivTY\",\"UserDetails_toggles\":\"styles_UserDetails_toggles__3zGB3\",\"UserDetails_toggleSection_transactions\":\"styles_UserDetails_toggleSection_transactions__15Sdp\",\"UserDetails_toggleSection_taxDocs\":\"styles_UserDetails_toggleSection_taxDocs__2BJEd\",\"UserDetails_toggleSection_admin\":\"styles_UserDetails_toggleSection_admin__30ilR\",\"UserDetails_toggleSection_reports\":\"styles_UserDetails_toggleSection_reports__72K32\",\"UserDetails_uneditableToggle\":\"styles_UserDetails_uneditableToggle__33OVI\",\"UserDetails_toggleSection\":\"styles_UserDetails_toggleSection__3GBgZ\",\"UserDetails_toggleLabel\":\"styles_UserDetails_toggleLabel__BbPJ3\",\"UserDetails_nonEditableField\":\"styles_UserDetails_nonEditableField__QA0pa\",\"UserDetails_fab\":\"styles_UserDetails_fab__1DSUB\",\"fadeIn\":\"styles_fadeIn__38OSc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ForgotPassword_buttons\":\"styles_ForgotPassword_buttons__29sx7\"};"],"sourceRoot":""}