{"version":3,"sources":["../../src/utils/enums/DataFeature.ts","../../src/utils/enums/SystemFeatures.ts","../../src/utils/enums/MTOMandatoryField.ts","../../src/Hooks/useDataFeatureCheck.tsx","../../src/utils/enums/ApiErrorCode.ts","../../src/Containers/ISuppliDataRequirements/ISuppliDataRequirements.tsx","../../src/Containers/WithDataFeature/WithDataFeature.tsx","../../src/utils/enums/FilterTypes.ts","../../src/utils/enums/AdvancedFilterTypes.ts","../../src/utils/valueFormatter.ts","../../src/Components/Header/UserMaintenance/UserMaintenance.tsx","../../src/Hooks/useNotAllowedError.tsx","../../src/Components/Header/HeaderNavBar/HeaderNavBar.tsx","../../src/Components/Header/Header.tsx","../../src/Components/Footer/Footer.tsx","../../src/Components/Spinner/Spinner.tsx","../../src/Components/HelpIcon/HelpIcon.tsx","../../src/Containers/ShadowCard/ShadowCard.tsx","../../src/Components/Tables/NoResultCard/NoResultsCard.tsx","../../src/Components/DropDownButton/DropDownButton.tsx","../../src/Hooks/useSystemFeatureCheck.tsx","../../src/Components/Tables/BasicTable/BasicTable.tsx","../../src/Components/Forms/DropDownInput/DropDownInput.tsx","../../src/Components/ActionsDropDown/ActionsDropdown.tsx","../../src/Components/CheckboxInput/CheckboxInput.tsx","../../src/Components/Tables/Table/TableHeader/TableHeader.tsx","../../src/Components/ImageButton/ImageButton.tsx","../../src/Components/Tables/Table/TablePageSelector/TablePageSelector.tsx","../../src/Components/Tables/Table/TableFooter/TableFooter.tsx","../../src/Components/UtilButton/UtilButton.tsx","../../src/Components/ActionsDropDown/ActionsDropDown.tsx","../../src/Components/Line/Line.tsx","../../src/Components/Tables/Table/TableRowItem/TableRowItem.tsx","../../src/Components/Tables/Table/Table.tsx","../../src/Components/Tables/TableActionsItem/TableActionsItem.tsx","../../src/Components/ActionsDropDown/ActionsDropDownItem/ActionsDropDownItem.tsx","../../src/Components/ImageText/ImageText.tsx","../../src/Components/ModalCloseButton/ModalCloseButton.tsx","../../src/Containers/ModalBackground/ModalBackground.tsx","../../src/Containers/ModalContainer/ModalContainer.tsx","../../src/Components/Forms/Form/ValidationAlert/ValidationAlert.tsx","../../src/Components/Forms/Form/Form.tsx","../../src/Components/Forms/DateTimeInput/DateTimeInput.tsx","../../src/Components/Forms/MultiSelectDropDownInput/MultiSelectDropDownInput.tsx","../../src/Components/ConfirmationModal/ConfirmationModal.tsx","../../src/Components/PageButtons/PageButtons.tsx","../../src/Containers/Wizard/ProgressButton/ProgressButton.tsx","../../src/Containers/Wizard/ProgressIndicator/ProgressIndicator.tsx","../../src/Components/ActionsDropdown/ActionsDropdown.tsx","../../src/Components/MultiSelectDropDown/MultiSelectDropDown.tsx","../../src/Components/Forms/InputGroupImageAddon/InputGroupImageAddon.tsx","../../src/Components/Forms/DateInput/DateInput.tsx","../../src/Components/DateRangeDropDown/DateRangeDropDown.tsx","../../src/Components/Search/SearchFilters/SearchFilters.tsx","../../src/Components/Forms/TextInput/TextInput.tsx","../../src/Components/Search/AdvancedFilters/AdvancedFilters.tsx","../../src/Components/Search/SearchFiltersContainer/SearchFiltersContainer.tsx","../../src/Components/Search/SearchInput/SearchInput.tsx","../../src/Components/BreadCrumbs/BreadCrumbs.tsx","../../src/Components/PageHeading/PageHeading.tsx","../../src/utils/selectedFlagEnumToString.ts","../../src/Components/Forms/TextAreaInput/TextAreaInput.tsx","../../src/Components/Forms/RadioButtonInput/RadioButtonInput.tsx","../../src/Components/Forms/CheckBoxInput/CheckBoxInput.tsx","../../src/Components/Forms/FlagEnumSelectorInput/FlagEnumSelectorInput.tsx","../../src/Components/FileSelector/FileSelector.tsx","../../src/Containers/ModalPopup/ModalPopup.tsx","../../src/Components/SubmitInput/SubmitInput.tsx","../../src/Components/MessageComposer/MessageAttachment/MessageAttachment.tsx","../../src/Hooks/useDebounce.tsx","../../src/Hooks/useToast.tsx","../../src/Containers/ISuppliAuthentication/ISuppliAuthentication.tsx","../../src/Components/MessageComposer/MessageComposer.tsx","../../src/Containers/WithFeature/WithFeature.tsx","../../src/Containers/FeatureRoute/FeatureRoute.tsx","../../src/Containers/ToastContainer/ToastContainer.tsx","../../src/Containers/PageContentWithButtons/PageContentWithButtons.tsx","../../src/Containers/ListEmptyState/ListEmptyState.tsx","../../src/Components/FilterInput/FilterInput.tsx","../../node_modules/babel-plugin-transform-async-to-promises/helpers.js","../../src/utils/dataTransform.ts","../../src/utils/enums/StaticDataTypes.ts","../../src/Components/GlobalOfferingSelector/GlobalOfferingSelector.tsx","../../src/Components/ProductsAndServicesSummary/ProductsAndServicesSummary.tsx","../../src/Components/GlobalProductsAndServicesList/GlobalProductsAndServicesList.tsx","../../src/Containers/Page/Page.tsx","../../src/Hooks/useRouteState.tsx","../../src/Containers/Tabs/Tab/Tab.tsx","../../src/Containers/Tabs/Tabs.tsx","../../src/Components/DragDropFileUpload/DragDropFileUpload.tsx","Store/actions.js","http/util.js","http/index.js","Hooks/useShowError.tsx","Store/registrationActions.js","Util/valueFormatter.ts","Util/Enumerators/ComplianceStatus.ts","http/posts.js","Util/menuItems.tsx","Util/Enumerators/ComplianceCheck.ts","http/gets.js","Store/optionActions.js","Store/onboardingRequestActions.js","http/httpHelpers.ts","http/Messaging/messagesApi.ts","Util/Enumerators/supplierFilterOptions.js","http/Contracting/contractingApi.ts","Util/dataLoader.js","Util/Enumerators/addressTypes.js","http/MyCompany/myCompanyAPI.ts","Store/index.js","Store/maintenanceActions.jsx","Sections/Messaging/Messaging.module.scss","Util/Enumerators/beeValidationStatus.ts","http/EnterpriseConfiguration/enterpriseConfiguration.ts","Sections/Messaging/MessageComposer/MessageComposer.module.scss","Sections/Messaging/ChatChannelCard/ChatChannelCard.module.scss","http/UserManagement/userManagementApi.ts","http/Compliance/complianceApi.ts","http/Messaging/Models/Models.ts","Containers/Supplier/PlanOption/PlanOption.module.scss","Containers/ProductTierSelector/ProductTierSelector.module.scss","Controls/StarRatingInput/StarRatingInput.module.scss","Controls/StarRatingInput/star-filled.svg","Controls/StarRatingInput/star-empty.svg","Controls/StarRatingInput/StarRatingInput.tsx","Util/complianceFormatter.ts","http/Search/searchApi.ts","Sections/Messaging/ChatChannelCard/ChatChannelCard.tsx","Sections/Subscription/Subscription.module.scss","Sections/Dashboard/DashboardSuppliersSummaryCard/DashboardSuppliersSummary.module.scss","Sections/Dashboard/DashboardSummaryItem/DashboardSummaryItem.module.scss","Sections/Messaging/MessageItem/MessageItem.module.scss","Sections/Administration/UserManagement/AddUserModal/AddUserModal.module.scss","http/puts.js","http/deletes.js","http/Messaging/Models/PageTypes.ts","Containers/Supplier/BeeStatusBadge.tsx","Sections/Messaging/ChatChannelListSection/ChatChannelListSection.tsx","Containers/Supplier/SupplierCheckDetails/SupplierCheckDetails.module.scss","Sections/MyOffice/SupplierUpdates/PendingEventDetailModal/PendingEventDetailModal.module.scss","Sections/Messaging/MessengerHeader/MessengerHeader.module.scss","Sections/Messaging/ChatMessageHeader/ChatMessageHeader.module.scss","Sections/Marketplace/PaymentTermsUpdate/PaymentTermsUpdate.module.scss","Sections/Marketplace/BulkEmailUpdate/BulkEmailUpdate.module.scss","Controls/SecondarySearchInput/SecondarySearchInput.module.scss","http/EnterpriseConfiguration/Models/Models.ts","Containers/Spinner/Spinner.module.scss","Containers/SupplierSearch/CompseMessageModal/ComposeMessageModal.module.scss","Sections/SupplierSearch/SupplierSearch.module.scss","Containers/RateCompanyModal/RateCompanyModal.module.scss","Sections/Messaging/NewMessageModal/NewMessageModal.module.scss","Sections/Messaging/ChatMessageContent/ChatMessageContent.module.scss","Sections/Messaging/ChatChannelListSection/ChatChannelListSection.module.scss","Sections/Administration/UserManagement/UserSearchResults/UserSearchResults.module.scss","Views/DashboardView.js","Sections/Dashboard/ProfileStatusSummary/ProfileStatusSummary.module.scss","../../../../iSuppliPackages/ISuppli.React.Components/dist/triangle~wpequTjO.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/external-link~ZkfuIklB.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/logo~vXxsgZKH.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/hamburger~bnuqweWD.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/question-circle-solid~PLywQpnu.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/sort-amount-down~bgvrcyRP.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/close~dCdEQihZ.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/error~ibRnAybO.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/laptop~APFZZBcn.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/progress-circle-threequarter~bhhGLGpS.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/sort-size-down~NZqfOkJv.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/input-icon-building~bfBfexsf.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/input-icon-phone~TdTpOXeW.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/input-icon-envelope~KQpLWrNf.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/input-icon-person~fHUjPibg.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/input-icon-calendar~guvcZhGY.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/magnifying-glass~wfjKNiyd.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/pencil-alt-solid~PDBpUNTg.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/paperclip~GNcKVwLM.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/magnifying-glass-circle~mZlPFzGE.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/solid_file_excel~boHPZPfy.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/cloud_upload~bgWNTSVp.svg","../../../../iSuppliPackages/ISuppli.React.Components/dist/file-regular~eJPHbTuX.svg","Containers/Header/close.svg","Containers/Header/Notification.jsx","Containers/Spinner/Spinner.tsx","Containers/Header/Notifications.jsx","Controls/NotificationButton/not-bell.svg","Controls/NotificationButton/NotificationButton.jsx","Hooks/useSignalR.tsx","Util/Enumerators/notificationTypes.ts","Containers/Header/NotificationMenuItem.tsx","Controls/ValidationError/red-triangle.svg","Controls/ValidationError/warning.svg","Controls/ValidationError/ValidationError.jsx","Controls/DropdownInput.jsx","Util/Enumerators/duplicateCompanyEmailType.js","Sections/Registration/DuplicateRegistrationModal.jsx","Sections/Registration/RegistrationProgress.tsx","Sections/Registration/OnboardInvitationDetails.jsx","Sections/Loading.jsx","Controls/TextInput/buildings.svg","Controls/TextInput/open-envelope.svg","Controls/TextInput/document.svg","Controls/TextInput/user-bg-dark.svg","Controls/TextInput/user-group.svg","Controls/TextInput/email.svg","Controls/TextInput/planet.svg","Controls/TextInput/TextInput.jsx","Validation/validation.js","Validation/onChangeValidations.js","Containers/Supplier/ClientBaseTable.tsx","Util/Enumerators/staticDataTypes.ts","http/Shareholders/ShareholderApi.ts","Hooks/useThreadSafe.tsx","Hooks/useStaticData.tsx","Containers/Supplier/FileOptions.jsx","Util/Enumerators/DocumentClassification.ts","Controls/DateInput/calender.svg","Util/Enumerators/CompanyGroupingType.ts","Controls/DateInput/DateInput.jsx","Containers/Supplier/DocumentUploader.jsx","Containers/ShareholderDetailsModal/ShareholderDetailsModal.tsx","Containers/ShareholdersTable/ShareholderTable.tsx","Controls/RadioSelector.jsx","Containers/AdditionalCompanyData/AdditionalCompanyData.tsx","Containers/Supplier/GeneralBusinessInformation.tsx","Containers/InfoPopup.jsx","Containers/Supplier/SaveAndContinueConfirm.jsx","Containers/Supplier/RegistrationCompanyInfo.jsx","Containers/WizzardBtns.jsx","Validation/onSubmitValidations.js","Util/optionsLoader.js","Util/Enumerators/staticCompanyDataTypes.ts","Hooks/useStaticCompanyData.tsx","Sections/Registration/RegistrationStep01.jsx","Containers/Supplier/AddressInfo.jsx","Containers/Supplier/KeyContactStaffOptions.jsx","Containers/Supplier/KeyContactStaff.jsx","Hooks/StaticData.tsx","Sections/Registration/RegistrationStep02.jsx","Containers/Supplier/BeeStatus.tsx","Validation/businessRules.js","Containers/Supplier/BeeCertification.jsx","Containers/Supplier/BlackOwnership.jsx","Controls/OptionSelector.jsx","Containers/Supplier/SectorTurnoverInfo.tsx","Util/dateArith.js","Sections/Registration/RegistrationStep03.jsx","http/Marketplace/onboardingAPI.ts","Containers/AgreementsTable/AgreementsTable.tsx","Sections/Registration/RegistrationStepDocuments/RegistrationStepDocuments.tsx","Containers/Supplier/OfferingSelectionSummary.jsx","Hooks/StaticCompanyData.tsx","http/SupplierCategory/supplierCategoryAPI.ts","Containers/Supplier/ClientOfferingSummary/ClientOfferingSummaryDisplay.tsx","Containers/Supplier/ClientOfferingSummary/ClientOfferingSummary.tsx","Containers/Supplier/BuyerOfferingSelector/BuyerOfferingSelector.tsx","Hooks/useStaticDataCustom.tsx","Sections/Registration/RegistrationStep04.jsx","Containers/Supplier/BankingDetails.tsx","Sections/Registration/RegistrationStep05.jsx","Sections/Registration/TermsConditions.jsx","Images/check-mark.svg","Containers/Supplier/PlanOption/PlanOption.jsx","Containers/ProductTierSelector/ProductTierSelector.tsx","http/Billing/billingApi.ts","Sections/Subscription/SendSubscriptionEnquiryModal/SendSubscriptionEnquiryModal.tsx","Sections/Registration/RegistrationStep06.jsx","Views/RegistrationView.jsx","Util/Enumerators/onboardingRequestOrigin.ts","Containers/SupplierImportModal/SupplierModalStaticContent.tsx","http/SupplierImport/supplierImportAPI.ts","Images/download.svg","Containers/SupplierImportModal/SupplierImportCompleteScreen.tsx","Containers/SupplierImportModal/SupplierImportModal.tsx","Sections/OnboardingSearch/OnboardingSearch.tsx","Util/Enumerators/ComplianceCheckType.ts","Util/Enumerators/SubCheckType.ts","Containers/Supplier/SupplierCheckDetails/times.svg","Containers/Supplier/SupplierCheckDetails/check-mark.svg","Util/Enumerators/overallComplianceStatus.ts","Containers/Supplier/SupplierCheckDetails/SupplierCheckDetails.tsx","Containers/Marketplace/SupplierChecksModal/SupplierCheckModal.tsx","Containers/AgreementsModal/AgreementsModal.tsx","Sections/Messaging/MessageComposer/paperclip.svg","Sections/Messaging/MessageComposer/triangle-primary.svg","Containers/SupplierSearch/CompseMessageModal/ComposeMessageModal.tsx","Controls/FileInput/FileInput.tsx","Sections/Messaging/MessageComposer/MessageComposer.tsx","Util/Enumerators/onboardingStatuses.js","Util/Enumerators/onboardingFilterOptions.js","Sections/OnboardingSearch/SupplierCheckStatus.jsx","Sections/Marketplace/OnboardingRequestConfiguration.jsx","Containers/Supplier/DocumentViewer.jsx","Containers/SupplierSearch/KeyContactsTable.jsx","Controls/DetailsItem.tsx","Containers/SupplierSearch/SupplierSearchDetails.jsx","Containers/SupplierSearch/SupplierSearchRating.tsx","Containers/SupplierSearch/BankDetailsTable/BankDetailsTable.tsx","Containers/SupplierSearch/SubAccountsTable/SubAccountsTable.tsx","http/Client/ClientApi.ts","Sections/SupplierDetailsModal.jsx","Util/dataTransform.ts","http/Onboarding/OnboardingApi.ts","Containers/UpdateVendorNumberModal/UpdateVendorNumberModal.tsx","Util/Enumerators/vendorNumberOriginEnum.tsx","Sections/OnboardingSearch/DelegateMTOApprovalModal.tsx","Util/Enumerators/OnboardingDelegationStatus.ts","Sections/Marketplace/CommentModal/CommentModal.tsx","Sections/Marketplace/PaymentTermsUpdate/PaymentTermsUpdate.tsx","Sections/Marketplace/BulkEmailUpdate/BulkEmailUpdate.tsx","Sections/Marketplace/OnboardingRequest.jsx","Sections/Marketplace/MTPProgress.jsx","Util/Enumerators/CompanyConfigurationFeatures.ts","Util/Enumerators/ContactPersonClassificationTypes.ts","Containers/Marketplace/OnboardingWizard/OnboardingWizard.tsx","Containers/Marketplace/CompanyDetails.jsx","Util/Enumerators/supplierStatuses.js","Sections/Marketplace/DuplicateRequestModal.jsx","Sections/Marketplace/SuspensionMessageBanner/SuspensionMessageBanner.tsx","Sections/Marketplace/MTPCompanyDetails.jsx","Controls/TextArea.jsx","Sections/Marketplace/MTPRestrictions.jsx","Sections/Marketplace/MTPMotivation.jsx","Containers/Supplier/OfferingSelector/OfferingSelector.tsx","Containers/Supplier/ProductsAndServicesList.tsx","Sections/Marketplace/MTPCategories.tsx","http/ManualSupplier/manualSupplierApi.ts","Util/Enumerators/BeeCertificateType.ts","Containers/ManualSupplier/EditManualSupplier/AddressDetailsModule.tsx","Util/Enumerators/pendingVendorDetailChangeType.ts","Containers/ManualSupplier/EditManualSupplier/BeeDetailsModule.tsx","Containers/ManualSupplier/EditManualSupplier/BankDetailsModule.tsx","Containers/ManualSupplier/EditManualSupplier/SupportingDocumentsModule.tsx","Sections/Marketplace/MTPManualSupplierStep/MTPManualSupplierStep.tsx","Sections/Marketplace/OnboardingRequestEdit.jsx","Sections/Marketplace/SupplierChecks/SupplierChecks.tsx","Sections/MyOffice/PPReport/PPReport.tsx","http/MyOffice/SupplierUpdates/supplierUpdatesApi.ts","Sections/MyOffice/SupplierUpdates/PendingEventDetailTable/PendingEventDetailTable.tsx","Sections/MyOffice/SupplierUpdates/PendingEventDetailModal/PendingEventDetailModal.tsx","Sections/MyOffice/SupplierUpdates/SupplierUpdates.tsx","Views/MyOfficeView.jsx","http/SupplierSearch/supplierSearchApi.ts","Util/Enumerators/searchSupplierSortingFields.js","Util/Enumerators/SupplierExportStatus.ts","Containers/Marketplace/MarketplaceSearch.jsx","Util/Enumerators/beeStateFilter.ts","Sections/Marketplace/AddSupplierModal/AddSupplierModal.tsx","Util/Enumerators/searchBeeStatusCriteria.js","Util/Enumerators/beeOwnership.ts","Containers/SubAccount/SubAccount.tsx","Sections/SupplierSearch/SupplierSearchToolTip.jsx","Sections/SupplierSearch/SupplierSearchConfiguration.jsx","Containers/ManualSupplier/EditManualSupplier/ProductSegmentsModule.tsx","Containers/ManualSupplier/EditManualSupplier/CompanyDetailsModule.tsx","Containers/ManualSupplier/EditManualSupplier/EditManualSupplier.tsx","Containers/RateCompanyModal/RateCompanyModal.tsx","Sections/SupplierSearch/SupplierSearch.jsx","Controls/InfiniteScroll/InfiniteScroll.tsx","Images/magnifying-glass.svg","Controls/SecondarySearchInput/noun-filters.svg","Controls/SecondarySearchInput/SecondarySearchInput.tsx","Sections/Messaging/NewMessageModal/NewMessageModal.tsx","Sections/Messaging/MessengerHeader/MessengerHeader.tsx","Sections/Messaging/ChatMessageHeader/ChatMessageHeader.tsx","Sections/Messaging/MessageItem/MessageItem.tsx","Sections/Messaging/ChatMessageContent/ChatMessageContent.tsx","Sections/Messaging/Messaging.tsx","Views/MarketPlaceView.jsx","Sections/MyCompany/NavTabs.jsx","Sections/MyCompany/AddressContactInfo.jsx","Sections/MyCompany/SupplierInfo.jsx","Sections/MyCompany/Compliance.tsx","Sections/MyCompany/BeePractice.jsx","Containers/Supplier/SupplierClientDetailsModal.tsx","Hooks/useOutstandingInformationLoader.tsx","Sections/MyCompany/MyClients.tsx","Sections/MyCompany/ProductService.jsx","Sections/MyCompany/BankInfo.jsx","Sections/EnterpriseConfig/EnterpriseConfigProgress.jsx","Controls/FileUploader.jsx","Containers/EnterpriseConfig/LogoUploader.jsx","Containers/EnterpriseConfig/ERPIntegration/ERPIntegration.tsx","Controls/InfoIcon.jsx","Containers/EnterpriseConfig/ExistingVendorImport.jsx","Controls/UtilButton.jsx","Containers/EnterpriseConfig/WorkFlows.jsx","Sections/EnterpriseConfig/EnterpriseConfigStep01.jsx","Containers/EnterpriseConfig/CategoryCreator.jsx","Sections/EnterpriseConfig/EnterpriseConfigStep02.jsx","Containers/EnterpriseConfig/TermsAndConditionsUploader.jsx","Sections/EnterpriseConfig/EnterpriseConfigStep03.jsx","Containers/EnterpriseConfig/TableActions.jsx","Containers/EnterpriseConfig/SupportingDocumentsConfig.jsx","Sections/EnterpriseConfig/EnterpriseConfigStep04.jsx","Views/EnterpriseConfigView.jsx","Util/Enumerators/userStatus.ts","Sections/MyCompany/Agreements.tsx","Util/Enumerators/userSortOption.ts","Util/Enumerators/CloseAccountReasons.ts","Sections/Administration/UserManagement/UserSearchResults/UserSearchResults.tsx","Sections/Administration/UserManagement/AddUserModal/AddUserModal.tsx","Sections/Administration/UserManagement/UserManagement.tsx","Hooks/useRouteState.tsx","http/Subscription/subscriptionAPI.ts","Util/Enumerators/OnboardingBeeRequirement.ts","Sections/Subscription/CancelSubscriptionModal/CancelSubscriptionModal.tsx","Sections/Subscription/Subscription.tsx","Sections/Subscription/EditSubscription/EditSubscription.tsx","Util/Enumerators/onboardingApproverLevel.ts","Sections/Administration/Configuration/CompanyInformationTab/CompanyInformationTab.tsx","Sections/Administration/Configuration/ComplianceTab/ComplianceTab.tsx","Sections/Administration/Configuration/ManageUsersTab/ManageUsersTab.tsx","http/SelfConfiguration/SupplierTypesConfigApi.ts","Containers/CompanyConfiguration/Onboarding/AddOrEditSupplierTypeModal.tsx","Containers/CompanyConfiguration/Onboarding/SupplierTypesConfig.tsx","Sections/Administration/Configuration/OnboardingTab/OnboardingTab.tsx","Sections/Administration/Configuration/Configuration.tsx","Views/MyCompanyView.jsx","Containers/OnboardingInvitationCheck.jsx","Containers/SubscriptionCheck/SubscriptionCheck.tsx","Containers/ScrollToTop.jsx","Containers/AppErrorBoundry.jsx","Containers/NotAuthenticatedHandler/NotAuthenticatedHandler.tsx","Hooks/useAxiosError/AxiosInterceptor.tsx","AppContent.tsx","Util/Enumerators/userMarketingInfoSubscriptionEnum.ts","Containers/User/CommunicationPreferenceSummary.tsx","Sections/User/CommunicationPreference.tsx","Views/SettingsView.jsx","Views/UserView.tsx","App.jsx","index.jsx","Sections/Dashboard/DashboardSuppliersSummaryCard/DashboardSuppliersSummaryCard.tsx","http/Dashboard/dashboardApi.ts","Sections/Dashboard/SearchSupplierDatabaseSection/magnifying-glass-white.svg","Sections/Dashboard/BulletinBoardSummaryCard/BulletinBoardSummaryCard.tsx","Sections/Dashboard/SearchSupplierDatabaseSection/SearchSupplierDatabaseSection.tsx","Sections/Dashboard/OverallRatingCard/OverallRatingCard.tsx","Sections/Dashboard/MessagesSummaryCard/MessagesSummaryCard.tsx","Sections/Dashboard/DashboardSummaryItem/DashboardSummaryItem.tsx","Sections/Dashboard/SupplierBEEComplianceSummary/SupplierBEEComplianceSummary.tsx","Sections/Dashboard/ProfileStatusSummary/ProfileStatusSummay.tsx","Sections/Dashboard/SupplierTypeSummary/SupplierTypeSummary.tsx","Sections/Dashboard/SupportingDocumentsSummary/SupportingDocumentsSummary.tsx","Sections/Dashboard/DashboardSuppliersSummaryTable/DashboardSuppliersSummaryTable.tsx","Sections/Dashboard/SupplierContractAgreementSummary/SupplierContractAgreementSummary.tsx","Sections/Dashboard/SupplierPackagesSummary/SupplierPackagesSummary.tsx","Sections/Dashboard/SupplierStatusSummary/SupplierStatusSummary.tsx","Sections/Dashboard/SupplierRegulatoryComplianceSummary/SupplierRegulatoryComplianceSummary.tsx","Sections/Dashboard/OnboardingStatusSummary/OnboardingStatusSummary.tsx","Sections/Dashboard/Dashboard.tsx"],"names":["SystemFeatures","None","BigInt","ErpIntegration","EnterpriseConfig","SupplierSearch","SupplierChecks","RfxBulletinBoard","RfxParticipate","RfxCreateOpportunity","OnboardingCreateRequest","OnboardingApprove1","OnboardingApprove2","CompanyProfile","CompanyProfileEdit","Messaging","UserManagement","AuditTrails","Subscriptions","SubscriptionsEdit","OngoingCompliance","DashboardBulletinBoardSummary","DashboardSupplierCompaniesSummaries","PPReportDashboard","ViewSupplierBankDetails","BackofficeAdministrator","ServiceAdministrator","ManageErpEvents","ManualSuppliers","SubAccounts","OnboardingAddSupplier","MultipleSupplierSelect","ViewMoreSupplierDetails","OnboardingAddSupplierApproval","UseAdvancedSearchFilters","DashboardOwnCompanyComplianceSummaries","ViewSupplierComplianceDetails","ColourIndicators","DetailedAuditTrails","BroadcastMessaging","SupplierExport","SupplierImport","Configuration","ConfigurationCompanyInfo","ConfigurationOnboarding","ConfigurationUsers","ConfigurationCompliance","ConfigurationOnboardingVendorNumber","ConfigurationOnboardingSupplierTypes","ConfigurationCompanyInfoOnboardingBee","RfxEvaluateOpportunity","ConfigurationOnboardingBankDetails","MTOSupplierSponsorship","ConfigurationSupplierEditClientSpecificCategories","ViewSupplierShareholderDetails","OnboardingNewCompany","DelegateOnboardingRequestApproval2","ApproveDelegatedOnboardingRequestApproval2","AssignManualManualVendorNumber","OnboardingCompletionCommunication","CanSuspendMTO","CanExportCSV","SupplierComplianceFunding","AdvancedMySuppliersFilter","CanUpdatePaymentTerms","bitWiseOperation","v1","v2","operationType","hasFeature","feature","userAllowedFeature","hasSomeFeature","DataFeatures","hasDataFeature","companyAllowedData","hasSomeDataFeature","DataFeaturesDisplay","MTOMandatoryField","ManualSupplier","RegistrationNumber","RegisteredCompanyName","TradingName","BusinessUnit","CategoryManager","CompanyType","VatNumber","SupplierType","ContractingTier","PhysicalAddress","PostalAddress","PrimaryContactPerson","AllContactPersons","BEE","Banking","SupportingDocument","ProductSegmentAndFamilies","Restrictions","Motivation","PaymentTerms","EmailAddress","isMandatory","field","mandatoryFields","allowedDataFeatures","setupAllowedDataFeatures","newAllowedDataFeatures","useDataFeatureCheck","strict","withDataFeatureCheck","render","React","dataFeatureCheck","this","ISuppliDataAccess","children","WithDataFeature","dataFeature","dataCheck","ApiErrorCode","FilterTypes","AdvancedFilterTypes","getStaticValue","options","defaultValue","referencedOption","v","nullValue","formatDate","date","dateObject","Date","month","dateTimeDayMonthLabelFormat","monthShortString","formatTelephoneNumber","value","number","i","UserMaintenance","setOpenSubMenu","openSubMenu","userGreeting","companyName","userBadge","onLogout","menuItems","allowedFeatures","userMenu","c","className","Styles","color","onClick","style","paddingLeft","key","item","to","e","subscriptionFeaturesInfo","useShouldShowNotAllowedError","useState","currentValue","changeHandler","currentRequiredFeature","changeRequiredFeaturedHandler","setShowError","setRequiredSystemFeature","sortedSubscriptions","a","b","minimumRequiredSubscription","f","useShowNotAllowedError","requiredSystemFeature","setupSubscriptionFeaturesInfo","newSubscriptionsFeaturesInfo","HeaderNavBar","isAuthenticated","helpLink","forceReload","showNotAllowedError","createChildMenuItem","parentItem","childItem","target","undefined","ev","classNames","menuItem","activeClassName","Header","onHeaderLogoClick","isOpen","setIsOpen","headerClasses","href","expand","newMenuValue","navbar","Footer","rel","Spinner","spinnerType","inline","HelpIcon","url","tooltipMessage","tooltipOpen","setTooltipOpen","id","useMemo","Math","placement","toggle","ShadowCard","NoResultsCard","DropDownButton","styleVal","label","iconSvg","up","labelClassName","badge","badgePlacement","disabled","styleClass","useDarkTriangle","imgClass","badgePlacementClass","IconSvg","type","DropdownButtonLabel","pill","setupAllowedFeatures","newAllowedFeatures","useSystemFeatureCheck","BasicTable","columns","rows","subRows","groupCells","emptyMessage","loading","viewSubRowFeature","totalCell","tableStyle","featureCheck","columnsToRender","gridStyle","gridTemplateColumns","Array","column","groupCellContents","groupCellStyle","gridRow","length","classes","cell","getColumnContent","getColumnKey","getTextAlignmentClass","align","desktopVersionClass","mobileVersionClass","cells","rowContent","row","subRowButton","rowIndex","index","newIsOpen","subRowContent","gridColumn","gridColumnStart","colIndex","DropDownInput","onChange","noPrompt","inputClassName","required","validationMessage","canSearch","squareBorder","searchQuery","setSearchQuery","selectOptions","option","filteredOptions","dropDownItems","showOptions","setShowOptions","inputId","for","direction","tag","name","autoFocus","placeholder","divider","ActionsDropdown","buttonClassName","scrollingMenu","onSearchQueryChange","CheckboxInput","size","input","useRef","onClickHandler","sizeClass","useEffect","htmlFor","checked","ref","Checkmark","CheckboxLabel","TableHeader","totalItems","firstItem","lastItem","actionOptions","isAllOnPageSelected","onSelectAllOnPage","isAllSelected","onSelectAll","pageSizes","selectedPageSize","onPageSizeChange","sortOptions","onSortOptionChange","statusFilterOptions","onStatusFilterChange","additionalStatusFilterOptions","additionalStatusCondRenderExclusions","onAdditionalStatusFilterChange","additionalStatusFilterName","compact","title","disableCheckBox","requiredCheckBoxFeature","display","p","fade","SvgSortAmountDown","ImageButton","svg","alt","SvgImage","Button","Image","TablePageSelector","currentPageIndex","totalPages","onPageChange","firstPageIndexToShow","numberOfPagesToShow","lastPageIndexToShow","startWithEllipsis","endWithEllipsis","pageButtons","pageIndex","isCurrentPage","SvgTriangle","TableFooter","hasActionsDropDown","UtilButton","outline","location","Line","colorStyle","TableRowItem","data","footerItems","selected","onSelectedChanged","canSelect","moreButtonText","onViewMore","onViewMoreDisabled","requiredItemSelectFeature","requiredViewMoreFeature","console","getDisplayValue","footerItem","itemData","tableCells","footerHtmlItems","displayValue","footerColumnSpanStyle","rowItemActionOptions","rowActionItemsToDisplay","hasViewMore","hasActions","Table","tableConfig","requiredMutipleItemSelectFeature","onSelectAllResultsCallback","selectedItems","setSelectedItems","selectedItemObjects","setSelectedItemObjects","setIsAllOnPageSelected","setIsAllSelected","pageSelectedRows","element","onSelectAllOnPageHandler","pageSizeChangeHandler","newPageSize","pageChangeHandler","newPageIndex","limit","searchLimit","preventMultipleItemSelect","useBasicTable","dataItemsStart","dataItemsEnd","headerAndFooterActionOptions","shouldDisable","canSelectRows","filteredColumns","tableClassName","exceededSearchLimit","results","allIds","SearchTableHeader","text","dataItem","valueTemplate","fullSize","tableRowsItems","newSelectedItems","isSelected","onSelectedChangedHandler","generateTableRows","TableActionsItem","o","allowed","appearDisabled","ActionsDropDownItem","ImageText","ModalCloseButton","SvgClose","ModalBackground","transparent","background","clickHandler","event","tabIndex","onKeyDown","role","ModalContainer","ValidationAlert","openValidationIn","onToggle","errorList","setErrorList","invalidElements","document","errorMessages","parent","errors","j","sibling","uniqueList","alert","ReactDOM","forwardRef","form","showValidation","setShowValidation","showValidationAlert","setShowValidationAlert","useImperativeHandle","isValid","setTimeout","innerRef","noValidate","DateTimeInput","min","localDateValue","setLocalDateValue","localTimeValue","setLocalTimeValue","focussed","setFocussed","getDateString","dateTimeValue","monthNumber","Number","dayNumber","getTimeString","dateValue","timeValue","minDateValue","minTimeValue","newDateString","newDateValue","newDateTimeValue","onFocus","onBlur","newTimeString","hours","minutes","MultiSelectDropDownInput","dropdownDirection","dropdownClassName","hideSelectedItemsList","onChangeHandler","itemValue","listOfSelectedValues","newValue","numItemsSelected","ConfirmationModal","heading","subHeading","description","proceedButtonText","image","hasCancel","captureType","capturePlaceholder","onToggleModal","onProceedClick","multiDropdownOptions","setText","setDate","multiDropdownValues","setMultiDropdownValues","formRef","captureContent","imageElement","height","width","SubHeading","captureValue","PageButtons","buttons","hasBack","onBackClick","backButton","utilButtons","button","ProgressButton","stepName","stepIndex","totalSteps","active","inProgress","ProgressIndicator","steps","currentStep","stepsCompleted","indicators","IndicatorContainer","ProgressBarContainer","max","ProgressBar","animated","ProgressBarEnd","MultiSelectDropDown","items","values","maxSelectedItems","badgeValue","listItems","InputGroupImageAddon","icon","addonType","DateInput","localValue","setLocalValue","DateRangeInput","dates","fromDate","toDate","SearchFilters","filters","filterValues","onChangeCallback","newValues","filter","filterName","TextInput","readOnly","formatValue","maxLength","minLength","invalid","AdvancedSearch","advancedFiltersSystemFeature","onValueChangeCallback","buttonClasses","containerDivClasses","advanceFiltersWithValues","advanceFilterBadge","SearchFiltersContainer","advancedFilters","filterValuesToUse","advancedFilterValues","buttonComponents","totalFilterSelected","mobileSearchHeadingBadgeValue","SearchToggleButton","SvgSortSizeDown","FiltersClosed","onAdvancedFiltersChangeHandler","SearchInput","searchTerm","onSearch","searchPlaceholder","onSubmit","BreadCrumbs","additional","useLocation","child","breadCrumbItems","additionalItem","routeItem","getBreadCrumbs","PageHeader","alertText","noBottomMargin","breadcrumbAdditionalItem","selectedFlagEnumToString","enumToUse","defaultEnumValueForEmtpySelection","enumDisplayValues","enumLabels","Object","enumValues","enumValue","enumLabel","x","TextAreaInput","RadioButtonInput","CheckBoxInput","FlagEnumSelectorInput","enumValuesToFilter","enumValuesToDisable","isChecked","onFilesSelected","allowMultiple","allowedFileTypes","fileInput","triggerFileSelect","useCallback","dispatchEvent","currentInput","MouseEvent","selectFiles","accept","fileCount","formData","fileNames","uploadErrors","file","multiple","ModalPopup","onClose","cancelButtonText","subheading","stickyButtons","actionItems","FormatType","MessageAttachment","fileName","progress","onDelete","canClose","link","uploadError","completed","failed","cardPaddingClasses","download","useDebounce","debounceTimeout","latestArg","latestHandler","forceFunction","clearTimeout","promise","bouncer","ISuppliAuthentication","downloadUrlBase","onCreateDraft","onUpdateDraft","onSendMessage","onDeleteAttachment","onCancelUpload","onUploadAttachment","alwaysOpen","defaultOpen","hideSendButton","openInitValue","textArea","initialLoading","setInitialLoading","attachments","setAttachments","body","setBody","isSending","setIsSending","sendQue","getForceUpdatePromiseResolver","fileSelectRef","draftCancelToken","attachmentUploadCancelToken","newDraft","draftAttachments","fileId","filename","fileUrl","done","createDraft","isSendDisabled","updatePending","latestBody","current","onSendHandler","triggerUpdateDebounce","forceUpdateDebounce","newDraftMessage","triggerSave","Promise","resolver","triggerSend","attachment","attachmentToDelete","prevAttachments","onAttachmentDeleteHandler","newFiles","newAttachments","idMatch","progressItem","updateProgress","uploadResult","matchedUpdate","progressFile","onAttachmentUploadedHandler","success","SvgPaperclip","subscriptionEditUrl","shouldShowError","hideError","history","useHistory","canEditSubscription","minimumRequiredSubscriptionText","WithFeature","keepVisible","FeatureRoute","component","path","exact","sensitive","strictFeatureCheck","useVisibleToasts","toastMessages","setToastMessages","dismissToast","prevValue","t","visible","cleanToast","addToast","newId","content","dismiss","useToast","withToast","showToast","ToastContainer","message","PageContentWithButtons","ListEmptyState","fullWidth","FilterInput","props","setValue","autoComplete","Symbol","iterator","asyncIterator","getUnspscInfo","segments","unspscSegments","unspscSegment","code","families","unspscFamilies","segment","unspscFamily","StaticDataTypes","GlobalOfferingSelector","selection","maxItems","setSelection","onCloseCallback","onSearchUsnpscFamiliesCallback","staticDataCallback","internalSelection","setInternalSelection","filterTerm","setFilterTerm","searching","setSearching","searchResult","setSearchResults","searchCancelToken","axios","isReady","unspscInfo","setUnspscInfo","info","removeSegment","prevState","sel","addSegment","toggleItem","executeSearch","recover","result","then","term","cancelToken","token","error","selectionList","optionsToShow","optionRows","family","s","val","k","paddingBottom","borderRadius","marginBottom","onFilterCallback","ProductsAndServicesSummary","summary","itemSummary","iSum","GlobalProductsAndServicesList","selectedUnspscFamilyIds","getStaticDataCallback","setItemSummary","segmentsStaticData","createGlobalProductServiceSummary","Page","noPadding","changeQue","forceQue","newSearchParam","useRouteState","currentStringValue","stringValue","URLSearchParams","params","JSON","forceLoad","processQue","toApply","pathname","search","setFunction","forceUpdate","jsonString","shortName","r","clearFunction","Tab","Tabs","onTabChange","currentTab","setCurrentTab","Error","tabsProps","tabsContent","isTabAllowed","notAllowed","currentTabProps","firstAllowedTab","currentTabContent","slug","excelFileTypes","pdfFileTypes","DragDropFileUpload","acceptedFormats","labelText","onUpdateFilesCallback","onRemoveFileCallback","files","setFiles","fileInputField","dragDetected","setDragDetected","invalidFileDetected","setInvalidFileDetected","handleDragLeave","handleNewFileUpload","validateFileType","onHandleRemoveFile","onDragLeave","onDragEnd","onDrop","onDragOver","fileType","URL","SHOW_LOADING_SCREEN","HIDE_LOADING_SCREEN","ON_STAFF_CONTACT_INPUT_CHANGE","ON_ADDRESS_INFO_CHANGE","SHOW_INFO_POPUP","HIDE_INFO_POPUP","SET_STORE_PROPERTY","SET_LAST_STEP_COMPLETED","LOG_OUT","SET_USER_BASIC_DETAILS","SET_COMPANY_CONFIGURATION","SET_COMPANY_OUTSTANDING_INFO","SET_DATA_FEATURES","SET_SUBSCRIPTIONS_ALLOWED_FEATURES","SHOW_ERROR","CLEAR_API_ERRORS","SET_STATIC_COMPANY_DATA","SET_STATIC_DATA","SET_SUBSCRIPTION_INFO","SET_NOT_AUTHENTICATED","SET_FORCE_LOGOUT","SET_TOKEN_EXPIRATION","ADD_API_ERROR","showLoadingScreen","loadingScreenMsg","payload","hideLoadingScreen","onStaffContactInfoChange","newEntry","onAddressInfoChange","category","setStoreProperty","propName","showInfoPopup","msgs","hideInfoPopup","setLastStepCompleted","setUserBasicDetails","userBasicDetails","setCompanyConfiguration","companyConfiguration","setCompanyOutstandingInfo","companyOutstandingInfo","setDataFeatures","dataFeatures","setSubscriptionAllowedFeatures","subscriptionsAllowedFeatures","logOut","showErrorDialog","clearApiErrors","setStaticCompanyData","optionsToSet","setStaticData","setSubscriptionInfo","setNotAuthenticated","retryHandler","forceLogout","clearNotAuthenticated","setTokenDates","createdAt","expiresAt","addApiError","apiError","makeRequest","reqFunction","onSuccess","onError","bypassAuthCheck","store","getState","authentication","tokenCreationDate","tokenExpirationDate","remainingTime","totalWindow","get","response","dispatch","res","err","log","catch","checkHttpStatus","status","makeRequestAsync","resolve","reject","refreshTokenInternal","useShowError","useDispatch","SET_REFERENCES","SET_REGISTRATION_INFO","SET_SUPPLIER_CATEGORIES","SET_UNSPSC_FAMILIES","SET_POSTAL_ADDRESS","SET_SHAREHOLDER_DETAILS","ON_REGISTRATION_INPUT_CHANGE","setRegistrationObject","objName","objVal","setSupplierCategories","newSelection","setUnspscFamilies","setPostalAddress","physicalAddress","setShareholderDetails","shareholderDetails","onRegistrationInputChange","stage","fieldName","fieldValue","find","getDate","toLocaleString","getFullYear","formatCurrency","amount","withThousandSeparator","toFixed","replace","formatPercentage","dateTimeLabelFormat","toLocaleDateString","dayString","toString","hh","getHours","hhString","mm","getMinutes","mmString","timePeriod","ComplianceStatus","complianceStatusToString","AwaitingResults","ReceivedResults","Complete","Disabled","getComplianceStatusTextClass","getComplianceStatusBadgeColor","saveSupplierInfo","supplierInfo","post","saveSupplierInfoAsync","getSupplierInfoMatches","uniqueCompanyIdentifier","saveProductServiceOffering","productServiceOfferings","saveBankingDetails","bankDetails","saveBankingDetailsAsync","saveAddressInfo","addressInfo","saveKeyStaffContactDetails","contactDetails","saveBeeCertificationInfo","beeCertificationInfo","saveDocumentsInfo","documents","saveCurrentSubscription","pt","saveTermsAndConditions","tcs","saveCommunicationPreference","receiveMarketingInfo","sendCompanyDuplicateEmail","contactInfo","sendSubscriptionEnquirySupportEmail","selectedTierId","getOnboardingRequests","searchCriteria","saveOnboardingRequest","onboardingRequest","saveOnly","submitOnboardingRequest","addNewSupplierOnboarding","newSupplier","createOnboardingRequestsForSuppliers","supplierIds","sendCompanySearch","searchObject","sendLargeCompanySearch","submitSupplierExportRequest","sendComplianceCheckSearch","sendMyClientsSearch","resolveDuplicateRequest","addBusinessUnitsForExistingSupplier","addBusinessUnitMessage","addSubAccount","subAccountMessage","editSubAccount","duplicateCompanyIntoManualSupplier","addComment","comment","navMenuItems","redirect","subMenuOffset","isUserMenu","ComplianceCheckType","ComplianceCheckStatus","complianceCheckTypeToString","CIPC","SARS","complianceCheckStatusToString","Valid","Invalid","Pending","NA","getUserBasicDetails","getCompanyConfiguration","refreshToken","getTokenExpiry","getOptions","filtersStr","join","getOptionsAsync","getCompanyOptionsAsync","companyId","companyIdQueryStr","getSupplierInfo","getSupplierInfoAsync","getAddressInfo","getAddressInfoAsync","getKeyContactDetails","buyerCompanyId","getKeyContactDetailsAsync","getSupplierKeyContactDetailsAsync","getBeeDetailsAsync","getDocumentsAsync","filterByBeeRating","getBankingDetails","getBankingDetailsAsync","getSupplierCategories","getRegistrationSelectedSubscription","getTermsAndConditions","getTermsAndConditionsAsync","getNotifications","getNotificationCount","getOnboardingRequest","onboardingRequestId","getOnboardingRequestExceptionReason","supplierCompanyId","newOnboardingRequest","getDuplicateRequests","companyTypeId","registrationNumber","companyTypeQueryString","registrationNumberQueryString","encodeURIComponent","onboardingRequestIdQueryString","getOnboardingInvitation","getSubscriptionDetail","getSubscriptionUpgradeFee","newSubscriptionTierId","getCompanyDataFeatures","getCompanySubAccountsAsync","getAllSubscriptionsAllowedFeatures","getCommunicationPreference","getCompanyCategoryManagers","getSupplierExportStatus","SET_OPTION","setOption","optionName","optionValues","SET_ONBOARDING_REQUEST_OBJECT","SET_ONBOARDING_REQUEST_OBJECT_PROPERTY","setOnboardingRequestObject","objectValue","onOnboardingInputChange","uploadAttachments","channelId","messageId","config","uploadUrl","broadcastMessage","getChannelList","pageId","pageType","nameFilter","unreadFilter","pageIdQuery","pageTypeQuery","nameFilterQuery","unreadFilterQuery","getChannelListUrl","getChannelMessages","qsAfter","qsPageType","getChannelMessagesUrl","searchMessages","after","afterQueryString","filterQueryString","searchUrl","createDraftMessage","createDraftUrl","updateDraftMessage","updateDraftUrl","put","deleteMessageAttachment","attachmentId","deleteAttachmentUrl","delete","sendMessage","sendMessageUrl","readMessage","readMessageUrl","supplierFilterOptions","All","Existing","Potential","getContractTiers","getContractAgreements","contractTierId","getContracts","populateContracts","uploadContract","contractId","uploadContractForTemplate","contractTemplateId","urlParameters","push","approveContract","getDashboardContractAgreementsSummary","loadAddressContactData","invitationBuyerCompanyId","resAddress","addresses","address","addressTypes","Physical","postalAddress","Postal","registrationStepCompleted","resContactPersons","setAddressInfo","contactPersons","hasTelNumberValidation","hasTelephoneValidation","loadAddressDataAsync","getBeePracticeData","certificateExpiryDate","beeInfo","loadBeePracticeData","setBeeInfo","loadDocuments","setDocuments","companyDocuments","loadBankingDetailsData","setBankingDetails","getCompanyOutstandingInformation","outstandingInfoMessage","getMyCompanyRating","companyRatingMessage","getCompanyRating","saveCompanyRating","modifyCompanyName","newName","initStore","isValidStep1","isValidStep2","isValidStep3","isValidStep4","isValidStep5","isValidStep6","isVATNumberValid","showLoadingModal","infoPopupHeader","infoPopupSubheading","infoPopupContent","currentCompanyTab","breadCrumbList","currentCompanyId","loggedInUserDetails","lastStepCompleted","onboardingLastStepCompleted","registration","prdInfo","prtInfo","provinces","countries","sectors","turnoverBands","sectorTurnoverBands","sectorTurnoverBandStatuses","companyTypes","beeLvls","beeSectors","keyContactRoles","bankAccountTypes","banks","supplierCategories","subscriptions","businessUnits","documentTypes","businessTypes","staticCompanyData","staticData","stepProgression","retryHandlers","apiErrors","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","state","action","contactPersonTypeId","indexOfItemToChange","findIndex","newContactPersons","selectedSupplierSubCategoryIds","shareholders","references","newBreadCrumbList","concat","newBreadCrumb","newLoggedInUserDetails","fullName","subscriptionName","subscriptionTierId","userLimit","emailAddress","email","businessUnitIds","accountSuspended","newCompanyConfiguration","prioritiseClientOfferings","allowedCompanyFeatures","newCompanyOutstandingInfo","addressInformation","bankInformation","companyInformation","supportingDocuments","agreements","outstandingBuyerIds","showError","newStaticCompanyData","forEach","newStaticData","applyMiddleware","thunk","module","exports","BeeValidationStatus","beeValidationStatusToString","Validated","Revoked","getBeeValidationStatusBadgeColor","getNewKey","getKeys","deleteKey","clientId","saveOnboardingConfiguration","getOnboardingConfiguration","getCompanyInformationConfiguration","saveCompanyInformationConfiguration","getUsers","offset","statusFilter","sortOption","selectedRoleIds","selectedRoleId","selectedBusinessUnitIds","selectedBusinessUnitId","addUser","newUser","editUser","userId","user","deactivateUser","activateUser","deleteUser","resendInvite","getCompanyCompliance","getCurrentCompanyCompliance","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref2","createElement","fill","fillRule","stroke","d","_ref","svgRef","viewBox","ForwardRef","StarRatingInput","totalRatings","readonly","showToolTips","showTotalRatings","isStarFilledArray","map","_","starClass","LargeRating","SmallRating","toolTipClass","Tooltip","toolTipText","filled","starValue","Star","Tooltiptext","TotalRatings","getCheckStatus","check","totalFailedChecks","totalPassedChecks","procureCheckResultItems","getFormattedComplianceDetails","details","exceptionReason","overAllStatus","complianceResults","some","every","reason","dateCheckedDisplay","dateModified","SearchUsnpscFamilies","chatChannelCard","messageDate","messageSnippet","profilePicture","onClickCallback","unreadMessageCount","classActive","inactive","classProfilePicture","withoutPicture","withPicture","chatChannelCardItem","channelImg","channelTextContent","channelCardHeading","msgDate","msgSnippet","acceptOnboardingRequest","onboardingId","queryParameter","approveOnboardingRequest","declineOnboardingRequest","sendOnboardingRequestEmail","linkOnboardingRequestToUserCompany","invitationId","rejectOnboardingRequest","retractOnboardingRequest","updateOnboardingRequestDelegationStatus","delegationStatus","queryParameters","suspendOnboardingRequest","deleteOnboardingRequest","dismissNotification","notificationId","unlinkSupplierOnboarding","PageTypes","BeeStatusBadge","hasBeeCertificate","validationStatus","badgeContent","ChatChannelListSection","messageCardList","selectedContent","sentMessageChannelId","scrollRef","onCardClickHandler","timestampFormat","card","dateTimeString","updatedDate","cardItem","lastMessage","cardId","ChatChannelCard","defineProperty","Dashboard_1","require","default","Notification","isNew","stopPropagation","loading_inline","Notifications","notificationMessages","notifications","notification","seen","sentDate","onItemClick","notificationType","linkUrl","onDismiss","showLoading","NotificationButton","SignalRNotifications","SupplierImportStatus","NotificationTypes","connection","registeredHandlers","useSignalR","handler","registeredHandlerIndex","HubConnectionBuilder","withUrl","withAutomaticReconnect","build","start","activeIndexes","on","eventDetails","registeredHandler","newIndex","NotificationMenuItem","showNotifications","setShowNotifications","notificationCount","setNotificationCount","setNotifications","setLoading","disconnect","UnreadNotifications","totalUnreadNotifications","notificationsMessage","latest","updatedNotificationCount","updateNotificationCount","notificationMenuClickHandler","prevShowNotifications","notificationItemClickHandler","BeeCompliance","Payments","Opportunity","NewOpportunity","RegulatoryCompliance","SuppierBeeCompliance","SupplierRegulatoryCompliance","Onboarding","open","onDismissClickHandler","prevNotifications","n","prevNotificationCount","ValidationError","DropdownInput","setState","hasFocus","msg","Component","duplicateCompanyEmailType","CompanyAdmistrator","B1SA_Support","DuplicateRegistrationModal","validateContactInfo","surname","phonenumber","submitContactInfo","showSelectionTable","showMyCompanyTable","showRequestContactTable","showSuccessModal","companyIds","emailType","onNameChangeHandler","onSurnameChangeHandler","onEmailChangeHandler","onPhoneChangeHandler","includes","duplicates","duplicate","previousState","modalHeading","modalSubheading","modalButtons","selectionRows","registeredName","companyType","proceedHandler","toggleModalCallback","getNoRelationshipRow","submissionSuccessCallback","withRouter","connect","RegistrationProgress","useSelector","hasBanking","BankingDetails","links","splice","paddingTop","OnboardingInvitationDetails","invitation","onAccept","onReject","vatNumber","tradingName","generalEmail","applyFilters","returnVal","fun","newEv","validations","validation","inputType","iconName","requiredFieldsStep1","requiredFieldsStep2","requiredFieldsStep3","requiredFieldsStep4","requiredFieldsStep5","getRequiredBankAccountFields","useCustomFields","fields","checkPositive","requiredFieldsMTP1","requiredFieldsManualSupplierMTP1","requiredFieldsMTP5","requiredMandatoryFieldsStep1","requiredMandatoryFieldsStep2","Validation","stringNullOrEmpty","isEmailInvalid","test","validIdNumber","idNo","tempTotal","checkSum","multiplier","parseInt","charAt","validateVatNumber","callback","args","strVat1","strVat2","strVat3","strVat4","strVat5","strVat6","strVat7","strVat8","strVat9","strVat11","strVat12","strVat31","strVat32","strVat51","strVat52","strVat71","strVat72","strVat91","strVat92","strVatTotal","aErrorCount","strVat","substr","strVat10","filterOutLetters","filterOutNumbers","filterOutSpecialCharactersExceptFullstops","filterOutExtraFullstops","str","formatTelNumber","slice","formatRegNumber","slashDetected","fourNum","match","noSlash","sixNum","firstSlash","secondSlash","clampNumber","decimalPlace","internalVal","num","parseFloat","fixedNum","isNaN","minLengthVal","maxLengthVal","isValidEmail","filterOutSpecialCharacters","filterOutSpecialCharactersAndWhiteSpace","companyNameFilter","getRegNumberConfig","selectedCompanyTypeName","setStepValid","regNumValidation","idNumValidation","regNumberValidationsConfig","regNumberFilterConfig","regNumberPlaceholder","maxLengthValue","onCompanyTypeChangeHandler","selectedCompany","onInputChangeCallback","shouldClearRegNumber","idNumValidationRequired","vatExempted","ClientBaseTable","clientBase","updatedClientBase","updateClientBaseHandler","phone","periodInBusiness","GetShareholders","getSupplierTypeShareholdersConfigStatus","saveShareholders","deleteShareholder","shareholderId","getSupplierShareholders","staticDataTypes","BeeClassification","BeeStatus","Country","Province","Sector","TurnoverBand","SectorTurnoverBand","Bank","BankAccountType","SubscriptionTier","UnspscSegment","UnspscFamily","DocumentTypes","BusinessTypes","ContactPerson","SectorTurnoverBandStatus","Gender","Race","Municipality","CompanyStatus","threadLock","que","useThreadSafe","checkQue","nextItem","pop","run","useStaticData","optionsToLoad","setIsReady","storeOptions","cachedOptions","currentStoreOptions","loader","optionsToGetFromApi","loadedOptions","dispatchPayload","objectToDisplayObject","object","subscriptionTierData","bcData","beeClassificationData","documentTypeData","sectorTurnoverData","sectorTurnoverBandData","sectorTurnoverStatusData","sectorTurnoverBandStatusData","sectorData","turnoverBandData","contractPersons","contactPersonTypes","bankData","bankAccounts","bankAccountTypeData","companyTypeData","businessTypeData","countryData","province","provinceData","beeStatuses","beeStatusData","unspscSegmentData","unspscFamilyData","genderData","g","raceData","municipalityData","m","companyStatuses","companyStatusData","FileOptions","DocumentClassification","downloadUrl","onUploadProgress","onUploadDone","onUploadFileSizeExceeded","deleteDocument","template","docExpires","expiryDate","createRef","fileChangeHandler","FormData","append","progressEvent","progressFraction","loaded","CompanyGroupingType","newStringValue","replaceAll","today","dd","getMonth","yyyy","year","day","dateToLocalValue","DocumentUploader","onDateInputChangeCallback","doc","newDocuments","documentTypeId","onDocumentsChanges","onDocumentUploading","currentState","progresses","uploadProgress","onDocumentUploaded","uploadDocumentMessage","documentId","originalFilename","failedUploads","uploadFailed","newVal","newFileSizeExceeded","fileSizeExceeded","isBeeAffidavit","documentType","documentClassification","BeeAffidavit","statusContent","statusClassName","contextQuery","contextId","queryPrefix","manualSupplierQuery","manualSupplierId","hasTemplate","documentTemplate","round","displayPrefix","preventDefault","optional","expires","header","ShareholderDetailsModal","shareholderMessage","onUpdate","isStaticDataReady","modalValues","setModalValues","getDefaultGender","getDefaultRace","ShareholderIdentityDocument","shareholderType","genderId","raceId","submitHandler","selectedType","nameValue","trim","idNumber","idValue","selectedRace","disability","disabilityToggle","selectedGender","sharePercentage","sharePercentageValue","contactNumber","contactNumberValue","titleValue","FormGroup","shareholderMsg","shareholderIdentityDocumentMessage","setupDocuments","docMessage","Input","hidden","ShareholderTable","shareHolderData","setShareHolderData","isLoading","setIsLoading","showAddEditModal","setShowAddEditModal","modalReadOnly","setModalReadOnly","currentShareholderId","setCurrentShareHolderId","canView","onViewRow","shareHolderId","readOnlyModal","rowConfig","sh","deleteRow","updates","onDeleteRow","newRow","RadioSelector","onOptionClick","btns","AdditionalCompanyData","onUpdateDataHandler","updatedAdditionalData","additionalCompanyData","updateClientSpecificDataHandler","royalBafokengNationalResident","numberOfEmployees","GeneralBusinessInformation","isSouthAfricanCompany","selectedCompanyType","companyGroupingType","SouthAfrican","telephoneValidation","submitterFullName","submitterRole","generalPhone","generalFax","generalWebsite","businessTypeId","DirectorNames","directorsNames","BusinessRegions","businessRegionProvinceIds","newEvent","ClientBase","includeShareholders","ShareholdersDetails","SaveAndContinueConfirm","saveAndContinueCallback","RegistrationCompanyInfo","companyDataFeatures","selectedBand","hasVatNumber","currentCompanyType","isForeignCompany","Foreign","regNumberConfig","Badge","disableEditRegistrationName","regNumberReadOnly","isSubAccount","holdingCompanyName","MandatoryTaxClearancePinNumber","taxClearanceNumber","taxClearanceNumberExpiryDate","WrappedRegistrationCompanyInfo","WizzardBtns","marginTop","backUrl","onClickSaveAndContinue","onClickNext","nextUrl","nextText","validateStep","requiredFields","split","valueNullOrEmpty","subscriptionTierTransform","subscriptionTierDataItem","features","monthlyPriceInclVAT","loadSupplierInfoOptions","loadBeePracticeOptions","entry","sector","turnoverBand","cls","stbd","turnoverBandId","beeClassificationId","sectorTurnoverBand","loadSupplierSearchDetailsOptions","beeLevels","loadProductServiceOptions","setPrdInfo","loadBankingDetailOptions","acType","bank","loadAddOnboardingRequestOptions","loadSubscriptionTiers","StaticCompanyDataTypes","staticCompanyDataTypes","supplierCategory","roles","supplierType","contactPersonType","businessUnit","paymentTerms","supplierTransactionStatuses","useStaticCompanyData","supplierSubCategories","subCategory","roleId","supplierTypes","buData","paymentTerm","businessType","supplierTransactionStatus","supportingDocument","RegistrationStep01","saveSupplierInfoWithoutDuplicatesCheck","supplierDetailsToSave","performSave","stepNumber","checkDuplicates","getDuplicates","duplicatesFound","saveInfo","basicUserDetails","allowedFeaturesString","hideInfoMsg","showDuplicateOptions","onNextClick","arg","totalSharePercentageCount","allShareholdersHaveDocs","shm","businessRegions","requiredIdNumValidation","isStepValid","scrollTo","top","showInfoMsg","toggleConfirmSaveAndContinue","prevSate","showConfirmMsg","saveAndContinueLater","toggleDuplicates","showDuplicatesMsg","setNewDuplicates","saveDuplicateOptions","showOnboardingInvitationModal","showOnboardingInvitationAcceptedModal","buyerOptions","disableEditRegistrationInfo","onInputChange","setSupplierInfo","autoAccept","prevProps","onboadingRequestInvitationId","onAcceptOnboardingInvitation","companyTypeName","onRejectOnboardingInvitation","invitationModalOnCloseHandler","invitationAcceptedModalOnCloseHandler","Alert","mappedRegistrationStep01","saveAndContinue","optionValue","AddressInfo","changeSelection","currentSelection","updateAccordingToSelection","physicalOption","postalOption","postalIsPhysical","onPostalIsPhysicalChange","newPostalAddress","addressId","onCountryChange","hasProvinces","prov","countryId","onProvinceChange","hasMunicipalities","municipalities","municipality","provinceId","physicalBtn","mandatoryPhysicalAddress","postalBtn","mandatoryPostalAddress","filteredProvices","country","filteredMunicipalities","isSameChecked","streetAddressL1","streetAddressL2","city","postalCode","KeyContactStaffOptions","toggleOptions","setContact","setRoleCallback","contacts","contactPerson","KeyContactStaff","staticDataReady","onDetailsChange","newDetailsEntry","getDetailsCell","generalReadOnly","isGeneral","headerRow","dataRows","contactPersonTypeDisplay","allContactsMandatory","primaryContactMandatory","hasTelNumValidation","selectedValue","targetRole","setRole","getTableContent","StaticData","RegistrationStep02","extractKeyContactStaffDetails","person","physical","postal","keyContactStaff","physAdd","postAdd","physicalAddressProvince","postalAddressProvince","MandatoryMunicipality","physicalAddressMunicipality","postalAddressMunicipality","keycontactstaffdetails","provinceOptions","countryOptions","loadAddressContactOptions","municipalityOptions","onAddressInputChange","mappedRegistrationStep02","hasBeeValidationMessage","onHasBeeCertificateChange","onHasBeeCertificateChangeHandler","filterBeeStatuses","selectedSectorId","selectedTurnoverBandId","boPercentage","stb","sectorId","sectorTurnoverBandStatus","stbs","sectorTurnoverBandId","maxBOPercentage","minBOPercentage","beeLevel","beeStatusId","BeeCertification","filteredBeeLevels","BlackOwnership","bwoPercentage","OptionSelector","SectorTurnoverInfo","onVatExemptedChange","beeClassifications","onVatExemptedChangeReference","annualTurnover","currentSectorTurnoverBandIds","filteredTurnoverBands","beeClassification","selectedTurnoverBand","selectedSectorTurnoverBand","isBefore","considered","compared","getTime","addDays","days","timeDays","timeDate","RegistrationStep03","newDate","isVatExempted","saveAndContinueToStep","setTurnoverModal","showTurnoverModal","step","turnoverband","mappedRegistrationStep03","tob","getSupplierContractInfoMessage","supplierContractInfoMessage","AgreementsTable","signatoryCompanyId","currentUserIsBuyer","contractTiersList","onContractApproved","loadingTable","setLoadingTable","showApproveModal","setShowApproveModal","selectedContract","setSelectedContract","setAgreements","setContractTierId","contracts","newAgreements","approved","noConfirmationRequired","supplierContractInfo","supplierTypeId","externalContractTierId","contractTiers","newContractTierId","tier","contractTemplate","agreement","agreementName","approvedByOtherSignatories","allowNewVersions","updateContractInTable","newContract","oldvalue","uploadingContract","setUploadingContract","fileSelector","onFilesSelectedHandler","contractIdToUse","total","handleContractApproval","contract","Progress","getApproveAction","getUploadAction","getViewAction","getUploadCancelAction","RegistrationStepDocuments","showSaveAndContinue","setShowSaveAndContinue","approvals","setApprovals","documentSummary","OfferingSelectionSummary","notifyNewOpportunities","placeHolder","tradeDescription","StaticCompanyData","getClientSupplierCategories","getSupplierCategoriesSelectionAsBuyer","getBuyerProductCategoriesOptions","saveClientSpecificProductCategories","canSupplierEditClientSpecificProductCategories","ClientOfferingSummaryDisplay","clientProductOfferings","offering","subCategories","ClientOfferingSummary","setClientProductOfferings","loadData","BuyerOfferingSelector","subCat","productCategories","removeSupplierCategory","addSupplierCategory","categorySelection","y","selectedSubCategoryIdList","saveData","onApplyClick","currentTarget","cat","toLocaleLowerCase","toLowerCase","useStaticDataCustom","RegistrationStep04","toggleGlobalProductsModal","showGlobalProductsModal","toggleClientOfferingSelectorModal","showClientOfferingSelectorModal","setBuyerProductSegmentSelection","selectedProductCategories","buyerProductCategoriesSelection","productServiceOffering","supplierCanEditCategoryData","maxSelection","categorySelectionData","supplierCanEditCategories","loadClientSupplierCategoriesData","setGlobalSelection","mappedRegistrationStep04","setBankAccounts","doUpdate","account","customBank","bankId","customBankAccountType","bankAccountTypeId","accountName","accountNumber","branchName","branchCode","doDelete","bankAccountDetailsId","RegistrationStep05","validate","messages","mappedRegistrationStep05","TermsConditions","onAccepted","sponsored","freeTier","agreeTC","buyerList","termsAndConditions","PlanOption","OptionTierFeature","priceValue","planName","buttonText","setFullYear","sponsorName","fundedComplianceMessage","fundCompliance","Container","TierOption","TierOptionSelected","TierOptionDisabled","TierOptionHeading","Tier","TierOptionFooter","TierOptionSponsored","onEnquire","onActionCallback","ProductTierSelector","sponsoredSubscriptionTierId","disabledSubscriptionTierIds","recommendedSubscriptionTierId","subscriptionTiers","sponsoredTier","filteredSubscriptionTiers","activeIndex","setActiveIndex","animating","setAnimating","recommended","mobileOptions","CarouselItem","onExiting","onExited","Recommended","RecommendedMessage","onEnquiry","desktopOptions","DesktopPlanOption","ProductTierContainer","Carousel","interval","next","nextIndex","previous","CarouselIndicators","getInvoices","invoicesMessage","addNewSubscription","paymentRedirectUrl","updateSubscription","retrySubscriptionPayment","pendingSubscriptionTierId","subscriptionId","getSubscriptionStatus","SendSubscriptionEnquiryModal","Onclose","selectedTierName","toUpperCase","RegistrationStep06","subDetails","companySubscription","onEnquireHandler","selectedTier","showOnEnquireModal","toggleTermsConditions","showTermsConditions","setSelected","selectionMade","setPrtInfoField","componentDidMount","resTiers","resTandC","termsConditionsId","setPrtInfo","onAcceptHandler","sub","subscription","submitterName","userDetails","SubscriptionId","companySubscriptionId","price","mappedRegistrationStep06","RegistrationView","OnboardingRequestOrigin","supplierModalPreUploadText","supplierModalPostUploadText","getSupplierImport","resolveSupplierImport","ImportCompleteScreen","errorFileGuid","processedRecords","failedRecords","SupplierImportModal","onCloseModal","setFile","fileUploaded","setFileUploaded","busyUploadingFile","setBusyUploadingFile","showProgressBar","setShowProgressBar","progressBarPercentage","setProgressBarPercentage","importProgressMessage","setImportProgressMessage","httpCancelToken","SupplierImportProgressUpdates","progressPercentage","cancel","supplierImport","Enqued","BusyProcessing","resolveImportCompletion","Finalized","targetFile","progEv","uploadFile","totalRecords","newFile","isArray","OnboardingSearch","urlParams","showSupplierImportModal","setShowSupplierImportModal","show","paramVal","decodeURIComponent","onSearchTermChange","onSearchCallback","onNewOnboardingRequest","SubCheckType","PropertyInformation","NonPreferredListing","Judgements","SAFPS","LexisDiligence","CreditInformation","BankVerification","Persal","subCheckTypeToString","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen","Twenty","TwentyOne","TwentyTwo","TwentyThree","TwentyFour","TwentyFive","TwentySix","TwentySeven","TwentyEight","TwentyNine","Thirty","fillOpacity","overallComplianceStatus","SupplierCheckDetails","vendorNumber","checkDetails","setCheckDetails","myCompanyId","correctingValuesSent","setValuesSent","correctingValue","setCorrectingValue","formattedDetails","procureCheckItem","complianceCheckId","company","externalVendorId","registrationType","complianceProvider","Label","procureCheck","complianceResultItem","TimesSvg","verificationTypeId","CheckMarkSvg","subCheckType","SupplierCheckModal","AgreementsModal","supplierCompanyRegisteredName","supplierContractDetails","setSupplierContractDetails","supplierTypeName","setSupplierTypeName","contractTierName","setContractTierName","setContractTiers","contractTierResults","nameSupplierType","contractTier","ct","nameContractTier","overallComplianceStatusToString","Outstanding","Failure","Success","SendTo","FileInput","getFileSelectHandler","uploadHandler","now","Axios","isCancel","MessageComposer","onMessageSent","onMessageIdChange","getForceUpdate","onDisableSendChanged","onDraftChanged","setMessageId","fileSelectHandler","CancelToken","sentMessage","Expand","Collapse","HideSendButton","HideToggleButton","TextArea","AttachmentsContainer","AttachmentBadge","ToggleButton","trimStart","AttachButton","SendButton","ComposeMessageModal","sendTo","recipientDetails","searchQueryResultCount","hasError","setHasError","setForceUpdate","draftMessageId","setDraftMessageId","setIsSendDisabled","showSendingProgress","setShowSendingProgress","sendingProgress","setSendingProgress","sendingTotal","setSendingTotal","BulkMessageProgress","totalMessages","onDraftChangedHandler","sending","model","myCompany","single","recipientCompanies","getForceUpdateHandler","floor","onboardingStatuses","New","invitationPending","awaitingRegistration","awaitingCompliance","complianceFailure","profileIncomplete","pendingApproval1","pendingApproval2","PendingAddSupplierApproval","declined","suspended","awaitingContractApprovals","awaitingVendorNumber","manualSupplierInvitationPending","manualSupplierAwaitingRegistration","networkVendorInvitationPending","networkVendorAwaitingRegistration","onboardingFilterOptions","Active","Declined","Completed","Suspended","AwaitingSupplierInvitationAcceptance","AwaitingSupplierRegistration","ProfileIncomplete","AwaitingComplianceChecks","ComplianceFailure","AwaitingContractApproval","PendingApproval1","PendingApproval2","PendingDelegatedReview","DelegatedApproved","DelegatedDeclined","AwaitingVendorNumber","SupplierCheckStatus","sortingValues","DocumentViewer","displayBanking","documentName","KeyContactsTable","keyContacts","DetailsItem","SupplierSearchDetails","companyDetails","clientSpecificInfo","complianceDetails","itemName","referencedItem","categoryManagerUser","isBeeExpired","businessUnitsDisplay","businessRegionsDisplay","transactionStatusId","orderType","exceptionFlag","unitNumber","statusClass","categoryManagerCode","SupplierSearchRating","rating","BankDetailsTable","bankAccount","SubAccountsTable","subAccounts","subAccount","getClientSpecificInfoAsync","getClientSpecificInfoAsTheSupplierAsync","saveClientSpecificInfoAsTheSupplierAsync","SupplierDetailsModal","loadingCompanyDetails","loadingKeyContacts","loadingDocuments","loadingSubAccounts","loadContractTiers","formattedContractTiers","loadContacts","loadDetails","loadClientSpecificInfo","getDataPromises","all","addressResults","hasSubAccounts","disableDownloadButton","loadingMessage","parentAccountId","parentAccountTradingName","isPotentialSupplier","hasActionItems","onboardSupplierCallback","isSupplierOfCurrentCompany","companyRating","totalCompanyRatings","createProductServiceSummary","selectedSubCategoryIds","categoriesStaticData","addOrUpdateVendorNumber","delegateOnboardingRequestApproval","getOnboardingReqeustComments","paymentTermsId","VendorNumberOrigin","UpdateVendorNumberModal","onSubmitCallback","setVendorNumber","setOnboardingRequest","vendorNumberInvalid","setVendorNumberInvalid","invalidInputMessage","setInvalidInputMessage","getElementById","DelegateMTOApprovalModal","isCompanyStaticDataReady","selectedUserRole","setSelectedUserRole","rolesThatCanApproveOnDelegation","setRolesThatCanApproveOnDelegation","onboardingDelegationStatus","PendingReview","Accepted","delegatedUserRoleName","CommentModal","comments","setComments","load","commentType","PaymentTermsUpdate","internalValue","setInternalValue","getSupplierPaymentTermsId","finally","updateSupplierPaymentTerms","terms","buildSelection","BulkEmailUpdate","onUpdatedCallback","bulkEmailUpdate","OnboardingRequest","shouldDisplay","onboardingStatus","findOnboardingRequest","toggleViewMoreModal","onboardingRequests","toggleAgreementsModal","canSeeComments","toggleCommentModal","ids","toggleSupplierStatus","origin","BulkSupplierImport","toggleDeleteConfirm","canSeeUpdatePaymentTermsButton","toggleUpdatePaymentTermsModal","toggleUpdateBulkEmailModal","ApproveDelegatedOnboardingRequestApproval1","toggleApproveDelegateConfirm","toggleDeclineDelegateConfirm","canSeeApproveButton","toggleApproveConfirm","manullyAssignVendorNumber","toggleUpdateVendorNumberModal","toggleDelegateApprovalModal","toggleDeclineConfirm","canSeeSuspendButton","toggleSuspendConfirm","toggleSendEmailConfirm","toggleRetractConfirm","canAcceptWithException","toggleAcceptWithExceptionConfirm","toggleComplianceDeclineConfirm","canSeeSendMessageOption","toggleMessageModal","toggleAddComment","selectedSortOption","selectedStatusFilterOption","showSupplierStatus","supplierStatusCompany","deleteOnboarding","updateOnboardingLists","approveOnboarding","loadOnboardingRequests","declineOnboarding","suspendOnboarding","sendOnboardingEmail","retractOnboarding","acceptOnboarding","preliminiaryAcceptOnboarding","preliminiaryDeclineOnboarding","showViewMoreModal","showAgreementsModal","showMessageModal","showOnboardingApprovalCommentModal","toggleAddCommentModal","showAddCommentModal","toggleStateProp","currentItemForAction","statePropName","dataLoading","dateFilter","startDate","endDate","overallComplianceStatuses","newestFirst","onboardingRequestSearchFilter","filterOption","onboardingStatusDisplay","getOboardingStatusDisplay","dateRequestedDisplay","dateRequested","businessUnitId","subcategories","supplierSubCategoryIds","showDeleteConfirm","showApproveConfirm","showApproveDelegatedReviewConfirm","showDeclineDelegatedReviewConfirm","showDeclineConfirm","showSuspendConfirm","showSendEmailConfirm","showRetractConfirm","showAcceptWithExceptionConfirm","showComplianceDeclineConfirm","showUpdatePaymentTermsModal","showUpdateBulkEmailModal","showUpdateVendorNumberModal","showDelegateApprovalModal","companyIdToPerformAction","newOnboarding","userRoleName","approval2DelegatedRoleId","substring","preliminaryDeclinedReason","newSortOption","newStatusFilterOption","onboardingConfig","vendorNumberOrigin","ManualAssignment","supplierChecks","filterType","userBusinessUnitIds","onNewOnboardingRequestHandler","onClear","onSortChangeHandler","onStatusFilterChangeHandler","setOnboardingRequestToEdit","onbordingRequest","MTPProgress","CompanyConfigurationFeatures","ContactPersonClassificationTypes","OnboardingWizard","isManualSupplier","showMTOCompletedModal","setShowMTOCompletedModal","showManualSuppierModal","setShowManualSupplierModal","onboardingData","supplierTypeDataFeatures","hasBankStep","MTOProductAndSegments","MTOCompanyProductsAndFamilies","MTORestrictions","MTOMotivation","urlForStep","baseUrl","isFinalStep","performSubmitOnboardingRequest","manualSupplier","contractingTierId","contractAgreements","contractTierAgreements","submittedOnboardingRequest","confirmationModalDescription","CompanyDetails","resetVatNumber","isVatRegistered","hasContractingFeature","Contracting","onSupplierTypeChange","setContractingApplies","selectedContractAgreements","onContractTierChange","selectedContractTierId","loadContractAgreements","allContractAgreementsSelected","onPaymentTermsChange","onContractAgreementsChange","formattedContractAgreements","contractAgreementsOptions","onCategoryManagerChange","categoryManagerUserId","categoryManagerInitiator","includeInitiator","onIncludeInitiatorChange","onSponsorChange","onFundComplianceChange","handleShowManualSupplierModal","showModal","showManualSupplierConfirmationModal","onManualSupplierChange","setManualSupplier","lastStep","loadContractAgreementList","contractingApplies","disableFields","disableCheckbox","alreadySponsored","UncontrolledTooltip","supplierCategoryManagers","includeInitiatorInCommunications","isHiddenFromView","currentUserEmail","setPaymentTerms","supplierStatuses","incomplete","potential","busyOnboarding","existing","blocked","DuplicateRequestModal","selectedDuplicate","getCheckboxInput","supplierStatus","getDuplicatesTable","request","hasPotential","newRequest","currentRequest","onProceed","SuspensionMessageBanner","suspensionReason","MTPCompanyDetails","updatedOnboardingRequest","updateOnboardingRequest","toggleDuplicateModal","mtoMandatoryField","manualMTOMandatoryField","categoryManagers","showDuplicateModal","onDuplicateResolve","closeDuplicateModal","catmans","setDefaultCategoryManagerEvent","setMTPLastStep","MTPRestrictions","savedOnboardingRequest","restrictions","MTPMotivation","toggleMTPConfirmation","showMTPConfirmation","toggleManualSupplierConfirmation","motivationToOnboard","OfferingSelector","ProductsAndServicesList","MTPCategories","showConfirm","setShowConfirm","showSelectionModal","setShowSelectionModal","saveAndContinueLaterHandler","titleHeading","saveAddressContactsInfo","saveSupplierDocuments","saveSupplierCategories","categories","getBeeRating","saveBeeRating","BeeCertificateType","containerClass","addressData","setAddressData","keyContactsDetailData","setKeyContactDetailsData","stepValidation","addressValidation","physicalAddressCountry","postalAddressCountry","primaryContactPerson","contactPersonClassification","PrimaryContact","onSaveAddressAndContactDetails","contactPersonsMessage","CompanyId","ContactPersons","physicalAdd","isPrimary","line1","line2","municipalityId","postalAdd","addressContactInfo","CompanyAddressesMessage","Addresses","CompanyContactsMessage","save","keyContactDetails","pendingVendorDetailChangeType","beeData","setBeeData","beeDocuments","setBeeDocuments","onInputChangeHandler","onSaveBeeInfo","bee","beePracticeData","expiryDateString","beeDocs","certificateType","beeCertificateType","Affidavit","Certificate","BeeCertificate","filterDocumentsBasedOnBee","consolidatedDocuments","hideTitle","customFieldsApply","setCustomFieldsApply","saveBankDetails","banking","loadSupportingDocuments","onSaveDocuments","refreshDocuments","docs","MTPManualSupplierStep","showConfirmationModal","setShowConfirmationModal","currentStepRef","addressDetailModuleRef","beeDetailsModuleRef","bankDetailsModuleRef","supportingDocumentsRef","isCurrentStepValid","onClickNextHandler","OnboardingRequestEdit","MTPSteps","ManualMTPSteps","getComponentForStep","setSearchTerm","currentSearchTerm","setCurrentSearchTerm","l","pageInfo","setPageInfo","setSortOption","setFilterOption","searchResults","showCheckDetailsModal","setShowCheckDetailsModal","setSelectedCompany","searchInfo","sortingDesc","getClassFromStatus","formattedItems","checkStatus","complianceStatus","categoryId","onSearchHandler","tableData","PPReport","frameBorder","allowFullScreen","src","getPendingEvents","supplierCategoryManagerCodes","supplierCategoryManagerCode","supplierSubcategories","supplierSubcategory","pendingEventsMessage","getPendingEventDetails","eventId","releaseEvent","releaseEventDetailItemMessages","PendingEventDetailTable","deleteEvent","approvedChangeEvents","setApprovedChangeEvent","setEventDetails","detailChangeType","primaryKey","uniqueIdentifier","propertyName","formatJsonString","jsonObj","parse","outputString","entries","toggleApprovedItem","eventDetailItem","itemIsApproved","prev","displayResults","changeType","groupedDetails","displayDetailChangeType","CompanyData","VendorDetails","BankAccounts","ContactDetails","General","pendingVendorDetailToString","displayPropertyName","PendingEventDetailModal","removeReleasedEventFromResult","showReleaseEventModal","setShowReleaseEventModal","showDeleteEventModal","setShowDeleteEventModal","setSuccessModal","releaseEventHandler","deleteEventHandler","SupplierUpdates","setUserDetails","routeFilterValues","setRouteFilterValues","setFilterValues","currentEventId","setCurrentEventId","setCategoryManagers","showEventChangesModal","setShowEventChangesModal","showSupplierDetailsModal","setShowSupplierDetailsModal","supplierDetailsCompany","setSupplierDetailsCompany","formattedDate","dateLastUpdated","categoryManagersMessage","manager","dataLoader","rowItem","supplierDetailsHandler","selectedCategories","selectedCategory","isSupplierSearch","MyOfficeView","initiateOpportunity","exportCSV","searchSupplierSortingFields","none","relevance","supplierRating","SupplierExportStatus","Failed","MarketplaceSearch","BeeStateFilter","onSearchChangeCallback","AddSupplierModal","onRefresh","supplierId","isEditing","registeredCompanyName","onSaveHandler","unlinkHandler","searchBeeStatuses","lt30","lt51","lte100","eq100","BeeOwnership","beeStateFilterToString","Expired","PendingValidation","Exclusion","ValidForClient","SubAccountOperation","beeOwnershipToString","Flowthrough","Modified","SupplierSearchToolTip","rowData","getBeeTextColorClass","beeValidationStatus","ownershipOptions","beeStateFilterOptions","complianceCheckTypeOptions","complianceCheckStatusOptions","designatedOwnerOptions","beeOwnershipOptions","setSupplierCategoryIds","saveProductSegmentDetails","supplierOffering","companyData","setCompanyData","saveCompanyDetails","EditManualSupplier","onCloseCallBack","setIsSubAccount","supplierDetails","companyDetailsModuleRef","productSegmentsRef","tabsConfig","tabTitle","tabRef","activeTab","setActiveTab","tabRefInit","currentTabRef","setCurrentTabRef","onPeformSave","savedSuccessfully","onSaveButtonClick","Nav","tabs","NavItem","NavLink","classnames","tab","selectedTabRef","TabContent","TabPane","tabId","SubAccount","operation","originalTradingName","setNewTradingName","setTradingName","addSubAccountHandler","parentCompanyId","editSubAccountHandler","Update","RateCompanyModal","onRate","setRating","newRating","Rating","readSearchString","statusFilterOption","additionalStatusFilterOption","showUnlinkVendorModal","canAddSupplierOnboarding","showAddSupplierModal","createTableConfig","editVendorNumber","transactionStatuses","hideInTableHeader","availableWhenAllSelected","canAddOnboardingRequest","allSelected","checkOnBoardSupplierDuplicates","checkAddBusinessUnits","availableWhenPageSelected","broadcastSupplierMessages","subAccountOperation","Add","toggleShowSubAccountModal","subAccountTradingName","toggleShowEditProductOfferingModal","toggleEditManualSupplierModal","itemObjects","initiateOpportunityConfirmationHandler","isBuyer","showRateCompanyModal","exportCSVHandler","beeStatus","supplierTransactionStatusValue","uniqueUiValue","potentialSupplierIds","onboardingIds","toggleDuplicateOnboardingConfirmModal","onBoardSuppliers","unselectedBusinessUnits","availableBusinessUnits","toggleAddBusinessUnitsConfirmModal","toggleAllBusinessUnitsAlreadyAddedModal","createdRequestIds","selectedIds","messageRecipients","recipients","sendToAll","showMessageComposeModal","searchParams","set","previousSearchString","changeSearchRoute","companyObjects","companyObjectsToProcess","io","invalidSupplierFound","invalidSuppliers","suppliersToSend","modalDescription","initiateOpportunityCompanyIds","initiateOpportunityModalDescription","toggleInitiateOpportunityConfirmationModal","initiateOpportunityHandler","erfxWindow","csvExportLimit","toggleCsvExportWarningModal","csvContent","encodedUri","encodeURI","setAttribute","appendChild","click","buildSearchQueryModel","sortField","sortDescending","dateAdded","beeStateFilter","complianceFilter","beeOwnership","designatedGroup","companyUnspscSegments","companyUnspscFamilies","subscriptionTier","companyStatus","mySuppliersFilter","contractAgreement","contractAgreementApproved","onboardingStatusSummary","searchText","provinceIDs","beeStatusIDs","boPercentages","bwoPercentages","VendorNumber","DateAdded","ComplianceFilter","DesignatedGroup","CompanyUnspscSegments","CompanyUnspscFamilies","ContractAgreement","ContractAgreementApproved","MySuppliersFilter","sortingField","supplierSearchFilter","additionalStatusSearchFilter","OnboardingStatusSummary","selectAllReturnedSearchResults","searchQueries","searchProps","getSearchResultsForLargeVolumeQuery","getSearchQueryModel","saveSupplierProductCategorySelection","productCategorySelectionIdList","saveSupplierSubCategories","updateRating","showDuplicateOnboardingConfirmModal","showAddBusinessUnitsConfirmModal","showAddedBusinessUnitsModal","showAllBusinessUnitsAlreadyAddedModal","showInitiateOpportunityConfirmationModal","showCsvExportWarningModal","showSupplierExportModal","showSubAccountModal","showEditProductOffering","canRequestSupplierExport","disableSupplierExportRequest","currentSupplierCategoriesList","showSearchLimitModal","supplierExportStatus","hasOnboardSupplierFeature","hasOnboardingCreateRequestFeature","hasSupplierExportFeature","exportStatus","performSearch","businessUnitMessage","toggleAddedBusinessUnitsModal","currentSearchProps","newSearchProps","searchString","searchTermQueryPart","filtersQueryPart","stringify","sortQueryPart","mySupplierFilter","statusFilterPart","additionalStatusFilterPart","buildSearchString","newLimit","newOffset","newTradingName","newItems","searchQueryModel","formatValues","prevSearchParams","prevSearchCompanyId","prevSearchRegisteredName","searchCompanyId","searchRegisteredName","getSearchResults","loadSupplierCategories","preventMultipleSupplierSelection","viewMoreModalDetails","getCompanyModalDetails","editManualSupplierId","getEditManualSupplierId","segmentId","selectedOptionsAdvanced","selectedOptionAdvanced","advancedFilterPropsConfig","selectedOption","Text","DropDown","bc","MultiSelectDropdown","getAdvancedFilterProps","selectedOptions","filterProps","getFilterProps","hasSearchResults","composeMessageModalSendTo","composeMessageModal","toggleMessageComposeModal","continueOnboardingMultiple","onPerformSearch","addBusinessUnits","toggleSupplierExportModal","setNewTradingNameHandler","toggleShowRateCompanyModal","selectionIdList","onSearchTermChangeHander","onFiltersClearHandler","onPageChangeHandler","newAdditionalStatusFilterOption","onAdditionalStatusFilterChangeHandler","InfiniteScroll","hasMore","hasMoreBefore","loadMore","container","beforeLoader","scrollFiller","lastScrollTop","loadMoreBusy","childrenChangedPending","latestLoadMore","latestHasMore","onScrollHandler","parentHeight","clientHeight","scrollTop","contentHeight","loadBeforeHeight","distanceFromBottom","loadNext","loadPrevious","parentElement","eventHandler","removeEventListener","addEventListener","beforeLoaderHeight","previousScrollFillerHeight","parentScrollTop","minContentHeight","previousChildren","previousContentHeight","scrollHeight","firstChild","newScrollTop","SecondarySearchInput","hideFilter","onFilterChange","filterOptions","selectedFilterValue","isOptionsOpen","setIsOptionsOption","searchInput","Dropdown","previousValue","DropdownToggle","filterButton","DropdownMenu","DropdownItem","newFilterValue","NewMessageModal","channel","setChannel","channelSearchResult","setChannelSearchResult","hasMoreSearch","setHasMoreSearch","setSending","debouncing","loadSearchResults","prevResults","queSearchDebounce","onChannelClickHandler","selectedChannel","newSearchTerm","chanelResultItem","MessengerHeader","showComposeModal","setShowComposeModal","composeMessageButton","HeaderContainer","btnComposeMessage","ChatMessageHeader","headerContent","currentChannelDetails","MessageItem","userDisplayName","userDisplayEmail","groupName","messageText","createdDate","datetimeFormat","fileList","dateLine","ChatMessageContent","messagesList","setMessageList","setHasMore","setHasMoreBefore","initialLoadDone","setInitialLoadDone","sentMessageId","setSentMessageId","updateReadMessage","ChannelUpdates","prevList","newMessage","loadMoreFunction","loadOptions","pageOptions","After","Before","From","moreMessages","messageItems","sentMessageRef","displayName","displayEmail","messageHistory","scrollIntoView","block","cardList","setCardList","setSelectedContent","activeChannelInfo","setActiveChannelInfo","showMessenger","setShowMessenger","searchHasMore","setSearchHasMore","setUnreadFilter","setSentMessageChannelId","updateLastMessage","channelSlice","indexOfChannel","oldMessage","output","moveFromIndex","moveToIndex","movingItem","rearrangeItems","behavior","clearUnreadMessageCounter","channelInfo","loadMoreHandler","lastId","moreChannels","channelCardItems","searchCardItems","searchItem","channelName","messageContent","showMessengerContent","ShowMessenger","ShowChannel","queSearch","loadMoreSearchHandler","searchAfter","searchMoreResults","searchItems","emptySearchList","emptyChannelList","MessengerContent","ChannelSide","ChatChannelSearch","ChatChannelList","EmptyListState","Message","ChatCompanyDetailsHeader","MarketPlaceView","NavTabs","onTabClick","setCurrentCompanyTab","buildTabs","currentPath","AddressContactInfo","onClickSave","outstatndingInformation","updateOutstandingInformation","canEdit","SupplierInfo","outstandingInfo","outstandingInformation","BeePractice","updateDocuments","documentsShown","newData","beeDocumentId","newValidationStatus","originalData","originalDocuments","isBOValid","isBeeStatusSelected","isCertificateValid","isSectorSelected","isTurnoverSelected","allDocumentsAdded","newDocumentRequired","originalDocument","currentDocument","documentHasChanged","boMsgs","certMsgs","beeStatusMsgs","sectorMsgs","turnoverMsgs","documentMessage","beeCerificateData","SupplierClientDetailsModal","selectedCompanyId","topRef","showShareHoldersTable","setShowShareHoldersTable","businessTypeOptions","setBusinessTypeOtions","setBusinessType","hasBusinessType","setHasBusinessType","setKeyContactDetails","getBuyersSupplierTypeShareholdersConfigStatus","isShareholdersRequirementConfigured","clientSpecificData","shareholdersData","newKeyContactDetails","useOutstandingInformationLoader","MyClients","reloadOutstandingInfo","toggleSupplierDetailsModal","ProductService","minHeight","BankInfo","EnterpriseConfigProgress","FileUploader","onFileUploadingCallback","hasUploaded","onFileUploadedCallback","labelClass","LogoUploader","ERPIntegration","generatingKey","setGeneratingKey","keysBeingDeleted","setKeysBeingDeleted","setKeys","keysFromApi","clientSecret","onNewKeyHandler","newKey","prevKeys","onDeleteKeyHandler","InfoIcon","ExistingVendorImport","toggleIsActive","isActive","imageName","actionArg","actionCallback","isEnabled","backgroundToUse","sizeClassName","bgClass","WorkFlows","EnterpriseConfigStep01","CategoryCreator","addSubcategory","colSpan","EnterpriseConfigStep02","TermsAndConditionsUploader","tnc","EnterpriseConfigStep03","TableActions","onViewCallback","onDeleteCallback","onUploadCallback","SupportingDocumentsConfig","toggleIsMandatory","newDocument","supportingDocs","newSupportingDocs","EnterpriseConfigStep04","showCompletionModal","EnterpriseConfigView","UserStatus","Agreements","UserSortOption","userStatusToString","Deactivated","InvitePending","CloseAccountReasons","userSortOptionToString","Name","Email","UserSearchResults","onItemSelected","onDeactivate","onActivate","emailConfirmed","isDeactivated","allowDeactivation","AddUserModal","setName","setEmail","setBusinessUnits","selectedRoles","setSelectedRoles","duplicateEmail","setDuplicateEmail","currentUserEmailAddress","rolesTemp","businessUnitStaticDataTemp","businessUnitStaticData","selectedBusinessUnits","unshift","RolesContainer","Description","accessDescription","showAddUserModal","setShowAddUserModal","showUserLimitModal","setShowUserLimitModal","showDeactivateUserModal","setShowDeactivateUserModal","showActivateUserModal","setShowActivateUserModal","showDeleteUserModal","setShowDeleteUserModal","userIdToAction","setUserIdToAction","routeSearchTerm","setRouteSearchTerm","page","setPage","setEditUser","totalActiveUsers","userResults","setUserResults","onDeactivateUserProceedHandler","onActivateUserProceedHandler","onDeleteUserProceedHandler","deletedUser","onDeactivateUserClickHandler","onActivateUserClickHandler","onDeleteUserClickHandler","convertToNonDirectoryListing","unsubscribeEntirely","saveCloseAccountFeedback","closeAccountFeedbackMessage","OnboardingBeeRequirement","closeAccountReasonToString","NoBusinessValue","ManagingProfileFrustrating","BusinessNoLongerTrading","FoundBetterSolution","Other","CancelSubscriptionModal","showDowngradeToFreeOption","freeTierId","buyerCompanyNames","cancellationOption","setCancellationOption","showCancelSubscriptionModal","setShowCancelSubscriptionModal","showUnsubscribeSuccessModal","setShowUnsubscribeSuccessModal","unsubscribeSuccessModalInfo","setUnsubscribeSuccessModalInfo","checkboxValues","setCheckboxValues","optionalInput","setOptionalInput","downgradeToFreeHandler","removeFromDirectoryHandler","unsubscribeEntirelyHandler","confirmChoiceHandler","saveFeedbackHandler","selectedValues","checkboxValue","filteredValue","reasons","reduce","cancellationOptions","optionalCheckboxSelected","checkbox","newCheckboxes","newCheckbox","buyerName","Subscription","loadingDetails","setLoadingDetails","subscriptionDetails","setSubscriptionDetails","subscriptionStatus","setSubscriptionStatus","loadingInvoices","setLoadingInvoices","invoices","setInvoices","currentSubscription","loadSubscriptionDetails","loadedDetails","loadedSubscriptionStatus","loadInvoices","invoiceNumber","invoiceDate","totalAmount","RetryPayment","pendingSubscriptionId","pendingSubscriptionTier","redirectUrl","downgradePending","deactivationDate","upgradePending","pendingSubscription","newSubscriptionName","downgradeToFree","disableChangeSubscriptionButton","disableCancelSubscriptionButton","hideRetryButtons","hasNextBillingDate","nextBillingDate","currentSubscriptionTier","pendingSubscriptionChangeMessage","AlertContainer","RetryButton","hasActiveAdhocSubscription","subscriptionTierName","nextBillingAmount","pointerEvents","UpgradeButton","CancelSubscriptionBtn","EditSubscription","setSelectedTier","setSelectedTierName","setshowOnEnquireModal","effectiveCurrentSubscriptionTier","setEffectiveCurrentSubscriptionTier","showDowngradeModal","setShowDowngradeModal","showUpgradeModal","setShowUpgradeModal","showNewPurchaseModal","setShowNewPurchaseModal","showQuotePurchaseModal","setShowQuotePurchaseModal","upgradeFee","setUpgradeFee","selectedSubscriptionTier","currentTier","pendingTier","onSubmitHandler","goBack","showConfirmModal","newTier","upgradeFeeFromApi","downgradeDate","downgradeMessage","upgradeMessage","newQuoteMessage","OnboardingApproverLevels","beeRequiredForOnboarding","setBeeRequiredForOnboarding","validatedBeeRequired","setValidatedBeeRequired","apiData","onboardingBeeRequirements","BeeRequired","ValidatedBeeRequired","ComplianceTab","ManageUsersTab","getConfigurationSupplierTypes","getConfigurationSuppilerType","addOrUpdateConfigurationSupplierType","deleteConfigurationSuppilerType","OnboardingApproverLevelsDisplay","Approver1","Approver2","AddOrEditSupplierTypeModal","isBankingGloballyRequired","supplierName","setSupplierName","mtoApproverLevels","setMtoApproverLevels","onboardingApproverLevels","handleSubmitConfigSupplierType","savedSupplierTypeId","disabledDataFeatures","selectedApproverLevels","selectedDataFeatures","SupplierTypeConfig","configSupplierTypes","setConfigSupplierTypes","showAddSupplierTypeModal","setShowAddSupplierTypeModal","editSupplierTypeId","setEditSupplierTypeId","supplierTypesConfig","handleDeleteSupplierType","st","submitedSupplierTypeData","exisitingRecord","toastMessage","setVendorNumberOrigin","isBankingDetailsRequired","setIsBankingDetailsRequired","canSuppliersEditProductSegments","setCanSuppliersEditProductSegments","showVendorNoConfigConfirmationModal","setShowVendorNoConfigConfirmationModal","supplierCanEditClientSpecificCategories","Autogenerated","onboardingTabRef","companyInformationTabRef","onSave","MyCompanyView","OnboardingInvitationCheck","showOboardingIvitationFailure","onCloseHandler","SubscriptionCheck","SubscriptionUpdates","ScrollToTop","AppErrorBoundary","errorInfo","errorModalHeader","errorModal","closeErrorModal","traceId","additionalDetails","subSystem","stackStrace","NotAuthenticatedHandler","authenticationState","close","opener","reAuthenticateCallback","newUserDetails","reload","retry","AxiosInterceptor","interceptors","use","paramStart","endpointUrl","axiosErrorResponse","problemDetails","EntityNotFound","Unknown","ExistsExceptions","BadRequest","Conflict","AppContent","subscriptionsAllowedFeaturesInfo","userMarketingInfoSubscriptionEnum","Subscribed","Unsubscribed","CommunicationPreferencesSummary","setReceiveMarketingInfo","receiveMarketingInfoEnum","CommunicationPreference","CommunicationPreferenceSummary","SettingsView","UserView","App","registrationDone","subscriptionAllowedFeatures","DashboardView","getElementsByTagName","getAttribute","rootElement","basename","DashboardSupplierSummaryCard","changePercentage","Info","Attention","Percentage","getDashboardSuppliersSummary","getDashboardBeeSummary","getDashboardComplianceSummary","getDashboardSupplierTypesSummary","getBulletinBoardSummary","getDashboardSupportingDocumentsSummary","getDashboardSupplierPackagesSummary","getDashboardSupplierStatusSummary","getDashboardOnboardingStatusSummary","BulletinFilterField","SearchSupplierDatabaseSection","OverallRatingCard","MessageSummaryCard","messageSummary","setMessageSummary","messageChannelList","DashboardSummaryCard","summaryItems","borderRight","borderBottom","singleItem","layout","newTab","DrillDownSummaryItem","SmallerItemFont","SummaryBlock_BorderRight","SummaryBlock_BorderBottom","SummaryBlockHeading","BulletinBoardSummaryCard","bulletinBoardData","setBulletinBoardData","rfxUrl","bulletinBoardSummary","new","old","Closed","won","Awarded","lost","Denied","pending","DecisionPending","ProfileStatusSummary","SupplierTypesSummary","SupplierTypesSummaryData","setSupplierTypesSummaryData","dashboardSupplierTypesSummaryData","SupplierTypeComp","count","SupportingDocumentsSummary","SupportingDocumentSummaryData","setSupportingDocumentSummaryData","dashboardSupportingDocumentsSummaryData","DashboardSuppliersSummaryTable","itemIndex","SupplierContractAgreementSummary","contractAgreementsSummaryData","setContractAgreementsSummaryData","dashboardContractAgreementsSummarySummaryData","approvedCount","pendingApprovalCount","SupplierPackagesSummary","SupplierPackagesSummaryData","setSupplierPackagesSummaryData","SupplierPackages","SupplierStatusSummary","setSupplierStatusSummaryData","dashboardSupplierStatusSummaryData","SupplierStatus","SupplierBEEComplianceSummary","beeSummaryData","setBeeSummaryData","dashboardBeeSummaryData","valid","expired","pendingValidation","validForClient","SupplierRegulatoryComplianceSummary","complianceSummaryData","setComplianceSummaryData","dashboardComplianceSummaryData","cipcComplianceItems","cipcValid","cipcInvalid","cipcPending","cipcna","sarsComplianceItems","sarsValid","sarsInvalid","sarsPending","sarsna","onboardingStatusSummaryData","setOnboardingStatusSummaryData","dashboardOnboardingStatusSummaryData","Dashboard","suppliersSummary","setSuppliersSummary","setTotalRatings","supplierSummaryData","DashboardSuppliersSummaryCard","totalExistingSuppliers","percentageChangeExistingSuppliers","totalPotentialSuppliers","percentageChangePotentialSuppliers","SupplierTypeSummary","MessagesSummaryCard"],"mappings":"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","file":"static/js/main.31bffda3.chunk.js","sourcesContent":["enum DataFeatures {\r\n/* eslint-disable no-unused-vars */\r\n None = 0,\r\n BusinessTypes = 0x1,\r\n DirectorNames = 0x2,\r\n ClientBase = 0x4,\r\n BankingDetails = 0x8,\r\n AdditionalCompanyData = 0x10,\r\n ShareholdersDetails = 0x20,\r\n MandatoryMunicipality = 0x40,\r\n MandatoryTaxClearancePinNumber = 0x80,\r\n BusinessRegions = 0x100,\r\n/* eslint-enable no-unused-vars */\r\n}\r\n\r\nexport const hasDataFeature = (\r\n companyAllowedData: DataFeatures,\r\n feature: DataFeatures = DataFeatures.None\r\n) => feature === DataFeatures.None\r\n // eslint-disable-next-line no-bitwise\r\n || (companyAllowedData & feature) === feature;\r\n\r\nexport const hasSomeDataFeature = (\r\n companyAllowedData: DataFeatures,\r\n feature: DataFeatures = DataFeatures.None\r\n) => feature === DataFeatures.None\r\n // eslint-disable-next-line no-bitwise\r\n || (companyAllowedData & feature) > 0;\r\n\r\nexport const DataFeaturesDisplay: { [index: number]: string } = {};\r\nDataFeaturesDisplay[DataFeatures.None] = \"None\";\r\nDataFeaturesDisplay[DataFeatures.BusinessTypes] = \"Business Types\";\r\nDataFeaturesDisplay[DataFeatures.DirectorNames] = \"Director Names\";\r\nDataFeaturesDisplay[DataFeatures.ClientBase] = \"Client Base\";\r\nDataFeaturesDisplay[DataFeatures.BankingDetails] = \"Banking Details\";\r\nDataFeaturesDisplay[DataFeatures.ShareholdersDetails] = \"Shareholder Details\";\r\nDataFeaturesDisplay[DataFeatures.AdditionalCompanyData] = \"No. of Employees, Royal Bofokeng Resident\";\r\nDataFeaturesDisplay[DataFeatures.MandatoryMunicipality] = \"Municipality (required as a mandatory field)\";\r\nDataFeaturesDisplay[DataFeatures.MandatoryTaxClearancePinNumber] = \"Tax Clearance Number and Expiry Date (required as a mandatory field)\";\r\nDataFeaturesDisplay[DataFeatures.BusinessRegions] = \"Geographical Location/Region(s) for conducting your primary business\";\r\n\r\nexport default DataFeatures;\r\n","/* eslint-disable no-undef */\r\nconst SystemFeatures = {\r\n /* eslint-disable no-unused-vars */\r\n None: BigInt(0),\r\n ErpIntegration: BigInt(0x1),\r\n EnterpriseConfig: BigInt(0x2),\r\n SupplierSearch: BigInt(0x4),\r\n SupplierChecks: BigInt(0x8),\r\n RfxBulletinBoard: BigInt(0x10),\r\n RfxParticipate: BigInt(0x20),\r\n RfxCreateOpportunity: BigInt(0x40),\r\n OnboardingCreateRequest: BigInt(0x80),\r\n OnboardingApprove1: BigInt(0x100),\r\n OnboardingApprove2: BigInt(0x200),\r\n CompanyProfile: BigInt(0x400),\r\n CompanyProfileEdit: BigInt(0x800),\r\n Messaging: BigInt(0x1000),\r\n UserManagement: BigInt(0x2000),\r\n AuditTrails: BigInt(0x4000),\r\n Subscriptions: BigInt(0x8000),\r\n SubscriptionsEdit: BigInt(0x10000),\r\n OngoingCompliance: BigInt(0x20000),\r\n DashboardBulletinBoardSummary: BigInt(0x40000),\r\n DashboardSupplierCompaniesSummaries: BigInt(0x80000),\r\n PPReportDashboard: BigInt(0x200000),\r\n ViewSupplierBankDetails: BigInt(0x400000),\r\n BackofficeAdministrator: BigInt(0x800000),\r\n ServiceAdministrator: BigInt(0x100000),\r\n ManageErpEvents: BigInt(0x2000000),\r\n ManualSuppliers: BigInt(0x4000000),\r\n SubAccounts: BigInt(0x8000000),\r\n OnboardingAddSupplier: BigInt(0x10000000),\r\n MultipleSupplierSelect: BigInt(0x20000000),\r\n ViewMoreSupplierDetails: BigInt(0x40000000),\r\n OnboardingAddSupplierApproval: BigInt(0x80000000),\r\n UseAdvancedSearchFilters: BigInt(0x100000000),\r\n DashboardOwnCompanyComplianceSummaries: BigInt(0x200000000),\r\n ViewSupplierComplianceDetails: BigInt(0x400000000),\r\n ColourIndicators: BigInt(0x800000000),\r\n DetailedAuditTrails: BigInt(0x1000000000),\r\n BroadcastMessaging: BigInt(0x2000000000),\r\n SupplierExport: BigInt(0x4000000000),\r\n SupplierImport: BigInt(0x8000000000),\r\n Configuration: BigInt(0x10000000000),\r\n ConfigurationCompanyInfo: BigInt(0x20000000000),\r\n ConfigurationOnboarding: BigInt(0x40000000000),\r\n ConfigurationUsers: BigInt(0x80000000000),\r\n ConfigurationCompliance: BigInt(0x100000000000),\r\n ConfigurationOnboardingVendorNumber: BigInt(0x200000000000),\r\n ConfigurationOnboardingSupplierTypes: BigInt(0x400000000000),\r\n ConfigurationCompanyInfoOnboardingBee: BigInt(0x800000000000),\r\n RfxEvaluateOpportunity: BigInt(0x1000000000000),\r\n ConfigurationOnboardingBankDetails: BigInt(0x2000000000000),\r\n MTOSupplierSponsorship: BigInt(0x4000000000000),\r\n ConfigurationSupplierEditClientSpecificCategories: BigInt(0x8000000000000),\r\n ViewSupplierShareholderDetails: BigInt(0x10000000000000),\r\n OnboardingNewCompany: BigInt(\"0x20000000000000\"),\r\n DelegateOnboardingRequestApproval2: BigInt(\"0x40000000000000\"),\r\n ApproveDelegatedOnboardingRequestApproval2: BigInt(\"0x80000000000000\"),\r\n AssignManualManualVendorNumber: BigInt(\"0x100000000000000\"),\r\n OnboardingCompletionCommunication: BigInt(\"0x200000000000000\"),\r\n CanSuspendMTO: BigInt(\"0x400000000000000\"),\r\n CanExportCSV: BigInt(\"0x800000000000000\"),\r\n SupplierComplianceFunding: BigInt(\"0x1000000000000000\"),\r\n AdvancedMySuppliersFilter: BigInt(\"0x2000000000000000\"),\r\n CanUpdatePaymentTerms: BigInt(\"0x4000000000000000\"),\r\n};\r\n\r\ntype SystemFeatures = bigint;\r\n\r\n/* eslint-disable no-bitwise */\r\n\r\n// Used to perform a bit wise AND and OR operations on a 64bit integer\r\n// To-do: Delete this at a later stage\r\nexport const bitWiseOperation = (v1: bigint = BigInt(0), v2: bigint = BigInt(0), operationType: \"AND\" | \"OR\") => {\r\n const result = operationType === \"AND\" ? v1 & v2 : v2 | v1;\r\n return result;\r\n};\r\n\r\nexport const hasFeature = (\r\n userAllowedFeature: SystemFeatures,\r\n feature: SystemFeatures = SystemFeatures.None\r\n) => feature === SystemFeatures.None\r\n // eslint-disable-next-line eqeqeq\r\n || (bitWiseOperation(userAllowedFeature, feature, \"AND\")) == feature;\r\n\r\nexport const hasSomeFeature = (\r\n userAllowedFeature: SystemFeatures,\r\n feature: SystemFeatures = SystemFeatures.None\r\n) => feature === SystemFeatures.None\r\n || (bitWiseOperation(userAllowedFeature, feature, \"AND\")) > 0;\r\n\r\n/* eslint-disable no-bitwise */\r\n\r\nexport default SystemFeatures;\r\n","/* eslint-disable no-undef */\r\nconst MTOMandatoryField = {\r\n /* eslint-disable no-unused-vars */\r\n None: BigInt(0),\r\n ManualSupplier: BigInt(0x1),\r\n RegistrationNumber: BigInt(0x2),\r\n RegisteredCompanyName: BigInt(0x4),\r\n TradingName: BigInt(0x8),\r\n BusinessUnit: BigInt(0x10),\r\n CategoryManager: BigInt(0x20),\r\n CompanyType: BigInt(0x40),\r\n VatNumber: BigInt(0x80),\r\n SupplierType: BigInt(0x100),\r\n ContractingTier: BigInt(0x200),\r\n PhysicalAddress: BigInt(0x400),\r\n PostalAddress: BigInt(0x800),\r\n PrimaryContactPerson: BigInt(0x1000),\r\n AllContactPersons: BigInt(0x2000),\r\n BEE: BigInt(0x4000),\r\n Banking: BigInt(0x8000),\r\n SupportingDocument: BigInt(0x10000),\r\n ProductSegmentAndFamilies: BigInt(0x20000),\r\n Restrictions: BigInt(0x40000),\r\n Motivation: BigInt(0x80000),\r\n PaymentTerms: BigInt(0x100000),\r\n EmailAddress: BigInt(0x200000),\r\n};\r\n\r\ntype MTOMandatoryField = bigint;\r\n\r\n/* eslint-disable no-bitwise */\r\n\r\n// Used to perform a bit wise AND and OR operations on a 64bit integer\r\n// To-do: Delete this at a later stage\r\nconst bitWiseOperation = (v1: bigint = BigInt(0), v2: bigint = BigInt(0), operationType: \"AND\" | \"OR\") => {\r\n if (v1 == null || v2 == null || operationType == null) return false;\r\n const result = operationType === \"AND\" ? v1 & v2 : v2 | v1;\r\n return result;\r\n};\r\n\r\nexport const isMandatory = (\r\n mandatoryFields?: number,\r\n field: MTOMandatoryField = MTOMandatoryField.None\r\n) => field === MTOMandatoryField.None\r\n // eslint-disable-next-line eqeqeq\r\n || (bitWiseOperation(BigInt(mandatoryFields ?? 0), field, \"AND\")) == field;\r\n\r\n/* eslint-disable no-bitwise */\r\n\r\nexport default MTOMandatoryField;\r\n","import React from \"react\";\r\nimport\r\n// eslint-disable-next-line no-unused-vars\r\nDataFeatures,\r\n{ hasDataFeature, hasSomeDataFeature } from \"../utils/enums/DataFeature\";\r\n\r\nlet allowedDataFeatures = 0;\r\n\r\nexport const setupAllowedDataFeatures = (newAllowedDataFeatures: DataFeatures) => {\r\n allowedDataFeatures = newAllowedDataFeatures;\r\n};\r\n\r\nexport const useDataFeatureCheck = (strict: boolean = false) => (\r\n feature: DataFeatures\r\n) => (strict ? hasDataFeature(allowedDataFeatures, feature)\r\n : hasSomeDataFeature(allowedDataFeatures, feature));\r\n\r\n// Higher order component for legacy components (class based components)\r\ninterface DataFeaturesProps {\r\n dataFeatureCheck: (feature: DataFeatures) => boolean\r\n}\r\n\r\nexport const withDataFeatureCheck = (\r\n WrappedComponent: React.ComponentType\r\n // eslint-disable-next-line react/prefer-stateless-function\r\n) => class extends React.Component {\r\n render() {\r\n return (\r\n hasSomeDataFeature(allowedDataFeatures, feature)\r\n }\r\n // eslint-disable-next-line react/jsx-props-no-spreading\r\n {...this.props}\r\n />\r\n );\r\n }\r\n};\r\n","enum ApiErrorCode {\r\n Unknown, // eslint-disable-line no-unused-vars\r\n EntityNotFound, // eslint-disable-line no-unused-vars\r\n ExistsExceptions, // eslint-disable-line no-unused-vars\r\n BadRequest, // eslint-disable-line no-unused-vars\r\n Conflict, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default ApiErrorCode;\r\n","import React, { Fragment } from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DataFeatures from \"../../utils/enums/DataFeature\";\r\nimport { setupAllowedDataFeatures } from \"../../Hooks/useDataFeatureCheck\";\r\n\r\nconst ISuppliDataAccess = (\r\n {\r\n allowedDataFeatures,\r\n children,\r\n }\r\n :\r\n {\r\n allowedDataFeatures: DataFeatures,\r\n children: React.ReactNode,\r\n }\r\n) => {\r\n setupAllowedDataFeatures(allowedDataFeatures);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default ISuppliDataAccess;\r\n","import { useDataFeatureCheck } from \"../../Hooks/useDataFeatureCheck\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DataFeatures from \"../../utils/enums/DataFeature\";\r\n\r\nconst WithDataFeature = (\r\n {\r\n children, dataFeature,\r\n }:\r\n {\r\n children: JSX.Element,\r\n dataFeature: DataFeatures\r\n }\r\n) => {\r\n const dataCheck = useDataFeatureCheck();\r\n\r\n if (dataCheck(dataFeature)) {\r\n return children;\r\n }\r\n\r\n return null;\r\n};\r\nexport default WithDataFeature;\r\n","enum FilterTypes {\r\n /* eslint-disable no-unused-vars */\r\n DateRangeInput = 1,\r\n MultiSelectDropDown = 2,\r\n /* eslint-enable no-unused-vars */\r\n}\r\n\r\nexport default FilterTypes;\r\n","enum AdvancedFilterTypes {\r\n /* eslint-disable no-unused-vars */\r\n Text = 1,\r\n DropDown = 2,\r\n Date = 3,\r\n MultiSelectDropdown = 4,\r\n /* eslint-enable no-unused-vars */\r\n}\r\n\r\nexport default AdvancedFilterTypes;\r\n","export const getStaticValue = (\r\n value: number,\r\n options: { value: number, display: string }[] = [],\r\n defaultValue: string | null = null\r\n) => {\r\n const referencedOption = options.find((v) => v.value === value);\r\n const nullValue = defaultValue ?? `${value}`;\r\n return referencedOption == null ? nullValue : referencedOption.display;\r\n};\r\n\r\nexport const formatDate = (date: Date | string | number) => {\r\n const dateObject = new Date(date);\r\n return `${dateObject.getDate()} ${dateObject.toLocaleString(\"default\", {\r\n month: \"short\",\r\n })} ${dateObject.getFullYear()}`;\r\n};\r\n\r\nexport const formatDateTime = (date: Date | string | number) => {\r\n const dateObject = new Date(date);\r\n return `${dateObject.getDate()} ${dateObject.toLocaleString(\"default\", {\r\n month: \"short\",\r\n })} ${dateObject.getFullYear()} \r\n ${dateObject.toLocaleTimeString().replace(/(.*)\\D\\d+/, \"$1\")}`;\r\n // return \"dd mmm yyyy hh:mm AM/PM\" e.g. 12 Aug 2019 12:00AM\r\n};\r\n\r\nexport const formatCurrency = (amount: number) => {\r\n const stringValue = amount.toFixed(2);\r\n const withThousandSeparator = stringValue.replace(\r\n /(\\d)(?=(\\d{3})+(?!\\d))/g,\r\n \"$1,\"\r\n );\r\n\r\n return `R${withThousandSeparator}`;\r\n};\r\n\r\nexport const formatPercentage = (value: number) => `${value} %`;\r\n\r\nexport const dateTimeLabelFormat = (date: Date | string | number) => {\r\n // returns \"mmm dd - hh:mm:pp\" e.g: Apr 02 - 12:05pm\r\n const dateObject = new Date(date);\r\n const monthShortString = dateObject.toLocaleDateString(\"default\", { month: \"short\" });\r\n const dayString = dateObject.getDate() < 10\r\n ? `0${dateObject.getDate().toString()}`\r\n : dateObject.getDate().toString();\r\n const hh = dateObject.getHours();\r\n const hhString = hh > 12 ? (hh - 12).toString() : hh.toString();\r\n const mm = dateObject.getMinutes();\r\n const mmString = mm < 10 ? `0${mm.toString()}` : mm.toString();\r\n const timePeriod = hh > 12 ? \"pm\" : \"am\";\r\n const datetimeFormat = `${monthShortString} ${dayString} - ${hhString}:${mmString} ${timePeriod}`;\r\n\r\n return (datetimeFormat);\r\n};\r\n\r\nexport const dateTimeDayMonthLabelFormat = (date: Date | string | number) => {\r\n // returns \"mmm dd\" e.g: 02 Apr\r\n const dateObject = new Date(date);\r\n const monthShortString = dateObject.toLocaleDateString(\"default\", { month: \"short\" });\r\n const dayString = dateObject.getDate() < 10\r\n ? `0${dateObject.getDate().toString()}`\r\n : dateObject.getDate().toString();\r\n const datetimeFormat = `${dayString} ${monthShortString}`;\r\n\r\n return (datetimeFormat);\r\n};\r\n\r\nexport const formatTelephoneNumber = (value: string) => {\r\n const number = [];\r\n const v = value.replace(/\\D/g, \"\");\r\n for (let i = 0; i < v.length; i += 1) {\r\n if (i > 0 && i % (i <= 6 ? 3 : 5) === 0) {\r\n number.push(\" \");\r\n }\r\n number.push(v[i]);\r\n }\r\n return number.join(\"\");\r\n};\r\n","import React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { Badge, Button } from \"reactstrap\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { MenuItem } from \"../../../utils/interfaces/MenuItem\";\r\n\r\nimport { ReactComponent as SvgTriangle } from \"../../../images/triangle.svg\";\r\nimport Styles from \"./UserMaintenance.module.scss\";\r\nimport\r\n// eslint-disable-next-line no-unused-vars\r\nSystemFeatures,\r\n{ hasSomeFeature } from \"../../../utils/enums/SystemFeatures\";\r\n\r\nconst UserMaintenance = ({\r\n setOpenSubMenu,\r\n openSubMenu,\r\n userGreeting,\r\n companyName,\r\n userBadge,\r\n onLogout,\r\n menuItems,\r\n allowedFeatures,\r\n} : {\r\n setOpenSubMenu : (menu: string) => void,\r\n openSubMenu: string,\r\n userGreeting: string,\r\n companyName: string,\r\n userBadge: string | null,\r\n onLogout: () => void,\r\n menuItems: Array,\r\n allowedFeatures: SystemFeatures,\r\n}) => {\r\n const userMenu = menuItems.find((c) => c.isUserMenu);\r\n\r\n return (\r\n
\r\n {\r\n if (openSubMenu !== \"user\") {\r\n setOpenSubMenu(\"user\");\r\n } else {\r\n setOpenSubMenu(\"\");\r\n }\r\n }}\r\n >\r\n
\r\n
{userGreeting}
\r\n
{companyName}
\r\n {userBadge && {userBadge}}\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n {openSubMenu === \"user\" ? (\r\n
    \r\n {userMenu?.children?.map((item) => (\r\n
  • \r\n setOpenSubMenu(\"\")}\r\n >\r\n {item.title}\r\n \r\n
  • \r\n ))}\r\n
  • \r\n {\r\n e.preventDefault();\r\n onLogout();\r\n }}\r\n >\r\n Log Out\r\n \r\n
  • \r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default UserMaintenance;\r\n","import {\r\n useState,\r\n // eslint-disable-next-line no-unused-vars\r\n Dispatch,\r\n // eslint-disable-next-line no-unused-vars\r\n SetStateAction,\r\n} from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures, { hasFeature } from \"../utils/enums/SystemFeatures\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SubscriptionAllowedFeatures } from \"../utils/interfaces/SubscriptionAllowedFeatures\";\r\n\r\nlet setShowError: Dispatch> | undefined;\r\nlet setRequiredSystemFeature: Dispatch> | undefined;\r\nlet subscriptionFeaturesInfo: Array = [];\r\n\r\nexport const useShouldShowNotAllowedError = () => {\r\n const [currentValue, changeHandler] = useState(false);\r\n const [currentRequiredFeature, changeRequiredFeaturedHandler] = useState(SystemFeatures.None);\r\n setShowError = changeHandler;\r\n setRequiredSystemFeature = changeRequiredFeaturedHandler;\r\n\r\n const sortedSubscriptions = subscriptionFeaturesInfo?.sort(\r\n (a, b) => a.displayOrder - b.displayOrder);\r\n\r\n const minimumRequiredSubscription = sortedSubscriptions?.find(\r\n // eslint-disable-next-line no-undef\r\n (f) => hasFeature(BigInt(f.allowedFeatures), currentRequiredFeature)\r\n );\r\n return { currentValue, minimumRequiredSubscription };\r\n};\r\n\r\nexport const useHideNotAllowedError = () => () => {\r\n if (setShowError == null) {\r\n return;\r\n }\r\n setShowError(false);\r\n};\r\n\r\nexport const useShowNotAllowedError = () => (requiredSystemFeature: SystemFeatures | undefined) => {\r\n if (setShowError == null) {\r\n return;\r\n }\r\n setShowError(true);\r\n if (setRequiredSystemFeature != null) {\r\n requiredSystemFeature == null\r\n ? setRequiredSystemFeature(SystemFeatures.None)\r\n : setRequiredSystemFeature(requiredSystemFeature);\r\n }\r\n};\r\n\r\nexport const setupSubscriptionFeaturesInfo = (newSubscriptionsFeaturesInfo:\r\n Array) => {\r\n subscriptionFeaturesInfo = newSubscriptionsFeaturesInfo;\r\n};\r\n","import React, { useState } from \"react\";\r\n\r\nimport { NavLink } from \"react-router-dom\";\r\nimport UserMaintenance from \"../UserMaintenance/UserMaintenance\";\r\n\r\nimport Styles from \"./HeaderNavBar.module.scss\";\r\nimport { ReactComponent as SvgTriangle } from \"../../../images/triangle.svg\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures, { hasSomeFeature } from \"../../../utils/enums/SystemFeatures\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { MenuItem } from \"../../../utils/interfaces/MenuItem\";\r\nimport { ReactComponent as ExternalLinkSvg } from \"./external-link.svg\";\r\nimport { useShowNotAllowedError } from \"../../../Hooks/useNotAllowedError\";\r\n\r\nconst HeaderNavBar = (\r\n {\r\n setOpenSubMenu,\r\n openSubMenu,\r\n allowedFeatures,\r\n menuItems,\r\n onLogout,\r\n userGreeting,\r\n companyName,\r\n userBadge,\r\n isAuthenticated,\r\n helpLink,\r\n }\r\n :\r\n {\r\n setOpenSubMenu: (subMenu: string) => void,\r\n openSubMenu: string,\r\n allowedFeatures: SystemFeatures,\r\n menuItems: Array,\r\n onLogout: () => void,\r\n userGreeting: string,\r\n companyName: string,\r\n userBadge: string | null,\r\n isAuthenticated: boolean,\r\n helpLink: string\r\n }\r\n) => {\r\n const [, forceReload] = useState();\r\n const showNotAllowedError = useShowNotAllowedError();\r\n\r\n const createChildMenuItem = (parentItem: MenuItem, childItem: MenuItem) => (\r\n
  • \r\n {\r\n if (!hasSomeFeature(allowedFeatures, childItem.feature)) {\r\n ev.preventDefault();\r\n showNotAllowedError(childItem.feature);\r\n }\r\n setOpenSubMenu(\"\");\r\n }}\r\n >\r\n \r\n {childItem.title}\r\n { childItem.redirect\r\n && }\r\n \r\n \r\n
  • \r\n );\r\n\r\n return (\r\n
      \r\n {menuItems.filter((c) => !c.isUserMenu && !c.hidden).map((menuItem) => {\r\n const classNames = [\"nav-item\", Styles.TopNavItem];\r\n if (menuItem.children != null) {\r\n classNames.push(\"caret\");\r\n }\r\n\r\n return (\r\n
    • \r\n {menuItem.children == null ? (\r\n {\r\n setOpenSubMenu(\"\");\r\n forceReload(true);\r\n }}\r\n >\r\n {menuItem.title}\r\n \r\n ) : (\r\n {\r\n e.preventDefault();\r\n setOpenSubMenu(menuItem.to);\r\n }}\r\n >\r\n \r\n {menuItem.title}\r\n \r\n \r\n \r\n )}\r\n {menuItem.to !== openSubMenu ? null : (\r\n
        \r\n {menuItem.children != null\r\n && menuItem.subMenuOffset != null\r\n && menuItem.subMenuOffset > 0\r\n ? (\r\n
        \r\n {menuItem.children\r\n ?.filter((_, i) => i < (menuItem.subMenuOffset ?? 0))\r\n ?.map((childItem) => createChildMenuItem(menuItem, childItem))}\r\n
        \r\n )\r\n : null }\r\n\r\n {menuItem.children\r\n ?.filter((_, i) => i >= (menuItem.subMenuOffset ?? 0))\r\n ?.map((childItem) => (createChildMenuItem(menuItem, childItem)))}\r\n
      \r\n )}\r\n
    • \r\n );\r\n })}\r\n
    • \r\n {\r\n setOpenSubMenu(\"\");\r\n forceReload(true);\r\n }}\r\n target=\"_blank\"\r\n >\r\n Help & Support\r\n \r\n
    • \r\n
    • \r\n {isAuthenticated && (\r\n \r\n )}\r\n
    • \r\n
    \r\n );\r\n};\r\n\r\nexport default HeaderNavBar;\r\n","import React, { useState, Fragment } from \"react\";\r\nimport { Navbar, NavbarToggler, Collapse } from \"reactstrap\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { MenuItem } from \"../../utils/interfaces/MenuItem\";\r\n\r\nimport HeaderNavBar from \"./HeaderNavBar/HeaderNavBar\";\r\n\r\nimport { ReactComponent as SvgLogo } from \"./logo.svg\";\r\nimport { ReactComponent as SvgHamburger } from \"./hamburger.svg\";\r\nimport Styles from \"./Header.module.scss\";\r\nimport UserMaintenance from \"./UserMaintenance/UserMaintenance\";\r\nimport SystemFeatures from \"../../utils/enums/SystemFeatures\";\r\n\r\nconst Header = (\r\n {\r\n userGreeting = \"\",\r\n companyName = \"\",\r\n userBadge,\r\n isAuthenticated,\r\n allowedFeatures = SystemFeatures.None,\r\n menuItems,\r\n children = null,\r\n onLogout,\r\n onHeaderLogoClick,\r\n helpLink,\r\n }\r\n :\r\n {\r\n menuItems: Array,\r\n allowedFeatures: SystemFeatures,\r\n userGreeting?: string,\r\n companyName?: string,\r\n userBadge: string | null,\r\n isAuthenticated: boolean,\r\n children?: React.ReactNode,\r\n onLogout: () => void,\r\n onHeaderLogoClick?: () => void,\r\n helpLink: string\r\n }\r\n) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [openSubMenu, setOpenSubMenu] = useState(\"\");\r\n\r\n const toggle = () => setIsOpen(!isOpen);\r\n const setOpenSubMenuHandler = (newMenuValue: string) => {\r\n setOpenSubMenu((value) => (value === newMenuValue ? \"\" : newMenuValue));\r\n };\r\n\r\n const headerClasses = [Styles.Header];\r\n if (openSubMenu !== \"\") {\r\n headerClasses.push(Styles.Open);\r\n }\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n if (onHeaderLogoClick) {\r\n onHeaderLogoClick();\r\n }\r\n }}\r\n >\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n { children }\r\n
    \r\n {isAuthenticated && (\r\n \r\n )}\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from \"react\";\r\nimport Styles from \"./Footer.module.scss\";\r\n\r\nconst Footer = () => (\r\n
    \r\n
    \r\n \r\n Terms & Conditions\r\n \r\n
    \r\n\r\n
    \r\n {`B1LINK® | All Rights Reserved ${(new Date().getFullYear())}`}\r\n
    \r\n
    \r\n);\r\n\r\nexport default Footer;\r\n","import React from \"react\";\r\nimport Styles from \"./Spinner.module.scss\";\r\n\r\nfunction Spinner({ inline }: { inline?:boolean }) {\r\n const spinnerType = inline ? Styles.loading_inline : \"\";\r\n return (\r\n
    \r\n );\r\n}\r\nexport default Spinner;\r\n","import React, { useMemo, useState } from \"react\";\r\nimport { Tooltip } from \"reactstrap\";\r\nimport Styles from \"./HelpIcon.module.scss\";\r\nimport { ReactComponent as SvgQuestion } from \"./question-circle-solid.svg\";\r\n\r\nconst HelpIcon = (\r\n {\r\n url,\r\n tooltipMessage,\r\n }\r\n :\r\n {\r\n url: string,\r\n tooltipMessage: string,\r\n }\r\n) => {\r\n const [tooltipOpen, setTooltipOpen] = useState(false);\r\n const toggle = () => setTooltipOpen(!tooltipOpen);\r\n\r\n // generate random id to ensure the popup is unique\r\n const id = useMemo(() => `help-icon-${Math.random().toString(36).substring(2)}`, []);\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n {tooltipMessage}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default HelpIcon;\r\n","import React, {\r\n // eslint-disable-next-line no-unused-vars\r\n CSSProperties,\r\n} from \"react\";\r\nimport Styles from \"./ShadowCard.module.scss\";\r\n\r\nconst ShadowCard = (\r\n { children, className, style }\r\n :\r\n {children: React.ReactNode, className?: string, style?: CSSProperties}\r\n) => (\r\n
    \r\n {children}\r\n
    \r\n);\r\n\r\nexport default ShadowCard;\r\n","import React from \"react\";\r\n\r\nconst NoResultsCard = ({ children }: { children: React.ReactNode }) => (\r\n
    \r\n {children}\r\n
    \r\n);\r\n\r\nexport default NoResultsCard;\r\n","import React from \"react\";\r\nimport { Badge } from \"reactstrap\";\r\nimport Styles from \"./DropDownButton.module.scss\";\r\nimport { ReactComponent as SvgTriangle } from \"../../images/triangle.svg\";\r\n\r\nfunction DropDownButton({\r\n styleVal,\r\n label,\r\n iconSvg,\r\n onClick,\r\n up,\r\n className = \"\",\r\n labelClassName = \"\",\r\n badge,\r\n badgePlacement = \"inside\",\r\n disabled = false,\r\n}: {\r\n styleVal?: \"dark\" | \"light\" | \"default\",\r\n label: string,\r\n iconSvg?: SvgrComponent,\r\n onClick?: () => void,\r\n up: boolean,\r\n className?: string | undefined,\r\n labelClassName?: string | undefined,\r\n badge: string | undefined,\r\n badgePlacement?: \"inside\" | \"outside\" | undefined,\r\n disabled?: boolean,\r\n}) {\r\n let styleClass = \"\";\r\n switch (styleVal) {\r\n case \"dark\":\r\n styleClass = Styles.DropdownButtonDark;\r\n break;\r\n case \"light\":\r\n styleClass = Styles.DropdownButtonLight;\r\n break;\r\n default:\r\n styleClass = Styles.DropdownButtonDefault;\r\n break;\r\n }\r\n const useDarkTriangle = styleVal === \"dark\";\r\n const imgClass = up ? `${Styles.FlipVertical}` : \"\";\r\n let badgePlacementClass: string;\r\n switch (badgePlacement) {\r\n case \"inside\":\r\n badgePlacementClass = Styles.BadgeInside;\r\n break;\r\n case \"outside\":\r\n badgePlacementClass = Styles.BadgeOutside;\r\n break;\r\n default:\r\n badgePlacementClass = \"\";\r\n }\r\n\r\n const IconSvg = iconSvg;\r\n return (\r\n \r\n {!!IconSvg && (\r\n \r\n )}\r\n {label}\r\n {\r\n badge && {badge}\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DropDownButton;\r\n","import\r\n// eslint-disable-next-line no-unused-vars\r\nSystemFeatures,\r\n{ hasFeature, hasSomeFeature } from \"../utils/enums/SystemFeatures\";\r\n\r\nlet allowedFeatures = SystemFeatures.None;\r\n\r\nexport const setupAllowedFeatures = (newAllowedFeatures: SystemFeatures) => {\r\n allowedFeatures = newAllowedFeatures;\r\n};\r\n\r\nexport const useSystemFeatureCheck = (strict: boolean = false) => (\r\n feature: SystemFeatures\r\n) => (strict ? hasFeature(allowedFeatures, feature) : hasSomeFeature(allowedFeatures, feature));\r\n","import React, { Fragment, useState } from \"react\";\r\nimport { Collapse, CardBody, Card } from \"reactstrap\";\r\nimport Spinner from \"../../Spinner/Spinner\";\r\nimport NoResultsCard from \"../NoResultCard/NoResultsCard\";\r\n\r\nimport {\r\n BasicTableGroupCell, // eslint-disable-line no-unused-vars\r\n} from \"./Interfaces/BasicTableGroupCell\";\r\nimport {\r\n BasicTableColumn, // eslint-disable-line no-unused-vars\r\n} from \"./Interfaces/BasicTableColumn\";\r\nimport {\r\n BasicTableCell, // eslint-disable-line no-unused-vars\r\n} from \"./Interfaces/BasicTableCell\";\r\nimport {\r\n BasicTableTotalCell, // eslint-disable-line no-unused-vars\r\n} from \"./Interfaces/BasicTableTotalCell\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../../..\";\r\n\r\nimport Styles from \"./BasicTable.module.scss\";\r\nimport DropDownButton from \"../../DropDownButton/DropDownButton\";\r\nimport { useSystemFeatureCheck } from \"../../../Hooks/useSystemFeatureCheck\";\r\nimport { useShowNotAllowedError } from \"../../../Hooks/useNotAllowedError\";\r\n\r\nconst BasicTable = (\r\n {\r\n columns = [],\r\n rows = [],\r\n subRows = [],\r\n groupCells = [],\r\n emptyMessage,\r\n loading,\r\n viewSubRowFeature,\r\n totalCell,\r\n tableStyle = \"default\",\r\n }\r\n :\r\n {\r\n columns: (BasicTableColumn | string)[],\r\n rows?: BasicTableCell[][],\r\n subRows?: JSX.Element[],\r\n groupCells?: BasicTableGroupCell[],\r\n totalCell?: BasicTableTotalCell,\r\n emptyMessage?: string | undefined,\r\n viewSubRowFeature?: SystemFeatures,\r\n loading?: boolean | undefined,\r\n tableStyle?: \"default\" | \"light\" | \"mobile\",\r\n }\r\n) => {\r\n const [isOpen, setIsOpen] = useState>([]);\r\n\r\n const toggle = (index: number) => setIsOpen((currentIsOpen) => {\r\n const newIsOpen = [...currentIsOpen];\r\n newIsOpen[index] = !newIsOpen[index];\r\n return newIsOpen;\r\n });\r\n\r\n const featureCheck = useSystemFeatureCheck();\r\n const showNotAllowedError = useShowNotAllowedError();\r\n\r\n const columnsToRender = [...columns];\r\n if (subRows.length !== 0) {\r\n columnsToRender.push({\r\n key: \"expandRows\",\r\n });\r\n }\r\n\r\n const gridStyle = {\r\n gridTemplateColumns: new Array(groupCells.length + columnsToRender.length)\r\n .fill(\"auto\")\r\n .map((_, i) => {\r\n const column = columnsToRender[i];\r\n if (column == null || typeof column === \"string\") {\r\n return \"auto\";\r\n }\r\n return column.size ?? \"auto\";\r\n })\r\n .join(\" \"),\r\n };\r\n\r\n const groupCellContents = groupCells.map((cell) => {\r\n const groupCellStyle = {\r\n gridRow: `span ${rows.length}`,\r\n };\r\n\r\n const classes = [Styles.BasicTableCell];\r\n if (cell.fullSize) {\r\n classes.push(Styles.FullSizeCell);\r\n }\r\n\r\n return (\r\n
    \r\n {cell.valueTemplate != null ? cell.valueTemplate() : cell.value}\r\n
    \r\n );\r\n });\r\n\r\n const getColumnContent = (column: string | BasicTableColumn) => {\r\n if (typeof column === \"string\") {\r\n return column;\r\n }\r\n\r\n let className = \"\";\r\n switch (column.align) {\r\n case \"left\":\r\n className = \"text-left\";\r\n break;\r\n case \"right\":\r\n className = \"text-right\";\r\n break;\r\n default:\r\n className = \"text-center\";\r\n break;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {column.text}\r\n
    \r\n
    \r\n {column.subText ? column.subText : \"\"}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n const getColumnKey = (column: string | BasicTableColumn) => {\r\n if (typeof column === \"string\") {\r\n return column;\r\n }\r\n return column.key;\r\n };\r\n\r\n const getTextAlignmentClass = (align: string) => {\r\n let className = \"\";\r\n switch (align) {\r\n case \"left\":\r\n className = \"justify-content-xl-start\";\r\n break;\r\n case \"right\":\r\n className = \"justify-content-xl-end\";\r\n break;\r\n case \"center\":\r\n className = \"justify-content-xl-center\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return className;\r\n };\r\n\r\n const desktopVersionClass = tableStyle === \"mobile\" ? \"d-none\" : \"desktop-version\";\r\n const mobileVersionClass = tableStyle === \"mobile\" ? \"\" : \"mobile-version\";\r\n\r\n const cells = rows.map((row, rowIndex) => {\r\n const rowContent = row.map((cell, cellIndex) => {\r\n const classes = [cell.className, Styles.BasicTableCell];\r\n if (cell.fullSize && cell.valueTemplate != null) {\r\n classes.push(Styles.FullSizeCell);\r\n }\r\n\r\n classes.push(getTextAlignmentClass(cell.align ?? \"\"));\r\n\r\n return (\r\n \r\n
    \r\n {getColumnContent(columnsToRender[cellIndex])}\r\n
    \r\n
    \r\n {cell.valueTemplate != null ? cell.valueTemplate() : cell.value}\r\n
    \r\n
    \r\n );\r\n });\r\n\r\n if (subRows.length !== 0) {\r\n const subRowButton = (\r\n \r\n {\r\n if (viewSubRowFeature == null || featureCheck(viewSubRowFeature)) {\r\n toggle(rowIndex);\r\n } else {\r\n showNotAllowedError(viewSubRowFeature);\r\n }\r\n }}\r\n />\r\n
    \r\n );\r\n rowContent.push(subRowButton);\r\n }\r\n\r\n const subRowContent = (subRows.length !== 0)\r\n ? (\r\n
    \r\n \r\n \r\n \r\n {subRows[rowIndex]}\r\n \r\n \r\n \r\n
    \r\n )\r\n : null;\r\n\r\n const finalRowContent = (\r\n \r\n {rowContent}\r\n {subRowContent}\r\n \r\n );\r\n\r\n return finalRowContent;\r\n });\r\n\r\n return (\r\n
    \r\n \r\n {groupCells.map((cell) => (\r\n
    \r\n {cell.columnHeading}\r\n
    \r\n ))}\r\n\r\n {columnsToRender.map((column) => (\r\n
    \r\n {getColumnContent(column)}\r\n
    \r\n ))}\r\n\r\n {/* Mobile cells */}\r\n {!loading && groupCellContents.map((cell, index) => (\r\n \r\n
    \r\n {groupCells[index].columnHeading}\r\n
    \r\n {cell}\r\n
    \r\n ))}\r\n {!loading && cells.map((c, i) => (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
    \r\n {c}\r\n
    \r\n ))}\r\n\r\n {/* Desktop cells */}\r\n {!loading && cells.map((c, i) => (\r\n // eslint-disable-next-line react/no-array-index-key\r\n \r\n {i === 0 ? groupCellContents : null}\r\n {c}\r\n \r\n ))}\r\n\r\n {/* Total cells */}\r\n {!loading && cells.length > 0\r\n && totalCell != null\r\n && (\r\n \r\n {/* Desktop cells */}\r\n \r\n {totalCell.label}\r\n \r\n \r\n {totalCell.valueTemplate()}\r\n \r\n\r\n {/* Mobile Footer cells */}\r\n
    \r\n
    \r\n {totalCell.label}\r\n
    \r\n
    \r\n {totalCell.valueTemplate()}\r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n {emptyMessage != null && !loading && cells.length === 0\r\n && (\r\n \r\n {emptyMessage}\r\n \r\n )}\r\n\r\n {loading && }\r\n \r\n );\r\n};\r\n\r\nexport default BasicTable;\r\nexport * from \"./Interfaces/BasicTableCell\";\r\nexport * from \"./Interfaces/BasicTableGroupCell\";\r\nexport * from \"./Interfaces/BasicTableColumn\";\r\nexport * from \"./Interfaces/BasicTableTotalCell\";\r\n","import React, { useState, Fragment } from \"react\";\r\nimport {\r\n Input, Label, FormGroup, Dropdown, DropdownToggle, DropdownMenu, DropdownItem,\r\n} from \"reactstrap\";\r\nimport Styles from \"./DropDownInput.module.scss\";\r\n\r\nconst DropDownInput = ({\r\n label,\r\n options,\r\n onChange,\r\n value,\r\n noPrompt,\r\n inline,\r\n className,\r\n inputClassName,\r\n required,\r\n validationMessage,\r\n disabled,\r\n canSearch,\r\n squareBorder = false,\r\n}: {\r\n label?: string,\r\n options: Array<{ value: T, display: string }>,\r\n onChange: (value?: T) => void,\r\n value?: T,\r\n noPrompt?: boolean,\r\n inline?: boolean,\r\n className?: string,\r\n inputClassName?: string,\r\n required?: boolean,\r\n validationMessage?: string,\r\n disabled?: boolean,\r\n canSearch?: boolean,\r\n squareBorder?: boolean,\r\n}) => {\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n\r\n const selectOptions = [\r\n noPrompt ? null : (\r\n \r\n ),\r\n ].concat(\r\n options.map((option) => (\r\n onChange(option.value)}\r\n >\r\n {option.display}\r\n \r\n ))\r\n );\r\n\r\n let filteredOptions = options;\r\n\r\n if (canSearch && searchQuery) {\r\n filteredOptions = options\r\n .filter((c) => c.display.toLowerCase().includes(searchQuery));\r\n }\r\n\r\n const dropDownItems = filteredOptions.map((option) => (\r\n onChange(option.value)}\r\n >\r\n {option.display}\r\n \r\n ));\r\n\r\n const [showOptions, setShowOptions] = useState(false);\r\n const inputId = `${label}-${Math.random().toString(36).substring(2)}`;\r\n return (\r\n \r\n {label && }\r\n setShowOptions((newValue) => !newValue)}\r\n >\r\n \r\n {}}\r\n >\r\n {selectOptions}\r\n \r\n {\r\n validationMessage && (\r\n
    \r\n {validationMessage}\r\n
    \r\n )\r\n }\r\n
    \r\n \r\n {canSearch\r\n && (\r\n \r\n {\r\n setSearchQuery(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n )}\r\n\r\n {dropDownItems}\r\n \r\n \r\n\r\n
    \r\n );\r\n};\r\n\r\nexport default DropDownInput;\r\n","import React, { useState, Fragment } from \"react\";\r\nimport {\r\n Dropdown,\r\n DropdownToggle,\r\n DropdownMenu,\r\n Input,\r\n DropdownItem,\r\n} from \"reactstrap\";\r\nimport DropDownButton from \"../DropDownButton/DropDownButton\";\r\n\r\nimport Styles from \"./ActionsDropdown.module.scss\";\r\n\r\nconst ActionsDropdown = ({\r\n disabled = false,\r\n className = \"\",\r\n buttonClassName = \"\",\r\n label,\r\n iconSvg,\r\n styleVal,\r\n badge,\r\n children,\r\n scrollingMenu,\r\n searchQuery,\r\n onSearchQueryChange,\r\n}: {\r\n disabled?: boolean,\r\n className?: string,\r\n buttonClassName?: string,\r\n label: string,\r\n iconSvg?: SvgrComponent,\r\n styleVal?: \"dark\" | \"light\" | \"default\",\r\n badge?: string,\r\n children: React.ReactNode\r\n scrollingMenu?: boolean,\r\n searchQuery?: string,\r\n onSearchQueryChange? : (searchQuery: string) => void\r\n}) => {\r\n const [showOptions, setShowOptions] = useState(false);\r\n\r\n return (\r\n setShowOptions((value) => !value)}\r\n className={`${Styles.ActionsDropdown} ${className}`}\r\n >\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {onSearchQueryChange\r\n && (\r\n \r\n {\r\n onSearchQueryChange(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n )}\r\n\r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ActionsDropdown;\r\n","import React, { useEffect, useRef } from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../..\";\r\nimport { useShowNotAllowedError } from \"../../Hooks/useNotAllowedError\";\r\nimport Styles from \"./CheckboxInput.module.scss\";\r\n\r\nfunction CheckboxInput({\r\n value,\r\n label,\r\n onChange,\r\n size,\r\n className,\r\n disabled = false,\r\n feature,\r\n}\r\n:\r\n{\r\n value: boolean,\r\n label?: string,\r\n onChange: (value: boolean) => void,\r\n size?: \"small\" | \"default\",\r\n className?: string,\r\n disabled?: boolean,\r\n feature?: SystemFeatures,\r\n }) {\r\n const input = useRef(null);\r\n const showNotAllowedError = useShowNotAllowedError();\r\n const onClickHandler = () => {\r\n if (onChange == null) {\r\n return;\r\n }\r\n onChange(input.current?.checked ?? false);\r\n };\r\n let sizeClass = \"\";\r\n switch (size) {\r\n case \"small\":\r\n sizeClass = Styles.CheckBoxSizeSmall;\r\n break;\r\n default:\r\n sizeClass = \"\";\r\n }\r\n\r\n const id = Math.random().toString(36);\r\n\r\n useEffect(() => {\r\n }, [value]);\r\n\r\n return (\r\n \r\n {\r\n if (disabled === false || disabled == null) {\r\n onClickHandler();\r\n } else if (feature) {\r\n ev.preventDefault();\r\n showNotAllowedError(feature);\r\n }\r\n }}\r\n checked={value}\r\n ref={input}\r\n />\r\n \r\n {label && {label}}\r\n \r\n );\r\n}\r\n\r\nexport default CheckboxInput;\r\n","import React, { Fragment } from \"react\";\r\n\r\nimport { DropdownItem, Alert, Button } from \"reactstrap\";\r\n\r\nimport Styles from \"./TableHeader.module.scss\";\r\n\r\nimport DropdownInput from \"../../../Forms/DropDownInput/DropDownInput\";\r\nimport ActionsDropdown from \"../../../ActionsDropDown/ActionsDropdown\";\r\nimport CheckboxInput from \"../../../CheckboxInput/CheckboxInput\";\r\n\r\nimport { ReactComponent as SvgSortAmountDown } from \"./sort-amount-down.svg\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../../../..\";\r\n\r\nfunction TableHeader({\r\n totalItems,\r\n firstItem,\r\n lastItem,\r\n actionOptions,\r\n isAllOnPageSelected,\r\n onSelectAllOnPage,\r\n isAllSelected,\r\n onSelectAll,\r\n pageSizes,\r\n selectedPageSize,\r\n onPageSizeChange,\r\n sortOptions,\r\n onSortOptionChange,\r\n statusFilterOptions,\r\n onStatusFilterChange,\r\n additionalStatusFilterOptions,\r\n additionalStatusCondRenderExclusions,\r\n onAdditionalStatusFilterChange,\r\n additionalStatusFilterName,\r\n compact,\r\n title,\r\n disableCheckBox = false,\r\n requiredCheckBoxFeature,\r\n} : {\r\n totalItems : number,\r\n firstItem : number,\r\n lastItem : number,\r\n actionOptions?: Array,\r\n isAllOnPageSelected : boolean,\r\n onSelectAllOnPage : (value: boolean) => void,\r\n isAllSelected: boolean,\r\n onSelectAll: (value: boolean) => void,\r\n pageSizes: Array,\r\n selectedPageSize : number,\r\n onPageSizeChange: (value: number) => void,\r\n sortOptions?: {\r\n selectedSortOption: number,\r\n options: Array<{value: number, display: string}>,\r\n },\r\n onSortOptionChange?: (value: number) => void,\r\n statusFilterOptions? : {\r\n selectedStatusFilterOption : number,\r\n options: Array<{value: number, display: string}>,\r\n },\r\n onStatusFilterChange?: (value: number) => void,\r\n additionalStatusFilterOptions? : {\r\n selectedStatusFilterOption: number,\r\n options: Array<{value: number, display: string}>,\r\n },\r\n additionalStatusCondRenderExclusions?: Array,\r\n onAdditionalStatusFilterChange?: (value: number) => void,\r\n additionalStatusFilterName?: string,\r\n compact : boolean,\r\n title?: string,\r\n disableCheckBox ?: boolean,\r\n requiredCheckBoxFeature ?: SystemFeatures,\r\n}) {\r\n return (\r\n
    \r\n {!title && (\r\n

    \r\n {totalItems != null\r\n ? `Total Records: ${totalItems}`\r\n : \"\"}\r\n

    \r\n )}\r\n {title &&

    {title}

    }\r\n\r\n
    \r\n ({ value: p, display: `${p}` }))}\r\n onChange={(value) => onPageSizeChange(value ?? pageSizes[0])}\r\n value={selectedPageSize}\r\n inline\r\n noPrompt\r\n />\r\n \r\n {totalItems != null && totalItems !== 0\r\n ? `Showing ${firstItem}-${lastItem} of ${totalItems} results`\r\n : \"\"}\r\n \r\n
    \r\n\r\n \r\n {!compact && actionOptions && actionOptions.length > 0 && (\r\n
    \r\n onSelectAllOnPage(newValue)}\r\n feature={requiredCheckBoxFeature}\r\n />\r\n\r\n
    \r\n\r\n \r\n {actionOptions}\r\n \r\n\r\n
    \r\n )}\r\n {\r\n isAllOnPageSelected && totalItems > selectedPageSize && (\r\n \r\n {isAllSelected\r\n ? (\r\n \r\n {`All ${totalItems} selected `}\r\n \r\n \r\n )\r\n : (\r\n \r\n {`You have selected ${selectedPageSize} items on this page.`}\r\n \r\n \r\n )}\r\n \r\n )\r\n }\r\n \r\n\r\n
    \r\n {sortOptions != null && (\r\n \r\n {sortOptions.options.map((option) => (\r\n {\r\n if (onSortOptionChange != null) {\r\n onSortOptionChange(option.value);\r\n }\r\n }}\r\n >\r\n {option.display}\r\n \r\n ))}\r\n \r\n )}\r\n\r\n { statusFilterOptions != null && (\r\n \r\n
    \r\n option.value === statusFilterOptions.selectedStatusFilterOption\r\n )?.display ?? \"\"}\r\n className=\"\"\r\n >\r\n {statusFilterOptions.options.map((option) => (\r\n {\r\n if (onStatusFilterChange != null) {\r\n onStatusFilterChange(option.value);\r\n }\r\n }}\r\n >\r\n {option.display}\r\n \r\n ))}\r\n \r\n \r\n )}\r\n { (statusFilterOptions && statusFilterOptions.selectedStatusFilterOption > 0\r\n && !additionalStatusCondRenderExclusions?.includes(\r\n statusFilterOptions.selectedStatusFilterOption\r\n ))\r\n && (additionalStatusFilterOptions != null\r\n && additionalStatusFilterOptions.options.length > 0)\r\n && (\r\n \r\n
    \r\n (\r\n option.value === additionalStatusFilterOptions.selectedStatusFilterOption\r\n ))?.display ?? (!additionalStatusFilterName ? \"Additional Filter\" : additionalStatusFilterName)}\r\n className=\"\"\r\n >\r\n {additionalStatusFilterOptions?.options.map((option) => (\r\n {\r\n if (onAdditionalStatusFilterChange != null) {\r\n onAdditionalStatusFilterChange(option.value);\r\n }\r\n }}\r\n >\r\n {option.display}\r\n \r\n ))}\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default TableHeader;\r\n","import React from \"react\";\r\nimport Styles from \"./ImageButton.module.scss\";\r\n\r\nconst ImageButton = (\r\n {\r\n disabled = false,\r\n className = \"\",\r\n onClick,\r\n svg,\r\n alt,\r\n }\r\n :\r\n {\r\n disabled?: boolean,\r\n className?: string,\r\n onClick: () => void,\r\n svg: SvgrComponent,\r\n alt?: string,\r\n }\r\n) => {\r\n const SvgImage = svg;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ImageButton;\r\n","import React from \"react\";\r\nimport Styles from \"./TablePageSelector.module.scss\";\r\nimport { ReactComponent as SvgTriangle } from \".../../../../images/triangle.svg\";\r\nimport ImageButton from \"../../../ImageButton/ImageButton\";\r\n\r\nconst TablePageSelector = (\r\n {\r\n currentPageIndex,\r\n totalPages,\r\n onPageChange,\r\n } : {\r\n currentPageIndex: number,\r\n totalPages: number,\r\n onPageChange: (page: number) => void,\r\n }\r\n) => {\r\n const numberOfPagesToShow = 5;\r\n let firstPageIndexToShow = currentPageIndex - Math.floor(numberOfPagesToShow / 2);\r\n if (firstPageIndexToShow < 0) {\r\n firstPageIndexToShow = 0;\r\n }\r\n let lastPageIndexToShow = firstPageIndexToShow + numberOfPagesToShow - 1;\r\n if (lastPageIndexToShow >= totalPages) {\r\n lastPageIndexToShow = totalPages - 1;\r\n }\r\n\r\n const startWithEllipsis = firstPageIndexToShow > 0;\r\n const endWithEllipsis = lastPageIndexToShow < totalPages - 1;\r\n\r\n const pageButtons = Array(lastPageIndexToShow - firstPageIndexToShow + 1)\r\n .fill(0)\r\n .map((_, index) => {\r\n const pageIndex = firstPageIndexToShow + index;\r\n const isCurrentPage = pageIndex === currentPageIndex;\r\n return (\r\n (isCurrentPage ? null : onPageChange(pageIndex))}\r\n // eslint-disable-next-line react/no-array-index-key\r\n key={index}\r\n className={`${isCurrentPage ? \"active\" : null} btn btn-link rounded-circle`}\r\n >\r\n {pageIndex + 1}\r\n \r\n );\r\n });\r\n\r\n return (\r\n
    \r\n onPageChange(currentPageIndex - 1)}\r\n />\r\n
    \r\n {startWithEllipsis ? (\r\n onPageChange(firstPageIndexToShow - 1)}\r\n >\r\n ...\r\n \r\n ) : null}\r\n {pageButtons}\r\n {endWithEllipsis ? (\r\n onPageChange(lastPageIndexToShow + 1)}\r\n >\r\n ...\r\n \r\n ) : null}\r\n
    \r\n onPageChange(currentPageIndex + 1)}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default TablePageSelector;\r\n","import React from \"react\";\r\n\r\nimport DropdownInput from \"../../../Forms/DropDownInput/DropDownInput\";\r\nimport ActionsDropdown from \"../../../ActionsDropDown/ActionsDropdown\";\r\nimport CheckboxInput from \"../../../CheckboxInput/CheckboxInput\";\r\nimport TablePageSelector from \"../TablePageSelector/TablePageSelector\";\r\n\r\nimport Styles from \"./TableFooter.module.scss\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../../../..\";\r\n\r\nfunction TableFooter({\r\n totalItems,\r\n firstItem,\r\n lastItem,\r\n currentPageIndex,\r\n totalPages,\r\n onPageChange,\r\n actionOptions,\r\n isAllSelected,\r\n onSelectAll,\r\n pageSizes,\r\n selectedPageSize,\r\n onPageSizeChange,\r\n compact,\r\n disableCheckBox = false,\r\n requiredCheckBoxFeature,\r\n}:\r\n{\r\n totalItems : number,\r\n firstItem: number,\r\n lastItem: number,\r\n currentPageIndex: number,\r\n totalPages: number,\r\n onPageChange: (page: number) => void,\r\n actionOptions?: Array,\r\n isAllSelected: boolean,\r\n onSelectAll: (value: boolean) => void,\r\n pageSizes: Array,\r\n selectedPageSize: number,\r\n onPageSizeChange: (value: number) => void,\r\n compact: boolean,\r\n disableCheckBox ?: boolean,\r\n requiredCheckBoxFeature ?: SystemFeatures,\r\n}) {\r\n const hasActionsDropDown = actionOptions && actionOptions.length > 0;\r\n return (\r\n
    \r\n {!compact && hasActionsDropDown && (\r\n
    \r\n onSelectAll(newValue)}\r\n feature={requiredCheckBoxFeature}\r\n />\r\n
    \r\n \r\n {actionOptions}\r\n \r\n
    \r\n )}\r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n ({ value: p, display: `${p}` }))}\r\n onChange={(value) => onPageSizeChange(value ?? pageSizes[0])}\r\n value={selectedPageSize}\r\n inline\r\n noPrompt\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default TableFooter;\r\n","import React from \"react\";\r\nimport { Button } from \"reactstrap\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../..\";\r\nimport { useShowNotAllowedError } from \"../../Hooks/useNotAllowedError\";\r\nimport Styles from \"./UtilButton.module.scss\";\r\n\r\nfunction UtilButton({\r\n disabled = false,\r\n color = \"primary\",\r\n outline = false,\r\n size,\r\n location,\r\n className = \"\",\r\n children,\r\n feature,\r\n onClick,\r\n}\r\n:{\r\n disabled?: boolean,\r\n color? : \"primary\" | \"secondary\",\r\n outline?: boolean,\r\n size?: \"small\" | \"extra-small\" | \"default\",\r\n location?: \"bottom\" | \"top\",\r\n className?: string,\r\n children: React.ReactNode,\r\n feature?: SystemFeatures,\r\n onClick: () => void,\r\n}) {\r\n const showNotAllowedError = useShowNotAllowedError();\r\n const classes = [Styles.UtilButton, className];\r\n if (disabled) { classes.push(Styles.DisabledButton); }\r\n\r\n switch (location) {\r\n case \"bottom\":\r\n classes.push(Styles.Bottom);\r\n break;\r\n case \"top\":\r\n classes.push(Styles.Top);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n switch (size) {\r\n case \"small\":\r\n classes.push(Styles.Small);\r\n break;\r\n case \"extra-small\":\r\n classes.push(Styles.ExtraSmall);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n {\r\n ev.preventDefault();\r\n if (!disabled) {\r\n onClick();\r\n } else if (feature != null) {\r\n showNotAllowedError(feature);\r\n }\r\n }}\r\n >\r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default UtilButton;\r\n","import React, { useState, Fragment } from \"react\";\r\nimport {\r\n Dropdown,\r\n DropdownToggle,\r\n DropdownMenu,\r\n Input,\r\n DropdownItem,\r\n} from \"reactstrap\";\r\nimport DropDownButton from \"../DropDownButton/DropDownButton\";\r\n\r\nimport Styles from \"./ActionsDropdown.module.scss\";\r\n\r\nconst ActionsDropdown = ({\r\n disabled = false,\r\n className = \"\",\r\n buttonClassName = \"\",\r\n label,\r\n iconSvg,\r\n styleVal,\r\n badge,\r\n children,\r\n scrollingMenu,\r\n searchQuery,\r\n onSearchQueryChange,\r\n}: {\r\n disabled?: boolean,\r\n className?: string,\r\n buttonClassName?: string,\r\n label: string,\r\n iconSvg?: SvgrComponent,\r\n styleVal?: \"dark\" | \"light\" | \"default\",\r\n badge?: string,\r\n children: React.ReactNode\r\n scrollingMenu?: boolean,\r\n searchQuery?: string,\r\n onSearchQueryChange? : (searchQuery: string) => void\r\n}) => {\r\n const [showOptions, setShowOptions] = useState(false);\r\n\r\n return (\r\n setShowOptions((value) => !value)}\r\n className={`${Styles.ActionsDropdown} ${className}`}\r\n >\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {onSearchQueryChange\r\n && (\r\n \r\n {\r\n onSearchQueryChange(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n )}\r\n\r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ActionsDropdown;\r\n","import React from \"react\";\r\nimport Styles from \"./Line.module.scss\";\r\n\r\nconst Line = ({ color, className } : {color: \"primary\" | \"secondary\", className?: string }) => {\r\n let colorStyle:string;\r\n switch (color) {\r\n case \"primary\":\r\n colorStyle = Styles.ColorPrimary;\r\n break;\r\n case \"secondary\":\r\n colorStyle = Styles.ColorSecondary;\r\n break;\r\n default:\r\n colorStyle = \"\";\r\n }\r\n return (
    );\r\n};\r\n\r\nexport default Line;\r\n","import React, {\r\n Fragment,\r\n // eslint-disable-next-line no-unused-vars\r\n CSSProperties,\r\n} from \"react\";\r\nimport CheckboxInput from \"../../../CheckboxInput/CheckboxInput\";\r\nimport UtilButton from \"../../../UtilButton/UtilButton\";\r\nimport ActionsDropdown from \"../../../ActionsDropDown/ActionsDropDown\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { TableColumn } from \"../Interfaces/TableColumn\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { FooterItem } from \"../Interfaces/FooterItem\";\r\nimport ShadowCard from \"../../../../Containers/ShadowCard/ShadowCard\";\r\nimport Line from \"../../../Line/Line\";\r\n\r\nimport Styles from \"./TableRowItem.module.scss\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { TableActionsItemProps } from \"../../TableActionsItem/TableActionsItem\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { TableItem } from \"../Interfaces/TableItem\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../../../..\";\r\n\r\nconst TableRowItem = >(\r\n {\r\n columns,\r\n data,\r\n footerItems,\r\n actionOptions,\r\n gridTemplateColumns,\r\n selected,\r\n onSelectedChanged,\r\n canSelect,\r\n compact,\r\n moreButtonText = \"View more details\",\r\n onViewMore,\r\n onViewMoreDisabled,\r\n disabled = false,\r\n requiredItemSelectFeature,\r\n requiredViewMoreFeature,\r\n }\r\n :\r\n {\r\n columns: Array>,\r\n data: TDataType,\r\n footerItems?: Array>,\r\n actionOptions?: Array>>,\r\n gridTemplateColumns: CSSProperties,\r\n selected: boolean,\r\n onSelectedChanged: (value: boolean) => void,\r\n canSelect: boolean,\r\n compact: boolean,\r\n moreButtonText: string | undefined,\r\n onViewMore?: (data: TDataType) => void,\r\n onViewMoreDisabled?: boolean\r\n disabled?: boolean,\r\n requiredItemSelectFeature?: SystemFeatures\r\n requiredViewMoreFeature?: SystemFeatures,\r\n }\r\n) => {\r\n if (data.id == null) {\r\n // eslint-disable-next-line no-console\r\n console.error(\"You have to specify property ID on all items in a table\");\r\n }\r\n\r\n const moreDetailsClickHandler = () => {\r\n if (onViewMore != null) {\r\n onViewMore(data);\r\n }\r\n };\r\n\r\n const getDisplayValue = (\r\n footerItem: {\r\n valueTemplate?: (value: TDataType) => JSX.Element | string, propName?: keyof TDataType\r\n },\r\n itemData: TDataType\r\n ) => {\r\n if (footerItem.valueTemplate != null) {\r\n return footerItem.valueTemplate(itemData);\r\n }\r\n\r\n if (footerItem.propName == null) {\r\n return null;\r\n }\r\n\r\n return itemData[footerItem.propName];\r\n };\r\n\r\n const tableCells = columns.map((column, index) => {\r\n const style : CSSProperties = {\r\n gridColumn: compact && index === 0 ? `span ${columns.length - 1}` : undefined,\r\n };\r\n\r\n return (\r\n \r\n {(!compact || canSelect || index !== 0) && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n {compact && index !== 0 && (\r\n \r\n )}\r\n\r\n \r\n
    \r\n
    \r\n );\r\n });\r\n\r\n const footerHtmlItems = footerItems?.map((footerItem) => {\r\n const displayValue = getDisplayValue(footerItem, data);\r\n if (footerItem.label == null && displayValue == null) {\r\n return null;\r\n }\r\n return (\r\n \r\n {footerItem.label && }\r\n {getDisplayValue(footerItem, data)}\r\n \r\n );\r\n });\r\n\r\n let footerColumnSpanStyle;\r\n if (compact) {\r\n // first item takes up it's own row\r\n footerColumnSpanStyle = {\r\n gridColumn: `span ${columns.length - 1}`,\r\n };\r\n } else if (canSelect) {\r\n // figure in checkbox\r\n footerColumnSpanStyle = {\r\n gridColumn: `span ${columns.length + 1}`,\r\n };\r\n } else {\r\n footerColumnSpanStyle = {\r\n gridColumn: `span ${columns.length}`,\r\n };\r\n }\r\n\r\n const rowItemActionOptions = actionOptions?.map((item) => React.cloneElement(item, {\r\n onClick: () => {\r\n if (!item.props.onClick) {\r\n return;\r\n }\r\n\r\n item.props.onClick([data.id], false);\r\n },\r\n }));\r\n\r\n const rowActionItemsToDisplay = rowItemActionOptions != null\r\n ? rowItemActionOptions\r\n .filter((i) => (i.props.shouldDisplay == null\r\n ? true\r\n : i.props.shouldDisplay(data)))\r\n : null;\r\n\r\n const hasActionsDropDown = rowActionItemsToDisplay && rowActionItemsToDisplay.length > 0;\r\n const hasViewMore = !compact && onViewMore;\r\n const hasActions = hasActionsDropDown || hasViewMore;\r\n\r\n return (\r\n \r\n {!compact && canSelect && (\r\n
    \r\n {\r\n onSelectedChanged(newValue);\r\n }}\r\n />\r\n
    \r\n )}\r\n\r\n {tableCells}\r\n\r\n
    \r\n
    \r\n {footerHtmlItems}\r\n
    \r\n
    \r\n {hasActionsDropDown\r\n && (\r\n \r\n
    \r\n \r\n {\r\n rowActionItemsToDisplay?.map((i) => i)\r\n }\r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {\r\n hasActionsDropDown && hasViewMore && \r\n }\r\n\r\n {hasViewMore && (\r\n
    \r\n \r\n {moreButtonText}\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\nexport default TableRowItem;\r\n","import React, {\r\n useState,\r\n // eslint-disable-next-line no-unused-vars\r\n CSSProperties,\r\n Fragment,\r\n useEffect,\r\n} from \"react\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport Styles from \"./Table.module.scss\";\r\n\r\nimport TableHeader from \"./TableHeader/TableHeader\";\r\nimport TableFooter from \"./TableFooter/TableFooter\";\r\nimport TableRowItem from \"./TableRowItem/TableRowItem\";\r\nimport Spinner from \"../../Spinner/Spinner\";\r\nimport Line from \"../../Line/Line\";\r\nimport BasicTable from \"../BasicTable/BasicTable\";\r\nimport NoResultsCard from \"../NoResultCard/NoResultsCard\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n TableConfig,\r\n} from \"./Interfaces/TableConfig\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n TableData,\r\n} from \"./Interfaces/TableData\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { TableItem } from \"./Interfaces/TableItem\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../../..\";\r\n\r\nconst pageSizes = [20, 50, 100, 200];\r\nconst Table = >({\r\n onPageChange,\r\n tableConfig,\r\n tableStyle,\r\n title,\r\n onSortOptionChange,\r\n onStatusFilterChange,\r\n onAdditionalStatusFilterChange,\r\n additionalStatusFilterName,\r\n additionalStatusCondRenderExclusions,\r\n loading,\r\n data,\r\n onViewMore,\r\n onViewMoreDisabled,\r\n requiredMutipleItemSelectFeature,\r\n requiredViewMoreFeature,\r\n onSelectAllResultsCallback,\r\n}:\r\n {\r\n onPageChange: (limit: number, offset: number) => void\r\n tableConfig: TableConfig,\r\n tableStyle: \"basic\" | \"compact\" | \"default\",\r\n title?: string,\r\n onSortOptionChange?: (newValue: number) => void,\r\n onStatusFilterChange?: (newValue: number) => void,\r\n onAdditionalStatusFilterChange?: (newValue: number) => void,\r\n additionalStatusFilterName?: string,\r\n additionalStatusCondRenderExclusions?: Array,\r\n loading: boolean,\r\n data: TableData,\r\n onViewMore?: (data: TDataType) => void,\r\n onViewMoreDisabled?: (data: TDataType) => boolean,\r\n requiredMutipleItemSelectFeature?: SystemFeatures,\r\n requiredViewMoreFeature?: SystemFeatures,\r\n onSelectAllResultsCallback?: () => Promise>,\r\n }) => {\r\n const [selectedItems, setSelectedItems] = useState>([]);\r\n const [selectedItemObjects, setSelectedItemObjects] = useState>([]);\r\n const [isAllOnPageSelected, setIsAllOnPageSelected] = useState(false);\r\n const [isAllSelected, setIsAllSelected] = useState(false);\r\n\r\n useEffect(() => {\r\n if (data.items) {\r\n const pageSelectedRows = data.items.filter((element) => selectedItems.includes(element.id));\r\n setIsAllOnPageSelected(pageSelectedRows.length === data.limit);\r\n }\r\n }, [data]);\r\n\r\n const onSelectedChangedHandler = (\r\n id: TIdType,\r\n row: TDataType,\r\n isSelected: boolean,\r\n totalNumberOnPage: number\r\n ) => {\r\n setSelectedItems((currentItems) => {\r\n const newSelectedItems = [...currentItems];\r\n if (isSelected && !newSelectedItems.includes(id)) {\r\n newSelectedItems.push(id);\r\n setIsAllOnPageSelected(newSelectedItems.length === totalNumberOnPage);\r\n setIsAllSelected(false);\r\n setSelectedItemObjects([...selectedItemObjects, row]);\r\n return newSelectedItems;\r\n }\r\n\r\n if (!isSelected && newSelectedItems.includes(id)) {\r\n setIsAllOnPageSelected(false);\r\n setIsAllSelected(false);\r\n setSelectedItemObjects(() => selectedItemObjects.filter((i) => i.id !== row.id));\r\n return newSelectedItems.filter((c) => c !== id);\r\n }\r\n\r\n return currentItems;\r\n });\r\n };\r\n\r\n const onSelectAllOnPageHandler = (\r\n selectAllOnPage: boolean,\r\n allIds: Array,\r\n allObjs: Array\r\n ) => {\r\n if (selectAllOnPage) {\r\n setIsAllOnPageSelected(true);\r\n setSelectedItems([...selectedItems, ...allIds]);\r\n setSelectedItemObjects([...selectedItemObjects, ...allObjs]);\r\n } else {\r\n setIsAllOnPageSelected(false);\r\n setIsAllSelected(false);\r\n setSelectedItems(allIds);\r\n setSelectedItemObjects(allObjs);\r\n }\r\n };\r\n\r\n const pageSizeChangeHandler = (newPageSize: number) => {\r\n onPageChange(newPageSize, 0);\r\n };\r\n\r\n const pageChangeHandler = (newPageIndex: number) => {\r\n const { limit } = data;\r\n const offset = limit * newPageIndex;\r\n onPageChange(limit, offset);\r\n };\r\n\r\n const {\r\n columns,\r\n footerItems,\r\n actionOptions,\r\n sortOptions,\r\n statusFilterOptions,\r\n additionalStatusFilterOptions,\r\n moreButtonText,\r\n searchLimit,\r\n preventMultipleItemSelect,\r\n } = tableConfig;\r\n\r\n const compact = tableStyle === \"compact\";\r\n const useBasicTable = tableStyle === \"basic\";\r\n\r\n const dataItemsStart = data.offset + 1;\r\n let dataItemsEnd = data.offset + data.limit;\r\n if (dataItemsEnd > data.totalItems) {\r\n dataItemsEnd = data.totalItems;\r\n }\r\n\r\n const totalPages = Math.ceil(data.totalItems / data.limit);\r\n let currentPageIndex = Math.floor(dataItemsStart / data.limit);\r\n if (currentPageIndex >= totalPages) {\r\n currentPageIndex = totalPages - 1;\r\n }\r\n\r\n const headerAndFooterActionOptions = actionOptions?.filter(\r\n (c) => c.props.hideInTableHeader !== true\r\n ).map((item) => React.cloneElement(item, {\r\n shouldDisable: () => selectedItems.length === 0\r\n || (isAllSelected && item.props.availableWhenAllSelected === false)\r\n || (isAllOnPageSelected && item.props.availableWhenPageSelected === false)\r\n || (item.props.shouldDisable != null && item.props.shouldDisable()),\r\n onClick: () => {\r\n if (!item.props.onClick) {\r\n return;\r\n }\r\n item.props.onClick(selectedItems, isAllSelected, selectedItemObjects);\r\n },\r\n }));\r\n\r\n const canSelectRows = (headerAndFooterActionOptions?.length ?? 0) > 0;\r\n\r\n let gridTemplateColumns: CSSProperties;\r\n if (compact) {\r\n // first item is on its own row\r\n const filteredColumns = columns.filter((_, i) => i !== 0);\r\n gridTemplateColumns = {\r\n gridTemplateColumns: `${filteredColumns.map((c) => c.size).join(\" \")}`,\r\n };\r\n } else if (canSelectRows) {\r\n // add column for checkbox\r\n gridTemplateColumns = {\r\n gridTemplateColumns: `20px ${columns.map((c) => c.size).join(\" \")}`,\r\n };\r\n } else {\r\n gridTemplateColumns = {\r\n gridTemplateColumns: `${columns.map((c) => c.size).join(\" \")}`,\r\n };\r\n }\r\n\r\n const tableClassName = compact\r\n ? `${Styles.SearchTable} ${Styles.SearchTableCompact}`\r\n : Styles.SearchTable;\r\n\r\n const exceededSearchLimit = searchLimit != null\r\n && data.totalItems > searchLimit\r\n && (data.limit > searchLimit\r\n || data.offset + 1 > searchLimit\r\n || data.limit + data.offset > searchLimit);\r\n\r\n const generateTableRows = () => {\r\n const tableRowsItems = data?.items.map((row) => (\r\n onSelectedChangedHandler(\r\n row.id,\r\n row,\r\n isSelected,\r\n data?.items.length\r\n )}\r\n key={`${row.id}`}\r\n columns={columns}\r\n footerItems={footerItems}\r\n canSelect={!compact && canSelectRows}\r\n actionOptions={actionOptions}\r\n data={row}\r\n gridTemplateColumns={gridTemplateColumns}\r\n onViewMore={onViewMore}\r\n onViewMoreDisabled={onViewMoreDisabled != null ? onViewMoreDisabled(row) : false}\r\n compact={compact}\r\n moreButtonText={moreButtonText}\r\n disabled={preventMultipleItemSelect}\r\n requiredItemSelectFeature={requiredMutipleItemSelectFeature}\r\n requiredViewMoreFeature={requiredViewMoreFeature}\r\n />\r\n ));\r\n\r\n if (exceededSearchLimit) {\r\n return (\r\n \r\n {tableRowsItems}\r\n \r\n
    Search Result Limit Reached
    \r\n Your current subscription package allows you to view a maximum of\r\n {\" \"}\r\n {searchLimit}\r\n {\" \"}\r\n search results. You will need to upgrade your subscription package in\r\n order to increase this limit.\r\n
    \r\n Please review your subscription for more details.\r\n
    \r\n
    \r\n );\r\n }\r\n return tableRowsItems;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n onSelectAllOnPageHandler(\r\n value,\r\n data.items.map((c) => c.id),\r\n data.items\r\n )}\r\n onSelectAll={async (value) => {\r\n if (onSelectAllResultsCallback && value) {\r\n const results = await onSelectAllResultsCallback();\r\n const allIds = results.map((element) => element.id);\r\n\r\n onSelectAllOnPageHandler(isAllOnPageSelected, allIds, results);\r\n }\r\n setIsAllSelected(value);\r\n\r\n // clear all selections\r\n if (value === false) {\r\n onSelectAllOnPageHandler(false, [], []);\r\n }\r\n }}\r\n pageSizes={pageSizes}\r\n selectedPageSize={data.limit}\r\n onPageSizeChange={(newPageSize) => pageSizeChangeHandler(newPageSize)}\r\n compact={compact}\r\n title={title}\r\n sortOptions={sortOptions}\r\n onSortOptionChange={onSortOptionChange}\r\n statusFilterOptions={statusFilterOptions}\r\n onStatusFilterChange={onStatusFilterChange}\r\n additionalStatusFilterOptions={additionalStatusFilterOptions}\r\n additionalStatusCondRenderExclusions={additionalStatusCondRenderExclusions}\r\n onAdditionalStatusFilterChange={onAdditionalStatusFilterChange}\r\n additionalStatusFilterName={additionalStatusFilterName}\r\n disableCheckBox={preventMultipleItemSelect}\r\n requiredCheckBoxFeature={requiredMutipleItemSelectFeature}\r\n />\r\n\r\n {!compact && !useBasicTable && (\r\n
    \r\n {canSelectRows &&
    }\r\n {columns.map((column) => {\r\n let className = \"\";\r\n switch (column.align) {\r\n case \"center\":\r\n className = \"text-center\";\r\n break;\r\n case \"right\":\r\n className = \"text-right\";\r\n break;\r\n default:\r\n className = \"text-left\";\r\n break;\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n )}\r\n\r\n {useBasicTable && (\r\n ({\r\n key: c.key,\r\n text: c.heading,\r\n align: c.align,\r\n size: c.size,\r\n }))}\r\n rows={data.items.map((dataItem) => columns\r\n .map((column) => (\r\n {\r\n key: `${column.key}-${dataItem.id}`,\r\n value: column.propName != null\r\n ? dataItem[column.propName]\r\n : \"\",\r\n valueTemplate: column.valueTemplate != null\r\n ? () => {\r\n if (column.valueTemplate != null) {\r\n return column.valueTemplate(dataItem);\r\n }\r\n return

    ;\r\n }\r\n : undefined,\r\n fullSize: column.fullSize,\r\n }\r\n )))}\r\n />\r\n )}\r\n\r\n {/* No Results message */\r\n !loading && !useBasicTable && !!data.items && data.items.length === 0 ? (\r\n \r\n No results found\r\n \r\n ) : null\r\n }\r\n\r\n {/* Loading spinner */\r\n loading && !useBasicTable && (\r\n \r\n )\r\n }\r\n\r\n {/* Data is available (not loading) */\r\n loading || useBasicTable\r\n || generateTableRows()\r\n }\r\n\r\n pageChangeHandler(newPage)}\r\n actionOptions={headerAndFooterActionOptions}\r\n isAllSelected={isAllOnPageSelected}\r\n onSelectAll={(value) => onSelectAllOnPageHandler(\r\n value,\r\n data.items.map((c) => c.id),\r\n data.items\r\n )}\r\n pageSizes={pageSizes}\r\n selectedPageSize={data.limit}\r\n onPageSizeChange={(newPageSize) => pageSizeChangeHandler(newPageSize)}\r\n compact={compact}\r\n disableCheckBox={preventMultipleItemSelect}\r\n requiredCheckBoxFeature={requiredMutipleItemSelectFeature}\r\n />\r\n

    \r\n );\r\n};\r\n\r\nexport default Table;\r\nexport * from \"./Interfaces/TableConfig\";\r\nexport * from \"./Interfaces/FooterItem\";\r\nexport * from \"./Interfaces/TableConfig\";\r\nexport * from \"./Interfaces/TableData\";\r\n","import React from \"react\";\r\nimport {\r\n DropdownItem,\r\n // eslint-disable-next-line no-unused-vars\r\n DropdownItemProps,\r\n} from \"reactstrap\";\r\nimport Styles from \"./TableActionsItem.module.scss\";\r\nimport { useSystemFeatureCheck } from \"../../../Hooks/useSystemFeatureCheck\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures from \"../../../utils/enums/SystemFeatures\";\r\nimport { useShowNotAllowedError } from \"../../../Hooks/useNotAllowedError\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { TableItem } from \"../Table/Interfaces/TableItem\";\r\n\r\nexport interface TableActionsItemProps> extends Omit {\r\n shouldDisable?: () => boolean,\r\n shouldDisplay?: (item: TDataType) => boolean,\r\n availableWhenAllSelected?: boolean,\r\n availableWhenPageSelected?: boolean,\r\n hideInTableHeader?: boolean,\r\n onClick?: (items: Array, isAllSelected: boolean, itemObjects?: Array) => void\r\n children: React.ReactNode,\r\n feature?: SystemFeatures,\r\n}\r\nconst TableActionsItem = >({\r\n shouldDisable,\r\n shouldDisplay,\r\n availableWhenAllSelected,\r\n availableWhenPageSelected,\r\n hideInTableHeader,\r\n feature,\r\n onClick,\r\n ...o // eslint-disable-line react/jsx-props-no-spreading\r\n} : TableActionsItemProps) => {\r\n const featureCheck = useSystemFeatureCheck();\r\n const showNotAllowedError = useShowNotAllowedError();\r\n const allowed = feature == null || featureCheck(feature);\r\n const appearDisabled = !allowed;\r\n const disabled = shouldDisable != null && shouldDisable();\r\n\r\n return (\r\n {\r\n if (!allowed) {\r\n showNotAllowedError(feature);\r\n return;\r\n }\r\n onClick(e, false);\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default TableActionsItem;\r\n","import React from \"react\";\r\nimport {\r\n DropdownItem,\r\n // eslint-disable-next-line no-unused-vars\r\n DropdownItemProps,\r\n} from \"reactstrap\";\r\n\r\nimport { useSystemFeatureCheck } from \"../../../Hooks/useSystemFeatureCheck\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures from \"../../../utils/enums/SystemFeatures\";\r\nimport { useShowNotAllowedError } from \"../../../Hooks/useNotAllowedError\";\r\n\r\nimport Styles from \"./ActionsDropDownItem.module.scss\";\r\n\r\nexport interface ActionsDropDownItemProps extends Omit {\r\n onClick?: () => void\r\n children: React.ReactNode,\r\n feature?: SystemFeatures,\r\n disabled?: boolean,\r\n}\r\nconst ActionsDropDownItem = ({\r\n feature,\r\n onClick,\r\n disabled,\r\n ...o // eslint-disable-line react/jsx-props-no-spreading\r\n} : ActionsDropDownItemProps) => {\r\n const featureCheck = useSystemFeatureCheck();\r\n const showNotAllowedError = useShowNotAllowedError();\r\n const allowed = feature == null || featureCheck(feature);\r\n const appearDisabled = !allowed;\r\n\r\n return (\r\n {\r\n if (!allowed) {\r\n showNotAllowedError(feature);\r\n return;\r\n }\r\n onClick();\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ActionsDropDownItem;\r\n","import React from \"react\";\r\nimport Styles from \"./ImageText.module.scss\";\r\n\r\nconst ImageText = (\r\n {\r\n className = \"\",\r\n svg,\r\n text,\r\n }\r\n :\r\n {\r\n className?: string,\r\n svg: SvgrComponent,\r\n text: string,\r\n }\r\n) => {\r\n const SvgImage = svg;\r\n return (\r\n \r\n \r\n {text}\r\n
    \r\n );\r\n};\r\n\r\nexport default ImageText;\r\n","import React from \"react\";\r\nimport { ReactComponent as SvgClose } from \"../../images/close.svg\";\r\n\r\nimport ImageButton from \"../ImageButton/ImageButton\";\r\n\r\nconst ModalCloseButton = ({ onClick } : {onClick: () => void}) => (\r\n
    \r\n \r\n
    \r\n);\r\n\r\nexport default ModalCloseButton;\r\n","import React, { useRef } from \"react\";\r\nimport Styles from \"./ModalBackground.module.scss\";\r\n\r\nconst ModalBackground = ({\r\n children,\r\n transparent = false,\r\n onClick,\r\n}: {\r\n children: JSX.Element,\r\n transparent?: boolean,\r\n onClick?: (() => void),\r\n}) => {\r\n const background = useRef(null);\r\n\r\n const clickHandler = (\r\n event: React.MouseEvent | React.KeyboardEvent\r\n ) => {\r\n // make sure the target is the background\r\n if (event.target === background.current && onClick != null) {\r\n onClick();\r\n }\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n
    \r\n );\r\n};\r\n\r\nexport default ModalBackground;\r\n","import React from \"react\";\r\nimport Styles from \"./ModalContainer.module.scss\";\r\n\r\nconst ModalContainer = ({\r\n children,\r\n className = \"\",\r\n size,\r\n}\r\n:\r\n{\r\n children : React.ReactNode,\r\n className? : string,\r\n size?: \"small\" | \"medium\" | \"large\" | \"extra-large\" | \"full-width\",\r\n}) => {\r\n let sizeClass = \"\";\r\n switch (size) {\r\n case \"medium\":\r\n sizeClass = Styles.SizeMedium;\r\n break;\r\n case \"small\":\r\n sizeClass = Styles.SizeSmall;\r\n break;\r\n case \"large\":\r\n sizeClass = Styles.SizeLarge;\r\n break;\r\n case \"extra-large\":\r\n sizeClass = Styles.SizeExtraLarge;\r\n break;\r\n default:\r\n break;\r\n }\r\n return (\r\n
    \r\n {children}\r\n
    \r\n );\r\n};\r\n\r\nexport default ModalContainer;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Alert } from \"reactstrap\";\r\n\r\nimport Styles from \"./ValidationAlert.module.scss\";\r\n\r\nconst ValidationAlert = (\r\n {\r\n openValidationIn,\r\n isOpen,\r\n onToggle,\r\n }\r\n :\r\n {\r\n openValidationIn?: Element,\r\n isOpen: boolean,\r\n onToggle: () => void,\r\n }\r\n) => {\r\n const [errorList, setErrorList] = useState>([]);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n const invalidElements = document.querySelectorAll(\".invalid,:invalid,.is-invalid\");\r\n const errorMessages: Array = [];\r\n for (let i = 0; i < invalidElements.length; i += 1) {\r\n const parent = invalidElements[i].closest(\".form-group\");\r\n const errors = parent?.querySelectorAll(\".invalid-feedback\") ?? [];\r\n\r\n for (let j = 0; j < errors.length; j += 1) {\r\n const sibling = errors[j] as HTMLElement;\r\n // make sure the item is visible on the screen\r\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\r\n if (sibling.offsetParent != null) {\r\n errorMessages.push(sibling.innerText);\r\n }\r\n }\r\n }\r\n\r\n // get unique list of errors\r\n const uniqueList = errorMessages\r\n .filter((error, index) => errorMessages\r\n .findIndex((c) => c === error) === index);\r\n setErrorList(uniqueList);\r\n }\r\n }, [isOpen]);\r\n\r\n const alert = (\r\n \r\n

    This page contains missing information

    \r\n

    To continue please amend / complete the following

    \r\n
      \r\n {/* eslint-disable-next-line react/no-array-index-key */}\r\n {errorList.map((c, i) => (
    • {c}
    • ))}\r\n
    \r\n \r\n );\r\n\r\n if (openValidationIn != null) {\r\n return ReactDOM.createPortal(\r\n alert,\r\n openValidationIn\r\n );\r\n }\r\n return alert;\r\n};\r\n\r\nexport default ValidationAlert;\r\n","import React, {\r\n useRef,\r\n // eslint-disable-next-line no-unused-vars\r\n ForwardRefRenderFunction,\r\n useState,\r\n useImperativeHandle,\r\n forwardRef,\r\n Fragment,\r\n} from \"react\";\r\nimport { Form } from \"reactstrap\";\r\n\r\nimport ValidationAlert from \"./ValidationAlert/ValidationAlert\";\r\n\r\nexport interface FormRef {\r\n isValid: () => boolean,\r\n showValidation: () => void,\r\n}\r\n\r\nexport interface FormProps {\r\n children: React.ReactNode,\r\n className?: string,\r\n openValidationIn?: Element,\r\n}\r\n\r\nconst ISuppliForm: ForwardRefRenderFunction = (\r\n {\r\n children,\r\n className,\r\n openValidationIn,\r\n }\r\n : FormProps, ref\r\n) => {\r\n const form = useRef(null);\r\n const [showValidation, setShowValidation] = useState(false);\r\n const [showValidationAlert, setShowValidationAlert] = useState(false);\r\n\r\n useImperativeHandle(ref, () => ({\r\n isValid: () => {\r\n const isValid = form.current?.checkValidity() ?? true;\r\n if (isValid) {\r\n setShowValidation(false);\r\n setShowValidationAlert(false);\r\n }\r\n return isValid;\r\n },\r\n showValidation: async () => {\r\n setShowValidation(true);\r\n setShowValidationAlert(false);\r\n setTimeout(() => {\r\n setShowValidationAlert(true);\r\n }, 0);\r\n },\r\n }));\r\n\r\n return (\r\n \r\n {\r\n showValidation\r\n && (\r\n setShowValidationAlert(false)}\r\n />\r\n )\r\n }\r\n\r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default forwardRef(ISuppliForm);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { FormGroup, Label, Input } from \"reactstrap\";\r\n\r\nimport Styles from \"./DateTimeInput.module.scss\";\r\n\r\nconst DateTimeInput = (\r\n {\r\n className,\r\n value,\r\n onChange,\r\n label,\r\n min,\r\n required,\r\n validationMessage,\r\n }\r\n :\r\n {\r\n value?: Date,\r\n onChange: (newValue: Date) => void,\r\n className: string,\r\n label?: string,\r\n min?: Date,\r\n required?: boolean,\r\n validationMessage?: string,\r\n }\r\n) => {\r\n const inputId = `${label}-${Math.random().toString(36).substring(2)}`;\r\n const [localDateValue, setLocalDateValue] = useState(\"\");\r\n const [localTimeValue, setLocalTimeValue] = useState(\"\");\r\n const [focussed, setFocussed] = useState(false);\r\n\r\n const getDateString = (dateTimeValue: Date | undefined) => {\r\n if (dateTimeValue == null) {\r\n return \"\";\r\n }\r\n\r\n const monthNumber = Number.isNaN(dateTimeValue.getMonth())\r\n ? (new Date()).getMonth()\r\n : dateTimeValue.getMonth();\r\n\r\n const dayNumber = Number.isNaN(dateTimeValue.getDate())\r\n ? (new Date()).getDate()\r\n : dateTimeValue.getDate();\r\n\r\n const year = Number.isNaN(dateTimeValue.getFullYear())\r\n ? (new Date()).getFullYear()\r\n : dateTimeValue.getFullYear();\r\n\r\n const month = `0${monthNumber + 1}`.slice(-2);\r\n const day = `0${dayNumber}`.slice(-2);\r\n return `${year}-${month}-${day}`;\r\n };\r\n const getTimeString = (dateTimeValue: Date | undefined) => {\r\n if (dateTimeValue == null) {\r\n return \"\";\r\n }\r\n const hours = `0${dateTimeValue.getHours()}`.slice(-2);\r\n const minutes = `0${dateTimeValue.getMinutes()}`.slice(-2);\r\n return `${hours}:${minutes}`;\r\n };\r\n\r\n useEffect(() => {\r\n if (!focussed) {\r\n const dateValue = getDateString(value);\r\n const timeValue = getTimeString(value);\r\n setLocalDateValue(dateValue);\r\n setLocalTimeValue(timeValue);\r\n }\r\n }, [value, focussed, setLocalDateValue, setLocalTimeValue]);\r\n\r\n const onDateChangeHandler = (e: React.ChangeEvent) => {\r\n let newDateString = e.target.value;\r\n newDateString = newDateString.replaceAll(\"/\", \"-\");\r\n const newDateValue = new Date(newDateString);\r\n\r\n // only call onchange when the date is valid. This stops the value\r\n // for clearing while entering using the keyboard\r\n if (!Number.isNaN(newDateValue.getTime())) {\r\n let newDateTimeValue = new Date(newDateValue.setHours(value?.getHours() ?? 0));\r\n newDateTimeValue = new Date(newDateTimeValue.setMinutes(value?.getMinutes() ?? 0));\r\n\r\n onChange(newDateTimeValue);\r\n }\r\n\r\n setLocalDateValue(newDateString);\r\n };\r\n\r\n const onTimeChangeHandler = (e: React.ChangeEvent) => {\r\n const newTimeString = e.target.value;\r\n const hours = Number.parseInt(newTimeString.split(\":\")[0], 10);\r\n const minutes = Number.parseInt(newTimeString.split(\":\")[1], 10);\r\n\r\n // only call onchange when the date is valid. This stops the value\r\n // for clearing while entering using the keyboard\r\n if (!Number.isNaN(minutes) && !Number.isNaN(hours)) {\r\n let newDateTimeValue = value == null ? new Date() : new Date(getDateString(value));\r\n newDateTimeValue = new Date(newDateTimeValue.setHours(hours));\r\n newDateTimeValue = new Date(newDateTimeValue.setMinutes(minutes));\r\n onChange(newDateTimeValue);\r\n }\r\n\r\n setLocalTimeValue(newTimeString);\r\n };\r\n\r\n const minDateValue = min == null ? undefined : getDateString(min);\r\n\r\n let minTimeValue: string | undefined;\r\n // only validate time if current date is the min date\r\n if (minDateValue != null && value != null && minDateValue === localDateValue) {\r\n minTimeValue = min == null ? undefined : getTimeString(min);\r\n }\r\n\r\n return (\r\n \r\n \r\n { setFocussed(true); }}\r\n onBlur={() => {\r\n setFocussed(false);\r\n }}\r\n />\r\n { setFocussed(true); }}\r\n onBlur={() => {\r\n setFocussed(false);\r\n }}\r\n />\r\n {\r\n validationMessage && (\r\n
    \r\n {validationMessage}\r\n
    \r\n )\r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport default DateTimeInput;\r\n","import React, { useState } from \"react\";\r\nimport {\r\n Input, Label, FormGroup, Dropdown, DropdownToggle, DropdownMenu,\r\n} from \"reactstrap\";\r\nimport CheckboxInput from \"../../CheckboxInput/CheckboxInput\";\r\nimport Styles from \"./MultiSelectDropDownInput.module.scss\";\r\n\r\nconst MultiSelectDropDownInput = ({\r\n label,\r\n options,\r\n onChange,\r\n value,\r\n className,\r\n required,\r\n disabled,\r\n validationMessage,\r\n dropdownDirection,\r\n dropdownClassName,\r\n hideSelectedItemsList,\r\n}: {\r\n label?: string,\r\n options: Array<{ value: T, display: string }>,\r\n onChange: (value: T[]) => void,\r\n value: T[],\r\n className?: string,\r\n required?: boolean,\r\n disabled? : boolean,\r\n validationMessage?: string,\r\n dropdownDirection?: \"up\" | \"down\" | \"left\" | \"right\"\r\n dropdownClassName?: string\r\n hideSelectedItemsList?: boolean,\r\n}) => {\r\n const onChangeHandler = (itemValue: T, newValue: boolean) => {\r\n let listOfSelectedValues = [...value];\r\n\r\n if (newValue && !listOfSelectedValues.includes(itemValue)) {\r\n listOfSelectedValues.push(itemValue);\r\n }\r\n\r\n if (!newValue && listOfSelectedValues.includes(itemValue)) {\r\n listOfSelectedValues = listOfSelectedValues.filter((c) => c !== itemValue);\r\n }\r\n\r\n onChange(listOfSelectedValues);\r\n };\r\n\r\n const dropDownItems = options?.map((item) => {\r\n const isSelected = value.includes(item.value);\r\n\r\n return (\r\n onChangeHandler(item.value, newValue)}\r\n size=\"small\"\r\n className={`${Styles.CheckboxInput}`}\r\n />\r\n );\r\n });\r\n\r\n const [showOptions, setShowOptions] = useState(false);\r\n const numItemsSelected = value.length;\r\n\r\n const inputId = `${label}-${Math.random().toString(36).substring(2)}`;\r\n return (\r\n \r\n { label && }\r\n setShowOptions((newValue) => !newValue)}\r\n >\r\n \r\n {}}\r\n >\r\n \r\n \r\n \r\n {\r\n validationMessage && (\r\n
    \r\n {validationMessage}\r\n
    \r\n )\r\n }\r\n
    \r\n \r\n {dropDownItems}\r\n \r\n \r\n {\r\n !hideSelectedItemsList\r\n && (\r\n
    \r\n {\r\n value.map((item, index) => (\r\n \r\n {options.find((option) => option.value === item)?.display}\r\n {(index + 1) !== numItemsSelected ? \", \" : \"\"}\r\n \r\n ))\r\n }\r\n
    \r\n )\r\n }\r\n\r\n
    \r\n );\r\n};\r\n\r\nexport default MultiSelectDropDownInput;\r\n","import React, { useState, useRef } from \"react\";\r\n\r\nimport UtilButton from \"../UtilButton/UtilButton\";\r\nimport ModalCloseButton from \"../ModalCloseButton/ModalCloseButton\";\r\nimport ModalBackground from \"../../Containers/ModalBackground/ModalBackground\";\r\nimport ModalContainer from \"../../Containers/ModalContainer/ModalContainer\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport Form, { FormRef } from \"../Forms/Form/Form\";\r\nimport Styles from \"./ConfirmationModal.module.scss\";\r\n\r\nimport Line from \"../Line/Line\";\r\nimport DateTimeInput from \"../Forms/DateTimeInput/DateTimeInput\";\r\nimport MultiSelectDropDownInput from \"../Forms/MultiSelectDropDownInput/MultiSelectDropDownInput\";\r\n\r\nimport { ReactComponent as ErrorSvg } from \"../../images/error.svg\";\r\nimport { ReactComponent as LaptopSvg } from \"../../images/laptop.svg\";\r\n\r\nexport interface staticOption {\r\n value: number,\r\n display: string,\r\n [key: string]: any,\r\n}\r\n\r\nconst ConfirmationModal = ({\r\n heading,\r\n subHeading,\r\n description,\r\n proceedButtonText,\r\n image,\r\n hasCancel = true,\r\n captureType,\r\n capturePlaceholder,\r\n min,\r\n validationMessage,\r\n onToggleModal,\r\n onProceedClick,\r\n size = \"medium\",\r\n multiDropdownOptions,\r\n}\r\n:\r\n{\r\n heading: string,\r\n subHeading?: string,\r\n description: string,\r\n proceedButtonText: string,\r\n image?: \"error\" | \"laptop\",\r\n hasCancel?: boolean,\r\n captureType?: \"none\" | \"text\" | \"datetime\" | \"multiselectdropdown\"\r\n capturePlaceholder?: string,\r\n min?: Date,\r\n validationMessage?: string,\r\n onToggleModal: () => void,\r\n onProceedClick: (capturedData?: string | Date | number[]) => void,\r\n size?: \"small\" | \"medium\" | \"large\" | \"extra-large\",\r\n multiDropdownOptions?: staticOption[]\r\n}) => {\r\n const [text, setText] = useState(\"\");\r\n const [date, setDate] = useState();\r\n const [multiDropdownValues, setMultiDropdownValues] = useState([]);\r\n\r\n const formRef = useRef(null);\r\n\r\n let captureContent = null;\r\n switch (captureType) {\r\n case \"text\":\r\n captureContent = (\r\n
    \r\n
    \r\n setText(ev.target.value)}\r\n placeholder={capturePlaceholder}\r\n />\r\n
    \r\n
    \r\n );\r\n break;\r\n case \"datetime\":\r\n captureContent = (\r\n
    \r\n setDate(v)}\r\n key=\"dateTime\"\r\n min={min}\r\n required\r\n validationMessage={validationMessage}\r\n />\r\n \r\n );\r\n break;\r\n case \"multiselectdropdown\":\r\n captureContent = (\r\n
    \r\n \r\n
    \r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n let imageElement = null;\r\n switch (image) {\r\n case \"error\":\r\n imageElement = ;\r\n break;\r\n case \"laptop\":\r\n imageElement = ;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n \r\n \r\n
    \r\n {hasCancel\r\n && (\r\n \r\n )}\r\n
    \r\n\r\n {imageElement != null ? (\r\n
    \r\n
    \r\n { imageElement }\r\n
    \r\n
    \r\n ) : null}\r\n\r\n
    \r\n
    \r\n
    \r\n

    {heading}

    \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n subHeading\r\n && (\r\n
    \r\n
    \r\n

    {subHeading}

    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n

    {description}

    \r\n
    \r\n
    \r\n
    \r\n {\r\n captureContent\r\n }\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {hasCancel && (\r\n \r\n Cancel\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n {\r\n // check validation\r\n if (captureType != null && formRef != null) {\r\n if (!(formRef.current?.isValid() ?? true)) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n }\r\n\r\n // get captureValue\r\n let captureValue: string | Date | number[] | undefined;\r\n\r\n switch (captureType) {\r\n case \"text\":\r\n captureValue = text;\r\n break;\r\n case \"datetime\":\r\n captureValue = date;\r\n break;\r\n case \"multiselectdropdown\":\r\n captureValue = multiDropdownValues;\r\n break;\r\n default:\r\n break;\r\n }\r\n // call proceed\r\n if (captureValue != null) {\r\n onProceedClick(captureValue);\r\n } else {\r\n onProceedClick();\r\n }\r\n\r\n // close modal\r\n onToggleModal();\r\n }}\r\n >\r\n {proceedButtonText}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ConfirmationModal;\r\n","import React, { Fragment } from \"react\";\r\nimport UtilButton from \"../UtilButton/UtilButton\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { PageButton } from \"./Interfaces/PageButton\";\r\nimport Line from \"../Line/Line\";\r\nimport Styles from \"./PageButtons.module.scss\";\r\n\r\nconst PageButtons = (\r\n {\r\n buttons,\r\n hasBack = true,\r\n onBackClick,\r\n className = \"\",\r\n }\r\n :\r\n {\r\n buttons: Array,\r\n hasBack?: boolean,\r\n onBackClick?: () => void,\r\n className? : string,\r\n }\r\n) => {\r\n const backButton = (\r\n { if (onBackClick != null) { onBackClick(); } }}\r\n location=\"bottom\"\r\n outline\r\n >\r\n Back\r\n \r\n );\r\n\r\n const utilButtons = buttons.map((button, index) => {\r\n const classes: string[] = [];\r\n classes.push(index === 0 ? \"ml-xl-auto\" : \"ml-xl-3\");\r\n classes.push(index === buttons.length - 1 ? Styles.NextButton : \"mb-3 mb-xl-0\");\r\n\r\n return (\r\n \r\n \r\n {button.text}\r\n {button.mobileText ?? button.text}\r\n \r\n \r\n );\r\n });\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n hasBack\r\n && (
    {backButton}
    )\r\n }\r\n {/* All but the last button */}\r\n {utilButtons.filter((_, i) => i < utilButtons.length - 1)}\r\n\r\n \r\n
    \r\n {\r\n hasBack\r\n && (
    {backButton}
    )\r\n }\r\n {/* Last button */}\r\n {utilButtons.filter((_, i) => i === utilButtons.length - 1)}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n};\r\n\r\nexport default PageButtons;\r\nexport * from \"./Interfaces/PageButton\";\r\n","import React from \"react\";\r\nimport Styles from \"./ProgressButton.module.scss\";\r\nimport { ReactComponent as SvgProgressCircle } from \"./progress-circle-threequarter.svg\";\r\n\r\nfunction ProgressButton(\r\n {\r\n stepName,\r\n stepIndex,\r\n totalSteps,\r\n active,\r\n inProgress,\r\n onClick,\r\n disabled,\r\n }\r\n :\r\n {\r\n stepName: string,\r\n stepIndex: number,\r\n totalSteps: number,\r\n active: boolean,\r\n inProgress: boolean,\r\n onClick: () => void,\r\n disabled: boolean,\r\n }\r\n) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default ProgressButton;\r\n","import React from \"react\";\r\n\r\nimport { Progress } from \"reactstrap\";\r\nimport ProgressButton from \"../ProgressButton/ProgressButton\";\r\nimport Styles from \"./ProgressIndicator.module.scss\";\r\n\r\nconst ProgressIndicator = (\r\n {\r\n steps,\r\n currentStep,\r\n stepsCompleted,\r\n onClick,\r\n }\r\n :\r\n {\r\n steps: Array,\r\n currentStep: number,\r\n stepsCompleted: number,\r\n onClick: (step: number) => void,\r\n }\r\n) => {\r\n const indicators = steps.map((stepName, i) => (\r\n onClick(i)}\r\n />\r\n ));\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {steps.map((_, i) => (\r\n = i ? 1 : 0}\r\n max={1}\r\n className={`${Styles.ProgressBar}`}\r\n animated={false}\r\n />\r\n ))}\r\n\r\n \r\n
    \r\n {indicators}\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n onClick(currentStep)}\r\n />\r\n
    \r\n

    \r\n {steps[currentStep]}\r\n

    \r\n {(currentStep < steps.length - 1) && (\r\n

    \r\n {`NEXT: ${steps[currentStep + 1]}`}\r\n

    \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ProgressIndicator;\r\n","import React, { useState, Fragment } from \"react\";\r\nimport {\r\n Dropdown,\r\n DropdownToggle,\r\n DropdownMenu,\r\n Input,\r\n DropdownItem,\r\n} from \"reactstrap\";\r\nimport DropDownButton from \"../DropDownButton/DropDownButton\";\r\n\r\nimport Styles from \"./ActionsDropdown.module.scss\";\r\n\r\nconst ActionsDropdown = ({\r\n disabled = false,\r\n className = \"\",\r\n buttonClassName = \"\",\r\n label,\r\n iconSvg,\r\n styleVal,\r\n badge,\r\n children,\r\n scrollingMenu,\r\n searchQuery,\r\n onSearchQueryChange,\r\n}: {\r\n disabled?: boolean,\r\n className?: string,\r\n buttonClassName?: string,\r\n label: string,\r\n iconSvg?: SvgrComponent,\r\n styleVal?: \"dark\" | \"light\" | \"default\",\r\n badge?: string,\r\n children: React.ReactNode\r\n scrollingMenu?: boolean,\r\n searchQuery?: string,\r\n onSearchQueryChange? : (searchQuery: string) => void\r\n}) => {\r\n const [showOptions, setShowOptions] = useState(false);\r\n\r\n return (\r\n setShowOptions((value) => !value)}\r\n className={`${Styles.ActionsDropdown} ${className}`}\r\n >\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {onSearchQueryChange\r\n && (\r\n \r\n {\r\n onSearchQueryChange(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n )}\r\n\r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ActionsDropdown;\r\n","import React, { useState } from \"react\";\r\nimport Styles from \"./MultiSelectDropdown.module.scss\";\r\nimport ActionsDropdown from \"../ActionsDropdown/ActionsDropdown\";\r\nimport CheckboxInput from \"../CheckboxInput/CheckboxInput\";\r\n\r\ntype ItemInfo = {\r\n display: string,\r\n value: number | string,\r\n}\r\n\r\nconst MultiSelectDropDown = ({\r\n label,\r\n items,\r\n values,\r\n onChange,\r\n maxSelectedItems,\r\n className,\r\n buttonClassName,\r\n disabled,\r\n scrollingMenu,\r\n canSearch,\r\n}: {\r\n label: string,\r\n items: ItemInfo[],\r\n values: Array,\r\n onChange: (listOfSelectedValues: Array) => void,\r\n maxSelectedItems?: number,\r\n className: string,\r\n buttonClassName?: string,\r\n disabled?: boolean,\r\n scrollingMenu?: boolean,\r\n canSearch?: boolean,\r\n }) => {\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n\r\n const onChangeHandler = (itemValue: number | string, newValue: boolean) => {\r\n let listOfSelectedValues = [...values];\r\n\r\n if (newValue && !listOfSelectedValues.includes(itemValue)) {\r\n listOfSelectedValues.push(itemValue);\r\n\r\n if (\r\n maxSelectedItems != null && maxSelectedItems > 0\r\n && listOfSelectedValues.length > maxSelectedItems\r\n ) {\r\n listOfSelectedValues.shift();\r\n }\r\n }\r\n\r\n if (!newValue && listOfSelectedValues.includes(itemValue)) {\r\n listOfSelectedValues = listOfSelectedValues.filter((c) => c !== itemValue);\r\n }\r\n\r\n onChange(listOfSelectedValues);\r\n };\r\n\r\n let badgeValue;\r\n if (values.length > 0) {\r\n if (maxSelectedItems === 1) {\r\n badgeValue = \"Selected\";\r\n } else {\r\n badgeValue = values.length.toString();\r\n }\r\n }\r\n\r\n let listItems = items ?? [];\r\n if (canSearch && searchQuery) {\r\n listItems = listItems.filter((item) => item.display.toLowerCase().includes(searchQuery));\r\n }\r\n\r\n return (\r\n setSearchQuery(newSearchQuery)\r\n : undefined\r\n }\r\n >\r\n {listItems.map((item) => {\r\n const isSelected = values.includes(item.value);\r\n return (\r\n onChangeHandler(item.value, newValue)}\r\n size=\"small\"\r\n className={`${Styles.CheckboxInput}`}\r\n />\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default MultiSelectDropDown;\r\n","import React from \"react\";\r\nimport { InputGroupAddon, InputGroupText } from \"reactstrap\";\r\n\r\nimport Styles from \"./InputGroupImageAddon.module.scss\";\r\n\r\nimport { ReactComponent as SvgBuilding } from \"./input-icon-building.svg\";\r\nimport { ReactComponent as SvgPhone } from \"./input-icon-phone.svg\";\r\nimport { ReactComponent as SvgEnvelope } from \"./input-icon-envelope.svg\";\r\nimport { ReactComponent as SvgPerson } from \"./input-icon-person.svg\";\r\nimport { ReactComponent as SvgCalendar } from \"./input-icon-calendar.svg\";\r\n\r\nconst InputGroupImageAddon = (\r\n {\r\n icon,\r\n addonType,\r\n }\r\n :\r\n {\r\n icon: \"building\" | \"envelope\" | \"phone\" | \"person\" | \"calendar\",\r\n addonType: \"prepend\" | \"append\"\r\n }\r\n) => {\r\n let image = null;\r\n switch (icon) {\r\n case \"building\":\r\n image = ;\r\n break;\r\n case \"envelope\":\r\n image = ;\r\n break;\r\n case \"phone\":\r\n image = ;\r\n break;\r\n case \"person\":\r\n image = ;\r\n break;\r\n case \"calendar\":\r\n image = ;\r\n break;\r\n default:\r\n break;\r\n }\r\n return image == null ? null : (\r\n \r\n {image}\r\n \r\n );\r\n};\r\n\r\nexport default InputGroupImageAddon;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n FormGroup, Label, Input, InputGroup,\r\n} from \"reactstrap\";\r\nimport InputGroupImageAddon from \"../InputGroupImageAddon/InputGroupImageAddon\";\r\n\r\nconst DateInput = (\r\n {\r\n className = \"\",\r\n value,\r\n onChange,\r\n label,\r\n min,\r\n required,\r\n validationMessage,\r\n }\r\n :\r\n {\r\n value?: Date,\r\n onChange: (newValue: Date) => void,\r\n className?: string,\r\n label?: string,\r\n min?: Date,\r\n required?: boolean,\r\n validationMessage?: string,\r\n }\r\n) => {\r\n const [localValue, setLocalValue] = useState(\"\");\r\n const [focussed, setFocussed] = useState(false);\r\n\r\n const inputId = `${label}-${Math.random().toString(36).substring(2)}`;\r\n\r\n const getDateString = (dateTimeValue: Date | undefined) => {\r\n if (dateTimeValue == null) {\r\n return \"\";\r\n }\r\n\r\n const monthNumber = Number.isNaN(dateTimeValue.getMonth())\r\n ? (new Date()).getMonth()\r\n : dateTimeValue.getMonth();\r\n\r\n const dayNumber = Number.isNaN(dateTimeValue.getDate())\r\n ? (new Date()).getDate()\r\n : dateTimeValue.getDate();\r\n\r\n const year = Number.isNaN(dateTimeValue.getFullYear())\r\n ? (new Date()).getFullYear()\r\n : dateTimeValue.getFullYear();\r\n\r\n const month = `0${monthNumber + 1}`.slice(-2);\r\n const day = `0${dayNumber}`.slice(-2);\r\n return `${year}-${month}-${day}`;\r\n };\r\n\r\n useEffect(() => {\r\n if (!focussed) {\r\n setLocalValue(getDateString(value));\r\n }\r\n }, [value, focussed, setLocalValue]);\r\n\r\n const onDateChangeHandler = (e: React.ChangeEvent) => {\r\n let newDateString = e.target.value;\r\n newDateString = newDateString.replaceAll(\"/\", \"-\");\r\n const newDateValue = new Date(newDateString);\r\n\r\n if (Number.isNaN(newDateValue.getTime())) {\r\n // invalid date. Don't call parent onchange\r\n } else {\r\n // valid date\r\n onChange(newDateValue);\r\n }\r\n\r\n setLocalValue(newDateString);\r\n };\r\n\r\n const minDateValue = min == null ? undefined : getDateString(min);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n { setFocussed(true); }}\r\n onBlur={() => {\r\n setFocussed(false);\r\n }}\r\n />\r\n \r\n {\r\n validationMessage && (\r\n
    \r\n {validationMessage}\r\n
    \r\n )\r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport default DateInput;\r\n","import React from \"react\";\r\n\r\nimport ActionsDropdown from \"../ActionsDropDown/ActionsDropdown\";\r\nimport DateInput from \"../Forms/DateInput/DateInput\";\r\n\r\nimport Styles from \"./DateRangeDropDown.module.scss\";\r\n\r\nfunction DateRangeInput({\r\n label, onChange, className, values,\r\n buttonClassName,\r\n} : {\r\n label: string,\r\n onChange: (dates: Date[]) => void,\r\n className?: string,\r\n buttonClassName?: string,\r\n values: Date[],\r\n}) {\r\n const onChangeHandler = (index: number, newValue: Date) => {\r\n const dates = [...values];\r\n const [fromDate, toDate] = [...dates];\r\n dates[index] = newValue;\r\n\r\n // Check date restrictions\r\n if (fromDate > toDate) {\r\n dates[1] = fromDate;\r\n }\r\n\r\n onChange(dates);\r\n };\r\n\r\n const badgeValue = values?.some((dateValue) => dateValue !== null)\r\n ? \"Selected\"\r\n : undefined;\r\n\r\n return (\r\n \r\n onChangeHandler(0, newValue)}\r\n />\r\n\r\n onChangeHandler(1, newValue)}\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default DateRangeInput;\r\n","import React from \"react\";\r\nimport Styles from \"./SearchFilters.module.scss\";\r\nimport MultiSelectDropDown from \"../../MultiSelectDropDown/MultiSelectDropDown\";\r\nimport DateRangeDropDown from \"../../DateRangeDropDown/DateRangeDropDown\";\r\nimport FilterTypes from \"../../../utils/enums/FilterTypes\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n FilterInfo,\r\n} from \"../Interfaces/FilterInfo\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { FilterValue } from \"../SearchFiltersContainer/SearchFiltersContainer\";\r\n\r\nconst SearchFilters = ({\r\n filters = [],\r\n filterValues = [],\r\n onChangeCallback,\r\n}: {\r\n filters?: FilterInfo[],\r\n filterValues?: FilterValue[],\r\n onChangeCallback: (newValues: FilterValue[]) => void\r\n}) => {\r\n const onChangeHandler = (index: number, newValue: FilterValue) => {\r\n const newValues = [...filterValues];\r\n newValues[index] = newValue;\r\n onChangeCallback(newValues);\r\n };\r\n\r\n const data = filters.map((filter, index) => {\r\n switch (filter.filterType) {\r\n case FilterTypes.DateRangeInput:\r\n return (\r\n onChangeHandler(index, newValue)}\r\n />\r\n );\r\n case FilterTypes.MultiSelectDropDown:\r\n return (\r\n onChangeHandler(index, newValue)}\r\n maxSelectedItems={filter.maxSelectedItems}\r\n disabled={filter.disabled}\r\n scrollingMenu\r\n canSearch={filter.canSearch}\r\n />\r\n );\r\n default:\r\n return null;\r\n }\r\n });\r\n\r\n return
    {data}
    ;\r\n};\r\n\r\nexport default SearchFilters;\r\n","import React, { Fragment } from \"react\";\r\nimport {\r\n FormGroup,\r\n InputGroup,\r\n Label,\r\n Input,\r\n} from \"reactstrap\";\r\nimport InputGroupImageAddon from \"../InputGroupImageAddon/InputGroupImageAddon\";\r\n\r\nexport type InputType =\r\n | \"text\"\r\n | \"email\"\r\n | \"select\"\r\n | \"file\"\r\n | \"radio\"\r\n | \"checkbox\"\r\n | \"textarea\"\r\n | \"button\"\r\n | \"reset\"\r\n | \"submit\"\r\n | \"date\"\r\n | \"datetime-local\"\r\n | \"hidden\"\r\n | \"image\"\r\n | \"month\"\r\n | \"number\"\r\n | \"range\"\r\n | \"search\"\r\n | \"tel\"\r\n | \"url\"\r\n | \"week\"\r\n | \"password\"\r\n | \"datetime\"\r\n | \"time\"\r\n | \"color\";\r\n\r\nconst TextInput = ({\r\n label,\r\n icon,\r\n readOnly,\r\n type,\r\n placeholder,\r\n value,\r\n onChange,\r\n required,\r\n className = \"\",\r\n validationMessage,\r\n formatValue,\r\n min,\r\n max,\r\n maxLength,\r\n minLength,\r\n disabled = false,\r\n invalid,\r\n}\r\n:\r\n{\r\n label: string,\r\n icon?: \"building\" | \"envelope\" | \"phone\" | \"person\",\r\n readOnly?: boolean,\r\n type?: InputType,\r\n placeholder?: string,\r\n value: string,\r\n onChange: (newValue: string) => void,\r\n required?: boolean,\r\n className? : string,\r\n validationMessage?: string,\r\n formatValue?: (value: string) => string,\r\n min?: number,\r\n max?: number,\r\n maxLength?: number,\r\n minLength?: number,\r\n disabled?: boolean,\r\n invalid?: boolean,\r\n}) => {\r\n const inputId = `${label}-${Math.random().toString(36).substring(2)}`;\r\n const input = (\r\n \r\n {\r\n if (formatValue != null) {\r\n const newValue = formatValue(e.target.value);\r\n onChange(newValue);\r\n return;\r\n }\r\n onChange(e.target.value);\r\n }}\r\n required={required}\r\n />\r\n {validationMessage\r\n && (\r\n
    \r\n {validationMessage}\r\n
    \r\n )}\r\n
    \r\n );\r\n\r\n return (\r\n \r\n \r\n {icon != null ? (\r\n \r\n {icon && }\r\n {input}\r\n \r\n )\r\n : input}\r\n\r\n \r\n );\r\n};\r\n\r\nexport default TextInput;\r\n","import React, { useState } from \"react\";\r\n\r\nimport DropDownButton from \"../../DropDownButton/DropDownButton\";\r\nimport TextInput from \"../../Forms/TextInput/TextInput\";\r\nimport DateInput from \"../../Forms/DateInput/DateInput\";\r\n\r\nimport DropDownInput from \"../../Forms/DropDownInput/DropDownInput\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { AdvancedFilterInfo } from \"../Interfaces/AdvancedFilterInfo\";\r\nimport AdvancedFilterTypes from \"../../../utils/enums/AdvancedFilterTypes\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { FilterValue } from \"../SearchFiltersContainer/SearchFiltersContainer\";\r\nimport Styles from \"./AdvancedFilters.module.scss\";\r\nimport MultiSelectDropDownInput from \"../../Forms/MultiSelectDropDownInput/MultiSelectDropDownInput\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures from \"../../../utils/enums/SystemFeatures\";\r\nimport { useShowNotAllowedError } from \"../../../Hooks/useNotAllowedError\";\r\nimport { useSystemFeatureCheck } from \"../../../Hooks/useSystemFeatureCheck\";\r\n\r\nconst AdvancedSearch = (\r\n {\r\n filters = [],\r\n filterValues = [],\r\n onChangeCallback,\r\n className = \"\",\r\n advancedFiltersSystemFeature,\r\n }\r\n:\r\n {\r\n filters?: AdvancedFilterInfo[],\r\n filterValues?: FilterValue[],\r\n onChangeCallback: (newValues : FilterValue[]) => void,\r\n className?: string,\r\n advancedFiltersSystemFeature?: SystemFeatures\r\n }\r\n) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const showNotAllowedError = useShowNotAllowedError();\r\n const featureCheck = useSystemFeatureCheck();\r\n\r\n const onShowAdvanceSearchToggleHandler = () => {\r\n if (advancedFiltersSystemFeature != null) {\r\n if (featureCheck(advancedFiltersSystemFeature)) {\r\n setIsOpen((currentValue) => !currentValue);\r\n } else {\r\n showNotAllowedError(advancedFiltersSystemFeature);\r\n }\r\n }\r\n };\r\n\r\n const onValueChangeCallback = (value: FilterValue, index: number) => {\r\n const newValues = [...filterValues];\r\n newValues[index] = value;\r\n onChangeCallback(newValues);\r\n };\r\n\r\n const buttonClasses = [\"w-auto\", Styles.AdvancedSearchButton];\r\n if (isOpen) {\r\n buttonClasses.push(Styles.Open);\r\n } else {\r\n buttonClasses.push(Styles.Closed);\r\n }\r\n\r\n const containerDivClasses = [Styles.AdvancedSearchInternalContainer];\r\n if (isOpen) {\r\n containerDivClasses.push(Styles.Open);\r\n } else {\r\n containerDivClasses.push(Styles.Closed);\r\n }\r\n\r\n const advanceFiltersWithValues = filterValues.filter((value) => value).length;\r\n const advanceFilterBadge = advanceFiltersWithValues > 0 ? `${advanceFiltersWithValues} filters` : undefined;\r\n\r\n const onChangeHandler = (index: number, newValue: FilterValue) => {\r\n const newValues = [...filterValues];\r\n newValues[index] = newValue;\r\n onChangeCallback(newValues);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n onShowAdvanceSearchToggleHandler()}\r\n up={isOpen}\r\n badge={isOpen ? undefined : advanceFilterBadge}\r\n badgePlacement=\"outside\"\r\n styleVal={advancedFiltersSystemFeature != null && !featureCheck(advancedFiltersSystemFeature) ? \"dark\" : \"default\"}\r\n />\r\n\r\n {isOpen ? (\r\n
    \r\n {filters.map((filter, index) => {\r\n switch (filter.filterType) {\r\n case AdvancedFilterTypes.Text:\r\n return (\r\n onValueChangeCallback(value, index)}\r\n />\r\n );\r\n case AdvancedFilterTypes.DropDown:\r\n return (\r\n onValueChangeCallback(value, index)}\r\n />\r\n );\r\n case AdvancedFilterTypes.Date:\r\n return (\r\n onValueChangeCallback(value, index)}\r\n />\r\n );\r\n case AdvancedFilterTypes.MultiSelectDropdown:\r\n return (\r\n onChangeHandler(index, newValue)}\r\n disabled={filter.disabled}\r\n />\r\n );\r\n default:\r\n return null;\r\n }\r\n })}\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AdvancedSearch;\r\n","import React, { useState } from \"react\";\r\nimport Styles from \"./SearchFiltersContainer.module.scss\";\r\nimport { ReactComponent as SvgSortSizeDown } from \"./sort-size-down.svg\";\r\nimport UtilButton from \"../../UtilButton/UtilButton\";\r\nimport SearchFilters from \"../SearchFilters/SearchFilters\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n FilterInfo,\r\n} from \"../Interfaces/FilterInfo\";\r\n\r\nimport AdvancedFilters from \"../AdvancedFilters/AdvancedFilters\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { AdvancedFilterInfo } from \"../Interfaces/AdvancedFilterInfo\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ButtonInfo } from \"../../../utils/interfaces/ButtonInfo\";\r\nimport DropDownButton from \"../../DropDownButton/DropDownButton\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"../../..\";\r\n\r\nexport type FilterValue = number | number[] | string | string[] | Date | Date[] | undefined;\r\n\r\nconst SearchFiltersContainer = ({\r\n filters = [],\r\n advancedFilters = [],\r\n buttons = [],\r\n filterValues,\r\n className,\r\n advancedFiltersSystemFeature,\r\n onChange,\r\n}: {\r\n filters?: FilterInfo[],\r\n advancedFilters?: AdvancedFilterInfo[],\r\n buttons?: ButtonInfo[],\r\n filterValues: FilterValue[],\r\n className?: string,\r\n advancedFiltersSystemFeature?: SystemFeatures\r\n onChange: (filterValues: FilterValue[]) => void\r\n }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const filterValuesToUse = (filterValues.length === 0)\r\n ? filters.map(() => [])\r\n : filterValues.slice(0, filters.length);\r\n\r\n const advancedFilterValues = filterValues == null\r\n ? []\r\n : filterValues.slice(filters.length);\r\n\r\n const onFilterChangeHandler = (newFilterValues: number[][]) => {\r\n onChange([...newFilterValues, ...advancedFilterValues]);\r\n };\r\n\r\n const onAdvancedFiltersChangeHandler = (newValues: FilterValue[]) => {\r\n onChange([...filterValuesToUse, ...newValues]);\r\n };\r\n\r\n const buttonComponents = buttons.map((button: ButtonInfo) => (\r\n
    \r\n \r\n {button.label}\r\n \r\n
    \r\n ));\r\n\r\n // filterValues is an array of arrays\r\n // count the number of filter values where any items in the array\r\n // has a value i.e. is truthy\r\n let totalFilterSelected = 0;\r\n filterValues.forEach((filter) => {\r\n if (filter == null) {\r\n return;\r\n }\r\n if (typeof filter === \"string\") {\r\n totalFilterSelected += (filter ? 1 : 0);\r\n return;\r\n }\r\n\r\n if (typeof filter === \"number\") {\r\n totalFilterSelected += filter > 0 ? 1 : 0;\r\n }\r\n\r\n if ((filter as number[]).length > 0) {\r\n totalFilterSelected += (filter as number[]).length;\r\n }\r\n });\r\n\r\n const mobileSearchHeadingBadgeValue = totalFilterSelected > 0 ? `${totalFilterSelected} filters` : undefined;\r\n\r\n return (\r\n
    \r\n

    \r\n \r\n Search by:\r\n

    \r\n setIsOpen((v) => !v)}\r\n up={isOpen}\r\n badge={isOpen ? undefined : mobileSearchHeadingBadgeValue}\r\n />\r\n \r\n onFilterChangeHandler(newValues)}\r\n />\r\n
    \r\n\r\n {advancedFilters != null\r\n && advancedFilters.length > 0\r\n ? (\r\n onAdvancedFiltersChangeHandler(newValues)}\r\n advancedFiltersSystemFeature={advancedFiltersSystemFeature}\r\n />\r\n )\r\n : null}\r\n
    \r\n
    \r\n {buttonComponents}\r\n
    \r\n
    \r\n\r\n
    \r\n );\r\n};\r\n\r\nexport default SearchFiltersContainer;\r\nexport * from \"../Interfaces/FilterInfo\";\r\nexport * from \"../Interfaces/FilterOption\";\r\n","// eslint-disable-next-line no-unused-vars\r\nimport React, { FormEvent, ChangeEvent } from \"react\";\r\nimport Styles from \"./SearchInput.module.scss\";\r\nimport { ReactComponent as SvgMagnifyingGlass } from \"../../../images/magnifying-glass.svg\";\r\nimport UtilButton from \"../../UtilButton/UtilButton\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ButtonInfo } from \"../../../utils/interfaces/ButtonInfo\";\r\n\r\nconst SearchInput = ({\r\n searchTerm,\r\n onSearch,\r\n onChange,\r\n searchPlaceholder,\r\n buttons = [],\r\n className,\r\n}: {\r\n searchTerm: string,\r\n onSearch?: () => void,\r\n onChange?: (value: string) => void,\r\n searchPlaceholder: string,\r\n buttons?: ButtonInfo[],\r\n className?: string,\r\n }) => {\r\n const onInputChange = (ev: ChangeEvent) => {\r\n const { value } = ev.target;\r\n if (onChange != null) {\r\n onChange(value);\r\n }\r\n };\r\n\r\n const onSubmit = (ev: FormEvent) => {\r\n ev.preventDefault();\r\n if (onSearch != null) {\r\n onSearch();\r\n }\r\n };\r\n\r\n const buttonComponents = buttons.map((button: ButtonInfo) => (\r\n \r\n {button.label}\r\n \r\n ));\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {buttonComponents}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SearchInput;\r\n","import React, { Fragment } from \"react\";\r\nimport { useLocation, Link } from \"react-router-dom\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { MenuItem } from \"../../utils/interfaces/MenuItem\";\r\nimport Styles from \"./BreadCrumbs.module.scss\";\r\n\r\ninterface BreadCrumbItem {\r\n key: string,\r\n title: string,\r\n to?: string\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n additional,\r\n menuItems,\r\n}: {\r\n additional?: string,\r\n menuItems: Array\r\n}) => {\r\n const getBreadCrumbs = () => {\r\n const location = useLocation();\r\n const [, firstItem, child] = location.pathname.toLowerCase().split(\"/\");\r\n const breadCrumbItems: BreadCrumbItem[] = [];\r\n // eslint-disable-next-line react/prop-types\r\n const menuItem = menuItems.find((i) => i.to.toLowerCase() === `/${firstItem}`);\r\n\r\n if (menuItem != null) {\r\n breadCrumbItems.push(\r\n {\r\n ...menuItem,\r\n key: \"current\",\r\n to: undefined,\r\n }\r\n );\r\n\r\n if (menuItem.children != null) {\r\n const childItem: BreadCrumbItem = { key: \"\", ...menuItem.children.find((c) => c.to.toLowerCase() === child) } as BreadCrumbItem;\r\n if (childItem != null) {\r\n childItem.to = `${menuItem.to}/${childItem.to}`;\r\n childItem.key = childItem.to;\r\n breadCrumbItems.push(childItem);\r\n }\r\n }\r\n\r\n if (additional != null) {\r\n const additionalItem: BreadCrumbItem = { key: \"additional\", title: additional, to: undefined };\r\n breadCrumbItems.push(additionalItem);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {breadCrumbItems.map((routeItem, i) => (\r\n \r\n {i !== 0 ? \" > \" : \"\"}\r\n {routeItem.to == null || (i === (breadCrumbItems.length - 1))\r\n ? {routeItem.title}\r\n : {routeItem.title}}\r\n \r\n ))}\r\n
    \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {getBreadCrumbs()}\r\n
    \r\n );\r\n};\r\nexport default BreadCrumbs;\r\n","import React from \"react\";\r\nimport { Alert } from \"reactstrap\";\r\nimport BreadCrumbs from \"../../Components/BreadCrumbs/BreadCrumbs\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { MenuItem } from \"../..\";\r\nimport Styles from \"./PageHeading.module.scss\";\r\n\r\nconst PageHeader = (\r\n {\r\n heading,\r\n subHeading,\r\n alertText,\r\n noBottomMargin,\r\n breadcrumbAdditionalItem,\r\n menuItems,\r\n }\r\n :\r\n {\r\n heading: string,\r\n subHeading?: string,\r\n alertText?: string | string[],\r\n noBottomMargin?: any,\r\n breadcrumbAdditionalItem?: string,\r\n menuItems: Array\r\n }\r\n) => {\r\n let alert;\r\n if (typeof alertText === \"string\") {\r\n alert = alertText;\r\n } else { // array\r\n alert = alertText?.map((line, index) => (\r\n
    \r\n {index > 0 &&
    }\r\n

    {line}

    \r\n
    \r\n ));\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n

    {heading.toUpperCase()}

    \r\n
    \r\n {subHeading\r\n &&
    {subHeading}
    }\r\n {alertText && {alert}}\r\n
    \r\n );\r\n};\r\n\r\nexport default PageHeader;\r\n","/* eslint-disable no-bitwise */\r\nconst selectedFlagEnumToString = (\r\n {\r\n value,\r\n enumToUse,\r\n defaultEnumValueForEmtpySelection,\r\n enumDisplayValues,\r\n }:{\r\n value: TEnumValue,\r\n enumToUse: { [key in T]: TEnumValue },\r\n defaultEnumValueForEmtpySelection : TEnumValue\r\n enumDisplayValues?: { [index: number]: string; }\r\n}) => {\r\n const enumLabels = enumDisplayValues == null\r\n ? Object.values(enumToUse)\r\n .filter((v) => typeof v === \"string\")\r\n .map((v) => v as string)\r\n : Object.values(enumToUse)\r\n .filter((v) => typeof v === \"number\")\r\n .map((v) => enumDisplayValues[v as TEnumValue]);\r\n\r\n // return default value or \"none\" when no values are selected\r\n if (value <= 0) {\r\n return enumDisplayValues != null\r\n ? enumDisplayValues[defaultEnumValueForEmtpySelection as TEnumValue]\r\n : \"None\";\r\n }\r\n\r\n const enumValues = Object.values(enumToUse)\r\n .filter((v) => typeof v === \"number\")\r\n .map((v) => v as TEnumValue);\r\n\r\n const selectedFlags = enumLabels.map((enumLabel, index) => {\r\n const enumValue = enumValues[index];\r\n // filter out the default empty value\r\n if ((enumValue & defaultEnumValueForEmtpySelection) === enumValue) {\r\n return null;\r\n }\r\n const isSelected = (enumValue & value) === enumValue;\r\n return isSelected ? enumLabel : null;\r\n });\r\n\r\n const result = selectedFlags.filter((x) => x != null).join(\", \");\r\n return result;\r\n};\r\n\r\nexport default selectedFlagEnumToString;\r\n","import React from \"react\";\r\nimport { FormGroup, Label, Input } from \"reactstrap\";\r\n\r\nimport Styles from \"./TextAreaInput.module.scss\";\r\n\r\nconst TextAreaInput = (\r\n {\r\n label,\r\n required,\r\n maxLength,\r\n value,\r\n onChange,\r\n className,\r\n validationMessage,\r\n placeholder,\r\n }\r\n :\r\n {\r\n label: string,\r\n value: string,\r\n onChange: (value: string) => void,\r\n required?: boolean,\r\n maxLength?: number,\r\n className?: string,\r\n validationMessage?: string,\r\n placeholder?: string,\r\n }\r\n) => {\r\n const inputId = `${label}-${Math.random().toString(36).substring(2)}`;\r\n return (\r\n \r\n \r\n onChange(e.target.value)}\r\n required={required}\r\n maxLength={maxLength}\r\n />\r\n {maxLength && (\r\n
    \r\n Characters left\r\n \r\n {`(${maxLength > value.length ? maxLength - value.length : 0})`}\r\n \r\n
    \r\n )}\r\n { validationMessage && (\r\n
    \r\n {validationMessage}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default TextAreaInput;\r\n","import React from \"react\";\r\n\r\nconst RadioButtonInput = (\r\n {\r\n label,\r\n onChange,\r\n checked,\r\n inline = false,\r\n required,\r\n validationMessage,\r\n name,\r\n }\r\n :\r\n {\r\n inline?: boolean\r\n checked: boolean,\r\n onChange: () => void,\r\n label: string,\r\n required?: boolean,\r\n validationMessage?: string,\r\n name: string,\r\n }\r\n) => {\r\n const id = Math.random().toString(36);\r\n return (\r\n
    \r\n onChange()}\r\n required={required}\r\n />\r\n \r\n {validationMessage &&
    {validationMessage}
    }\r\n
    \r\n );\r\n};\r\n\r\nexport default RadioButtonInput;\r\n","import React from \"react\";\r\n\r\nconst CheckBoxInput = (\r\n {\r\n label,\r\n onChange,\r\n checked,\r\n required,\r\n validationMessage,\r\n disabled,\r\n }\r\n :\r\n {\r\n checked: boolean,\r\n onChange: () => void,\r\n label: string,\r\n required?: boolean,\r\n validationMessage?: string,\r\n disabled?: boolean,\r\n }\r\n) => {\r\n const id = Math.random().toString(36);\r\n return (\r\n
    \r\n onChange()}\r\n required={required}\r\n />\r\n \r\n {validationMessage &&
    {validationMessage}
    }\r\n
    \r\n );\r\n};\r\n\r\nexport default CheckBoxInput;\r\n","/* eslint-disable no-bitwise */\r\nimport React, { Fragment } from \"react\";\r\nimport CheckBoxInput from \"../CheckBoxInput/CheckBoxInput\";\r\n\r\nconst FlagEnumSelectorInput = ({\r\n label,\r\n value,\r\n onChange,\r\n enumToUse,\r\n enumValuesToFilter,\r\n enumDisplayValues,\r\n enumValuesToDisable,\r\n} : {\r\n label: string,\r\n value: TEnumValue,\r\n onChange: (value: TEnumValue) => void,\r\n enumToUse: { [key in T]: TEnumValue },\r\n enumValuesToFilter? : TEnumValue\r\n enumDisplayValues?: { [index: number]: string; }\r\n enumValuesToDisable?: { [index: number] : string}\r\n}) => {\r\n const enumLabels = enumDisplayValues == null\r\n ? Object.values(enumToUse)\r\n .filter((v) => typeof v === \"string\")\r\n .map((v) => v as string)\r\n : Object.values(enumToUse)\r\n .filter((v) => typeof v === \"number\")\r\n .map((v) => enumDisplayValues[v as TEnumValue]);\r\n\r\n const enumValues = Object.values(enumToUse)\r\n .filter((v) => typeof v === \"number\")\r\n .map((v) => v as TEnumValue);\r\n\r\n return (\r\n \r\n {label}\r\n {enumLabels.map((enumLabel, index) => {\r\n const enumValue = enumValues[index];\r\n if (enumValuesToFilter != null && (enumValue & enumValuesToFilter) === enumValue) {\r\n return null;\r\n }\r\n const isChecked = (enumValue & value) === enumValue;\r\n return (\r\n\r\n \r\n {\r\n if (isChecked) {\r\n const removedValue = value ^ enumValue;\r\n onChange(removedValue as TEnumValue);\r\n } else {\r\n const addedValue = value | enumValue;\r\n onChange(addedValue as TEnumValue);\r\n }\r\n }}\r\n />\r\n \r\n {enumValuesToDisable != null && enumValuesToDisable[enumValue] != null\r\n ? enumValuesToDisable[enumValue]\r\n : null}\r\n \r\n \r\n );\r\n })}\r\n\r\n \r\n );\r\n};\r\n\r\nexport default FlagEnumSelectorInput;\r\n","import React, {\r\n useRef,\r\n useCallback,\r\n // eslint-disable-next-line no-unused-vars\r\n ForwardRefRenderFunction,\r\n useImperativeHandle,\r\n forwardRef,\r\n} from \"react\";\r\n\r\nexport interface FileSelectorRef {\r\n selectFiles: () => void,\r\n}\r\nexport interface FileSelectorProps{\r\n onFilesSelected: (fileNames: Array,\r\n formData: FormData, uploadErrors: Array) => void,\r\n allowMultiple?: boolean,\r\n allowedFileTypes?: string,\r\n}\r\n\r\nconst FileSelector:ForwardRefRenderFunction = (\r\n {\r\n onFilesSelected,\r\n allowMultiple = false,\r\n allowedFileTypes = \"\", // csv file types eg. : \"\".doc,.docx,.pdf\"\r\n }: FileSelectorProps, ref\r\n) => {\r\n const fileInput = useRef(null);\r\n\r\n const triggerFileSelect = useCallback(() => {\r\n const currentInput = fileInput?.current ?? { dispatchEvent: () => {} };\r\n currentInput.dispatchEvent(new MouseEvent(\"click\"));\r\n }, [fileInput]);\r\n\r\n useImperativeHandle(ref, () => ({\r\n selectFiles: triggerFileSelect,\r\n }));\r\n\r\n const fileChangeHandler = async () => {\r\n const fileCount = fileInput?.current?.files?.length ?? 0;\r\n if (fileCount === 0) {\r\n return;\r\n }\r\n const formData = new FormData();\r\n const fileNames:Array = [];\r\n const uploadErrors: Array = [];\r\n\r\n if (allowMultiple) {\r\n for (let i = 0; i < fileCount; i += 1) {\r\n const files = fileInput?.current?.files ?? [];\r\n const file = files[i];\r\n // check size\r\n const fileSize = file.size / 1024 / 1024; // convert to MB\r\n if (fileSize < 10) {\r\n formData.append(file.name, file);\r\n uploadErrors.push(\"\");\r\n } else {\r\n uploadErrors.push(\"File size exceeds 10 MB\");\r\n }\r\n fileNames.push(file.name);\r\n }\r\n } else {\r\n const file = (fileInput?.current?.files ?? [])[0];\r\n // check size\r\n const fileSize = file.size / 1024 / 1024; // convert to MB\r\n if (fileSize < 10) {\r\n formData.append(file.name, file);\r\n uploadErrors.push(\"\");\r\n } else {\r\n uploadErrors.push(\"File size exceeds 10 MB\");\r\n }\r\n fileNames.push(file.name);\r\n }\r\n\r\n // clear input to allow file with same name to be uploaded again\r\n if (fileInput.current != null) {\r\n fileInput.current.value = \"\";\r\n }\r\n\r\n onFilesSelected(fileNames, formData, uploadErrors);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default forwardRef(FileSelector);\r\n","import React, { Fragment } from \"react\";\r\nimport ModalBackground from \"../ModalBackground/ModalBackground\";\r\nimport ModalContainer from \"../ModalContainer/ModalContainer\";\r\nimport UtilButton from \"../../Components/UtilButton/UtilButton\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ButtonInfo } from \"../../utils/interfaces/ButtonInfo\";\r\nimport ModalCloseButton from \"../../Components/ModalCloseButton/ModalCloseButton\";\r\nimport Line from \"../../Components/Line/Line\";\r\n\r\nimport Styles from \"./ModalPopup.module.scss\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ActionsDropDown } from \"../../Components/ActionsDropDown\";\r\nimport { useSystemFeatureCheck } from \"../../Hooks/useSystemFeatureCheck\";\r\n\r\nimport { ReactComponent as ErrorSvg } from \"../../images/error.svg\";\r\nimport { ReactComponent as LaptopSvg } from \"../../images/laptop.svg\";\r\n\r\nconst ModalPopup = ({\r\n onClose,\r\n hasCancel = true,\r\n cancelButtonText = \"Cancel\",\r\n heading = \"\",\r\n subheading = \"\",\r\n buttons = [],\r\n children,\r\n size = \"full-width\",\r\n stickyButtons = false,\r\n actionItems = [],\r\n image,\r\n}: {\r\n onClose: () => void,\r\n hasCancel?: boolean,\r\n cancelButtonText?: string,\r\n heading?: string,\r\n subheading?: string,\r\n buttons? : Array,\r\n children: React.ReactNode,\r\n size?: \"small\" | \"medium\" | \"large\" | \"extra-large\" | \"full-width\",\r\n stickyButtons?: boolean,\r\n actionItems?: Array,\r\n image?: \"error\" | \"laptop\",\r\n}) => {\r\n const featureCheck = useSystemFeatureCheck();\r\n\r\n let imageElement = null;\r\n switch (image) {\r\n case \"error\":\r\n imageElement = ;\r\n break;\r\n case \"laptop\":\r\n imageElement = ;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n
    \r\n {hasCancel && onClose()} />}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {heading?.length > 0 ?

    {heading}

    : null}\r\n {imageElement != null\r\n && (\r\n
    \r\n {imageElement}\r\n
    \r\n
    \r\n )}\r\n {subheading?.length > 0 ? (\r\n

    {subheading}

    \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n {stickyButtons\r\n ? (\r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n )\r\n : (\r\n \r\n {children}\r\n\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Renders on the desktop version/view */}\r\n
    \r\n {hasCancel && (\r\n onClose()}\r\n >\r\n { cancelButtonText }\r\n \r\n )}\r\n
    \r\n
    \r\n { actionItems.length > 0 && (\r\n \r\n {actionItems?.map((c) => c)}\r\n \r\n )}\r\n {buttons.map((button) => (\r\n
    \r\n \r\n {button.label}\r\n \r\n
    \r\n ))}\r\n
    \r\n {/* Renders on the mobile version/view */}\r\n { actionItems.length > 0 && (\r\n \r\n {actionItems?.map((c) => c)}\r\n \r\n )}\r\n {buttons.map((button) => (\r\n \r\n {button.label}\r\n \r\n ))}\r\n\r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ModalPopup;\r\n","/* eslint-disable no-case-declarations */\r\nimport React, {\r\n useState,\r\n useEffect,\r\n useRef,\r\n useCallback,\r\n} from \"react\";\r\nimport Styles from \"./SubmitInput.module.scss\";\r\nimport { ReactComponent as PencilSvg } from \"./pencil-alt-solid.svg\";\r\n\r\nconst currencyFormat = (stringValue: string): string => {\r\n const withThousandSeparator = stringValue.replace(\r\n /(\\d)(?=(\\d{3})+(?!\\d))/g,\r\n \"$1,\"\r\n );\r\n\r\n return `R${withThousandSeparator}`;\r\n};\r\n\r\nconst percentageFormat = (stringValue: string): string => `${stringValue}%`;\r\n\r\nconst valueToFixed = (value: number, decimals: number): string => {\r\n const valueToUse = value == null ? 0 : value;\r\n const isNumber = typeof valueToUse === \"number\";\r\n return isNumber ? valueToUse.toFixed(decimals) : `${valueToUse}`;\r\n};\r\n\r\nexport enum FormatType {\r\n Percentage = \"percentage\", // eslint-disable-line no-unused-vars\r\n Currency = \"currency\", // eslint-disable-line no-unused-vars\r\n PercentageRange = \"percentageRange\", // eslint-disable-line no-unused-vars\r\n}\r\n\r\nconst formatStringValue = (type: FormatType, stringValue: string): string => {\r\n switch (type) {\r\n case FormatType.Percentage:\r\n return percentageFormat(stringValue);\r\n case FormatType.Currency:\r\n return currencyFormat(stringValue);\r\n case FormatType.PercentageRange:\r\n const parts = stringValue.split(\";\");\r\n return parts\r\n .map((part) => formatStringValue(FormatType.Percentage, part))\r\n .join(\" - \");\r\n default:\r\n return stringValue;\r\n }\r\n};\r\n\r\nconst stringToTruncatedNumber = (\r\n stringValue: string,\r\n decimals: number,\r\n defaultValue: number | null\r\n): number | null => {\r\n if (!stringValue) {\r\n return null;\r\n }\r\n // make sure number conforms to the decimal requirements by rounding it\r\n // https://www.jacklmoore.com/notes/rounding-in-javascript/\r\n let numberValue: number | null = Number(\r\n `${Math.trunc(Number(`${stringValue}e${decimals}`))}e-${decimals}`\r\n );\r\n\r\n if (Number.isNaN(numberValue)) {\r\n numberValue = defaultValue;\r\n }\r\n return numberValue;\r\n};\r\n\r\nconst formatInputPropsValue = (\r\n type: FormatType,\r\n decimals: number,\r\n value: number | number[]\r\n): string => {\r\n if (value == null) {\r\n return \"\";\r\n }\r\n\r\n const defaultValue = `${value}`;\r\n switch (type) {\r\n case FormatType.Percentage:\r\n case FormatType.Currency:\r\n if (typeof value !== \"number\") {\r\n return defaultValue;\r\n }\r\n\r\n return formatStringValue(type, valueToFixed(value, decimals));\r\n case FormatType.PercentageRange:\r\n if (!Array.isArray(value)) {\r\n return defaultValue;\r\n }\r\n const startFormattedValue = formatStringValue(\r\n FormatType.Percentage,\r\n valueToFixed(value[0], decimals)\r\n );\r\n const endFormattedValue = formatStringValue(\r\n FormatType.Percentage,\r\n valueToFixed(value[1], decimals)\r\n );\r\n return `${startFormattedValue} - ${endFormattedValue}`;\r\n default:\r\n return defaultValue;\r\n }\r\n};\r\n\r\nconst SubmitInput = ({\r\n type,\r\n decimals = 0,\r\n value,\r\n onChange,\r\n}: {\r\n type: FormatType;\r\n decimals?: number;\r\n value: T | null;\r\n onChange: (newValue: T | null) => void;\r\n}): JSX.Element => {\r\n const input = useRef(null);\r\n\r\n const [active, setActive] = useState(false);\r\n\r\n const [editingValue, setEditingValue] = useState(\"\");\r\n\r\n const [enteredText, setEnteredText] = useState(\"\");\r\n const [caretPosition, setCaretPosition] = useState(0);\r\n\r\n const prevEditingValue = useRef(editingValue);\r\n const prevEnteredText = useRef(enteredText);\r\n const caretPositionRef = useRef(caretPosition);\r\n\r\n useEffect(() => {\r\n caretPositionRef.current = caretPosition;\r\n }, [caretPosition]);\r\n\r\n const getEnteredTextFromEditingValue = useCallback(\r\n (currentEditingValue: string, defaultValue: string) => (currentEditingValue === \"\"\r\n ? \"\"\r\n : formatStringValue(type, defaultValue)),\r\n [type]\r\n );\r\n\r\n useEffect(() => {\r\n const currentCaretPosition = caretPositionRef.current;\r\n let newCaretPosition = currentCaretPosition;\r\n\r\n const nextEnteredText = getEnteredTextFromEditingValue(\r\n editingValue,\r\n editingValue\r\n );\r\n const editingValueChanged = editingValue !== prevEditingValue.current;\r\n const enteredTextChanged = enteredText !== nextEnteredText;\r\n\r\n // determine the new caret position\r\n switch (type) {\r\n case FormatType.Percentage:\r\n // if the caret is after the percentage, move it up\r\n if (\r\n currentCaretPosition >= enteredText.length\r\n && enteredText.includes(\"%\")\r\n ) {\r\n newCaretPosition = currentCaretPosition - 1;\r\n }\r\n\r\n // check if the user has entered invalid characters\r\n if (!enteredTextChanged && !editingValueChanged) {\r\n const stringDelta = enteredText.length - prevEnteredText.current.length;\r\n\r\n if (stringDelta < 0) {\r\n // the user added an invalid character\r\n newCaretPosition = currentCaretPosition + stringDelta;\r\n }\r\n }\r\n break;\r\n case FormatType.Currency:\r\n // Extra formatting was added (R and ,s)\r\n if (\r\n enteredTextChanged\r\n && editingValueChanged\r\n && nextEnteredText.length > enteredText.length\r\n ) {\r\n const delta = nextEnteredText.length - enteredText.length;\r\n newCaretPosition = currentCaretPosition + delta;\r\n }\r\n\r\n // check for invalid characters\r\n if (!enteredTextChanged && !editingValueChanged) {\r\n const stringDelta = enteredText.length - prevEnteredText.current.length;\r\n\r\n if (stringDelta < 0) {\r\n // the user added an invalid character\r\n newCaretPosition = currentCaretPosition + stringDelta;\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n if (newCaretPosition != null && input?.current != null) {\r\n setCaretPosition(newCaretPosition);\r\n input.current.selectionStart = newCaretPosition;\r\n input.current.selectionEnd = newCaretPosition;\r\n }\r\n\r\n if (editingValueChanged) {\r\n prevEditingValue.current = editingValue;\r\n }\r\n if (enteredTextChanged) {\r\n prevEnteredText.current = enteredText;\r\n }\r\n }, [enteredText, editingValue, type, getEnteredTextFromEditingValue]);\r\n\r\n useEffect(() => {\r\n // update textbox when editing value changes\r\n setEnteredText(getEnteredTextFromEditingValue(editingValue, editingValue));\r\n }, [editingValue, getEnteredTextFromEditingValue]);\r\n\r\n useEffect(() => {\r\n let newFormattedValue = enteredText;\r\n switch (type) {\r\n case FormatType.PercentageRange:\r\n const parts = enteredText.split(\"-\");\r\n\r\n if (parts.length < 2) {\r\n parts.push(\"0\");\r\n }\r\n\r\n const startClean = parts[0].replace(/(?!([.]|(\\d)))./g, \"\");\r\n const endClean = parts[1].replace(/(?!([.]|(\\d)))./g, \"\");\r\n\r\n newFormattedValue = `${startClean.length === 0 ? \"0\" : startClean};${\r\n endClean.length === 0 ? \"0\" : endClean\r\n }`;\r\n\r\n break;\r\n default:\r\n // remove everything that is not a number or a full stop\r\n newFormattedValue = enteredText.replace(/(?!([.]|(\\d)))./g, \"\");\r\n }\r\n\r\n setEditingValue((currentValue) => {\r\n if (currentValue === newFormattedValue) {\r\n // the value did not change, which means the user entered invalid text,\r\n // then reset the text box\r\n setEnteredText(\r\n getEnteredTextFromEditingValue(currentValue, currentValue)\r\n );\r\n }\r\n\r\n // trigger editing value changes\r\n return newFormattedValue;\r\n });\r\n }, [enteredText, type, getEnteredTextFromEditingValue]);\r\n\r\n const startEditingHandler = (): void => {\r\n let newInputValue = \"\";\r\n\r\n if (value == null) {\r\n newInputValue = \"\";\r\n } else {\r\n switch (type) {\r\n case FormatType.Currency:\r\n case FormatType.Percentage:\r\n if (typeof value !== \"number\") {\r\n break;\r\n }\r\n newInputValue = valueToFixed(value, decimals);\r\n break;\r\n case FormatType.PercentageRange:\r\n if (!Array.isArray(value)) {\r\n break;\r\n }\r\n const startValue = valueToFixed(value[0], decimals);\r\n const endValue = valueToFixed(value[1], decimals);\r\n newInputValue = `${startValue};${endValue}`;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n setActive(true);\r\n setEditingValue(newInputValue);\r\n };\r\n\r\n const onValueChangeHandler = (\r\n enteredString: string,\r\n target: HTMLInputElement\r\n ): void => {\r\n const caretPositionFromInput = target.selectionStart ?? 0;\r\n setCaretPosition(caretPositionFromInput);\r\n setEnteredText(enteredString);\r\n };\r\n\r\n const onCancelHandler = (): void => {\r\n setActive(false);\r\n };\r\n\r\n const onSubmitHandler = (event: React.FormEvent): void => {\r\n event.preventDefault();\r\n\r\n switch (type) {\r\n case FormatType.PercentageRange:\r\n const parts = editingValue.split(\";\");\r\n if (!Array.isArray(value)) {\r\n break;\r\n }\r\n onChange([\r\n stringToTruncatedNumber(parts[0], decimals, value[0]),\r\n stringToTruncatedNumber(parts[1], decimals, value[1]),\r\n ]);\r\n break;\r\n default:\r\n if (value != null && typeof value !== \"number\") {\r\n break;\r\n }\r\n\r\n const newValue = stringToTruncatedNumber(\r\n editingValue,\r\n decimals,\r\n value as number\r\n );\r\n\r\n onChange(newValue);\r\n break;\r\n }\r\n\r\n setActive(false);\r\n };\r\n\r\n let emptyValue: number | number[];\r\n switch (type) {\r\n case FormatType.PercentageRange:\r\n emptyValue = [0, 0];\r\n break;\r\n default:\r\n emptyValue = 0;\r\n }\r\n\r\n const valueToDisplay = (value ?? emptyValue) as number | number[];\r\n\r\n const classes = [];\r\n\r\n classes.push(Styles.SubmitInput);\r\n classes.push(active ? Styles.active : Styles.inactive);\r\n\r\n const inActiveContent = (\r\n
    \r\n {formatInputPropsValue(type, decimals, valueToDisplay)}\r\n\r\n startEditingHandler()}\r\n >\r\n \r\n edit\r\n \r\n
    \r\n );\r\n const activeContent = (\r\n
    \r\n
    onSubmitHandler(ev)}>\r\n onValueChangeHandler(ev.target.value, ev.target)}\r\n />\r\n onCancelHandler()}\r\n type=\"button\"\r\n value=\"Cancel\"\r\n />\r\n \r\n \r\n
    \r\n );\r\n return active ? activeContent : inActiveContent;\r\n};\r\n\r\nexport default SubmitInput;\r\n","import React from \"react\";\r\nimport { Progress } from \"reactstrap\";\r\nimport ImageButton from \"../../ImageButton/ImageButton\";\r\nimport Styles from \"./MessageAttachment.module.scss\";\r\nimport { ReactComponent as SvgClose } from \"../../../images/close.svg\";\r\n\r\nconst MessageAttachment = ({\r\n fileName,\r\n progress,\r\n onDelete,\r\n canClose,\r\n link,\r\n className = \"\",\r\n uploadError,\r\n}: {\r\n fileName: string;\r\n progress: number;\r\n canClose: boolean;\r\n onDelete?: () => void;\r\n link: string;\r\n className?: string;\r\n uploadError?: string;\r\n}) => {\r\n const completed = progress === 1 || progress === -1;\r\n const failed = progress === -1;\r\n\r\n let cardPaddingClasses = \"p-2\";\r\n if (completed) {\r\n cardPaddingClasses = canClose ? \"pl-2 py-2\" : \"p-2\";\r\n } else {\r\n // in progress\r\n cardPaddingClasses = \"px-2 pt-2\";\r\n }\r\n return (\r\n \r\n
    \r\n\r\n {failed\r\n ? (\r\n
    \r\n
    {fileName}
    \r\n
    \r\n {uploadError !== \"\"\r\n ? uploadError\r\n : \"Upload Failed. Please try again.\"}\r\n
    \r\n
    \r\n )\r\n : (\r\n \r\n {fileName}\r\n \r\n )}\r\n {completed && canClose ? (\r\n (onDelete == null ? null : onDelete())}\r\n alt=\"Delete attachment\"\r\n className=\"text-danger\"\r\n />\r\n )\r\n : null}\r\n\r\n
    \r\n\r\n {!completed ? (\r\n \r\n ) : null}\r\n
    \r\n );\r\n};\r\n\r\nexport default MessageAttachment;\r\n","import { useRef, useCallback, useEffect } from \"react\";\r\n\r\nconst useDebounce = (\r\n handler: (arg: T) => void | Promise,\r\n ms: number)\r\n : [(arg?: T) => void, () => Promise] => {\r\n const debounceTimeout = useRef();\r\n const latestArg = useRef();\r\n const latestHandler = useRef<(arg: T) => void | Promise>(handler);\r\n useEffect(() => {\r\n latestHandler.current = handler;\r\n }, [handler]);\r\n const forceFunction = useCallback(async () => {\r\n if (debounceTimeout.current != null) {\r\n clearTimeout(debounceTimeout.current);\r\n const promise = latestHandler.current(latestArg.current as T);\r\n if (promise != null) {\r\n await promise;\r\n }\r\n }\r\n }, []);\r\n\r\n const bouncer = useCallback(() => {\r\n if (debounceTimeout.current != null) {\r\n clearTimeout(debounceTimeout.current);\r\n }\r\n\r\n debounceTimeout.current = setTimeout(() => {\r\n latestHandler.current(latestArg.current as T);\r\n },\r\n ms);\r\n }, [ms]);\r\n\r\n const returnHandler = useCallback((arg?: T) => {\r\n latestArg.current = arg;\r\n bouncer();\r\n }, [bouncer]);\r\n return [returnHandler, forceFunction];\r\n};\r\n\r\nexport default useDebounce;\r\n","import React, { useCallback, useState } from \"react\";\r\n\r\n// Time before a toast is dismissed automatically\r\nconst toastTimeout = 1500;\r\n\r\n// Time from when a toast is dismissed before it is removed from the UI\r\n// This leaved some time for the fade animation\r\nconst cleanupTimeout = 1000;\r\n\r\nlet addToast: (message: string) => void;\r\n\r\ninterface ToastMessage {\r\n id: string,\r\n content: string,\r\n visible: boolean,\r\n dismiss:() => void\r\n}\r\n\r\n// internal hook to read toast messages\r\nexport const useVisibleToasts = () => {\r\n const [toastMessages, setToastMessages] = useState([]);\r\n\r\n const cleanToast = (id: string) => {\r\n setToastMessages((prevValue) => [\r\n ...prevValue.filter((t) => t.id !== id),\r\n ]);\r\n };\r\n\r\n const dismissToast = (id: string) => {\r\n setToastMessages((prevValue) => [\r\n ...prevValue.map((t) => {\r\n if (t.id === id) {\r\n return { ...t, visible: false };\r\n }\r\n return t;\r\n }),\r\n ]);\r\n\r\n setTimeout(() => {\r\n cleanToast(id);\r\n }, cleanupTimeout);\r\n };\r\n\r\n addToast = (message) => {\r\n const newId = Math.random().toString(36);\r\n\r\n setTimeout(() => {\r\n dismissToast(newId);\r\n }, toastTimeout);\r\n\r\n setToastMessages((prevValue) => [...prevValue,\r\n {\r\n id: newId,\r\n content: message,\r\n visible: true,\r\n dismiss: () => { dismissToast(newId); },\r\n },\r\n ]);\r\n };\r\n return toastMessages;\r\n};\r\n\r\nconst useToast = () => {\r\n const showToast = useCallback((message: string) => {\r\n addToast(message);\r\n }, []);\r\n\r\n return showToast;\r\n};\r\n\r\n// Higher order component for legacy components (class based components)\r\ninterface ToastComponentProps {\r\n showToast: (message: string) => void\r\n}\r\n\r\nexport const withToast = (\r\n WrappedComponent: React.ComponentType\r\n // eslint-disable-next-line react/prefer-stateless-function\r\n) => class extends React.Component {\r\n render() {\r\n return (\r\n addToast(message)}\r\n // eslint-disable-next-line react/jsx-props-no-spreading\r\n {...this.props}\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport default useToast;\r\n","import React, { Fragment, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures from \"../../utils/enums/SystemFeatures\";\r\nimport { useShouldShowNotAllowedError, useHideNotAllowedError, setupSubscriptionFeaturesInfo } from \"../../Hooks/useNotAllowedError\";\r\nimport ConfirmationModal from \"../../Components/ConfirmationModal/ConfirmationModal\";\r\nimport { setupAllowedFeatures, useSystemFeatureCheck } from \"../../Hooks/useSystemFeatureCheck\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SubscriptionAllowedFeatures } from \"../../utils/interfaces/SubscriptionAllowedFeatures\";\r\n\r\nconst ISuppliAuthentication = (\r\n {\r\n allowedFeatures,\r\n subscriptionEditUrl,\r\n subscriptionFeaturesInfo,\r\n children,\r\n }\r\n :\r\n {\r\n allowedFeatures: SystemFeatures,\r\n subscriptionEditUrl?: string,\r\n children: React.ReactNode,\r\n subscriptionFeaturesInfo: Array,\r\n }\r\n) => {\r\n const featureCheck = useSystemFeatureCheck();\r\n const shouldShowError = useShouldShowNotAllowedError();\r\n const hideError = useHideNotAllowedError();\r\n const history = useHistory();\r\n\r\n setupSubscriptionFeaturesInfo(subscriptionFeaturesInfo);\r\n setupAllowedFeatures(allowedFeatures);\r\n const canEditSubscription = featureCheck(SystemFeatures.SubscriptionsEdit);\r\n\r\n useEffect(() => {\r\n }, [shouldShowError, children]);\r\n\r\n const minimumRequiredSubscriptionText = shouldShowError.minimumRequiredSubscription != null\r\n ? `You will need to upgrade your subscription package to the \r\n ${shouldShowError.minimumRequiredSubscription?.subscriptionTierName} tier in order to access this feature.`\r\n : \"\";\r\n return (\r\n \r\n {children}\r\n {shouldShowError.currentValue\r\n && canEditSubscription\r\n && (\r\n {\r\n if (subscriptionEditUrl != null) {\r\n history.push(subscriptionEditUrl);\r\n }\r\n }}\r\n proceedButtonText={subscriptionEditUrl == null ? \"OK\" : \"View subscription\"}\r\n onToggleModal={hideError}\r\n />\r\n )}\r\n {shouldShowError.currentValue\r\n && !canEditSubscription\r\n && (\r\n {\r\n }}\r\n proceedButtonText=\"OK\"\r\n onToggleModal={hideError}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ISuppliAuthentication;\r\n","import React, {\r\n useState, useRef, useEffect,\r\n // eslint-disable-next-line no-unused-vars\r\n ForwardRefRenderFunction,\r\n forwardRef, useImperativeHandle,\r\n} from \"react\";\r\n\r\nimport { Badge } from \"reactstrap\";\r\n\r\nimport UtilButton from \"../UtilButton/UtilButton\";\r\nimport MessageAttachment from \"./MessageAttachment/MessageAttachment\";\r\n\r\nimport\r\nFileSelector,\r\n{\r\n FileSelectorRef, // eslint-disable-line no-unused-vars\r\n}\r\n from \"../FileSelector/FileSelector\";\r\nimport useDebounce from \"../../Hooks/useDebounce\";\r\n\r\nimport { ReactComponent as SvgPaperclip } from \"./paperclip.svg\";\r\nimport { ReactComponent as SvgTriangle } from \"../../images/triangle.svg\";\r\nimport Styles from \"./MessageComposer.module.scss\";\r\nimport ImageButton from \"../ImageButton/ImageButton\";\r\n\r\ninterface BusyAttachment extends Attachment, ProgressAttachment {\r\n done: boolean,\r\n}\r\n\r\ninterface ProgressAttachment {\r\n fileId: number | null,\r\n progress: number,\r\n id: number,\r\n fileUrl: string,\r\n filename: string,\r\n uploadError?: string\r\n}\r\n\r\nexport { default as MessageAttachment } from \"./MessageAttachment/MessageAttachment\";\r\n\r\nexport interface AttachmentUploadResult extends Attachment {\r\n success: boolean,\r\n}\r\n\r\nexport interface Attachment {\r\n id: number,\r\n fileUrl: string,\r\n filename: string,\r\n}\r\n\r\nexport interface Message {\r\n id: number,\r\n content: string,\r\n attachments: Array\r\n}\r\n\r\nexport interface ApiCancelToken {\r\n cancel: () => void;\r\n}\r\n\r\nexport interface MessageComposerRef {\r\n triggerSave: () => Promise,\r\n triggerSend: () => Promise,\r\n}\r\n\r\nexport interface MessageComposerProps {\r\n downloadUrlBase: string,\r\n onCreateDraft: (config?: (cancelToken: ApiCancelToken) => void) => Promise,\r\n onUpdateDraft: (body: string) => Promise,\r\n onSendMessage: () => Promise,\r\n onDeleteAttachment: (fileId: number) => Promise,\r\n onUploadAttachment: (\r\n formData: FormData,\r\n progressCallback: (progress: number) => void,\r\n doneCallback:(uploadResult: Array | null) => void,\r\n config: (\r\n cancelToken: ApiCancelToken\r\n ) => void) => void,\r\n onCancelUpload: () => void,\r\n alwaysOpen?: boolean,\r\n defaultOpen?: boolean,\r\n hideSendButton?: boolean,\r\n className?: string,\r\n}\r\n\r\nconst MessageComposer: ForwardRefRenderFunction = ({\r\n downloadUrlBase,\r\n onCreateDraft,\r\n onUpdateDraft,\r\n onSendMessage,\r\n onDeleteAttachment,\r\n onCancelUpload,\r\n onUploadAttachment,\r\n alwaysOpen = false,\r\n defaultOpen = false,\r\n hideSendButton = false,\r\n className,\r\n}:MessageComposerProps, ref) => {\r\n const openInitValue = alwaysOpen || defaultOpen;\r\n const textArea = useRef(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [initialLoading, setInitialLoading] = useState(true);\r\n\r\n // whether the current state has been saved\r\n const [attachments, setAttachments] = useState([]);\r\n const [body, setBody] = useState(\"\");\r\n const [isSending, setIsSending] = useState(false);\r\n const sendQue = useRef(false);\r\n const getForceUpdatePromiseResolver = useRef<() => void>();\r\n const fileSelectRef = useRef(null);\r\n const draftCancelToken = useRef();\r\n const attachmentUploadCancelToken = useRef();\r\n\r\n // change openState of composer on open variables prop changes\r\n useEffect(() => {\r\n setIsOpen(openInitValue);\r\n }, [openInitValue]);\r\n\r\n // cancel uploads when component disposes\r\n useEffect(() => () => {\r\n attachmentUploadCancelToken.current?.cancel();\r\n attachmentUploadCancelToken.current = undefined;\r\n onCancelUpload();\r\n }, []);\r\n\r\n useEffect(() => {\r\n // create a draft\r\n const createDraft = async () => {\r\n draftCancelToken.current?.cancel();\r\n const newDraft = await onCreateDraft((cancelToken) => {\r\n draftCancelToken.current = cancelToken;\r\n });\r\n\r\n if (newDraft == null) {\r\n return;\r\n }\r\n setInitialLoading(false);\r\n setBody(newDraft.content);\r\n\r\n const draftAttachments: BusyAttachment[] = newDraft.attachments.map((a) => ({\r\n id: a.id,\r\n fileId: a.id,\r\n filename: a.filename,\r\n fileUrl: a.fileUrl,\r\n progress: 1,\r\n done: true,\r\n }));\r\n setAttachments(draftAttachments);\r\n };\r\n\r\n createDraft();\r\n return () => {\r\n // dispose component\r\n draftCancelToken.current?.cancel();\r\n };\r\n }, [setInitialLoading]);\r\n\r\n const isSendDisabled = () => (!body && attachments.length <= 0)\r\n || attachments.some((a) => !a.done || a.progress < 1);\r\n\r\n const updatePending = useRef(false);\r\n\r\n let onSendHandler: () => Promise;\r\n\r\n const [\r\n triggerUpdateDebounce,\r\n forceUpdateDebounce,\r\n ] = useDebounce(async (latestBody) => {\r\n if (latestBody == null) {\r\n return;\r\n }\r\n setBody(latestBody);\r\n await onUpdateDraft(latestBody);\r\n updatePending.current = false;\r\n if (sendQue.current) {\r\n sendQue.current = false;\r\n await onSendHandler();\r\n }\r\n\r\n if (getForceUpdatePromiseResolver.current != null) {\r\n getForceUpdatePromiseResolver.current();\r\n getForceUpdatePromiseResolver.current = undefined;\r\n }\r\n },\r\n 1000);\r\n\r\n const onBodyChangeHandler = (newValue: string) => {\r\n updatePending.current = true;\r\n setBody(newValue);\r\n triggerUpdateDebounce(newValue);\r\n };\r\n\r\n onSendHandler = async () => {\r\n setIsSending(true);\r\n if (updatePending.current) {\r\n sendQue.current = true;\r\n await forceUpdateDebounce();\r\n return;\r\n }\r\n\r\n await onSendMessage();\r\n\r\n const newDraftMessage = await onCreateDraft();\r\n if (newDraftMessage == null) {\r\n return;\r\n }\r\n setBody(newDraftMessage.content);\r\n setAttachments([]);\r\n setIsSending(false);\r\n setIsOpen(false);\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n triggerSave: () => new Promise((resolver) => {\r\n if (updatePending.current) {\r\n getForceUpdatePromiseResolver.current = resolver;\r\n forceUpdateDebounce();\r\n return;\r\n }\r\n resolver();\r\n }),\r\n triggerSend: async () => {\r\n await onSendHandler();\r\n },\r\n }));\r\n\r\n const onTextFocusHandler = () => {\r\n setIsOpen(true);\r\n };\r\n\r\n const onToggleButtonClickHandler = () => {\r\n setIsOpen(!isOpen);\r\n setBody(body.trimStart());\r\n\r\n // eslint-disable-next-line no-unused-expressions\r\n textArea.current?.scrollTo(0, 0);\r\n };\r\n\r\n const onAttachmentDeleteHandler = async (id: number | null) => {\r\n const attachmentToDelete = attachments.find((c) => c.id === id);\r\n if (attachmentToDelete == null) {\r\n return;\r\n }\r\n setAttachments((prevAttachments) => prevAttachments.filter((c) => c.id !== id));\r\n\r\n if (attachmentToDelete.fileId != null) {\r\n // check for failed downloads\r\n await onDeleteAttachment(attachmentToDelete.fileId);\r\n }\r\n };\r\n\r\n const onAttachmentUploadedHandler = (uploadResult: AttachmentUploadResult[]) => {\r\n setAttachments((prevAttachments) => {\r\n const newAttachments = prevAttachments\r\n .map((file) => {\r\n const matchedUpdate = uploadResult.find((c) => c.id === file.id);\r\n return {\r\n ...file,\r\n fileUrl: (matchedUpdate?.fileUrl != null) ? matchedUpdate.fileUrl : file.fileUrl,\r\n progress: (matchedUpdate?.success ?? true) ? file.progress : -1,\r\n done: file.done || uploadResult.some((progressFile) => file.id === progressFile.id),\r\n };\r\n });\r\n return newAttachments;\r\n });\r\n };\r\n\r\n const updateProgress = (progress: ProgressAttachment[]) => {\r\n setAttachments((prevAttachments) => {\r\n const newAttachments = [...prevAttachments];\r\n progress.forEach((progressItem) => {\r\n const idMatch = newAttachments.find((c) => c.id === progressItem.id);\r\n\r\n if (idMatch != null) {\r\n idMatch.progress = progressItem.progress;\r\n idMatch.fileId = progressItem.fileId;\r\n idMatch.fileUrl = progressItem.fileUrl;\r\n return;\r\n }\r\n\r\n newAttachments.push({ ...progressItem, done: false });\r\n });\r\n return newAttachments;\r\n });\r\n };\r\n\r\n const classes = [Styles.MessageComposer, \"bg-white\", className ?? \"\"];\r\n if (isOpen) {\r\n classes.push(Styles.Expand);\r\n } else {\r\n classes.push(Styles.Collapse);\r\n }\r\n\r\n if (hideSendButton) {\r\n classes.push(Styles.HideSendButton);\r\n }\r\n\r\n if (alwaysOpen) {\r\n classes.push(Styles.HideToggleButton);\r\n }\r\n\r\n return (\r\n
    \r\n onBodyChangeHandler(ev.target.value)}\r\n onFocus={onTextFocusHandler}\r\n />\r\n {isOpen && attachments.length > 0\r\n ? (\r\n
    \r\n {attachments.map((attachment) => {\r\n let { progress } = attachment;\r\n if (attachment.done) {\r\n progress = progress >= 1 ? 1 : -1;\r\n } else {\r\n progress = progress >= 1 ? 0.99 : progress;\r\n }\r\n return (\r\n onAttachmentDeleteHandler(attachment.id)}\r\n link={attachment.fileUrl ? `${downloadUrlBase}${attachment.fileUrl}` : \"\"}\r\n canClose\r\n uploadError={attachment.uploadError}\r\n />\r\n );\r\n })}\r\n
    \r\n )\r\n : null}\r\n\r\n {!isOpen && attachments.length > 0\r\n ? {isSendDisabled() ? \"Uploading..\" : `${attachments.length} Attachments`} : null}\r\n {!alwaysOpen\r\n ? (\r\n \r\n )\r\n : null}\r\n\r\n {\r\n const newFiles = fileNames.map((fileName, i) => (\r\n {\r\n id: Date.now() + i,\r\n fileId: null,\r\n filename: fileName,\r\n progress: 0,\r\n fileUrl: \"\",\r\n uploadError: uploadErrors[i],\r\n }\r\n ));\r\n onUploadAttachment(\r\n formData,\r\n (progress) => {\r\n // progress handler\r\n const updatedProgress = newFiles.map((f) => ({ ...f, progress }));\r\n updateProgress(updatedProgress);\r\n },\r\n (uploadResult) => {\r\n // done handler\r\n const updatedProgress = newFiles.map((p) => ({\r\n ...p,\r\n fileId: uploadResult?.find(\r\n (f) => f.filename === p.filename\r\n )?.id ?? null,\r\n fileUrl: `${uploadResult?.find(\r\n (f) => f.filename === p.filename\r\n )?.fileUrl}` ?? null,\r\n success: uploadResult?.find(\r\n (f) => f.filename === p.filename\r\n )?.success ?? false,\r\n progress: uploadResult?.find(\r\n (f) => f.filename === p.filename\r\n )?.success === true ? 1 : -1,\r\n }));\r\n onAttachmentUploadedHandler(updatedProgress);\r\n },\r\n (cancelToken) => {\r\n attachmentUploadCancelToken.current = cancelToken;\r\n }\r\n );\r\n }}\r\n />\r\n\r\n {\r\n fileSelectRef.current?.selectFiles();\r\n }}\r\n />\r\n\r\n \r\n Send\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default forwardRef(MessageComposer);\r\n","import React from \"react\";\r\nimport { useSystemFeatureCheck } from \"../../Hooks/useSystemFeatureCheck\";\r\nimport { useShowNotAllowedError } from \"../../Hooks/useNotAllowedError\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures from \"../../utils/enums/SystemFeatures\";\r\nimport Styles from \"./WithFeature.module.scss\";\r\n\r\nconst WithFeature = (\r\n {\r\n children,\r\n feature,\r\n keepVisible = false,\r\n } :\r\n {\r\n children: JSX.Element,\r\n feature: SystemFeatures\r\n keepVisible?: boolean\r\n }\r\n) => {\r\n const featureCheck = useSystemFeatureCheck();\r\n const showNotAllowedError = useShowNotAllowedError();\r\n\r\n if (featureCheck(feature)) {\r\n return children;\r\n }\r\n\r\n if (keepVisible) {\r\n return (\r\n {\r\n e.preventDefault();\r\n showNotAllowedError(feature);\r\n }}\r\n >\r\n { children }\r\n
    \r\n );\r\n }\r\n\r\n return null;\r\n};\r\nexport default WithFeature;\r\n","import React, { useEffect } from \"react\";\r\nimport {\r\n Route,\r\n RouteProps, // eslint-disable-line no-unused-vars\r\n} from \"react-router-dom\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures from \"../../utils/enums/SystemFeatures\";\r\n\r\nimport { useSystemFeatureCheck } from \"../../Hooks/useSystemFeatureCheck\";\r\nimport { useShowNotAllowedError } from \"../../Hooks/useNotAllowedError\";\r\n\r\nexport interface FeatureRouteProps extends RouteProps {\r\n feature: SystemFeatures,\r\n strictFeatureCheck?: boolean,\r\n}\r\n\r\nconst FeatureRoute = (\r\n {\r\n feature,\r\n location,\r\n component,\r\n render,\r\n path,\r\n exact,\r\n sensitive,\r\n strict,\r\n strictFeatureCheck = true,\r\n children,\r\n } : FeatureRouteProps\r\n) => {\r\n const featureCheck = useSystemFeatureCheck(strictFeatureCheck);\r\n const showNotAllowedError = useShowNotAllowedError();\r\n\r\n useEffect(() => {\r\n if (feature != null && (!featureCheck(feature))) {\r\n showNotAllowedError(feature);\r\n }\r\n }, [feature, showNotAllowedError]);\r\n\r\n if (feature != null && (!featureCheck(feature))) {\r\n return

    NOT ALLOWED

    ;\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default FeatureRoute;\r\n","import React,\r\n{\r\n Fragment,\r\n // eslint-disable-next-line no-unused-vars\r\n ReactNode,\r\n} from \"react\";\r\nimport { Toast, ToastHeader } from \"reactstrap\";\r\nimport { useVisibleToasts } from \"../../Hooks/useToast\";\r\n\r\nimport Styles from \"./ToastContainer.module.scss\";\r\n\r\nconst ToastContainer = ({ children } : {children: ReactNode}) => {\r\n const toastMessages = useVisibleToasts();\r\n\r\n return (\r\n \r\n {children}\r\n
    \r\n {toastMessages.map((message) => (\r\n \r\n \r\n {message.content}\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ToastContainer;\r\n","import React from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport PageButtons, { PageButton } from \"../../Components/PageButtons/PageButtons\";\r\n\r\nconst PageContentWithButtons = (\r\n {\r\n children,\r\n buttons,\r\n hasBack,\r\n onBackClick,\r\n }\r\n :\r\n {\r\n children: React.ReactNode\r\n buttons: Array;\r\n hasBack?: boolean | undefined;\r\n onBackClick?: (() => void) | undefined;\r\n }\r\n) => (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n);\r\n\r\nexport default PageContentWithButtons;\r\n","/* eslint-disable jsx-a11y/label-has-associated-control */\r\nimport React from \"react\";\r\nimport UtilButton from \"../../Components/UtilButton/UtilButton\";\r\nimport Styles from \"./ListEmptyState.module.scss\";\r\nimport { ReactComponent as MagnifyingGlassCircleSvg } from \"./magnifying-glass-circle.svg\";\r\n\r\nconst ListEmptyState = ({\r\n heading,\r\n button,\r\n children,\r\n fullWidth = false,\r\n} :\r\n {\r\n heading : string,\r\n children: React.ReactChild | React.ReactChild[],\r\n button? :{text: string, onClick: () => void},\r\n fullWidth? : boolean\r\n }) => {\r\n const content = (\r\n
    \r\n

    {heading}

    \r\n \r\n \r\n {button && (\r\n
    \r\n \r\n {button.text}\r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n\r\n return content;\r\n};\r\n\r\n/*\r\ndisabled = false,\r\n background,\r\n size,\r\n location,\r\n className = \"\",\r\n text,\r\n actionArg = null,\r\n actionCallback,\r\n*/\r\n\r\nexport default ListEmptyState;\r\n","import React, { useState } from \"react\";\r\nimport { ReactComponent as MagnifyingGlassSvg } from \"../../images/magnifying-glass.svg\";\r\n\r\nconst FilterInput = (props: any) => {\r\n const [value, setValue] = useState(\"\");\r\n\r\n const onSubmit = (ev: any) => {\r\n ev.preventDefault();\r\n props.onFilterCallback(value);\r\n };\r\n\r\n const onInputChange = (ev: any) => {\r\n setValue(ev.target.value);\r\n if (props.onChangeCallback) {\r\n props.onChangeCallback(ev);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default FilterInput;\r\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import { StaticOption } from \"../Hooks/staticData/interfaces/StaticDataOption\";// eslint-disable-line no-unused-vars\r\nimport { UnspscSegment, UnspscFamily } from \"../Hooks/staticData/useStaticData\"; // eslint-disable-line no-unused-vars\r\n// eslint-disable-next-line no-unused-vars\r\n\r\nexport interface UnspscSegmentWithFamilies extends UnspscSegment {\r\n families: Array,\r\n}\r\n\r\nexport const createProductServiceSummary = (\r\n selectedSubCategoryIds: number[],\r\n categoriesStaticData: StaticOption[]\r\n) => {\r\n if (!selectedSubCategoryIds) {\r\n return [];\r\n }\r\n\r\n const categories = categoriesStaticData.map((category) => ({\r\n heading: category.name,\r\n items: category.supplierSubCategories\r\n .filter(\r\n (subCategory: StaticOption) => selectedSubCategoryIds.includes(subCategory.value as number)\r\n )\r\n .map((c: StaticOption) => c.name),\r\n }));\r\n\r\n return categories.filter((c) => c.items.length > 0);\r\n};\r\n\r\nexport const createGlobalProductServiceSummary = (\r\n selectedUnspscFamilyIds: number[],\r\n segmentsStaticData: StaticOption[]\r\n) => {\r\n if (!selectedUnspscFamilyIds) {\r\n return [];\r\n }\r\n\r\n const segments = segmentsStaticData.map((segment) => ({\r\n heading: segment.display,\r\n items: segment.families\r\n .filter(\r\n (family: StaticOption) => selectedUnspscFamilyIds.includes(family.value as number)\r\n )\r\n .map((c: StaticOption) => c.name),\r\n }));\r\n\r\n return segments.filter((c) => c.items.length > 0);\r\n};\r\n\r\nexport const getUnspscInfo = (\r\n unspscSegments: Array,\r\n unspscFamilies: Array\r\n) => {\r\n // build segments array\r\n const segments = unspscSegments?.map((unspscSegment: any) => ({\r\n value: unspscSegment.id,\r\n display: unspscSegment.display,\r\n code: unspscSegment.code,\r\n families: [],\r\n } as UnspscSegmentWithFamilies));\r\n\r\n // assign families to appropriate segment\r\n unspscFamilies?.map((unspscFamily: any) => {\r\n segments.find((segment) => segment.value === unspscFamily.segmentId)\r\n ?.families.push(unspscFamily);\r\n });\r\n\r\n return segments;\r\n};\r\n","enum StaticDataTypes {\r\n BeeClassification = 1, // eslint-disable-line no-unused-vars\r\n BeeStatus = 2, // eslint-disable-line no-unused-vars\r\n CompanyType = 3, // eslint-disable-line no-unused-vars\r\n Country = 4, // eslint-disable-line no-unused-vars\r\n Province = 5, // eslint-disable-line no-unused-vars\r\n Sector = 6, // eslint-disable-line no-unused-vars\r\n TurnoverBand = 7, // eslint-disable-line no-unused-vars\r\n SectorTurnoverBand = 8, // eslint-disable-line no-unused-vars\r\n Bank = 9, // eslint-disable-line no-unused-vars\r\n BankAccountType = 10, // eslint-disable-line no-unused-vars\r\n SubscriptionTier = 11, // eslint-disable-line no-unused-vars\r\n UnspscSegment = 12, // eslint-disable-line no-unused-vars\r\n UnspscFamily = 13, // eslint-disable-line no-unused-vars\r\n DocumentTypes = 14, // eslint-disable-line no-unused-vars\r\n BusinessTypes = 15, // eslint-disable-line no-unused-vars\r\n ContactPerson = 16, // eslint-disable-line no-unused-vars\r\n SectorTurnoverBandStatus = 17, // eslint-disable-line no-unused-vars\r\n PaymentTerms = 18 // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default StaticDataTypes;\r\n","/* eslint-disable react/no-array-index-key */\r\nimport React, {\r\n Fragment,\r\n useState,\r\n useEffect,\r\n useRef,\r\n useCallback,\r\n useMemo,\r\n} from \"react\";\r\n\r\nimport axios, {\r\n AxiosRequestConfig, // eslint-disable-line no-unused-vars\r\n CancelTokenSource, // eslint-disable-line no-unused-vars\r\n} from \"axios\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { getUnspscInfo, UnspscSegmentWithFamilies } from \"../../utils/dataTransform\";\r\nimport StaticDataTypes from \"../../utils/enums/StaticDataTypes\";\r\nimport { StaticOption } from \"../../Hooks/staticData/interfaces/StaticDataOption\";// eslint-disable-line no-unused-vars\r\nimport { UnspscSegment } from \"../../Hooks/staticData/interfaces/UnspscSegment\";// eslint-disable-line no-unused-vars\r\nimport { UnspscFamily } from \"../../Hooks/staticData/interfaces/UnspscFamily\";// eslint-disable-line no-unused-vars\r\nimport useDebounce from \"../../Hooks/useDebounce\";\r\nimport CheckboxInput from \"../CheckboxInput/CheckboxInput\";\r\nimport ListEmptyState from \"../../Containers/ListEmptyState/ListEmptyState\";\r\nimport ModalPopup from \"../../Containers/ModalPopup/ModalPopup\";\r\nimport FilterInput from \"../FilterInput/FilterInput\";\r\nimport Spinner from \"../Spinner/Spinner\";\r\n// eslint-disable-next-line no-unused-vars\r\n\r\nconst GlobalOfferingSelector = ({\r\n selection,\r\n maxItems,\r\n subheading,\r\n setSelection,\r\n onCloseCallback,\r\n onSearchUsnpscFamiliesCallback,\r\n staticDataCallback,\r\n}: {\r\n selection: number[];\r\n maxItems?: number,\r\n setSelection: (value: number[]) => void;\r\n onCloseCallback: () => void;\r\n onSearchUsnpscFamiliesCallback:\r\n (searchTerm: string, config: AxiosRequestConfig | undefined) => Promise;\r\n staticDataCallback: (optionsToLoad: StaticDataTypes[]) => [StaticOption[][], boolean]\r\n subheading?: string,\r\n}) => {\r\n const [internalSelection, setInternalSelection] = useState([]);\r\n\r\n const [filterTerm, setFilterTerm] = useState(\"\");\r\n const [searching, setSearching] = useState(false);\r\n const [searchResult, setSearchResults] = useState | null>(null);\r\n const searchCancelToken = useRef(\r\n axios.CancelToken.source()\r\n );\r\n\r\n useEffect(() => {\r\n setInternalSelection(selection);\r\n }, [selection]);\r\n\r\n const [[unspscSegments, unspscFamilies], isReady] = staticDataCallback(\r\n [StaticDataTypes.UnspscSegment, StaticDataTypes.UnspscFamily]\r\n );\r\n\r\n const [unspscInfo, setUnspscInfo] = useState>();\r\n\r\n useEffect(() => {\r\n const info = getUnspscInfo(\r\n unspscSegments as any as Array,\r\n unspscFamilies as any as Array\r\n );\r\n setUnspscInfo(info);\r\n }, [unspscSegments, unspscFamilies]);\r\n\r\n const removeSegment = useCallback(\r\n (item: number) => {\r\n setInternalSelection((prevState) => prevState.filter((sel) => sel !== item));\r\n },\r\n [setInternalSelection]\r\n );\r\n\r\n const addSegment = useCallback(\r\n (item: number) => {\r\n setInternalSelection((prevState) => [...prevState, item]);\r\n },\r\n [setInternalSelection]\r\n );\r\n\r\n const toggleItem = useCallback(\r\n (item: number, isSelected: boolean) => {\r\n if (isSelected) {\r\n removeSegment(item);\r\n } else {\r\n addSegment(item);\r\n }\r\n },\r\n [removeSegment, addSegment]\r\n );\r\n\r\n const onApplyClick = () => {\r\n setSelection(internalSelection);\r\n onCloseCallback();\r\n };\r\n\r\n const [executeSearch] = useDebounce(async (term: string) => {\r\n // cancel running search\r\n searchCancelToken.current.cancel();\r\n\r\n setSearching(true);\r\n if (filterTerm.length === 0) {\r\n setSearchResults(null);\r\n setSearching(false);\r\n } else {\r\n try {\r\n searchCancelToken.current = axios.CancelToken.source();\r\n const result = await onSearchUsnpscFamiliesCallback(term, {\r\n cancelToken: searchCancelToken.current.token,\r\n });\r\n setSearchResults(result);\r\n setSearching(false);\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n setSearchResults(null);\r\n setSearching(false);\r\n }\r\n }\r\n }\r\n }, 300);\r\n\r\n useEffect(() => {\r\n // execute search\r\n executeSearch(filterTerm);\r\n return () => {\r\n searchCancelToken.current.cancel();\r\n };\r\n }, [filterTerm, executeSearch]);\r\n\r\n const selectionList = useMemo(() => {\r\n const optionsToShow = unspscInfo\r\n ?.map((segment, i) => {\r\n const optionRows: JSX.Element[][] = [];\r\n let index = -1;\r\n segment.families\r\n .filter((family) => (searchResult == null ? true : searchResult.includes(family.value)))\r\n .forEach((family, j: number) => {\r\n if (j % 3 === 0) {\r\n index += 1;\r\n optionRows.push([]);\r\n }\r\n const isSelected = !!internalSelection?.find(\r\n (s) => s === family.value\r\n );\r\n optionRows[index].push(\r\n
    \r\n = maxItems\r\n && internalSelection.find((val) => val === family.value) == null}\r\n value={isSelected}\r\n label={family.display}\r\n onChange={() => {\r\n toggleItem(family.value, isSelected);\r\n }}\r\n />\r\n
    \r\n );\r\n });\r\n const options = optionRows.map((row, k) => (\r\n
    \r\n {row}\r\n
    \r\n ));\r\n return options.length > 0 ? (\r\n
    \r\n \r\n

    {segment.display}

    \r\n
    \r\n
    {options}
    \r\n \r\n ) : null;\r\n })\r\n .filter((c) => c != null);\r\n\r\n if (optionsToShow == null || optionsToShow?.length === 0) {\r\n return (\r\n \r\n

    \r\n No product/service categories found matching your search request...\r\n

    \r\n
    \r\n );\r\n }\r\n return optionsToShow;\r\n }, [searchResult, internalSelection, unspscInfo, toggleItem]);\r\n\r\n const onFilter = (term: string) => {\r\n setFilterTerm(term);\r\n };\r\n\r\n const onFilterChange = (ev: React.FormEvent) => {\r\n setFilterTerm(ev.currentTarget.value);\r\n };\r\n\r\n return (\r\n \r\n onCloseCallback()}\r\n hasCancel\r\n heading=\"SELECT PRODUCT / SERVICE CATEGORIES\"\r\n subheading={subheading ?? `Please indicate your primary product and/or service offering only.\r\n Keep in mind that buyers may be wary of a supplier who claims to do everything.`}\r\n size=\"large\"\r\n buttons={[\r\n {\r\n key: \"ok\",\r\n label: \"Save\",\r\n onClick: () => {\r\n onApplyClick();\r\n },\r\n color: \"primary\",\r\n },\r\n ]}\r\n >\r\n \r\n

    \r\n B1LINK is authorized to adopt The United Nations Standard Products\r\n and Services Code (UNSPSC).\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isReady && !searching ? selectionList : }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default GlobalOfferingSelector;\r\n","import React, { Fragment } from \"react\";\r\n\r\ninterface Item {\r\n heading: string,\r\n items: string[]\r\n}\r\n\r\nconst ProductsAndServicesSummary = (\r\n {\r\n itemSummary,\r\n }\r\n :\r\n {\r\n itemSummary: Array\r\n }\r\n) => {\r\n const summary = itemSummary.map((iSum) => (\r\n
    \r\n
    \r\n

    {iSum.heading}

    \r\n
    \r\n
      \r\n {iSum.items.map((item) => (\r\n
    • {item}
    • \r\n ))}\r\n
    \r\n
    \r\n ));\r\n return (\r\n \r\n {summary}\r\n \r\n );\r\n};\r\n\r\nexport default ProductsAndServicesSummary;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { StaticOption } from \"../../Hooks/staticData/interfaces/StaticDataOption\";// eslint-disable-line no-unused-vars\r\nimport { UnspscSegment, UnspscFamily } from \"../../Hooks/staticData/useStaticData\";// eslint-disable-line no-unused-vars\r\nimport { createGlobalProductServiceSummary, getUnspscInfo } from \"../../utils/dataTransform\";\r\nimport StaticDataTypes from \"../../utils/enums/StaticDataTypes\";\r\nimport ProductsAndServicesSummary from \"../ProductsAndServicesSummary/ProductsAndServicesSummary\";\r\n\r\nconst GlobalProductsAndServicesList = (\r\n {\r\n selectedUnspscFamilyIds,\r\n getStaticDataCallback,\r\n }\r\n :\r\n {\r\n selectedUnspscFamilyIds: number[],\r\n getStaticDataCallback: (optionsToLoad: StaticDataTypes[]) => [StaticOption[][], boolean]\r\n }\r\n) => {\r\n const [[unspscSegments, unspscFamilies], isReady] = getStaticDataCallback(\r\n [StaticDataTypes.UnspscSegment, StaticDataTypes.UnspscFamily]\r\n );\r\n\r\n const [itemSummary, setItemSummary] = useState>([]);\r\n\r\n useEffect(() => {\r\n const info = getUnspscInfo(\r\n unspscSegments as any as Array,\r\n unspscFamilies as any as Array\r\n );\r\n\r\n const summary: Array<{ heading: string, items: string[] }> = isReady\r\n ? createGlobalProductServiceSummary(\r\n selectedUnspscFamilyIds,\r\n info ?? []\r\n )\r\n : [];\r\n setItemSummary(summary);\r\n }, [unspscSegments, unspscFamilies, selectedUnspscFamilyIds, isReady]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default GlobalProductsAndServicesList;\r\n","import React from \"react\";\r\n\r\nconst Page = (\r\n { children, noPadding = false }\r\n :\r\n {children: React.ReactNode, noPadding?: boolean}\r\n) => (\r\n
    \r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default Page;\r\n","import { useLocation, useHistory } from \"react-router-dom\";\r\nimport { useRef, useCallback } from \"react\";\r\n\r\nconst changeQue: Array<{ shortName: string, jsonString: string | null }> = [];\r\nconst forceQue: { [key: string]: boolean | undefined } = {};\r\nlet newSearchParam: URLSearchParams | null = null;\r\n\r\nconst useRouteState = (shortName: string, defaultValue: T)\r\n : [T, (newValue: T, config?: { forceUpdate: boolean }) => void, () => void] => {\r\n const currentValue = useRef();\r\n const currentStringValue = useRef(null);\r\n\r\n const location = useLocation();\r\n\r\n const history = useHistory();\r\n\r\n const params = new URLSearchParams(location.search);\r\n\r\n const stringValue = params.get(shortName);\r\n const value: T = stringValue == null ? defaultValue : JSON.parse(stringValue);\r\n\r\n const forceLoad = forceQue[shortName];\r\n // clear force que\r\n forceQue[shortName] = undefined;\r\n\r\n if (forceLoad || currentValue.current == null || currentStringValue.current !== stringValue) {\r\n currentValue.current = value;\r\n currentStringValue.current = stringValue;\r\n }\r\n\r\n const processQue = useCallback(() => {\r\n // now handle que\r\n if (changeQue.length > 0) {\r\n const toApply = changeQue.pop();\r\n if (toApply != null) {\r\n if (toApply.jsonString == null) {\r\n newSearchParam?.delete(toApply.shortName);\r\n } else {\r\n newSearchParam?.set(toApply.shortName, toApply.jsonString);\r\n }\r\n }\r\n }\r\n\r\n if (changeQue.length === 0) {\r\n // last call changes the route\r\n history.push({\r\n pathname: history.location.pathname,\r\n search: newSearchParam?.toString(),\r\n });\r\n }\r\n }, [history]);\r\n\r\n const setFunction = useCallback(async (\r\n newValue: T,\r\n { forceUpdate }: { forceUpdate?: boolean } = {}\r\n ) => {\r\n newSearchParam = new URLSearchParams(history.location.search);\r\n\r\n const jsonString = JSON.stringify(newValue);\r\n changeQue.push({ shortName, jsonString });\r\n if (forceUpdate) {\r\n forceQue[shortName] = true;\r\n }\r\n\r\n // break thread\r\n // this is to allow multiple calls to update at the same time\r\n // everything before this will be called, and then everything after\r\n await new Promise((r) => r());\r\n\r\n processQue();\r\n }, [shortName, history, processQue]);\r\n\r\n const clearFunction = useCallback(async () => {\r\n newSearchParam = new URLSearchParams(history.location.search);\r\n changeQue.push({ shortName, jsonString: null });\r\n\r\n // break thread\r\n // this is to allow multiple calls to update at the same time\r\n // everything before this will be called, and then everything after\r\n await new Promise((r) => r());\r\n\r\n processQue();\r\n }, [shortName, history, processQue]);\r\n\r\n return [currentValue.current, setFunction, clearFunction];\r\n};\r\n\r\nexport default useRouteState;\r\n","// eslint-disable-next-line no-unused-vars\r\nimport React, { Fragment } from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport SystemFeatures from \"../../../utils/enums/SystemFeatures\";\r\n\r\nexport interface TabProps {\r\n name: string,\r\n slug: string,\r\n feature?: SystemFeatures\r\n children: React.ReactNode,\r\n}\r\n\r\nconst Tab = ({ children }: TabProps) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nexport default Tab;\r\n","import React, {\r\n Fragment,\r\n // eslint-disable-next-line no-unused-vars\r\n ReactElement, useEffect, useMemo,\r\n} from \"react\";\r\nimport UtilButton from \"../../Components/UtilButton/UtilButton\";\r\nimport useRouteState from \"../../Hooks/useRouteState\";\r\nimport { useSystemFeatureCheck } from \"../../Hooks/useSystemFeatureCheck\";\r\nimport Tab, {\r\n // eslint-disable-next-line no-unused-vars\r\n TabProps,\r\n} from \"./Tab/Tab\";\r\n\r\nconst Tabs = (\r\n {\r\n children,\r\n onTabChange,\r\n }\r\n :\r\n {\r\n children: ReactElement | ReactElement[],\r\n onTabChange?: (tabSlug: string) => void,\r\n }\r\n) => {\r\n const featureCheck = useSystemFeatureCheck();\r\n const [currentTab, setCurrentTab] = useRouteState(\"tab\", \"\");\r\n\r\n if (!React.Children.toArray(children).every((c: ReactElement) => c.type === Tab)) {\r\n throw new Error(\"Tabs can only have Tab children\");\r\n }\r\n\r\n const tabsProps = useMemo(\r\n () => React.Children.map(children, (c) => c.props), [children]\r\n );\r\n const tabsContent = React.Children.toArray(children);\r\n\r\n const isTabAllowed = (props?: TabProps) => props?.feature == null || featureCheck(props.feature);\r\n\r\n const notAllowed = useMemo(\r\n () => tabsProps.find((props) => isTabAllowed(props)) == null,\r\n [tabsProps]\r\n );\r\n\r\n useEffect(() => {\r\n const currentTabProps = tabsProps.find((p) => p.slug === currentTab);\r\n if (currentTabProps == null || currentTab === \"\") {\r\n setCurrentTab(tabsProps[0].slug);\r\n return;\r\n }\r\n\r\n // make sure tab is allowed, otherwise find first allowed tab\r\n if (!isTabAllowed(currentTabProps)) {\r\n // first allowed tab\r\n const firstAllowedTab = tabsProps.find((props) => isTabAllowed(props));\r\n if (firstAllowedTab != null) {\r\n setCurrentTab(firstAllowedTab?.slug);\r\n }\r\n }\r\n }, [currentTab, setCurrentTab, children, tabsProps]);\r\n\r\n const currentTabContent = useMemo(() => {\r\n const index = tabsProps.findIndex((p) => p.slug === currentTab);\r\n return tabsContent[index];\r\n }, [currentTab, children]);\r\n\r\n useEffect(() => {\r\n if (onTabChange == null) {\r\n return;\r\n }\r\n\r\n onTabChange(currentTab);\r\n }, [currentTab]);\r\n\r\n return (\r\n \r\n {notAllowed ?

    ACCESS DENIED

    \r\n : (\r\n \r\n
    \r\n
    \r\n {tabsProps.map((props) => (\r\n setCurrentTab(props.slug)}\r\n disabled={!isTabAllowed(props)}\r\n feature={props.feature}\r\n >\r\n {props.name}\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n {currentTabContent}\r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport * from \"./Tab/Tab\";\r\nexport { default as Tab } from \"./Tab/Tab\";\r\nexport default Tabs;\r\n","import React, {\r\n useRef, useState, Fragment, useEffect,\r\n} from \"react\";\r\nimport UtilButton from \"../UtilButton/UtilButton\";\r\nimport Styles from \"./DragDropFileUpload.module.scss\";\r\nimport { ReactComponent as ExcelLogoSvg } from \"./solid_file_excel.svg\";\r\nimport { ReactComponent as CloudLogoSvg } from \"./cloud_upload.svg\";\r\nimport { ReactComponent as UnknownFileLogoSvg } from \"./file-regular.svg\";\r\n\r\nexport const excelFileTypes = [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \"application/vnd.ms-excel\"];\r\nexport const pdfFileTypes = [\"application/pdf\", \"application/x-pdf\", \"application/x-bzpdf\", \"application/x-gzpdf\"];\r\n\r\nconst DragDropFileUpload = ({\r\n multiple = false, // mutiple files ?\r\n acceptedFormats,\r\n labelText = \"Drop file(s) here\",\r\n onUpdateFilesCallback,\r\n onRemoveFileCallback,\r\n}: {\r\n multiple?: boolean,\r\n acceptedFormats: \".xlsx\" | \".pdf\" | undefined,\r\n labelText?: string\r\n onUpdateFilesCallback: (input : Array | File) => void,\r\n onRemoveFileCallback?: (input: File) => void,\r\n}) => {\r\n const [files, setFiles] = useState>([]);\r\n const fileInputField = useRef(null);\r\n const [dragDetected, setDragDetected] = useState(false);\r\n const [invalidFileDetected, setInvalidFileDetected] = useState(false);\r\n\r\n const handleDragLeave = () => {\r\n setDragDetected(false);\r\n };\r\n\r\n const handleDragOver = () => {\r\n setDragDetected(true);\r\n };\r\n\r\n const validateFileType = (file: File) => {\r\n let result = true;\r\n switch (acceptedFormats) {\r\n case \".xlsx\":\r\n result = file.type === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n break;\r\n case \".pdf\":\r\n result = pdfFileTypes.includes(file.type);\r\n break;\r\n default:\r\n result = true;\r\n }\r\n return result;\r\n };\r\n\r\n const handleNewFileUpload = (newFiles: Array) => {\r\n setInvalidFileDetected(false);\r\n const invalidFilesFound = newFiles.find((file) => validateFileType(file) === false);\r\n if (invalidFilesFound) {\r\n setInvalidFileDetected(true);\r\n return;\r\n }\r\n\r\n if (newFiles.length > 0) {\r\n // add new files or delete based on mutiple input\r\n if (multiple) {\r\n setFiles((prevState) => [...prevState, ...newFiles]);\r\n onUpdateFilesCallback(newFiles);\r\n } else {\r\n setFiles([newFiles[0]]);\r\n onUpdateFilesCallback(newFiles[0]);\r\n }\r\n }\r\n };\r\n\r\n const handleUploadBtnClick = () => {\r\n if (fileInputField.current != null) {\r\n fileInputField.current.click();\r\n }\r\n };\r\n\r\n const onHandleRemoveFile = (file : File) => {\r\n multiple\r\n ? setFiles((prevState) => prevState.filter((f) => f !== file))\r\n // clear all if multiple\r\n : setFiles([]);\r\n\r\n if (onRemoveFileCallback != null) {\r\n onRemoveFileCallback(file);\r\n }\r\n };\r\n\r\n const getFileLogoSrc = (fileType: string, className: string) => {\r\n if (excelFileTypes.includes(fileType)) { return ; }\r\n return ;\r\n };\r\n\r\n useEffect(() => {\r\n }, [fileInputField, files, invalidFileDetected]);\r\n\r\n useEffect(() => {\r\n }, [onHandleRemoveFile]);\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n handleNewFileUpload(Array.from(e.target.files ?? []))}\r\n multiple={multiple}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n {labelText}\r\n \r\n BROWSE\r\n
    \r\n
    \r\n {\r\n invalidFileDetected && (\r\n
    \r\n \r\n Error: Attempted to upload an invalid file type.\r\n \r\n
    \r\n )\r\n }\r\n
    \r\n {files?.map((file, index) => (\r\n
    \r\n {getFileLogoSrc(file.type, `mx-2 ${Styles.FileIcon} text-secondary`)}\r\n \r\n \r\n {file.name}\r\n \r\n \r\n {\" \"}\r\n {\r\n e.preventDefault();\r\n onHandleRemoveFile(file);\r\n }}\r\n >\r\n REMOVE\r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DragDropFileUpload;\r\n","export const SHOW_LOADING_SCREEN = \"SHOW_LOADING_SCREEN\";\r\n\r\nexport const HIDE_LOADING_SCREEN = \"HIDE_LOADING_SCREEN\";\r\n\r\nexport const ON_STAFF_CONTACT_INPUT_CHANGE = \"ON_STAFF_CONTACT_INPUT_CHANGE\";\r\n\r\nexport const ON_ADDRESS_INFO_CHANGE = \"ON_ADDRESS_INFO_CHENGE\";\r\n\r\nexport const SHOW_INFO_POPUP = \"SHOW_INFO_POPUP\";\r\n\r\nexport const HIDE_INFO_POPUP = \"HIDE_INFO_POPUP\";\r\n\r\nexport const SET_STORE_PROPERTY = \"SET_STORE_PROPERTY\";\r\n\r\nexport const SET_LAST_STEP_COMPLETED = \"SET_LAST_STEP_COMPLETED\";\r\n\r\nexport const LOG_OUT = \"LOG_OUT\";\r\n\r\nexport const SET_USER_BASIC_DETAILS = \"SET_USER_BASIC_DETAILS\";\r\n\r\nexport const SET_COMPANY_CONFIGURATION = \"SET_COMPANY_CONFIGURATION\";\r\n\r\nexport const SET_COMPANY_OUTSTANDING_INFO = \"SET_COMPANY_OUTSTANDING_INFO\";\r\n\r\nexport const SET_DATA_FEATURES = \"SET_DATA_FEATURES\";\r\n\r\nexport const SET_SUBSCRIPTIONS_ALLOWED_FEATURES = \"SET_SUBSCRIPTIONS_ALLOWED_FEATURES\";\r\n\r\nexport const SET_BUYER_COMPANY_ID = \"SET_BUYER_COMPANY_ID\";\r\n\r\nexport const SHOW_ERROR = \"SHOW_ERROR\";\r\n\r\nexport const CLEAR_API_ERRORS = \"CLEAR_API_ERRORS\";\r\n\r\nexport const SET_STATIC_COMPANY_DATA = \"SET_STATIC_COMPANY_DATA\";\r\n\r\nexport const SET_STATIC_DATA = \"SET_STATIC_DATA\";\r\n\r\nexport const SET_SUBSCRIPTION_INFO = \"SET_SUBSCRIPTION_INFO\";\r\n\r\nexport const SET_NOT_AUTHENTICATED = \"SET_NOT_AUTHENTICATED\";\r\n\r\nexport const SET_FORCE_LOGOUT = \"SET_FORCE_LOGOUT\";\r\n\r\nexport const SET_TOKEN_EXPIRATION = \"SET_TOKEN_EXPIRATION\";\r\n\r\nexport const ADD_API_ERROR = \"ADD_API_ERROR\";\r\n\r\nexport function showLoadingScreen(loadingScreenMsg) {\r\n return {\r\n type: SHOW_LOADING_SCREEN,\r\n payload: {\r\n loadingScreenMsg,\r\n },\r\n };\r\n}\r\n\r\nexport function hideLoadingScreen() {\r\n return {\r\n type: HIDE_LOADING_SCREEN,\r\n };\r\n}\r\n\r\nexport function onStaffContactInfoChange(newEntry) {\r\n return {\r\n type: ON_STAFF_CONTACT_INPUT_CHANGE,\r\n payload: {\r\n newEntry,\r\n },\r\n };\r\n}\r\n\r\nexport function onAddressInfoChange(category, ev) {\r\n return {\r\n type: ON_ADDRESS_INFO_CHANGE,\r\n payload: {\r\n category,\r\n name: ev.target.name,\r\n value: ev.target.value,\r\n },\r\n };\r\n}\r\n\r\nexport function setStoreProperty(propName, value) {\r\n return {\r\n type: SET_STORE_PROPERTY,\r\n payload: {\r\n propName,\r\n value,\r\n },\r\n };\r\n}\r\n\r\nexport function showInfoPopup(heading, subheading, msgs) {\r\n return {\r\n type: SHOW_INFO_POPUP,\r\n payload: {\r\n heading,\r\n subheading,\r\n msgs,\r\n },\r\n };\r\n}\r\n\r\nexport function hideInfoPopup() {\r\n return {\r\n type: HIDE_INFO_POPUP,\r\n };\r\n}\r\n\r\nexport function setLastStepCompleted(value) {\r\n return {\r\n type: SET_LAST_STEP_COMPLETED,\r\n payload: {\r\n value,\r\n },\r\n };\r\n}\r\n\r\nexport function setUserBasicDetails(userBasicDetails) {\r\n return {\r\n type: SET_USER_BASIC_DETAILS,\r\n payload: userBasicDetails,\r\n };\r\n}\r\n\r\nexport function setCompanyConfiguration(companyConfiguration) {\r\n return {\r\n type: SET_COMPANY_CONFIGURATION,\r\n payload: companyConfiguration,\r\n };\r\n}\r\n\r\nexport function setCompanyOutstandingInfo(companyOutstandingInfo) {\r\n return {\r\n type: SET_COMPANY_OUTSTANDING_INFO,\r\n payload: companyOutstandingInfo,\r\n };\r\n}\r\n\r\nexport function setDataFeatures(dataFeatures) {\r\n return {\r\n type: SET_DATA_FEATURES,\r\n payload: dataFeatures,\r\n };\r\n}\r\n\r\nexport function setSubscriptionAllowedFeatures(subscriptionsAllowedFeatures) {\r\n return {\r\n type: SET_SUBSCRIPTIONS_ALLOWED_FEATURES,\r\n payload: subscriptionsAllowedFeatures,\r\n };\r\n}\r\n\r\nexport function logOut() {\r\n return {\r\n type: LOG_OUT,\r\n };\r\n}\r\n\r\nexport function showErrorDialog(value) {\r\n return {\r\n type: SHOW_ERROR,\r\n payload: value,\r\n };\r\n}\r\n\r\nexport function clearApiErrors() {\r\n return {\r\n type: CLEAR_API_ERRORS,\r\n };\r\n}\r\n\r\nexport function setStaticCompanyData(optionsToSet) {\r\n return {\r\n type: SET_STATIC_COMPANY_DATA,\r\n payload: optionsToSet,\r\n };\r\n}\r\n\r\nexport function setStaticData(optionsToSet) {\r\n return {\r\n type: SET_STATIC_DATA,\r\n payload: optionsToSet,\r\n };\r\n}\r\n\r\nexport function setSubscriptionInfo(payload) {\r\n return {\r\n type: SET_SUBSCRIPTION_INFO,\r\n payload,\r\n };\r\n}\r\n\r\nexport function setNotAuthenticated(retryHandler) {\r\n return {\r\n type: SET_NOT_AUTHENTICATED,\r\n payload: {\r\n isAuthenticated: false,\r\n retryHandler,\r\n },\r\n };\r\n}\r\n\r\nexport function forceLogout() {\r\n return {\r\n type: SET_FORCE_LOGOUT,\r\n payload: true,\r\n };\r\n}\r\n\r\nexport function clearNotAuthenticated() {\r\n return {\r\n type: SET_NOT_AUTHENTICATED,\r\n payload: {\r\n isAuthenticated: true,\r\n },\r\n };\r\n}\r\n\r\nexport function setTokenDates(createdAt, expiresAt) {\r\n return {\r\n type: SET_TOKEN_EXPIRATION,\r\n payload: {\r\n createdAt,\r\n expiresAt,\r\n },\r\n };\r\n}\r\n\r\nexport function addApiError(apiError) {\r\n return {\r\n type: ADD_API_ERROR,\r\n payload: {\r\n apiError,\r\n },\r\n };\r\n}\r\n","import axios from \"axios\";\r\nimport store from \"../Store/index\";\r\nimport { setNotAuthenticated, setTokenDates, forceLogout } from \"../Store/actions\";\r\nimport { checkHttpStatus } from \"./httpHelpers\";\r\n\r\nexport async function makeRequest(\r\n reqFunction,\r\n onSuccess,\r\n onError = null,\r\n bypassAuthCheck = false\r\n) {\r\n // check token for expiry\r\n const { tokenCreationDate, tokenExpirationDate } = store.getState().authentication;\r\n if (tokenCreationDate != null && tokenExpirationDate != null) {\r\n // check if we are half way to expiration\r\n const remainingTime = tokenExpirationDate - new Date();\r\n const totalWindow = tokenExpirationDate - tokenCreationDate;\r\n\r\n if (remainingTime < 0 || remainingTime < totalWindow / 2) {\r\n // refresh token\r\n try {\r\n const response = await axios.get(\"/api/token/refresh\");\r\n store.dispatch(setTokenDates(new Date(), new Date(response.data)));\r\n } catch (error) {\r\n // eslint-disable-next-line no-console\r\n console.error(\"Failed to refresh token\", error);\r\n }\r\n }\r\n }\r\n\r\n reqFunction()\r\n .then((res) => {\r\n try {\r\n onSuccess(res.data);\r\n } catch (err) {\r\n // eslint-disable-next-line no-console\r\n console.log(err);\r\n }\r\n })\r\n .catch((err) => {\r\n if (!bypassAuthCheck\r\n && ((err && err.response && checkHttpStatus(err, 401))\r\n || (err\r\n && err.response\r\n && err.response.data\r\n && err.response.data.status === 401)\r\n )) {\r\n store.dispatch(setNotAuthenticated(() => {\r\n // authentication request has finished\r\n makeRequest(reqFunction, onSuccess, onError);\r\n }));\r\n return;\r\n }\r\n // eslint-disable-next-line no-console\r\n console.log(err);\r\n\r\n if (onError) {\r\n onError(err);\r\n }\r\n });\r\n}\r\n\r\nexport async function makeRequestAsync(reqFunction, bypassAuthCheck = false) {\r\n return new Promise((\r\n resolve, reject\r\n ) => makeRequest(reqFunction, resolve, reject, bypassAuthCheck));\r\n}\r\n\r\nexport async function refreshTokenInternal(url) {\r\n try {\r\n await axios.get(url);\r\n } catch (error) {\r\n // refreshing failed, set session as expired and force refreshing cookies\r\n store.dispatch(setNotAuthenticated(async () => {\r\n try {\r\n await axios.get(url);\r\n } catch (retryError) {\r\n // refreshing does not work, now logout\r\n // eslint-disable-next-line no-console\r\n console.error(\"Could not refresh token \", retryError);\r\n store.dispatch(forceLogout());\r\n }\r\n }));\r\n }\r\n}\r\n","export * from \"./gets\";\r\nexport * from \"./posts\";\r\nexport * from \"./puts\";\r\nexport * from \"./deletes\";\r\nexport * from \"./Compliance/complianceApi\";\r\nexport * from \"./UserManagement/userManagementApi\";\r\nexport * from \"./Contracting/contractingApi\";\r\nexport * from \"./Search/searchApi\";\r\nexport * from \"./MyCompany/myCompanyAPI\";\r\n","import { useDispatch } from \"react-redux\";\r\nimport { useCallback } from \"react\";\r\nimport { showErrorDialog } from \"../Store/actions\";\r\n\r\nconst useShowError = () => {\r\n const dispatch = useDispatch();\r\n const handler = useCallback(() => {\r\n dispatch(showErrorDialog(true));\r\n }, [dispatch]);\r\n\r\n return handler;\r\n};\r\n\r\nexport default useShowError;\r\n","export const SET_REFERENCES = \"SET_REFERENCES\";\r\n\r\nexport const SET_REGISTRATION_INFO = \"SET_REGISTRATION_INFO\";\r\n\r\nexport const SET_SUPPLIER_CATEGORIES = \"SET_SUPPLIER_CATEGORIES\";\r\n\r\nexport const SET_UNSPSC_FAMILIES = \"SET_UNSPSC_FAMILIES\";\r\n\r\nexport const SET_POSTAL_ADDRESS = \"SET_POSTAL_ADDRESS\";\r\n\r\nexport const SET_SHAREHOLDER_DETAILS = \"SET_SHAREHOLDER_DETAILS\";\r\n\r\nexport const ON_REGISTRATION_INPUT_CHANGE = \"ON_REGISTRATION_INPUT_CHANGE\";\r\n\r\nexport function setReferences(references) {\r\n return {\r\n type: SET_REFERENCES,\r\n payload: {\r\n references,\r\n },\r\n };\r\n}\r\n\r\nexport function setRegistrationObject(objName, objVal) {\r\n return {\r\n type: SET_REGISTRATION_INFO,\r\n payload: {\r\n objName,\r\n objVal,\r\n },\r\n };\r\n}\r\n\r\nexport function setSupplierCategories(newSelection) {\r\n return {\r\n type: SET_SUPPLIER_CATEGORIES,\r\n payload: {\r\n newSelection,\r\n },\r\n };\r\n}\r\n\r\nexport function setUnspscFamilies(newSelection) {\r\n return {\r\n type: SET_UNSPSC_FAMILIES,\r\n payload: {\r\n newSelection,\r\n },\r\n };\r\n}\r\n\r\nexport function setPostalAddress(physicalAddress) {\r\n return {\r\n type: SET_POSTAL_ADDRESS,\r\n payload: {\r\n physicalAddress,\r\n },\r\n };\r\n}\r\n\r\nexport function setShareholderDetails(shareholderDetails) {\r\n return {\r\n type: SET_SHAREHOLDER_DETAILS,\r\n payload: {\r\n shareholderDetails,\r\n },\r\n };\r\n}\r\n\r\nexport function onRegistrationInputChange(stage, ev) {\r\n return {\r\n type: ON_REGISTRATION_INPUT_CHANGE,\r\n payload: {\r\n stage,\r\n fieldName: ev.target.name,\r\n fieldValue: ev.target.value,\r\n },\r\n };\r\n}\r\n","export const getStaticValue = (\r\n value: number | string,\r\n options: {value: number | string, display: string}[] = []\r\n) => {\r\n const referencedOption = options.find((v) => v.value === value);\r\n return referencedOption == null ? value : referencedOption.display;\r\n};\r\n\r\nexport const formatDate = (date: Date | string | number) => {\r\n const dateObject = new Date(date);\r\n return `${dateObject.getDate()} ${dateObject.toLocaleString(\"default\", {\r\n month: \"short\",\r\n })} ${dateObject.getFullYear()}`;\r\n};\r\n\r\nexport const formatCurrency = (amount: number) => {\r\n const stringValue = amount.toFixed(2);\r\n const withThousandSeparator = stringValue.replace(\r\n /(\\d)(?=(\\d{3})+(?!\\d))/g,\r\n \"$1,\"\r\n );\r\n\r\n return `R${withThousandSeparator}`;\r\n};\r\n\r\nexport const formatPercentage = (value: number) => `${value} %`;\r\n\r\nexport const dateTimeLabelFormat = (date: Date | string | number) => {\r\n // returns mmm dd - hh:mm:pp . E.g.: Apr 02 - 12:05pm\r\n const dateObject = new Date(date);\r\n const monthShortString = dateObject.toLocaleDateString(\"default\", { month: \"short\" });\r\n const dayString = dateObject.getDate() < 10 ? `0${dateObject.getDate().toString()}` : dateObject.getDate().toString();\r\n const hh = dateObject.getHours();\r\n const hhString = hh > 12 ? (hh - 12).toString() : hh.toString();\r\n const mm = dateObject.getMinutes();\r\n const mmString = mm < 10 ? `0${mm.toString()}` : mm.toString();\r\n const timePeriod = hh > 12 ? \"pm\" : \"am\";\r\n const datetimeFormat = `${monthShortString} ${dayString} - ${hhString}:${mmString} ${timePeriod}`;\r\n\r\n return (datetimeFormat);\r\n};\r\n\r\nexport const dateTimeDayMonthLabelFormat = (date: Date | string | number) => {\r\n // returns mmm dd - hh:mm:pp . E.g.: 02 Apr\r\n const dateObject = new Date(date);\r\n const monthShortString = dateObject.toLocaleDateString(\"default\", { month: \"short\" });\r\n const dayString = dateObject.getDate() < 10 ? `0${dateObject.getDate().toString()}` : dateObject.getDate().toString();\r\n const datetimeFormat = `${dayString} ${monthShortString}`;\r\n\r\n return (datetimeFormat);\r\n};\r\n","import { hasFeature, SystemFeatures } from \"isuppli-react-components\";\r\n\r\nenum ComplianceStatus {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n AwaitingResults = 1, // eslint-disable-line no-unused-vars\r\n ReceivedResults = 2, // eslint-disable-line no-unused-vars\r\n Complete = 3, // eslint-disable-line no-unused-vars\r\n Disabled = 4, // eslint-disable-line no-unused-vars\r\n Error = 100 // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const complianceStatusToString = (value: ComplianceStatus) => {\r\n switch (value) {\r\n case ComplianceStatus.None:\r\n return \"None\";\r\n case ComplianceStatus.AwaitingResults:\r\n return \"Outstanding\";\r\n case ComplianceStatus.ReceivedResults:\r\n return \"Results received\";\r\n case ComplianceStatus.Complete:\r\n return \"Passed\";\r\n case ComplianceStatus.Disabled:\r\n return \"N/A\";\r\n case ComplianceStatus.Error:\r\n return \"Failed\";\r\n default:\r\n return \"Unknown Status\";\r\n }\r\n};\r\n\r\nexport const getComplianceStatusTextClass = (\r\n status: ComplianceStatus = ComplianceStatus.None, feature?: SystemFeatures\r\n):string => {\r\n if (feature != null && !hasFeature(feature, SystemFeatures.ColourIndicators)) {\r\n return \"\";\r\n }\r\n switch (status) {\r\n case ComplianceStatus.None:\r\n return \"text-body\";\r\n case ComplianceStatus.AwaitingResults:\r\n return \"text-body\";\r\n case ComplianceStatus.ReceivedResults:\r\n return \"text-body\";\r\n case ComplianceStatus.Complete:\r\n return \"text-success\";\r\n case ComplianceStatus.Error:\r\n return \"text-danger\";\r\n default:\r\n return \"text-body\";\r\n }\r\n};\r\n\r\nexport const getComplianceStatusBadgeColor = (\r\n value: ComplianceStatus\r\n): string => {\r\n switch (value) {\r\n case ComplianceStatus.None:\r\n return \"secondary\";\r\n case ComplianceStatus.AwaitingResults:\r\n return \"secondary\";\r\n case ComplianceStatus.ReceivedResults:\r\n return \"secondary\";\r\n case ComplianceStatus.Complete:\r\n return \"success\";\r\n case ComplianceStatus.Error:\r\n return \"danger\";\r\n default:\r\n return \"secondary\";\r\n }\r\n};\r\n\r\nexport default ComplianceStatus;\r\n","import axios from \"axios\";\r\nimport { makeRequest, makeRequestAsync } from \"./util\";\r\n\r\nexport function saveSupplierInfo(supplierInfo, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/supplierinfo\", supplierInfo), onSuccess, onError);\r\n}\r\n\r\nexport function saveSupplierInfoAsync(supplierInfo) {\r\n return makeRequestAsync(() => axios.post(\"/api/registration/supplierinfo\", supplierInfo));\r\n}\r\n\r\nexport function getSupplierInfoMatches(uniqueCompanyIdentifier, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/supplierinfomatches\", uniqueCompanyIdentifier), onSuccess, onError);\r\n}\r\n\r\nexport function saveProductServiceOffering(productServiceOfferings, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/offerings\", productServiceOfferings), onSuccess, onError);\r\n}\r\n\r\nexport async function saveBankingDetails(bankDetails, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/bankdetails\", bankDetails), onSuccess, onError);\r\n}\r\n\r\nexport async function saveBankingDetailsAsync(bankDetails) {\r\n return makeRequestAsync(() => axios.post(\"/api/registration/bankdetails\", bankDetails));\r\n}\r\n\r\nexport function saveAddressInfo(addressInfo, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/addressinfo\", addressInfo), onSuccess, onError);\r\n}\r\n\r\nexport function saveKeyStaffContactDetails(contactDetails, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/keycontactstaff\", contactDetails), onSuccess, onError);\r\n}\r\n\r\nexport function saveBeeCertificationInfo(beeCertificationInfo, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/beeratings\", beeCertificationInfo), onSuccess, onError);\r\n}\r\n\r\nexport function saveDocumentsInfo(documents, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/documents\", documents), onSuccess, onError);\r\n}\r\n\r\nexport function saveCurrentSubscription(pt, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/producttier\", pt), onSuccess, onError);\r\n}\r\n\r\nexport function saveTermsAndConditions(tcs, onSuccess, onError) {\r\n makeRequest(() => axios.post(\"/api/registration/termsconditions\", tcs), onSuccess, onError);\r\n}\r\n\r\nexport function saveCommunicationPreference(receiveMarketingInfo, onSuccess, onError) {\r\n return makeRequestAsync(() => axios.post(`/api/user/communicationpreferences?receiveMarketingInfo=${receiveMarketingInfo}`), onSuccess, onError);\r\n}\r\n\r\nexport async function sendCompanyDuplicateEmail(contactInfo) {\r\n return makeRequestAsync(() => axios.post(\"/api/registration/sendcompanyduplicateemail\", contactInfo));\r\n}\r\n\r\nexport async function sendSubscriptionEnquirySupportEmail(selectedTierId) {\r\n makeRequestAsync(() => axios.post(`/api/registration/subscriptionenquiry/${selectedTierId}`));\r\n}\r\n\r\nexport async function getOnboardingRequests(searchCriteria) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/onboardingrequests/search\", searchCriteria));\r\n}\r\n\r\nexport async function saveOnboardingRequest(onboardingRequest, saveOnly = false) {\r\n return makeRequestAsync(() => axios.post(`/api/motivation/onboardingrequests?saveOnly=${saveOnly}`, onboardingRequest));\r\n}\r\n\r\nexport async function submitOnboardingRequest(onboardingRequest) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/submitonboarding\", onboardingRequest));\r\n}\r\n\r\nexport async function addNewSupplierOnboarding(newSupplier) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/submitsupplieronboarding\", newSupplier));\r\n}\r\n\r\nexport async function createOnboardingRequestsForSuppliers(supplierIds) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/new\", supplierIds));\r\n}\r\n\r\nexport async function sendCompanySearch(searchObject) {\r\n return makeRequestAsync(() => axios.post(\"/api/search/companies\", searchObject));\r\n}\r\n\r\nexport async function sendLargeCompanySearch(searchObject) {\r\n return makeRequestAsync(() => axios.post(\"/api/search/companies/largevolume\", searchObject));\r\n}\r\n\r\nexport async function submitSupplierExportRequest() {\r\n return makeRequestAsync(() => axios.post(\"/api/reporting/supplierExport/submitSupplierExportRequest\"));\r\n}\r\n\r\nexport async function sendComplianceCheckSearch(searchObject) {\r\n return makeRequestAsync(() => axios.post(\"/api/search/complianceChecks\", searchObject));\r\n}\r\n\r\nexport async function sendMyClientsSearch(searchObject) {\r\n return makeRequestAsync(() => axios.post(\"/api/search/supplierClients\", searchObject));\r\n}\r\n\r\nexport async function resolveDuplicateRequest(onboardingRequest) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/duplicates/resolved\", onboardingRequest));\r\n}\r\n\r\nexport async function addBusinessUnitsForExistingSupplier(addBusinessUnitMessage) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/addbusinessunits\", addBusinessUnitMessage));\r\n}\r\n\r\nexport async function addSubAccount(subAccountMessage) {\r\n return makeRequestAsync(() => axios.post(\"/api/registration/subaccount/new\", subAccountMessage));\r\n}\r\n\r\nexport async function editSubAccount(id, subAccountMessage) {\r\n return makeRequestAsync(() => axios.post(`/api/registration/subaccount/${id}`, subAccountMessage));\r\n}\r\n\r\nexport async function duplicateCompanyIntoManualSupplier(onboardingRequest) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/duplicate\", onboardingRequest));\r\n}\r\n\r\nexport async function addComment(comment) {\r\n return makeRequestAsync(() => axios.post(\"/api/motivation/addComment\", comment));\r\n}","import { MenuItem, SystemFeatures } from \"isuppli-react-components\"; // eslint-disable-line no-unused-vars\r\n\r\nconst navMenuItems: Array = [\r\n {\r\n title: \"Home\",\r\n to: \"/dashboard\",\r\n },\r\n {\r\n title: \"Virtual Marketplace\",\r\n to: \"/marketplace\",\r\n children: [\r\n {\r\n title: \"Find Companies\",\r\n to: \"search\",\r\n feature: SystemFeatures.SupplierSearch,\r\n },\r\n {\r\n title: \"Bulletin board (eRFx)\",\r\n to: \"/redirect/bulletinboard\",\r\n redirect: true,\r\n feature:\r\n SystemFeatures.None, // eslint-disable-line no-bitwise\r\n },\r\n {\r\n title: \"Messaging\",\r\n to: \"messaging\",\r\n feature: SystemFeatures.Messaging,\r\n },\r\n ],\r\n },\r\n {\r\n title: \"My Company\",\r\n to: \"/mycompany\",\r\n subMenuOffset: 2,\r\n children: [\r\n {\r\n title: \"Company Profile\",\r\n to: \"profile\",\r\n feature: SystemFeatures.CompanyProfile,\r\n },\r\n {\r\n title: \"My Compliance\",\r\n to: \"compliance\",\r\n feature: SystemFeatures.OngoingCompliance,\r\n },\r\n // {\r\n // title: \"Enterprise Configuration\",\r\n // to: \"configuration\",\r\n // feature: SystemFeatures.EnterpriseConfig,\r\n // },\r\n {\r\n title: \"Configuration\",\r\n to: \"configuration\",\r\n feature: SystemFeatures.Configuration,\r\n },\r\n {\r\n title: \"Manage Users\",\r\n to: \"user-management\",\r\n feature: SystemFeatures.UserManagement,\r\n },\r\n {\r\n title: \"My Subscription\",\r\n to: \"subscription\",\r\n feature: SystemFeatures.Subscriptions,\r\n },\r\n {\r\n title: \"Audit Trail\",\r\n to: \"/redirect/audit\",\r\n redirect: true,\r\n feature: SystemFeatures.AuditTrails,\r\n },\r\n ],\r\n },\r\n {\r\n title: \"My Office\",\r\n to: \"/myoffice\",\r\n subMenuOffset: 2,\r\n children: [\r\n {\r\n title: \"Onboarding\",\r\n to: \"onboardingrequest\",\r\n // eslint-disable-next-line no-bitwise\r\n feature: SystemFeatures.OnboardingApprove1\r\n | SystemFeatures.OnboardingApprove2\r\n | SystemFeatures.OnboardingCreateRequest\r\n | SystemFeatures.OnboardingAddSupplierApproval\r\n | SystemFeatures.AssignManualManualVendorNumber\r\n | SystemFeatures.ApproveDelegatedOnboardingRequestApproval2\r\n | SystemFeatures.OnboardingCompletionCommunication,\r\n },\r\n {\r\n title: \"Compliance Management\",\r\n to: \"checks\",\r\n feature: SystemFeatures.SupplierChecks,\r\n },\r\n {\r\n title: \"Manage Opportunities (eRFx)\",\r\n to: \"/redirect/manageopportunities\",\r\n redirect: true,\r\n feature: SystemFeatures.RfxCreateOpportunity,\r\n },\r\n {\r\n title: \"PP Report\",\r\n to: \"ppreport\",\r\n feature: SystemFeatures.PPReportDashboard,\r\n },\r\n {\r\n title: \"Supplier Updates\",\r\n to: \"supplierupdates\",\r\n feature: SystemFeatures.ManageErpEvents,\r\n },\r\n ],\r\n },\r\n {\r\n isUserMenu: true,\r\n title: \"User\",\r\n to: \"/user\",\r\n children: [\r\n {\r\n title: \"Profile\",\r\n to: \"profile\",\r\n },\r\n ],\r\n },\r\n];\r\n\r\nexport default navMenuItems;\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ComplianceCheckType\r\n{\r\n None = 0,\r\n CIPC = 1,\r\n SARS = 2,\r\n}\r\n\r\nexport enum ComplianceCheckStatus\r\n{\r\n None = 0,\r\n Valid = 1,\r\n Invalid = 2,\r\n Pending = 3,\r\n NA = 4,\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport const complianceCheckTypeToString = (value: ComplianceCheckType) => {\r\n switch (value) {\r\n case ComplianceCheckType.None:\r\n return \"None\";\r\n case ComplianceCheckType.CIPC:\r\n return \"CIPC\";\r\n case ComplianceCheckType.SARS:\r\n return \"SARS\";\r\n default:\r\n return \"Unknown\";\r\n }\r\n};\r\n\r\nexport const complianceCheckStatusToString = (value: ComplianceCheckStatus) => {\r\n switch (value) {\r\n case ComplianceCheckStatus.None:\r\n return \"None\";\r\n case ComplianceCheckStatus.Valid:\r\n return \"Valid\";\r\n case ComplianceCheckStatus.Invalid:\r\n return \"Invalid\";\r\n case ComplianceCheckStatus.Pending:\r\n return \"Pending\";\r\n case ComplianceCheckStatus.NA:\r\n return \"N/A\";\r\n default:\r\n return \"Unknown\";\r\n }\r\n};\r\n","import axios from \"axios\";\r\nimport { makeRequest, makeRequestAsync, refreshTokenInternal } from \"./util\";\r\n\r\nexport function getUserBasicDetails() {\r\n return makeRequestAsync(() => axios.get(\"/api/user/userBasicDetails\"));\r\n}\r\n\r\nexport function getCompanyConfiguration() {\r\n return makeRequestAsync(() => axios.get(\"/api/registration/companyConfiguration\"));\r\n}\r\n\r\nexport function refreshToken() {\r\n return refreshTokenInternal(\"/api/token/refresh\");\r\n}\r\n\r\nexport function getTokenExpiry({ bypassAuthCheck = false }) {\r\n return makeRequestAsync(() => axios.get(\"/api/token/expiresAt\"), bypassAuthCheck);\r\n}\r\n\r\nexport function getOptions(filters, onSuccess) {\r\n const filtersStr = filters.length > 0 ? `/${filters.join(\":\")}` : \"\";\r\n makeRequest(() => axios.get(`/api/options${filtersStr}`), onSuccess);\r\n}\r\n\r\nexport async function getOptionsAsync(filters) {\r\n const filtersStr = filters.length > 0 ? `/${filters.join(\":\")}` : \"\";\r\n return makeRequestAsync(() => axios.get(`/api/options${filtersStr}`));\r\n}\r\n\r\nexport async function getCompanyOptionsAsync(filters, companyId) {\r\n const filtersStr = filters.length > 0 ? `/${filters.join(\":\")}` : \"\";\r\n const companyIdQueryStr = companyId > 0 ? `?companyId=${companyId}` : \"\";\r\n return makeRequestAsync(() => axios.get(`/api/options/company${filtersStr}${companyIdQueryStr}`));\r\n}\r\n\r\nexport function getSupplierInfo(companyId, onSuccess) {\r\n makeRequest(\r\n () => axios.get(`/api/registration/supplierinfo/${companyId}`),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getSupplierInfoAsync(companyId) {\r\n return makeRequestAsync(() => axios.get(`/api/registration/supplierinfo/${companyId}`));\r\n}\r\n\r\nexport function getAddressInfo(companyId, onSuccess) {\r\n makeRequest(\r\n () => axios.get(`/api/registration/addressinfo/${companyId}`),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getAddressInfoAsync(companyId) {\r\n return makeRequestAsync(() => axios.get(`/api/registration/addressinfo/${companyId}`));\r\n}\r\n\r\nexport function getKeyContactDetails(buyerCompanyId, onSuccess) {\r\n let url = \"/api/registration/keycontactstaff\";\r\n if (buyerCompanyId != null) {\r\n url += `?buyerId=${buyerCompanyId}`;\r\n }\r\n makeRequest(\r\n () => axios.get(url),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getKeyContactDetailsAsync(buyerCompanyId) {\r\n let url = \"/api/registration/keycontactstaff\";\r\n if (buyerCompanyId != null) {\r\n url += `?buyerId=${buyerCompanyId}`;\r\n }\r\n return makeRequestAsync(() => axios.get(url));\r\n}\r\n\r\nexport function getSupplierKeyContactDetailsAsync(companyId) {\r\n return makeRequestAsync(() => axios.get(`/api/registration/supplierContactPersons/${companyId}`));\r\n}\r\n\r\nexport function getBeeDetails(companyId, onSuccess) {\r\n makeRequest(\r\n () => axios.get(`/api/registration/beeratings/${companyId}`),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getBeeDetailsAsync(companyId) {\r\n return makeRequestAsync(() => axios.get(`/api/registration/beeratings/${companyId}`));\r\n}\r\n\r\nexport function getDocuments(companyId, onSuccess) {\r\n makeRequest(\r\n () => axios.get(`/api/registration/documents/${companyId}`),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getDocumentsAsync(companyId, filterByBeeRating) {\r\n return makeRequestAsync(() => axios.get(`/api/registration/documents/${companyId}?filterByBeeRating=${filterByBeeRating}`));\r\n}\r\n\r\nexport function getBankingDetails(companyId, onSuccess) {\r\n makeRequest(\r\n () => axios.get(`/api/registration/bankdetails/${companyId}`),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getBankingDetailsAsync(companyId) {\r\n return makeRequestAsync(\r\n () => axios.get(`/api/registration/bankdetails/${companyId}`)\r\n );\r\n}\r\n\r\nexport function getSupplierCategories(onSuccess) {\r\n makeRequest(\r\n () => axios.get(\"/api/registration/offerings\"),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getRegistrationSelectedSubscription(onSuccess) {\r\n makeRequest(\r\n () => axios.get(\"/api/registration/producttier\"),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getTermsAndConditions(companyId, onSuccess) {\r\n makeRequest(\r\n () => axios.get(`/api/registration/termsconditions/${companyId}`),\r\n onSuccess\r\n );\r\n}\r\n\r\nexport function getTermsAndConditionsAsync(companyId) {\r\n return makeRequestAsync(() => axios.get(`/api/registration/termsconditions/${companyId}`));\r\n}\r\n\r\nexport async function getNotifications() {\r\n return makeRequestAsync(() => axios.get(\"/api/notifications\"));\r\n}\r\n\r\nexport async function getNotificationCount() {\r\n return makeRequestAsync(() => axios.get(\"/api/notifications/count\"));\r\n}\r\n\r\nexport async function getOnboardingRequest(onboardingRequestId) {\r\n return makeRequestAsync(() => axios.get(`/api/motivation/onboardingrequests/${onboardingRequestId}`));\r\n}\r\n\r\nexport async function getOnboardingRequestExceptionReason(supplierCompanyId) {\r\n return makeRequestAsync(() => axios.get(`/api/motivation/onboardingrequestexceptionreason/${supplierCompanyId}`));\r\n}\r\n\r\nexport function newOnboardingRequest() {\r\n const url = \"/api/motivation/new\";\r\n return makeRequestAsync(() => axios.get(url));\r\n}\r\n\r\nexport async function getDuplicateRequests(\r\n companyTypeId,\r\n registrationNumber,\r\n onboardingRequestId\r\n) {\r\n const companyTypeQueryString = companyTypeId == null ? \"\" : `&companyTypeId=${companyTypeId}`;\r\n\r\n const registrationNumberQueryString = registrationNumber == null\r\n ? \"\"\r\n : `®istrationNumber=${encodeURIComponent(registrationNumber)}`;\r\n\r\n const onboardingRequestIdQueryString = `onboardingId=${\r\n onboardingRequestId == null ? 0 : onboardingRequestId\r\n }`;\r\n const url = `/api/motivation/duplicates?${onboardingRequestIdQueryString}${registrationNumberQueryString}${companyTypeQueryString}`;\r\n return makeRequestAsync(() => axios.get(url));\r\n}\r\n\r\nexport async function getOnboardingInvitation() {\r\n const url = \"/api/motivation/invitation\";\r\n return makeRequestAsync(() => axios.get(url));\r\n}\r\n\r\nexport async function getSubscriptionDetail() {\r\n const url = \"/api/manage/producttier\";\r\n return makeRequestAsync(() => axios.get(url));\r\n}\r\n\r\nexport async function getSubscriptionUpgradeFee(newSubscriptionTierId) {\r\n const url = `/api/manage/producttier/${newSubscriptionTierId}/upgradeFee`;\r\n return makeRequestAsync(() => axios.get(url));\r\n}\r\n\r\nexport async function getCompanyDataFeatures() {\r\n const result = makeRequestAsync(() => axios.get(\"/api/company/datafeatures\"));\r\n return result;\r\n}\r\n\r\nexport async function getCompanySubAccountsAsync(companyId) {\r\n return makeRequestAsync(() => axios.get(`/api/registration/subaccounts/${companyId}`));\r\n}\r\n\r\nexport async function getAllSubscriptionsAllowedFeatures() {\r\n const result = makeRequestAsync(() => axios.get(\"/api/manage/allSubscriptionsAllowedFeatures\"));\r\n return result;\r\n}\r\n\r\nexport function getCommunicationPreference() {\r\n const result = makeRequestAsync(() => axios.get(\"/api/user/communicationpreferences\"));\r\n return result;\r\n}\r\n\r\nexport async function getCompanyCategoryManagers() {\r\n const result = await makeRequestAsync(() => axios.get(\"/api/company/categoryManagers\"));\r\n return result;\r\n}\r\n\r\nexport async function getDuplicateCompanies(companyType, registrationNumber) {\r\n return makeRequestAsync(() => axios.get(`/api/motivation/duplicate/companies?CompanyType=${companyType}&RegistrationNumber=${registrationNumber}`));\r\n}\r\n\r\nexport function getSupplierExportStatus() {\r\n return makeRequestAsync(() => axios.get(\"api/reporting/supplierExport/status\"));\r\n}\r\n","export const SET_OPTION = \"SET_OPTION\";\r\n\r\nexport function setOption(optionName, optionValues) {\r\n return {\r\n type: SET_OPTION,\r\n payload: {\r\n optionName,\r\n optionValues,\r\n },\r\n };\r\n}\r\n","export const SET_ONBOARDING_REQUEST_OBJECT = \"SET_ONBOARDING_REQUEST_OBJECT\";\r\n\r\nexport const SET_ONBOARDING_REQUEST_OBJECT_PROPERTY = \"SET_ONBOARDING_REQUEST_OBJECT_PROPERTY\";\r\n\r\nexport function setOnboardingRequestObject(objectValue) {\r\n return {\r\n type: SET_ONBOARDING_REQUEST_OBJECT,\r\n payload: objectValue,\r\n };\r\n}\r\n\r\nexport function setOnboardingReqeustAllowences(allowences) {\r\n return {\r\n type: SET_ONBOARDING_REQUEST_OBJECT_PROPERTY,\r\n payload: {\r\n fieldName: \"supplierAllowancesList\",\r\n fieldValue: allowences,\r\n },\r\n };\r\n}\r\n\r\nexport function setOnboardingReqeustPruchaceValues(values) {\r\n return {\r\n type: SET_ONBOARDING_REQUEST_OBJECT_PROPERTY,\r\n payload: {\r\n fieldName: \"supplierPurchaseValueGrowthList\",\r\n fieldValue: values,\r\n },\r\n };\r\n}\r\n\r\nexport function onOnboardingInputChange(ev) {\r\n return {\r\n type: SET_ONBOARDING_REQUEST_OBJECT_PROPERTY,\r\n payload: {\r\n fieldName: ev.target.name,\r\n fieldValue: ev.target.value,\r\n },\r\n };\r\n}\r\n","export const checkHttpStatus = (error: any, status: number): boolean => {\r\n if (error?.response?.status == null) {\r\n return false;\r\n }\r\n\r\n return Number(error.response.status) === status;\r\n};\r\n\r\nexport const test = 1;\r\n","import axios, {\r\n // eslint-disable-next-line no-unused-vars\r\n AxiosRequestConfig,\r\n} from \"axios\";\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nimport {\r\n AddAttachmentMessage, // eslint-disable-line no-unused-vars\r\n BroadcastMessage, // eslint-disable-line no-unused-vars\r\n Message, // eslint-disable-line no-unused-vars\r\n ChannelInfoMessages, // eslint-disable-line no-unused-vars\r\n ChannelMessage, // eslint-disable-line no-unused-vars\r\n DraftMessage, // eslint-disable-line no-unused-vars\r\n SearchMessage, // eslint-disable-line no-unused-vars\r\n PageTypes, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\n\r\nexport * from \"./Models/Models\";\r\n\r\nexport async function uploadAttachments(\r\n channelId : number,\r\n messageId : number,\r\n files: FormData,\r\n config : AxiosRequestConfig | undefined\r\n) {\r\n const uploadUrl = `/api/messaging/channels/${channelId}/messages/${messageId}/attachments`;\r\n return makeRequestAsync(() => axios\r\n .post(uploadUrl, files, config)) as Promise;\r\n}\r\n\r\nexport async function broadcastMessage(\r\n channelId : number,\r\n messageId : number,\r\n message: BroadcastMessage\r\n) {\r\n const uploadUrl = `/api/messaging/channels/${channelId}/messages/${messageId}/broadcast`;\r\n return makeRequestAsync(() => axios\r\n .post(uploadUrl, message)) as Promise;\r\n}\r\n\r\nexport async function getChannelList(\r\n {\r\n limit = 20,\r\n pageId,\r\n pageType,\r\n nameFilter,\r\n config,\r\n unreadFilter,\r\n }:{\r\n limit:number,\r\n pageId?:number\r\n pageType?: PageTypes\r\n nameFilter?: string\r\n config?: AxiosRequestConfig | undefined\r\n unreadFilter?:boolean\r\n }\r\n) {\r\n const pageIdQuery = pageId != null ? `&pageId=${pageId}` : \"\";\r\n const pageTypeQuery = pageType != null ? `&pageType=${pageType}` : \"\";\r\n const nameFilterQuery = nameFilter != null ? `&nameFilter=${nameFilter}` : \"\";\r\n const unreadFilterQuery = unreadFilter ? `&unreadFilter=${unreadFilter}` : \"\";\r\n const getChannelListUrl = `/api/messaging/Channels?limit=${limit}${pageIdQuery}${pageTypeQuery}\r\n ${nameFilterQuery}${unreadFilterQuery}`;\r\n return makeRequestAsync(\r\n () => axios.get(getChannelListUrl, config)\r\n ) as Promise>;\r\n}\r\n\r\nexport async function getChannelMessages(\r\n {\r\n channelId,\r\n pageId,\r\n pageType,\r\n limit = 20,\r\n config,\r\n }:{\r\n channelId:number,\r\n pageId?:number,\r\n pageType?: PageTypes,\r\n limit?:number\r\n config?: AxiosRequestConfig,\r\n }\r\n) {\r\n // query string parameters\r\n const qsAfter = pageId != null ? `&pageId=${pageId}` : \"\";\r\n const qsPageType = pageType != null ? `&pageType=${pageType}` : \"\";\r\n const getChannelMessagesUrl = `/api/messaging/Channels/${channelId}?limit=${limit}${qsAfter}${qsPageType}`;\r\n return makeRequestAsync(() => axios.get(\r\n getChannelMessagesUrl,\r\n config\r\n )) as Promise;\r\n}\r\n\r\nexport async function searchMessages(\r\n search: string,\r\n limit: number,\r\n config: AxiosRequestConfig,\r\n after?: number,\r\n unreadFilter?: boolean\r\n) {\r\n const afterQueryString = after == null ? \"\" : `&after=${after}`;\r\n const filterQueryString = unreadFilter ? `&unreadFilter=${unreadFilter}` : \"\";\r\n const searchUrl = `/api/messaging/messages/search?search=${search}&limit=${limit}${afterQueryString}${filterQueryString}`;\r\n return makeRequestAsync(() => axios.get(searchUrl, config)) as Promise;\r\n}\r\n\r\nexport async function createDraftMessage(\r\n channelId: number,\r\n config?: AxiosRequestConfig\r\n) {\r\n const createDraftUrl = `/api/messaging/Channels/${channelId}`;\r\n return makeRequestAsync(() => axios\r\n .post(createDraftUrl, {}, config)) as Promise;\r\n}\r\n\r\nexport async function updateDraftMessage(\r\n channelId: number,\r\n messageId: number,\r\n content : string\r\n) {\r\n const updateDraftUrl = `/api/messaging/Channels/${channelId}/messages/${messageId}`;\r\n return makeRequestAsync(() => axios.put(updateDraftUrl, { content }));\r\n}\r\n\r\nexport async function deleteMessageAttachment(\r\n channelId:number,\r\n messageId:number,\r\n attachmentId:number\r\n) {\r\n const deleteAttachmentUrl = `/api/messaging/channels/${channelId}/messages/${messageId}/attachments/${attachmentId}`;\r\n return makeRequestAsync(() => axios.delete(deleteAttachmentUrl));\r\n}\r\n\r\nexport async function sendMessage(\r\n channelId: number,\r\n messageId: number\r\n) {\r\n const sendMessageUrl = `/api/messaging/Channels/${channelId}/messages/${messageId}/send`;\r\n return makeRequestAsync(() => axios.put(sendMessageUrl)) as Promise;\r\n}\r\n\r\nexport async function readMessage(\r\n channelId: number,\r\n messageId: number\r\n) {\r\n const readMessageUrl = `/api/messaging/channels/${channelId}/messages/${messageId}/read`;\r\n return makeRequestAsync(() => axios.put(readMessageUrl)) as Promise ;\r\n}\r\n","const supplierFilterOptions = {\r\n All: 0,\r\n Existing: 1,\r\n Potential: 2,\r\n\r\n toString: (value) => {\r\n switch (value) {\r\n case null:\r\n return \"\";\r\n case supplierFilterOptions.All:\r\n return \"All Suppliers\";\r\n case supplierFilterOptions.Existing:\r\n return \"Existing Suppliers\";\r\n case supplierFilterOptions.Potential:\r\n return \"Potential Suppliers\";\r\n default:\r\n return `${value}`;\r\n }\r\n },\r\n};\r\nexport default supplierFilterOptions;\r\n","import axios, {\r\n AxiosRequestConfig, // eslint-disable-line no-unused-vars\r\n} from \"axios\";\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ContractTierMessage } from \"./Models/ContractTierMessage\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ContractsMessage } from \"./Models/ContractsMessage\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ContractTemplateMessage } from \"./Models/ContractTemplateMessage\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardContractReportSummary } from \"./Models/DashboardContractReportSummary\";\r\n\r\nexport * from \"./Models/ContractTierMessage\";\r\nexport * from \"./Models/ContractsMessage\";\r\nexport * from \"./Models/ContractMessage\";\r\nexport * from \"./Models/ContractTemplateMessage\";\r\n\r\nexport const getContractTiers = async () => {\r\n const url = \"/api/contracting/options/contractTiers\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise>;\r\n};\r\n\r\nexport const getContractAgreements = async (contractTierId:number) => {\r\n const url = `/api/contracting/contracts/contractAgreements/${contractTierId}`;\r\n return makeRequestAsync(() => axios.get(url)) as Promise;\r\n};\r\n\r\nexport const getContracts = async (buyerCompanyId: number, populateContracts: boolean) => {\r\n const url = `/api/contracting/contracts?SignatoryExternalAccountId=${buyerCompanyId}&populateContracts=${populateContracts}`;\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n};\r\n\r\nexport const uploadContract = async (\r\n contractId: number,\r\n files: FormData,\r\n config : AxiosRequestConfig | undefined\r\n) => {\r\n const url = `/api/contracting/contracts/${contractId}`;\r\n return makeRequestAsync(() => axios\r\n .post(url, files, config)) as Promise;\r\n};\r\n\r\nexport const uploadContractForTemplate = async (\r\n supplierCompanyId: number,\r\n contractTemplateId: number,\r\n contractTierId: number,\r\n files: FormData,\r\n config: AxiosRequestConfig | undefined\r\n) => {\r\n const urlParameters = [];\r\n urlParameters.push(`SignatoryExternalAccountId=${supplierCompanyId}`);\r\n urlParameters.push(`ContractTemplateId=${contractTemplateId}`);\r\n urlParameters.push(`ContractTierId=${contractTierId}`);\r\n\r\n const url = `/api/contracting/contracts/template?${urlParameters.join(\"&\")}`;\r\n\r\n return makeRequestAsync(() => axios\r\n .post(url, files, config)) as Promise;\r\n};\r\n\r\nexport const approveContract = async (\r\n contractId: number\r\n) => {\r\n const url = `/api/contracting/contracts/${contractId}/approve`;\r\n return makeRequestAsync(() => axios\r\n .put(url)) as Promise;\r\n};\r\n\r\nexport async function getDashboardContractAgreementsSummary() {\r\n const url = \"api/contracting/summary\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n","import {\r\n getAddressInfo,\r\n getKeyContactDetails,\r\n getDocumentsAsync,\r\n getBankingDetails,\r\n getBeeDetailsAsync,\r\n getAddressInfoAsync,\r\n} from \"../http/gets\";\r\n\r\nimport addressTypes from \"./Enumerators/addressTypes\";\r\n\r\nexport function loadAddressContactData(props, invitationBuyerCompanyId = null) {\r\n getAddressInfo(props.data.companyId, (resAddress) => {\r\n const physicalAddress = resAddress.addresses.find(\r\n (address) => address.type === addressTypes.Physical\r\n );\r\n const postalAddress = resAddress.addresses.find(\r\n (address) => address.type === addressTypes.Postal\r\n );\r\n const { registrationStepCompleted } = resAddress;\r\n if (props.setLastStepCompleted) {\r\n props.setLastStepCompleted(registrationStepCompleted);\r\n }\r\n getKeyContactDetails(invitationBuyerCompanyId, (resContactPersons) => {\r\n props.setAddressInfo({\r\n physicalAddress,\r\n postalAddress,\r\n contactPersons: resContactPersons.contactPersons,\r\n registrationStepCompleted,\r\n hasTelNumberValidation: resContactPersons.hasTelephoneValidation,\r\n });\r\n });\r\n });\r\n}\r\n\r\nexport async function loadAddressDataAsync(companyId) {\r\n const res = await getAddressInfoAsync(companyId);\r\n const physicalAddress = res.addresses.find(\r\n (address) => address.type === addressTypes.Physical\r\n );\r\n const postalAddress = res.addresses.find(\r\n (address) => address.type === addressTypes.Postal\r\n );\r\n return { physicalAddress, postalAddress };\r\n}\r\n\r\nexport async function getBeePracticeData(props) {\r\n const res = await getBeeDetailsAsync(props.data.companyId);\r\n // convert C# empty date to JS empty date\r\n const date = res.certificateExpiryDate === \"0001-01-01T00:00:00+00:00\"\r\n ? null\r\n : new Date(res.certificateExpiryDate);\r\n\r\n const beeInfo = {\r\n ...res,\r\n certificateExpiryDate: date,\r\n };\r\n return beeInfo;\r\n}\r\n\r\nexport async function loadBeePracticeData(props) {\r\n const beeInfo = await getBeePracticeData(props);\r\n props.setBeeInfo(beeInfo);\r\n if (props.setLastStepCompleted) {\r\n props.setLastStepCompleted(beeInfo.registrationStepCompleted);\r\n }\r\n\r\n return beeInfo;\r\n}\r\n\r\nexport async function loadDocuments(props) {\r\n const res = await getDocumentsAsync(props.data.companyId, false);\r\n props.setDocuments(res.companyDocuments);\r\n return res.companyDocuments;\r\n}\r\n\r\nexport function loadBankingDetailsData(props) {\r\n getBankingDetails(props.data.companyId, (res) => {\r\n props.setBankingDetails(res);\r\n if (props.setLastStepCompleted) {\r\n props.setLastStepCompleted(res.registrationStepCompleted);\r\n }\r\n });\r\n}\r\n","const addressTypes = {\r\n Physical: 1,\r\n Postal: 2,\r\n};\r\n\r\nexport default addressTypes;\r\n","import axios from \"axios\";\r\n\r\nimport {\r\n OutstandingInformationMessage, CompanyRatingMessage, // eslint-disable-line no-unused-vars\r\n CompanyEditRatingMessage, // eslint-disable-line no-unused-vars\r\n MyCompanyRatingMessage, // eslint-disable-line no-unused-vars\r\n CompanyTotalRatingMessage, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\n\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport const getCompanyOutstandingInformation = async () => {\r\n const url = \"/api/company/outstandinginfo\";\r\n const outstandingInfoMessage = makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n return outstandingInfoMessage;\r\n};\r\n\r\nexport const getMyCompanyRating = async () => {\r\n const url = \"/api/company/rating\";\r\n const companyRatingMessage = makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n return companyRatingMessage;\r\n};\r\n\r\nexport const getCompanyRating = async (companyId: number) => {\r\n const url = `/api/company/rating/${companyId}`;\r\n const companyRatingMessage = makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n return companyRatingMessage;\r\n};\r\n\r\nexport const saveCompanyRating = async (message: CompanyEditRatingMessage) => {\r\n const url = \"/api/company/rating\";\r\n return makeRequestAsync(\r\n () => axios.post(url, message)\r\n ) as Promise;\r\n};\r\n\r\nexport const modifyCompanyName = async (newName: string) => {\r\n const url = `/api/company/ModifyCompanyName/${newName}`;\r\n return makeRequestAsync(\r\n () => axios.post(url)\r\n ) as Promise;\r\n};\r\n","import { createStore, applyMiddleware, compose } from \"redux\";\r\nimport thunk from \"redux-thunk\";\r\n\r\nimport {\r\n ON_STAFF_CONTACT_INPUT_CHANGE,\r\n ON_ADDRESS_INFO_CHANGE,\r\n SET_STORE_PROPERTY,\r\n SHOW_LOADING_SCREEN,\r\n HIDE_LOADING_SCREEN,\r\n LOG_OUT,\r\n SHOW_INFO_POPUP,\r\n HIDE_INFO_POPUP,\r\n SET_LAST_STEP_COMPLETED,\r\n SET_USER_BASIC_DETAILS,\r\n SET_COMPANY_CONFIGURATION,\r\n SET_COMPANY_OUTSTANDING_INFO,\r\n SHOW_ERROR,\r\n SET_STATIC_COMPANY_DATA,\r\n SET_STATIC_DATA,\r\n SET_SUBSCRIPTION_INFO,\r\n SET_NOT_AUTHENTICATED,\r\n SET_TOKEN_EXPIRATION,\r\n SET_FORCE_LOGOUT,\r\n SET_DATA_FEATURES,\r\n SET_SUBSCRIPTIONS_ALLOWED_FEATURES,\r\n ADD_API_ERROR,\r\n CLEAR_API_ERRORS,\r\n} from \"./actions\";\r\nimport {\r\n SET_REFERENCES,\r\n SET_REGISTRATION_INFO,\r\n SET_SUPPLIER_CATEGORIES,\r\n SET_UNSPSC_FAMILIES,\r\n SET_POSTAL_ADDRESS,\r\n ON_REGISTRATION_INPUT_CHANGE,\r\n SET_SHAREHOLDER_DETAILS,\r\n} from \"./registrationActions\";\r\nimport { SET_OPTION } from \"./optionActions\";\r\nimport { PUSH_BREAD_CRUMB } from \"./maintenanceActions\";\r\nimport {\r\n SET_ONBOARDING_REQUEST_OBJECT,\r\n SET_ONBOARDING_REQUEST_OBJECT_PROPERTY,\r\n} from \"./onboardingRequestActions\";\r\n\r\nconst initStore = {\r\n isValidStep1: true,\r\n isValidStep2: true,\r\n isValidStep3: true,\r\n isValidStep4: true,\r\n isValidStep5: true,\r\n isValidStep6: true,\r\n\r\n isVATNumberValid: true,\r\n\r\n showLoadingModal: false,\r\n loadingScreenMsg: \"\",\r\n showInfoPopup: false,\r\n infoPopupHeader: \"This page cotains missing information.\",\r\n infoPopupSubheading: \"To continue please amend / complete the following:\",\r\n infoPopupContent: [\"full name\", \"role\", \"telephone\"],\r\n\r\n currentCompanyTab: { index: 0 },\r\n\r\n breadCrumbList: [\r\n { path: \"/home\", display: \"Home\" },\r\n { path: \"/mycompany/supinfo\", display: \"My Company\" },\r\n { path: \"/mycompany/supinfo\", display: \"Administration\" },\r\n ],\r\n\r\n currentCompanyId: 0,\r\n loggedInUserDetails: {\r\n companyName: null,\r\n userGreeting: null,\r\n },\r\n lastStepCompleted: 0,\r\n\r\n companyConfiguration: {},\r\n\r\n companyOutstandingInfo: {},\r\n\r\n onboardingLastStepCompleted: 0,\r\n\r\n registration: {\r\n supplierInfo: {},\r\n addressInfo: {},\r\n beeInfo: {},\r\n documents: [],\r\n bankDetails: {},\r\n prdInfo: {},\r\n prtInfo: {},\r\n },\r\n\r\n onboardingRequest: {},\r\n\r\n options: {\r\n provinces: [],\r\n countries: [],\r\n sectors: [],\r\n turnoverBands: [],\r\n sectorTurnoverBands: [],\r\n sectorTurnoverBandStatuses: [],\r\n companyTypes: [],\r\n beeLvls: [],\r\n beeSectors: [],\r\n keyContactRoles: [],\r\n bankAccountTypes: [],\r\n banks: [],\r\n supplierCategories: [],\r\n subscriptions: [],\r\n documents: [],\r\n businessUnits: [],\r\n documentTypes: [],\r\n businessTypes: [],\r\n },\r\n staticCompanyData: [],\r\n staticData: [],\r\n\r\n stepProgression: {\r\n supplierInfo: [],\r\n addressInfo: [],\r\n beeInfo: [],\r\n bankDetails: [],\r\n },\r\n\r\n authentication: {\r\n isAuthenticated: true,\r\n retryHandlers: [],\r\n tokenExpirationDate: undefined,\r\n tokenCreationDate: undefined,\r\n forceLogout: false,\r\n },\r\n apiErrors: {\r\n errors: [],\r\n },\r\n};\r\n\r\nfunction reducer(state = initStore, action) {\r\n switch (action.type) {\r\n case ON_REGISTRATION_INPUT_CHANGE: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n [action.payload.stage]: {\r\n ...state.registration[action.payload.stage],\r\n [action.payload.fieldName]: action.payload.fieldValue,\r\n },\r\n },\r\n };\r\n }\r\n\r\n case ON_ADDRESS_INFO_CHANGE: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n addressInfo: {\r\n ...state.registration.addressInfo,\r\n [action.payload.category]: {\r\n ...state.registration.addressInfo[action.payload.category],\r\n [action.payload.name]: action.payload.value,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n case ON_STAFF_CONTACT_INPUT_CHANGE: {\r\n const type = action.payload.newEntry.contactPersonTypeId;\r\n const value = action.payload.newEntry;\r\n\r\n const indexOfItemToChange = state.registration.addressInfo.contactPersons.findIndex(\r\n (c) => c.contactPersonTypeId === type\r\n );\r\n\r\n const newContactPersons = [...state.registration.addressInfo.contactPersons];\r\n newContactPersons[indexOfItemToChange] = { ...value };\r\n\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n addressInfo: {\r\n ...state.registration.addressInfo,\r\n contactPersons: newContactPersons,\r\n },\r\n },\r\n };\r\n }\r\n\r\n case SHOW_LOADING_SCREEN: {\r\n return {\r\n ...state,\r\n showLoadingModal: true,\r\n loadingScreenMsg: action.payload.loadingScreenMsg,\r\n };\r\n }\r\n\r\n case HIDE_LOADING_SCREEN: {\r\n return {\r\n ...state,\r\n showLoadingModal: false,\r\n loadingScreenMsg: \"\",\r\n };\r\n }\r\n\r\n case SET_SUPPLIER_CATEGORIES: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n prdInfo: {\r\n ...state.registration.prdInfo,\r\n selectedSupplierSubCategoryIds: action.payload.newSelection,\r\n },\r\n },\r\n };\r\n }\r\n\r\n case SET_UNSPSC_FAMILIES: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n prdInfo: {\r\n ...state.registration.prdInfo,\r\n selectedUnspscFamilyIds: action.payload.newSelection,\r\n },\r\n },\r\n };\r\n }\r\n\r\n case SET_POSTAL_ADDRESS: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n addressInfo: {\r\n ...state.registration.addressInfo,\r\n postalAddress: {\r\n ...action.payload.physicalAddress,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n case SET_SHAREHOLDER_DETAILS: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n supplierInfo: {\r\n ...state.registration.supplierInfo,\r\n shareholders: {\r\n ...action.payload,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n case SET_REFERENCES: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n prdInfo: {\r\n ...state.registration.prdInfo,\r\n references: action.payload.references,\r\n },\r\n },\r\n };\r\n }\r\n\r\n case SET_STORE_PROPERTY: {\r\n return {\r\n ...state,\r\n [action.payload.propName]: action.payload.value,\r\n };\r\n }\r\n\r\n case SET_REGISTRATION_INFO: {\r\n return {\r\n ...state,\r\n registration: {\r\n ...state.registration,\r\n [action.payload.objName]: action.payload.objVal,\r\n },\r\n };\r\n }\r\n\r\n case SET_OPTION: {\r\n return {\r\n ...state,\r\n options: {\r\n ...state.options,\r\n [action.payload.optionName]: action.payload.optionValues,\r\n },\r\n };\r\n }\r\n\r\n case SHOW_INFO_POPUP: {\r\n return {\r\n ...state,\r\n showInfoPopup: true,\r\n infoPopupHeader: action.payload.heading,\r\n infoPopupSubheading: action.payload.subheading,\r\n infoPopupContent: action.payload.msgs,\r\n };\r\n }\r\n\r\n case HIDE_INFO_POPUP: {\r\n return {\r\n ...state,\r\n showInfoPopup: false,\r\n };\r\n }\r\n\r\n case SET_LAST_STEP_COMPLETED: {\r\n const newValue = action.payload.value > state.lastStepCompleted\r\n ? action.payload.value\r\n : state.lastStepCompleted;\r\n return {\r\n ...state,\r\n lastStepCompleted: newValue,\r\n };\r\n }\r\n\r\n case PUSH_BREAD_CRUMB: {\r\n const newBreadCrumbList = state.breadCrumbList.concat(\r\n action.payload.newBreadCrumb\r\n );\r\n return {\r\n ...state,\r\n breadCrumbList: newBreadCrumbList,\r\n };\r\n }\r\n\r\n case SET_ONBOARDING_REQUEST_OBJECT: {\r\n return {\r\n ...state,\r\n onboardingRequest: action.payload,\r\n };\r\n }\r\n\r\n case SET_ONBOARDING_REQUEST_OBJECT_PROPERTY: {\r\n return {\r\n ...state,\r\n onboardingRequest: {\r\n ...state.onboardingRequest,\r\n [action.payload.fieldName]: action.payload.fieldValue,\r\n },\r\n };\r\n }\r\n\r\n case SET_USER_BASIC_DETAILS: {\r\n const newLoggedInUserDetails = {\r\n companyName: action.payload.companyName,\r\n userGreeting: action.payload.fullName,\r\n companyId: action.payload.companyId,\r\n subscriptionName: action.payload.subscriptionName,\r\n subscriptionTierId: action.payload.subscriptionTierId,\r\n allowedFeatures: action.payload.allowedFeatures,\r\n userLimit: action.payload.userLimit,\r\n searchLimit: action.payload.searchLimit,\r\n emailAddress: action.payload.email,\r\n businessUnitIds: action.payload.businessUnitIds,\r\n accountSuspended: action.payload.accountSuspended,\r\n };\r\n\r\n return {\r\n ...state,\r\n currentCompanyId: action.payload.companyId,\r\n loggedInUserDetails: newLoggedInUserDetails,\r\n };\r\n }\r\n\r\n case SET_COMPANY_CONFIGURATION: {\r\n const newCompanyConfiguration = {\r\n prioritiseClientOfferings: action.payload.prioritiseClientOfferings,\r\n allowedCompanyFeatures: action.payload.allowedCompanyFeatures,\r\n };\r\n\r\n return {\r\n ...state,\r\n companyConfiguration: newCompanyConfiguration,\r\n };\r\n }\r\n\r\n case SET_COMPANY_OUTSTANDING_INFO: {\r\n const newCompanyOutstandingInfo = {\r\n addressInformation: action.payload.addressInformation,\r\n bankInformation: action.payload.bankInformation,\r\n companyInformation: action.payload.companyInformation,\r\n supportingDocuments: action.payload.supportingDocuments,\r\n agreements: action.payload.agreements,\r\n contactPersons: action.payload.contactPersons,\r\n outstandingBuyerIds: action.payload.outstandingBuyerIds,\r\n };\r\n\r\n return {\r\n ...state,\r\n companyOutstandingInfo: newCompanyOutstandingInfo,\r\n };\r\n }\r\n\r\n case SET_DATA_FEATURES: {\r\n return {\r\n ...state,\r\n dataFeatures: action.payload,\r\n };\r\n }\r\n\r\n case SET_SUBSCRIPTIONS_ALLOWED_FEATURES: {\r\n return {\r\n ...state,\r\n subscriptionsAllowedFeatures: action.payload,\r\n };\r\n }\r\n\r\n case LOG_OUT: {\r\n window.location = \"/Account/Logout\";\r\n return { ...state };\r\n }\r\n\r\n case SHOW_ERROR: {\r\n return { ...state, showError: action.payload };\r\n }\r\n\r\n case CLEAR_API_ERRORS: {\r\n return { ...state, apiErrors: { ...state.apiErrors, errors: [] } };\r\n }\r\n\r\n case SET_STATIC_COMPANY_DATA: {\r\n const newStaticCompanyData = [...state.staticCompanyData];\r\n action.payload.forEach((option) => {\r\n newStaticCompanyData[option.type] = option.value;\r\n });\r\n return {\r\n ...state,\r\n staticCompanyData: newStaticCompanyData,\r\n };\r\n }\r\n\r\n case SET_STATIC_DATA: {\r\n const newStaticData = [...state.staticData];\r\n action.payload.forEach((option) => {\r\n newStaticData[option.type] = option.value;\r\n });\r\n return {\r\n ...state,\r\n staticData: newStaticData,\r\n };\r\n }\r\n\r\n case SET_SUBSCRIPTION_INFO: {\r\n return {\r\n ...state,\r\n loggedInUserDetails: {\r\n ...state.loggedInUserDetails,\r\n subscriptionTierId: action.payload.subscriptionTierId,\r\n subscriptionName: action.payload.subscriptionName,\r\n allowedFeatures: action.payload.allowedFeatures,\r\n },\r\n };\r\n }\r\n\r\n case SET_NOT_AUTHENTICATED: {\r\n return {\r\n ...state,\r\n authentication: {\r\n ...state.authentication,\r\n isAuthenticated: action.payload.isAuthenticated,\r\n retryHandlers: action.payload.isAuthenticated ? [] : [\r\n ...state.authentication.retryHandlers,\r\n action.payload.retryHandler],\r\n },\r\n };\r\n }\r\n\r\n case SET_TOKEN_EXPIRATION: {\r\n return {\r\n ...state,\r\n authentication: {\r\n ...state.authentication,\r\n tokenExpirationDate: action.payload.expiresAt,\r\n tokenCreationDate: action.payload.createdAt,\r\n },\r\n };\r\n }\r\n\r\n case SET_FORCE_LOGOUT: {\r\n return {\r\n ...state,\r\n authentication: {\r\n ...state.authentication,\r\n tokenExpirationDate: action.payload.expiresAt,\r\n tokenCreationDate: action.payload.createdAt,\r\n forceLogout: true,\r\n },\r\n };\r\n }\r\n\r\n case ADD_API_ERROR: {\r\n return {\r\n ...state,\r\n apiErrors: {\r\n errors: [...state.apiErrors.errors, action.payload.apiError],\r\n },\r\n };\r\n }\r\n\r\n default: {\r\n return { ...state };\r\n }\r\n }\r\n}\r\n\r\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\nexport default createStore(reducer, composeEnhancers(applyMiddleware(thunk)));\r\n","export const PUSH_BREAD_CRUMB = \"PUSH_BREAD_CRUMB\";\r\n\r\nexport function pushBreadCrumb(newBreadCrumb) {\r\n return {\r\n action: PUSH_BREAD_CRUMB,\r\n payload: {\r\n newBreadCrumb,\r\n },\r\n };\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Messaging\":\"Messaging_Messaging__1V4SY\",\"ChatChannelSearch\":\"Messaging_ChatChannelSearch__gtkqo\",\"ChatCompanyDetailsHeader\":\"Messaging_ChatCompanyDetailsHeader__2b6cv\",\"ChatChannelList\":\"Messaging_ChatChannelList__3AEMZ\",\"ChannelSide\":\"Messaging_ChannelSide__1itqP\",\"Message\":\"Messaging_Message__3Vm7W\",\"MessengerContent\":\"Messaging_MessengerContent__4caHv\",\"ChatMessage\":\"Messaging_ChatMessage__pv3OV\",\"ShowChannel\":\"Messaging_ShowChannel__iGcaR\",\"ShowMessenger\":\"Messaging_ShowMessenger__13C7D\",\"Header\":\"Messaging_Header__38pkV\",\"BtnBack\":\"Messaging_BtnBack__qyq4J\",\"EmptyListState\":\"Messaging_EmptyListState__1AJAV\"};","enum BeeValidationStatus {\r\n /* eslint-disable no-unused-vars */\r\n None = 0,\r\n Uploaded = 1,\r\n PendingValidation = 2,\r\n Validated = 3,\r\n Historical = 4,\r\n Revoked = 5,\r\n /* eslint-enable no-unused-vars */\r\n}\r\n\r\nexport const beeValidationStatusToString = (value: BeeValidationStatus) => {\r\n switch (value) {\r\n case BeeValidationStatus.Validated:\r\n return \"Valid\";\r\n case BeeValidationStatus.Revoked:\r\n return \"Invalid\";\r\n default:\r\n return \"Validating\";\r\n }\r\n};\r\n\r\nexport const getBeeValidationStatusBadgeColor = (\r\n value: BeeValidationStatus\r\n):string => {\r\n switch (value) {\r\n case BeeValidationStatus.Validated:\r\n return \"success\";\r\n case BeeValidationStatus.Revoked:\r\n return \"danger\";\r\n default:\r\n return \"secondary\";\r\n }\r\n};\r\n\r\nexport default BeeValidationStatus;\r\n","/* eslint-disable no-unused-vars */\r\nimport axios from \"axios\";\r\n\r\nimport {\r\n NewIntegrationKeyMessage,\r\n IntegrationKeysMessage,\r\n OnboardingConfigurationMessage,\r\n CompanyInformationConfigurationMessage,\r\n} from \"./Models/Models\";\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport * from \"./Models/Models\";\r\n\r\nexport async function getNewKey() {\r\n const url = \"/api/enterprise/apiIntegrationKeys/\";\r\n return makeRequestAsync(() => axios\r\n .post(url)) as Promise;\r\n}\r\n\r\nexport async function getKeys() {\r\n const url = \"/api/enterprise/apiIntegrationKeys/\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function deleteKey(clientId: string) {\r\n const url = `/api/enterprise/apiIntegrationKeys/${clientId}`;\r\n return makeRequestAsync(() => axios\r\n .delete(url)) as Promise;\r\n}\r\n\r\nexport async function saveOnboardingConfiguration(message: OnboardingConfigurationMessage) {\r\n const url = \"/api/enterprise/onboarding/\";\r\n return makeRequestAsync(() => axios\r\n .post(url, message)) as Promise;\r\n}\r\n\r\nexport async function getOnboardingConfiguration() {\r\n const url = \"/api/enterprise/onboarding/\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getCompanyInformationConfiguration() {\r\n const url = \"/api/enterprise/companyInformation/\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function saveCompanyInformationConfiguration(message: CompanyInformationConfigurationMessage) {\r\n const url = \"/api/enterprise/companyInformation/\";\r\n return makeRequestAsync(() => axios\r\n .post(url, message)) as Promise;\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MessageComposer\":\"MessageComposer_MessageComposer__2ps7A\",\"Expand\":\"MessageComposer_Expand__2D8SZ\",\"TextArea\":\"MessageComposer_TextArea__1nqvm\",\"Collapse\":\"MessageComposer_Collapse__2ln_p\",\"ToggleButton\":\"MessageComposer_ToggleButton__31Kcr\",\"AttachButton\":\"MessageComposer_AttachButton__2dyPE\",\"SendButton\":\"MessageComposer_SendButton__-M23X\",\"HideSendButton\":\"MessageComposer_HideSendButton__3FXBv\",\"HideToggleButton\":\"MessageComposer_HideToggleButton__3lrp-\",\"AttachmentBadge\":\"MessageComposer_AttachmentBadge__1yXMn\",\"AttachmentsContainer\":\"MessageComposer_AttachmentsContainer__3vQa1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"chatChannelCardItem\":\"ChatChannelCard_chatChannelCardItem__3yCG5\",\"active\":\"ChatChannelCard_active__2KwB4\",\"withoutPicture\":\"ChatChannelCard_withoutPicture__1cDFb\",\"channelImg\":\"ChatChannelCard_channelImg__36lnx\",\"channelTextContent\":\"ChatChannelCard_channelTextContent__3YLqt\",\"channelCardHeading\":\"ChatChannelCard_channelCardHeading__Km0nx\",\"msgSnippet\":\"ChatChannelCard_msgSnippet__MgILK\",\"msgDate\":\"ChatChannelCard_msgDate__2dnZD\"};","import axios from \"axios\";\r\nimport { makeRequestAsync } from \"../util\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { UsersMessage } from \"./Models/UsersMessage\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { EditUserMessage } from \"./Models/EditUserMessage\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { NewUserMessage } from \"./Models/NewUserMessage\";\r\nimport { UserSearchCriteria } from \"./Models/UserSearchCriteria\"; // eslint-disable-line no-unused-vars\r\n\r\nexport * from \"./Models/UserMessage\";\r\nexport * from \"./Models/UsersMessage\";\r\nexport * from \"./Models/NewUserMessage\";\r\nexport * from \"./Models/EditUserMessage\";\r\n\r\nexport async function getUsers(searchCriteria: UserSearchCriteria) {\r\n // build url parameters\r\n const urlParameters = [];\r\n if (searchCriteria.limit != null) {\r\n urlParameters.push(`limit=${searchCriteria.limit}`);\r\n }\r\n if (searchCriteria.offset != null) {\r\n urlParameters.push(`offset=${searchCriteria.offset}`);\r\n }\r\n if (searchCriteria.searchTerm != null) urlParameters.push(`fullName=${searchCriteria.searchTerm}`);\r\n if (searchCriteria.statusFilter != null) {\r\n urlParameters.push(`statusFilter=${searchCriteria.statusFilter}`);\r\n }\r\n if (searchCriteria.sortOption != null) {\r\n urlParameters.push(`sortOption=${searchCriteria.sortOption}`);\r\n }\r\n if (searchCriteria.selectedRoleIds != null) {\r\n searchCriteria.selectedRoleIds.forEach((selectedRoleId) => {\r\n urlParameters.push(`selectedRoleIds=${selectedRoleId}`);\r\n });\r\n }\r\n if (searchCriteria.selectedBusinessUnitIds != null) {\r\n searchCriteria.selectedBusinessUnitIds.forEach((selectedBusinessUnitId) => {\r\n urlParameters.push(`selectedBusinessUnitIds=${selectedBusinessUnitId}`);\r\n });\r\n }\r\n\r\n const url = `/api/user/users?${urlParameters.join(\"&\")}`;\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function addUser(newUser: NewUserMessage) {\r\n const url = \"/api/user/users\";\r\n return makeRequestAsync(() => axios.post(url, newUser)) as Promise;\r\n}\r\n\r\nexport async function editUser(userId: string, user: EditUserMessage) {\r\n const url = `/api/user/users/${userId}`;\r\n return makeRequestAsync(() => axios.put(url, user)) as Promise;\r\n}\r\n\r\nexport async function deactivateUser(userId: string) {\r\n const url = `/api/user/users/${userId}/deactivate`;\r\n return makeRequestAsync(() => axios.put(url)) as Promise;\r\n}\r\n\r\nexport async function activateUser(userId: string) {\r\n const url = `/api/user/users/${userId}/activate`;\r\n return makeRequestAsync(() => axios.put(url)) as Promise;\r\n}\r\n\r\nexport async function deleteUser(userId: string) {\r\n const url = `/api/user/users/${userId}/delete`;\r\n return makeRequestAsync(() => axios.delete(url)) as Promise;\r\n}\r\n\r\nexport async function resendInvite(userId: string) {\r\n const url = `/api/user/users/${userId}/sendInvite`;\r\n return makeRequestAsync(() => axios.post(url)) as Promise;\r\n}\r\n","import axios from \"axios\";\r\nimport {\r\n ComplianceDetailedChecksMessage, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport async function getCompanyCompliance(\r\n companyId: number\r\n) {\r\n const uploadUrl = `/api/compliance/query/getCompanyCompliance?companyId=${companyId}`;\r\n return makeRequestAsync(() => axios\r\n .get(uploadUrl)) as Promise;\r\n}\r\n\r\nexport async function getCurrentCompanyCompliance() {\r\n const uploadUrl = \"/api/compliance/query/getCurrentCompanyCompliance\";\r\n return makeRequestAsync(() => axios\r\n .get(uploadUrl)) as Promise;\r\n}\r\n\r\nexport const temp = 1;\r\n","export * from \"./AddAttachmentMessage\";\r\nexport * from \"./AttachmentUploadMessage\";\r\nexport * from \"./AttachmentMessage\";\r\nexport * from \"./BroadcastMessage\";\r\nexport * from \"./CompanySearchCriteria\";\r\nexport * from \"./CompanyDetail\";\r\nexport * from \"./ChannelMessage\";\r\nexport * from \"./LastMessage\";\r\nexport * from \"./DraftMessage\";\r\nexport * from \"./Message\";\r\nexport * from \"./ChannelInfoMessages\";\r\nexport * from \"./SearchMessage\";\r\nexport * from \"./SearchItemMessage\";\r\nexport * from \"./PageTypes\";\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"PlanOption_Container__3IukG\",\"TierOption\":\"PlanOption_TierOption__2V_ml\",\"TierOptionHeading\":\"PlanOption_TierOptionHeading__1UCJx\",\"TierOptionFooter\":\"PlanOption_TierOptionFooter__2z-j5\",\"TierOptionSelected\":\"PlanOption_TierOptionSelected__2B-S2\",\"TierOptionDisabled\":\"PlanOption_TierOptionDisabled__1dROT\",\"TierOptionSponsored\":\"PlanOption_TierOptionSponsored__2m42v\",\"OptionTierFeature\":\"PlanOption_OptionTierFeature__3BGxt\",\"TierOptionRecommended\":\"PlanOption_TierOptionRecommended__1qcjj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ProductTierContainer\":\"ProductTierSelector_ProductTierContainer__3rLW0\",\"Recommended\":\"ProductTierSelector_Recommended__1fDGA\",\"RecommendedMessage\":\"ProductTierSelector_RecommendedMessage__HZEjz\",\"Carousel\":\"ProductTierSelector_Carousel__15VTi\",\"CarouselItem\":\"ProductTierSelector_CarouselItem__3NeRa\",\"DesktopPlanOption\":\"ProductTierSelector_DesktopPlanOption__3URJD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"StarRatingInput\":\"StarRatingInput_StarRatingInput__30O9E\",\"Tooltip\":\"StarRatingInput_Tooltip__5bTHJ\",\"Tooltiptext\":\"StarRatingInput_Tooltiptext__1xIGT\",\"LargeRating\":\"StarRatingInput_LargeRating__38V9P\",\"SmallRating\":\"StarRatingInput_SmallRating__3W-Vy\",\"TotalRatings\":\"StarRatingInput_TotalRatings__3850N\",\"Star\":\"StarRatingInput_Star__11P9U\"};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n stroke: \"currentColor\",\n d: \"M9 0l2.782 5.267L18 6.112l-4.5 4.1L14.56 16 9 13.267 3.439 16 4.5 10.211 0 6.111l6.218-.844z\"\n});\n\nvar SvgStarFilled = function SvgStarFilled(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 17\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgStarFilled, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/star-filled.28ae3ea5.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"None\",\n fillRule: \"evenodd\",\n stroke: \"currentColor\",\n d: \"M9.001 0l2.781 5.267L18 6.112l-4.5 4.1L14.562 16l-5.56-2.733L3.44 16l1.06-5.789L0 6.111l6.22-.844z\"\n});\n\nvar SvgStarEmpty = function SvgStarEmpty(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 17\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgStarEmpty, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/star-empty.8cf035c1.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport Styles from \"./StarRatingInput.module.scss\";\r\nimport { ReactComponent as StarFilledSvg } from \"./star-filled.svg\";\r\nimport { ReactComponent as StarEmptySvg } from \"./star-empty.svg\";\r\n\r\nconst StarRatingInput = (\r\n {\r\n value,\r\n totalRatings,\r\n onChange,\r\n size,\r\n readonly,\r\n showToolTips,\r\n showTotalRatings,\r\n }\r\n :\r\n {\r\n value: number,\r\n totalRatings?: number,\r\n onChange?: (newVal: number) => void,\r\n size: \"small\" | \"large\",\r\n readonly?: boolean,\r\n showToolTips?: boolean,\r\n showTotalRatings?: boolean,\r\n }\r\n) => {\r\n const starSelectedHandler = (starValue: number) => {\r\n if (onChange == null) {\r\n return;\r\n }\r\n onChange(starValue);\r\n };\r\n\r\n const isStarFilledArray = Array(5)\r\n .fill(false)\r\n .map((_, index) => index < value);\r\n\r\n const starClass = readonly ? \"\" : \"clickable\";\r\n const imgClass = size === \"large\"\r\n ? `${Styles.LargeRating}`\r\n : Styles.SmallRating;\r\n const toolTipClass = showToolTips\r\n ? `${Styles.Tooltip}`\r\n : \"\";\r\n\r\n const toolTipText = [\r\n \"Consistently fails to meet my expectation\",\r\n \"Occasionally fails to meet my expectation\",\r\n \"Meets my expectation\",\r\n \"Occasionally exceeds my expectation\",\r\n \"Consistently exceeds my expectation\",\r\n ];\r\n\r\n return (\r\n
    \r\n {isStarFilledArray.map((filled, index) => (\r\n {\r\n starSelectedHandler(index + 1);\r\n }}\r\n >\r\n {filled\r\n ? \r\n : }\r\n\r\n {showToolTips && {toolTipText[index]}}\r\n \r\n ))}\r\n {showTotalRatings\r\n && (\r\n

    \r\n {`(${totalRatings})`}\r\n

    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default StarRatingInput;\r\n","import { formatDate } from \"isuppli-react-components\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n ComplianceDetailedChecksMessage,\r\n // eslint-disable-next-line no-unused-vars\r\n OnboardingComplianceExceptionMessage,\r\n // eslint-disable-next-line no-unused-vars\r\n ComplianceResultMessage,\r\n} from \"../http/Compliance/Models/Models\";\r\nimport ComplianceStatus from \"./Enumerators/ComplianceStatus\";\r\n\r\nexport interface DetailsCheckDisplayItem extends ComplianceResultMessage {\r\n dateCheckedDisplay: string;\r\n}\r\n\r\nexport interface DetailsDisplay extends ComplianceDetailedChecksMessage {\r\n complianceResults: DetailsCheckDisplayItem[];\r\n reason?: string;\r\n}\r\n\r\nexport const getCheckStatus = (check: ComplianceResultMessage) => {\r\n let status = ComplianceStatus.AwaitingResults;\r\n\r\n if (check.totalFailedChecks > 0) {\r\n status = ComplianceStatus.Error;\r\n } else if (\r\n check.totalPassedChecks > 0\r\n && (check.procureCheckResultItems == null\r\n || check.procureCheckResultItems.length === check.totalPassedChecks)\r\n ) {\r\n status = ComplianceStatus.Complete;\r\n }\r\n\r\n return status;\r\n};\r\n\r\nexport const getFormattedComplianceDetails = (\r\n details: ComplianceDetailedChecksMessage,\r\n exceptionReason: OnboardingComplianceExceptionMessage\r\n) => {\r\n let overAllStatus = ComplianceStatus.AwaitingResults;\r\n if (\r\n details.status === ComplianceStatus.Disabled\r\n ) {\r\n overAllStatus = ComplianceStatus.Disabled;\r\n } else if (\r\n details.status === ComplianceStatus.Error\r\n || details.complianceResults.some(\r\n (c) => getCheckStatus(c) === ComplianceStatus.Error\r\n )\r\n ) {\r\n overAllStatus = ComplianceStatus.Error;\r\n } else if (\r\n details.complianceResults.every(\r\n (c) => getCheckStatus(c) === ComplianceStatus.Complete\r\n )\r\n ) {\r\n overAllStatus = ComplianceStatus.Complete;\r\n }\r\n\r\n const formattedDetails = {\r\n ...details,\r\n status: overAllStatus,\r\n reason: exceptionReason?.reason,\r\n complianceResults: [\r\n ...details.complianceResults.map(\r\n (item) => ({\r\n ...item,\r\n dateCheckedDisplay: formatDate(item.dateModified),\r\n } as DetailsCheckDisplayItem)\r\n ),\r\n ],\r\n };\r\n\r\n return formattedDetails;\r\n};\r\n","import axios, {\r\n // eslint-disable-next-line no-unused-vars\r\n AxiosRequestConfig,\r\n} from \"axios\";\r\n\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const SearchUsnpscFamilies = async (\r\n searchTerm: string,\r\n config : AxiosRequestConfig | undefined\r\n) => {\r\n const url = `api/search/unspsc?searchTerm=${searchTerm}`;\r\n return makeRequestAsync(() => axios\r\n .get(url, config)) as Promise>;\r\n};\r\n","import React from \"react\";\r\nimport { Badge } from \"reactstrap\";\r\nimport Styles from \"./ChatChannelCard.module.scss\";\r\n\r\nexport default function chatChannelCard({\r\n active = false,\r\n companyName,\r\n messageDate = \"\",\r\n messageSnippet = \"\",\r\n profilePicture,\r\n onClickCallback,\r\n className = \"\",\r\n unreadMessageCount,\r\n}:{\r\n active?:boolean;\r\n companyName:string;\r\n messageDate?:string;\r\n messageSnippet?:string;\r\n profilePicture?:string;\r\n onClickCallback: () => void;\r\n className? : string ;\r\n unreadMessageCount?: number | null;\r\n }) {\r\n const classActive = active ? Styles.active : Styles.inactive;\r\n const classProfilePicture = profilePicture == null ? Styles.withoutPicture : Styles.withPicture;\r\n\r\n return (\r\n
    \r\n
    {profilePicture}
    \r\n
    \r\n
    \r\n
    {companyName}
    \r\n {\r\n unreadMessageCount != null && unreadMessageCount > 0 && !active && (\r\n \r\n {`${unreadMessageCount} new`}\r\n \r\n )\r\n }\r\n
    {messageDate}
    \r\n
    \r\n
    {messageSnippet}
    \r\n
    \r\n
    \r\n );\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"UpgradeButton\":\"Subscription_UpgradeButton__1I_hv\",\"RetryButton\":\"Subscription_RetryButton__1PMRI\",\"RevertButton\":\"Subscription_RevertButton__OSpgc\",\"AlertContainer\":\"Subscription_AlertContainer__qiRlY\",\"divChangeSubscriptionBtn\":\"Subscription_divChangeSubscriptionBtn__2CGnl\",\"CancelSubscriptionBtn\":\"Subscription_CancelSubscriptionBtn__3ZqEu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Attention\":\"DashboardSuppliersSummary_Attention__1dpFT\",\"Percentage\":\"DashboardSuppliersSummary_Percentage__1gPya\",\"Info\":\"DashboardSuppliersSummary_Info__1iosu\",\"height\":\"DashboardSuppliersSummary_height__23ZOq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"SummaryBlockHeading\":\"DashboardSummaryItem_SummaryBlockHeading__1eFY-\",\"DrillDownSummaryItem\":\"DashboardSummaryItem_DrillDownSummaryItem__DIoeu\",\"SummaryBlock_BorderRight\":\"DashboardSummaryItem_SummaryBlock_BorderRight__1NxGP\",\"SummaryBlock_BorderBottom\":\"DashboardSummaryItem_SummaryBlock_BorderBottom__1E-sx\",\"SmallerItemFont\":\"DashboardSummaryItem_SmallerItemFont__17WUC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dateLine\":\"MessageItem_dateLine__3HwAK\",\"dateText\":\"MessageItem_dateText__3PGrn\",\"name\":\"MessageItem_name__2D9N9\",\"email\":\"MessageItem_email__2Q2LO\",\"messageText\":\"MessageItem_messageText__1DikQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Description\":\"AddUserModal_Description__36Hk_\",\"MultiSelectDropdown\":\"AddUserModal_MultiSelectDropdown__13-oe\",\"RolesContainer\":\"AddUserModal_RolesContainer__3e1oJ\"};","import axios from \"axios\";\r\nimport { makeRequestAsync } from \"./util\";\r\n\r\nexport async function acceptOnboardingRequest(onboardingId, reason) {\r\n let queryParameter = \"\";\r\n if (reason != null) {\r\n queryParameter = `?reason=${reason}`;\r\n }\r\n return makeRequestAsync(() => axios.put(`/api/motivation/acceptboarding/${onboardingId}${queryParameter}`));\r\n}\r\n\r\nexport async function approveOnboardingRequest(onboardingId, reason) {\r\n return makeRequestAsync(() => axios.put(`/api/motivation/approveonboarding/${onboardingId}?reason=${reason}`));\r\n}\r\n\r\nexport async function declineOnboardingRequest(onboardingId, reason) {\r\n let queryParameter = \"\";\r\n if (reason != null) {\r\n queryParameter = `?reason=${reason}`;\r\n }\r\n return makeRequestAsync(() => axios.put(`/api/motivation/declineonboarding/${onboardingId}${queryParameter}`));\r\n}\r\n\r\nexport async function sendOnboardingRequestEmail(onboardingId) {\r\n return makeRequestAsync(() => axios.put(`/api/motivation/sendonboardingemail/${onboardingId}`));\r\n}\r\n\r\nexport async function linkOnboardingRequestToUserCompany(invitationId) {\r\n return makeRequestAsync(() => axios.put(`/api/motivation/invitation/${invitationId}`));\r\n}\r\n\r\nexport async function rejectOnboardingRequest(invitationId) {\r\n return makeRequestAsync(() => axios.put(`/api/motivation/invitation/${invitationId}/reject`));\r\n}\r\n\r\nexport async function retractOnboardingRequest(onboardingId) {\r\n return makeRequestAsync(() => axios.put(`/api/motivation/retractonboarding/${onboardingId}`));\r\n}\r\n\r\nexport async function updateOnboardingRequestDelegationStatus(onboardingId, delegationStatus, reason) {\r\n const queryParameters = `?delegationStatus=${delegationStatus}&reason=${reason}`;\r\n return makeRequestAsync(() => axios.put(`/api/motivation/delegation/${onboardingId}${queryParameters}`));\r\n}\r\n\r\nexport async function suspendOnboardingRequest(onboardingId, reason) {\r\n let queryParameter = \"\";\r\n if (reason !== null) {\r\n queryParameter = `?reason=${reason}`;\r\n }\r\n return makeRequestAsync(() => axios.put(`/api/motivation/suspendonboarding/${onboardingId}${queryParameter}`));\r\n}\r\n","import axios from \"axios\";\r\nimport { makeRequestAsync } from \"./util\";\r\n\r\nexport async function deleteOnboardingRequest(onboardingId) {\r\n return makeRequestAsync(() => axios.delete(`/api/motivation/deleteonboarding/${onboardingId}`));\r\n}\r\n\r\nexport async function dismissNotification(notificationId) {\r\n return makeRequestAsync(() => axios.delete(`/api/notifications/${notificationId}`));\r\n}\r\n\r\nexport async function unlinkSupplierOnboarding(supplierCompanyId) {\r\n return makeRequestAsync(() => axios.delete(`/api/motivation/unlinksupplieronboarding/${supplierCompanyId}`));\r\n}\r\n","export enum PageTypes{\r\n After = 0, // eslint-disable-line no-unused-vars\r\n From = 1, // eslint-disable-line no-unused-vars\r\n Before = 2, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default PageTypes;\r\n","import React, { Fragment } from \"react\";\r\nimport { Badge } from \"reactstrap\";\r\nimport BeeValidationStatus, { getBeeValidationStatusBadgeColor, beeValidationStatusToString } from \"../../Util/Enumerators/beeValidationStatus\";\r\n\r\nconst BeeStatusBadge = (\r\n {\r\n size = \"large\",\r\n hasBeeCertificate,\r\n validationStatus,\r\n }:{\r\n size?: \"small\"|\"large\",\r\n hasBeeCertificate?: boolean,\r\n validationStatus?: BeeValidationStatus,\r\n }\r\n) => {\r\n const badgeContent = (\r\n
    \r\n B-BBEE\r\n {validationStatus != null\r\n && validationStatus !== BeeValidationStatus.None\r\n && hasBeeCertificate\r\n ? (\r\n \r\n {beeValidationStatusToString(validationStatus)}\r\n \r\n )\r\n : (\r\n \r\n n/a\r\n \r\n )}\r\n
    \r\n );\r\n return (\r\n \r\n {\r\n size === \"small\" ? (

    {badgeContent}

    ) : (

    {badgeContent}

    )\r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport default BeeStatusBadge;\r\n","import { dateTimeDayMonthLabelFormat } from \"isuppli-react-components\";\r\nimport React from \"react\";\r\nimport ChatChannelCard from \"../ChatChannelCard/ChatChannelCard\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ChannelMessage } from \"../../../http/Messaging/Models/Models\";\r\nimport Styles from \"./ChatChannelListSection.module.scss\";\r\nimport { dateTimeLabelFormat } from \"../../../Util/valueFormatter\";\r\n\r\nconst ChatChannelListSection = (\r\n {\r\n messageCardList,\r\n selectedContent,\r\n sentMessageChannelId,\r\n scrollRef,\r\n onCardClickHandler,\r\n timestampFormat = \"dd MMM\",\r\n }\r\n :\r\n {\r\n messageCardList: ChannelMessage[],\r\n selectedContent?: {\r\n channelId: number,\r\n messageId?: number\r\n },\r\n sentMessageChannelId?:number,\r\n scrollRef?: React.RefObject,\r\n onCardClickHandler ?: (cardId:number) => void,\r\n timestampFormat ?: \"dd MMM\" | \"dd MMM-hh:mm\",\r\n }\r\n) => {\r\n const cardClickHandler = (cardId:number) => {\r\n if (onCardClickHandler != null) {\r\n return onCardClickHandler(cardId);\r\n }\r\n return {};\r\n };\r\n const chatChannelList = messageCardList.map((card, index) => {\r\n const dateTimeString = timestampFormat === \"dd MMM-hh:mm\"\r\n ? dateTimeLabelFormat(card.updatedDate)\r\n : dateTimeDayMonthLabelFormat(card.updatedDate);\r\n const cardItem = (\r\n cardClickHandler(card.id)}\r\n messageDate={dateTimeString}\r\n className={Styles.ChatChannelCard}\r\n />\r\n );\r\n\r\n if (card.id === sentMessageChannelId) {\r\n return (\r\n
    \r\n {cardItem}\r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n {cardItem}\r\n
    \r\n );\r\n });\r\n return chatChannelList as Array;\r\n};\r\n\r\nexport default ChatChannelListSection;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Label\":\"SupplierCheckDetails_Label__e2cwy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ConfirmationModal\":\"PendingEventDetailModal_ConfirmationModal___jiwE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"HeaderContainer\":\"MessengerHeader_HeaderContainer__2fIxG\",\"btnComposeMessage\":\"MessengerHeader_btnComposeMessage__3-ppA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerContent\":\"ChatMessageHeader_headerContent__2KFYm\",\"currentChannelDetails\":\"ChatMessageHeader_currentChannelDetails__2vbA4\",\"companyName\":\"ChatMessageHeader_companyName__1Z3av\",\"optionLoaderDDL\":\"ChatMessageHeader_optionLoaderDDL__2Pfg0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"PaymentTermsUpdate_Container__3g7-8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"BulkEmailUpdate_Container__3XyNd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchInput\":\"SecondarySearchInput_searchInput__1co8_\",\"filterButton\":\"SecondarySearchInput_filterButton__1xL1P\"};","export * from \"./IntegrationKeyMessage\";\r\nexport * from \"./IntegrationKeysMessage\";\r\nexport * from \"./NewIntegrationKeyMessage\";\r\nexport * from \"./OnboardingConfigurationMessage\";\r\nexport * from \"./CompanyInformationConfigurationMessage\";\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loading_inline\":\"Spinner_loading_inline__1veo5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MessageComposer\":\"ComposeMessageModal_MessageComposer__ekgKx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Tooltip\":\"SupplierSearch_Tooltip__17XUH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Rating\":\"RateCompanyModal_Rating__3Cu-F\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NewMessageModal\":\"NewMessageModal_NewMessageModal__7nX-u\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"messageHistory\":\"ChatMessageContent_messageHistory__53o07\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ChatChannelCard\":\"ChatChannelListSection_ChatChannelCard__3o6_4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Button\":\"UserSearchResults_Button__U0Mn_\"};","Object.defineProperty(exports, \"__esModule\", { value: true });\r\n// eslint-disable-next-line camelcase\r\nconst Dashboard_1 = require(\"../Sections/Dashboard/Dashboard\");\r\n\r\n// eslint-disable-next-line\r\nconst DashboardView = function () { return Dashboard_1.default(); };\r\nexports.default = DashboardView;\r\n// # sourceMappingURL=DashboardView.js.map\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"height\":\"ProfileStatusSummary_height__xeaa7\"};","module.exports = __webpack_public_path__ + \"static/media/triangle~wpequTjO.b297a4bf.svg\";","module.exports = __webpack_public_path__ + \"static/media/external-link~ZkfuIklB.f6dd039c.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo~vXxsgZKH.6f60cebe.svg\";","module.exports = __webpack_public_path__ + \"static/media/hamburger~bnuqweWD.c47449f4.svg\";","module.exports = __webpack_public_path__ + \"static/media/question-circle-solid~PLywQpnu.4e4f6dcf.svg\";","module.exports = __webpack_public_path__ + \"static/media/sort-amount-down~bgvrcyRP.ab719f38.svg\";","module.exports = __webpack_public_path__ + \"static/media/close~dCdEQihZ.3fd88e4b.svg\";","module.exports = __webpack_public_path__ + \"static/media/error~ibRnAybO.7f2a7cf6.svg\";","module.exports = __webpack_public_path__ + \"static/media/laptop~APFZZBcn.d79c0809.svg\";","module.exports = __webpack_public_path__ + \"static/media/progress-circle-threequarter~bhhGLGpS.3ec37af8.svg\";","module.exports = __webpack_public_path__ + \"static/media/sort-size-down~NZqfOkJv.ec6916b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/input-icon-building~bfBfexsf.19725578.svg\";","module.exports = __webpack_public_path__ + \"static/media/input-icon-phone~TdTpOXeW.c8f4881b.svg\";","module.exports = __webpack_public_path__ + \"static/media/input-icon-envelope~KQpLWrNf.4f5c729d.svg\";","module.exports = __webpack_public_path__ + \"static/media/input-icon-person~fHUjPibg.2856a6ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/input-icon-calendar~guvcZhGY.e7759907.svg\";","module.exports = __webpack_public_path__ + \"static/media/magnifying-glass~wfjKNiyd.6bf6c057.svg\";","module.exports = __webpack_public_path__ + \"static/media/pencil-alt-solid~PDBpUNTg.99576dbd.svg\";","module.exports = __webpack_public_path__ + \"static/media/paperclip~GNcKVwLM.4110e480.svg\";","module.exports = __webpack_public_path__ + \"static/media/magnifying-glass-circle~mZlPFzGE.d5b3c7ec.svg\";","module.exports = __webpack_public_path__ + \"static/media/solid_file_excel~boHPZPfy.1ac456bf.svg\";","module.exports = __webpack_public_path__ + \"static/media/cloud_upload~bgWNTSVp.cf12b6e2.svg\";","module.exports = __webpack_public_path__ + \"static/media/file-regular~eJPHbTuX.1f89d962.svg\";","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n});\n\nvar SvgClose = function SvgClose(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 24,\n viewBox: \"0 0 24 24\",\n width: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgClose, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/close.3fd88e4b.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { dateTimeLabelFormat } from \"../../Util/valueFormatter\";\r\nimport { ReactComponent as CloseSvg } from \"./close.svg\";\r\n\r\nfunction Notification(props) {\r\n return (\r\n \r\n
    \r\n
    {dateTimeLabelFormat(props.date)}
    \r\n {\r\n props.isNew\r\n &&
    NEW
    \r\n }\r\n
    {props.message}
    \r\n
    \r\n
    \r\n {\r\n event.stopPropagation();\r\n props.onCloseCallback();\r\n }}\r\n >\r\n \r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default Notification;\r\n","import React from \"react\";\r\nimport Styles from \"./Spinner.module.scss\";\r\n\r\nfunction Spinner(props: { inline?:boolean }) {\r\n const spinnerType = props.inline ? Styles.loading_inline : \"\";\r\n return (\r\n
    Loading …
    \r\n );\r\n}\r\nexport default Spinner;\r\n","import React from \"react\";\r\n\r\nimport Notification from \"./Notification\";\r\nimport Spinner from \"../Spinner/Spinner\";\r\n\r\nfunction Notifications(props) {\r\n const notificationMessages = props.notifications.map((notification, i) => (\r\n { props.onItemClick(notification.notificationType, notification.linkUrl); }}\r\n onCloseCallback={() => { props.onDismiss(notification.id); }}\r\n />\r\n ));\r\n\r\n return (\r\n
    \r\n
    \r\n

    Notifications

    \r\n
    \r\n {props.showLoading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n
    \r\n {\r\n props.notifications.length > 0\r\n ? notificationMessages\r\n : (\r\n
    \r\n

    You have no notifications at the moment.

    \r\n
    \r\n )\r\n }\r\n\r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default Notifications;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M14.999 20.12c.3.27.555.602.73.998a2.922 2.922 0 0 1-1.503 3.852 2.921 2.921 0 0 1-3.851-1.503 2.894 2.894 0 0 1-.24-1.214l4.864-2.132zM7.209 1.75c.06.14.094.284.13.429 3.074-.063 6.108 1.809 7.693 4.992 0 0 2.349 5.391 4.928 5.82.079.005 1.463.04 1.885 1.047.397.954-.422 2.23-1.847 2.844l-15.43 6.65c-1.424.614-2.997.368-3.333-.608-.333-.962.397-1.857.466-1.937C3.157 18.75.71 13.39.71 13.39-.662 9.938.037 6.647 2.088 4.494c-.084-.13-.17-.25-.234-.399A2.92 2.92 0 0 1 3.356.247 2.925 2.925 0 0 1 7.208 1.75z\"\n});\n\nvar SvgNotBell = function SvgNotBell(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 26,\n viewBox: \"0 0 22 26\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgNotBell, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/not-bell.5d82ff96.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { ReactComponent as BellSvg } from \"./not-bell.svg\";\r\n\r\nfunction NotificationButton(props) {\r\n return (\r\n \r\n \r\n {props.notifications > 0 && (\r\n \r\n {props.notifications}\r\n \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default NotificationButton;\r\n","import { useRef } from \"react\";\r\nimport {\r\n HubConnectionBuilder,\r\n // eslint-disable-next-line no-unused-vars\r\n HubConnection,\r\n} from \"@microsoft/signalr\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n Message,\r\n} from \"../http/Messaging/messagesApi\";\r\n\r\nexport enum SignalRNotifications {\r\n ChannelUpdates = \"ChannelUpdates\", // eslint-disable-line no-unused-vars\r\n UnreadNotifications = \"UnreadNotifications\", // eslint-disable-line no-unused-vars\r\n SubscriptionUpdates = \"SubscriptionUpdates\", // eslint-disable-line no-unused-vars\r\n SupplierImportProgressUpdates = \"SupplierImportProgressUpdates\", // eslint-disable-line no-unused-vars\r\n BulkMessageProgress = \"BulkMessageProgress\", // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport interface NewMessageNotification {\r\n channelId : number;\r\n newMessage: Message;\r\n}\r\n\r\nexport interface UnreadNotificationsUpdate {\r\n totalUnreadNotifications: number;\r\n}\r\n\r\nexport enum SupplierImportStatus{\r\n None, // eslint-disable-line no-unused-vars\r\n Enqued, // eslint-disable-line no-unused-vars\r\n BusyProcessing, // eslint-disable-line no-unused-vars\r\n Complete, // eslint-disable-line no-unused-vars\r\n Finalized, // eslint-disable-line no-unused-vars\r\n}\r\n\r\ntype handler = (message: T) => void\r\nlet connection: HubConnection | null = null;\r\nconst registeredHandlers: {\r\n [key: string]: {\r\n activeIndexes: number[],\r\n [key: number]: handler | undefined\r\n }\r\n} = {};\r\n\r\nconst useSignalR = (event: SignalRNotifications, handler: handler) => {\r\n const registeredHandlerIndex = useRef();\r\n\r\n if (connection == null) {\r\n connection = new HubConnectionBuilder()\r\n .withUrl(\"/hubs/notifications\")\r\n .withAutomaticReconnect()\r\n .build();\r\n\r\n connection.start();\r\n }\r\n\r\n if (registeredHandlerIndex.current == null) {\r\n if (registeredHandlers[event] == null) {\r\n registeredHandlers[event] = { activeIndexes: [] };\r\n connection.on(event, (eventDetails) => {\r\n registeredHandlers[event].activeIndexes.forEach((index) => {\r\n const registeredHandler = registeredHandlers[event][index];\r\n if (registeredHandler != null) {\r\n registeredHandler(eventDetails);\r\n }\r\n });\r\n });\r\n }\r\n let newIndex = 0;\r\n if (registeredHandlers[event].activeIndexes.length > 0) {\r\n newIndex = Math.max(...registeredHandlers[event].activeIndexes) + 1;\r\n }\r\n registeredHandlers[event].activeIndexes.push(newIndex);\r\n registeredHandlers[event][newIndex] = handler;\r\n registeredHandlerIndex.current = newIndex;\r\n } else {\r\n // update handler\r\n registeredHandlers[event][registeredHandlerIndex.current] = handler;\r\n }\r\n\r\n const disconnectFunction = useRef(() => {\r\n // disconnect\r\n if (registeredHandlerIndex.current != null && connection != null) {\r\n // clear handler\r\n registeredHandlers[event][registeredHandlerIndex.current] = undefined;\r\n\r\n // update active indexes\r\n registeredHandlers[event].activeIndexes = [\r\n ...registeredHandlers[event]\r\n .activeIndexes\r\n .filter((c) => c !== registeredHandlerIndex.current),\r\n ];\r\n }\r\n });\r\n\r\n return disconnectFunction.current;\r\n};\r\n\r\nexport default useSignalR;\r\n","enum NotificationTypes {\r\n General = 0, // eslint-disable-line no-unused-vars\r\n Messaging = 1, // eslint-disable-line no-unused-vars\r\n BeeCompliance = 2, // eslint-disable-line no-unused-vars\r\n Payments = 3, // eslint-disable-line no-unused-vars\r\n NewOpportunity = 4, // eslint-disable-line no-unused-vars\r\n Opportunity = 5, // eslint-disable-line no-unused-vars\r\n SuppierBeeCompliance = 6, // eslint-disable-line no-unused-vars\r\n SupplierRegulatoryCompliance = 7, // eslint-disable-line no-unused-vars\r\n RegulatoryCompliance = 8, // eslint-disable-line no-unused-vars\r\n Account = 9, // eslint-disable-line no-unused-vars\r\n Onboarding = 10, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default NotificationTypes;\r\n","import React, { useState, Fragment, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport { ModalBackground } from \"isuppli-react-components\";\r\nimport Notifications from \"./Notifications\";\r\nimport NotificationButton from \"../../Controls/NotificationButton/NotificationButton\";\r\nimport useSignalR, {\r\n SignalRNotifications,\r\n // eslint-disable-next-line no-unused-vars\r\n UnreadNotificationsUpdate,\r\n} from \"../../Hooks/useSignalR\";\r\n\r\nimport { getNotifications, getNotificationCount, dismissNotification } from \"../../http/index\";\r\nimport NotificationTypes from \"../../Util/Enumerators/notificationTypes\";\r\n\r\ninterface notificationMessage { id: number, seen: boolean, message: string }\r\ninterface notificationsMessage { totalNotifications: number, latest: notificationMessage[] }\r\n\r\nconst NotificationMenuItem = () => {\r\n const history = useHistory();\r\n\r\n const [showNotifications, setShowNotifications] = useState(false);\r\n const [notificationCount, setNotificationCount] = useState(0);\r\n const [notifications, setNotifications] = useState([]);\r\n const [showLoading, setLoading] = useState(false);\r\n\r\n const disconnect = useSignalR(\r\n SignalRNotifications.UnreadNotifications,\r\n async (data) => {\r\n setNotificationCount(data.totalUnreadNotifications);\r\n // if notification menu is open, update notification content\r\n if (showNotifications) {\r\n setLoading(true);\r\n\r\n const notificationsMessage: notificationsMessage = await getNotifications();\r\n setNotifications(notificationsMessage.latest);\r\n\r\n setLoading(false);\r\n }\r\n }\r\n );\r\n // register SignalR updates\r\n useEffect(() => () => {\r\n disconnect();\r\n }, [disconnect]);\r\n\r\n useEffect(() => {\r\n async function updateNotificationCount() {\r\n const updatedNotificationCount = await getNotificationCount();\r\n setNotificationCount(updatedNotificationCount);\r\n }\r\n updateNotificationCount();\r\n }, []);\r\n\r\n const notificationMenuClickHandler = async () => {\r\n setShowNotifications((prevShowNotifications) => !prevShowNotifications);\r\n\r\n // check showNotifications (only call when opening notification popup)\r\n if (!showNotifications) {\r\n setLoading(true);\r\n\r\n const notificationsMessage: notificationsMessage = await getNotifications();\r\n setNotifications(notificationsMessage.latest);\r\n\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const notificationItemClickHandler = async (\r\n notificationType: NotificationTypes,\r\n linkUrl: string\r\n ) => {\r\n // close notifications menu\r\n setShowNotifications(false);\r\n\r\n // navigate\r\n switch (notificationType) {\r\n case NotificationTypes.Messaging:\r\n history.push(linkUrl ?? \"/marketplace/messaging\");\r\n break;\r\n case NotificationTypes.BeeCompliance:\r\n history.push(linkUrl ?? \"/myCompany/profile/bee\");\r\n break;\r\n case NotificationTypes.Payments:\r\n history.push(linkUrl ?? \"/myCompany/subscription\");\r\n break;\r\n case NotificationTypes.Opportunity:\r\n case NotificationTypes.NewOpportunity:\r\n const url = linkUrl ?? \"/redirect/opportunities\";\r\n window.open(url, \"_blank\"); // to open new page\r\n break;\r\n case NotificationTypes.RegulatoryCompliance:\r\n history.push(linkUrl ?? \"/myCompany/profile/supplier\");\r\n break;\r\n case NotificationTypes.SuppierBeeCompliance:\r\n history.push(linkUrl ?? \"/marketplace/search\");\r\n break;\r\n case NotificationTypes.SupplierRegulatoryCompliance:\r\n history.push(linkUrl ?? \"/marketplace/search\");\r\n break;\r\n case NotificationTypes.Onboarding:\r\n history.push(linkUrl ?? \"/myoffice/onboardingrequest\");\r\n break;\r\n default:\r\n history.push(linkUrl ?? \"/dashboard\");\r\n break;\r\n }\r\n };\r\n\r\n const onDismissClickHandler = async (notificationId: number) => {\r\n // pop from list in state\r\n setNotifications((prevNotifications) => prevNotifications\r\n .filter((n) => n.id !== notificationId));\r\n // update count\r\n setNotificationCount((prevNotificationCount) => prevNotificationCount - 1);\r\n\r\n // call api\r\n await dismissNotification(notificationId);\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n {showNotifications && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default NotificationMenuItem;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M9 .515L17.485 9H.515z\"\n});\n\nvar SvgRedTriangle = function SvgRedTriangle(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 9,\n viewBox: \"0 0 18 9\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgRedTriangle, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/red-triangle.178f63b9.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M1.65 10h7.696c1.266 0 2.062-1.389 1.435-2.476L6.921.834a1.632 1.632 0 0 0-2.847 0l-3.86 6.69C-.401 8.624.383 10 1.649 10zm3.86-1.486a.618.618 0 0 1-.616-.615c0-.339.278-.616.616-.616.337 0 .615.277.603.628.012.326-.278.603-.603.603zM5.353 2.96a.612.612 0 0 1 .711.35c.037.097.06.193.06.302-.011.302-.035.616-.06.918-.024.471-.06.954-.084 1.425-.012.157-.012.29-.012.447a.456.456 0 0 1-.458.447.446.446 0 0 1-.459-.435c-.036-.737-.084-1.473-.12-2.21l-.037-.592a.64.64 0 0 1 .459-.652z\"\n});\n\nvar SvgWarning = function SvgWarning(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 10,\n viewBox: \"0 0 11 10\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgWarning, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/warning.a5117b86.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { ReactComponent as RedTriangleSvg } from \"./red-triangle.svg\";\r\nimport { ReactComponent as WarningSvg } from \"./warning.svg\";\r\n\r\nfunction ValidationError({ children }) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {children}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default ValidationError;\r\n","import React, { Component } from \"react\";\r\n\r\nimport ValidationError from \"./ValidationError/ValidationError\";\r\n\r\nclass DropdownInput extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hasFocus: false,\r\n msgs: [],\r\n };\r\n this.showError = true;\r\n }\r\n\r\n onChange = (ev) => {\r\n const event = {\r\n target: {\r\n name: ev.target.name,\r\n value: Number(ev.target.value),\r\n },\r\n };\r\n\r\n this.props.onChangeCallback(event);\r\n this.showError = event.target.value <= 0;\r\n };\r\n\r\n onFocus = () => {\r\n this.setState({\r\n hasFocus: true,\r\n });\r\n };\r\n\r\n onBlur = () => {\r\n if (this.state.hasFocus) {\r\n this.setState({\r\n hasFocus: false,\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const options = [\r\n this.props.noPrompt ? null : (\r\n \r\n ),\r\n ].concat(\r\n this.props.options.map((option, i) => (\r\n option.value < 0 ? (\r\n \r\n ) : (\r\n \r\n )\r\n ))\r\n );\r\n const additional = this.state.msgs.map((msg, i) => (\r\n \r\n ));\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {options}\r\n \r\n
    \r\n {!!this.props.additional\r\n && this.props.additional.length > 0\r\n && this.showError && (\r\n \r\n \r\n \r\n )}\r\n {additional.length !== 0 && (\r\n {additional}\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DropdownInput;\r\n","const duplicateCompanyEmailType = {\r\n None: 0,\r\n CompanyAdmistrator: 1,\r\n B1SA_Support: 2,\r\n};\r\n\r\nexport default duplicateCompanyEmailType;\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { BasicTable, ConfirmationModal, ModalPopup } from \"isuppli-react-components\";\r\n\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\nimport { sendCompanyDuplicateEmail } from \"../../http/posts\";\r\nimport duplicateCompanyEmailType from \"../../Util/Enumerators/duplicateCompanyEmailType\";\r\nimport {\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass DuplicateRegistrationModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n values: [],\r\n showSelectionTable: true,\r\n showMyCompanyTable: false,\r\n showRequestContactTable: false,\r\n showSuccessModal: false,\r\n contactInfo: {\r\n companyIds: [],\r\n name: \"\",\r\n surname: \"\",\r\n email: \"\",\r\n phonenumber: \"\",\r\n emailType: duplicateCompanyEmailType.None,\r\n },\r\n };\r\n }\r\n\r\n getNoRelationshipRow() {\r\n return [\r\n [{\r\n key: \"name_row\",\r\n fullSize: true,\r\n valueTemplate: () => (\r\n this.onNameChangeHandler(ev.target.value)}\r\n />\r\n ),\r\n },\r\n {\r\n key: \"surname_row\",\r\n fullSize: true,\r\n valueTemplate: () => (\r\n this.onSurnameChangeHandler(ev.target.value)}\r\n />\r\n ),\r\n },\r\n {\r\n key: \"email_row\",\r\n fullSize: true,\r\n valueTemplate: () => (\r\n this.onEmailChangeHandler(ev.target.value)}\r\n />\r\n ),\r\n },\r\n {\r\n key: \"phone_row\",\r\n fullSize: true,\r\n valueTemplate: () => (\r\n this.onPhoneChangeHandler(ev.target.value)}\r\n />\r\n ),\r\n }],\r\n ];\r\n }\r\n\r\n proceedHandler() {\r\n // Check dropdown values\r\n\r\n // Contact duplicate company administrator\r\n const contactDuplicateCompanyAdminSelected = (this.state.values).includes(1);\r\n if (contactDuplicateCompanyAdminSelected) {\r\n // get company ids that have \"contact b1sa support action\" option selected\r\n const matches = this.props.duplicates.filter((_, index) => (this.state.values[index] === 1));\r\n const companyIds = matches.map((duplicate) => duplicate.companyId);\r\n const emailType = duplicateCompanyEmailType.CompanyAdmistrator;\r\n\r\n // update company ids in state\r\n this.setState((prevState) => {\r\n const contactInfo = prevState.contactInfo;\r\n const newContactInfo = { ...contactInfo, companyIds, emailType };\r\n return {\r\n contactInfo: newContactInfo,\r\n showSelectionTable: false,\r\n showMyCompanyTable: true,\r\n showRequestContactTable: false,\r\n };\r\n });\r\n return;\r\n }\r\n\r\n // Contact B1SA Support\r\n const contactB1SASupport = (this.state.values).includes(2);\r\n if (contactB1SASupport) {\r\n // get company ids that have \"contact b1sa support action\" option selected\r\n const matches = this.props.duplicates.filter((_, index) => (this.state.values[index] === 2));\r\n const companyIds = matches.map((duplicate) => duplicate.companyId);\r\n const emailType = duplicateCompanyEmailType.B1SA_Support;\r\n\r\n // update company ids in state\r\n this.setState((prevState) => {\r\n const contactInfo = prevState.contactInfo;\r\n const newContactInfo = { ...contactInfo, companyIds, emailType };\r\n return {\r\n contactInfo: newContactInfo,\r\n showSelectionTable: false,\r\n showMyCompanyTable: false,\r\n showRequestContactTable: true,\r\n };\r\n });\r\n }\r\n }\r\n\r\n onChangeHandler(value, index) {\r\n this.setState((previousState) => {\r\n const newValues = [...previousState.values];\r\n newValues[index] = value;\r\n return {\r\n values: newValues,\r\n };\r\n });\r\n }\r\n\r\n onNameChangeHandler(value) {\r\n // Update value in state\r\n this.setState((prevState) => {\r\n const contactInfo = prevState.contactInfo;\r\n const newContactInfo = { ...contactInfo, name: value };\r\n return {\r\n contactInfo: newContactInfo,\r\n };\r\n });\r\n }\r\n\r\n onSurnameChangeHandler(value) {\r\n // Update value in state\r\n this.setState((prevState) => {\r\n const contactInfo = prevState.contactInfo;\r\n const newContactInfo = { ...contactInfo, surname: value };\r\n return {\r\n contactInfo: newContactInfo,\r\n };\r\n });\r\n }\r\n\r\n onEmailChangeHandler(value) {\r\n // Update value in state\r\n this.setState((prevState) => {\r\n const contactInfo = prevState.contactInfo;\r\n const newContactInfo = { ...contactInfo, email: value };\r\n return {\r\n contactInfo: newContactInfo,\r\n };\r\n });\r\n }\r\n\r\n onPhoneChangeHandler(value) {\r\n // Update value in state\r\n this.setState((prevState) => {\r\n const contactInfo = prevState.contactInfo;\r\n const newContactInfo = { ...contactInfo, phonenumber: value };\r\n return {\r\n contactInfo: newContactInfo,\r\n };\r\n });\r\n }\r\n\r\n validateContactInfo = (contactInfo) => {\r\n if (\r\n contactInfo.name.length > 0\r\n && contactInfo.surname.length > 0\r\n && contactInfo.email.length > 0\r\n && contactInfo.phonenumber.length > 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n submitContactInfo = async () => {\r\n try {\r\n const contactInfo = this.state.contactInfo;\r\n if (this.validateContactInfo(contactInfo)) {\r\n await sendCompanyDuplicateEmail(contactInfo);\r\n }\r\n\r\n this.setState((prevState) => ({\r\n contactInfo: prevState.contactInfo,\r\n showSelectionTable: false,\r\n showMyCompanyTable: false,\r\n showRequestContactTable: false,\r\n showSuccessModal: true,\r\n }));\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n }\r\n };\r\n\r\n render() {\r\n const selectionRows = this.props.duplicates.map((duplicate, index) => [\r\n {\r\n key: `${duplicate.companyId}_name`,\r\n value: duplicate.registeredName,\r\n },\r\n {\r\n key: `${duplicate.companyId}_type`,\r\n value: (this.props.companyTypes != null)\r\n ? this.props.companyTypes.find(\r\n (companyType) => companyType.id === duplicate.companyType.id\r\n )?.name\r\n : null,\r\n },\r\n {\r\n key: `${duplicate.companyId}_number`,\r\n value: duplicate.registrationNumber,\r\n },\r\n {\r\n key: `${duplicate.companyId}_option`,\r\n valueTemplate: () => (\r\n {\r\n this.onChangeHandler(ev.target.value, index);\r\n }}\r\n />\r\n ),\r\n },\r\n ]);\r\n\r\n let modalHeading;\r\n let modalSubheading;\r\n let modalButtons;\r\n\r\n if (this.state.showSelectionTable) {\r\n modalHeading = \"Supplier(s) found in the directory\";\r\n modalSubheading = \"The following company(s) with the same registration type and registration number is/are already registered on the Network.\";\r\n modalButtons = [\r\n {\r\n key: \"Proceed\",\r\n label: \"Proceed\",\r\n color: \"primary\",\r\n onClick: () => this.proceedHandler(),\r\n },\r\n ];\r\n } else if (this.state.showMyCompanyTable) {\r\n modalHeading = \"CONTACT COMPANY ADMINISTRATION\";\r\n modalSubheading = \"Please provide your contact information in the following fields and submit. A request will be sent to the admistrator of duplicate company(s) to contact you.\";\r\n modalButtons = [\r\n {\r\n key: \"submit\",\r\n label: \"Submit\",\r\n color: \"primary\",\r\n onClick: () => this.submitContactInfo(), // Send Email to company\r\n },\r\n ];\r\n } else if (this.state.showRequestContactTable) {\r\n modalHeading = \"CONTACT B1SA SUPPORT\";\r\n modalSubheading = \"Please provide your contact information in the following fields and submit. B1SA will contact you for further information.\";\r\n modalButtons = [\r\n {\r\n key: \"submit\",\r\n label: \"Submit\",\r\n color: \"primary\",\r\n onClick: () => this.submitContactInfo(), // Send Email to B1SA support\r\n },\r\n ];\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n (this.state.showMyCompanyTable\r\n || this.state.showSelectionTable\r\n || this.state.showRequestContactTable)\r\n && (\r\n \r\n \r\n {\r\n this.state.showSelectionTable\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n this.state.showMyCompanyTable\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n this.state.showRequestContactTable\r\n && (\r\n \r\n )\r\n }\r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n this.state.showSuccessModal && (\r\n this.props.submissionSuccessCallback()}\r\n onToggleModal={() => this.props.toggleModalCallback()}\r\n />\r\n )\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapDispatchToProps)(DuplicateRegistrationModal)\r\n);\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nimport { DataFeatures, ProgressIndicator, useDataFeatureCheck } from \"isuppli-react-components\";\r\nimport { useHistory } from \"react-router\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../Store/ReduxState\";\r\n\r\nfunction RegistrationProgress(\r\n { currentStep }\r\n :\r\n {currentStep: number }\r\n) {\r\n const lastStepCompleted = useSelector((state: ReduxState) => state.lastStepCompleted);\r\n const history = useHistory();\r\n\r\n const dataFeatureCheck = useDataFeatureCheck();\r\n\r\n const hasBanking = dataFeatureCheck(DataFeatures.BankingDetails);\r\n\r\n const links = [\"supinfo\",\r\n \"coninfo\",\r\n \"beeinfo\",\r\n \"prdinfo\",\r\n \"bnkinfo\",\r\n \"documents\",\r\n \"prtinfo\"];\r\n const steps = [\r\n \"SUPPLIER INFORMATION\",\r\n \"ADDRESS & CONTACT DETAILS\",\r\n \"B-BBEE PRACTICES & CERTIFICATION\",\r\n \"PRODUCT OFFERINGS\",\r\n \"BANK DETAILS\",\r\n \"SUPPORTING DOCUMENTS & AGREEMENTS\",\r\n \"SUBSCRIPTION PACKAGE\",\r\n ];\r\n\r\n if (!hasBanking) {\r\n links.splice(4, 1);\r\n steps.splice(4, 1);\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    YOUR ACCOUNT HAS BEEN CREATED.

    \r\n
    \r\n\r\n
    \r\n

    \r\n Please help us and businesses understand your business by providing\r\n the\r\n
    \r\n information required on each of the steps.\r\n

    \r\n
    \r\n\r\n {\r\n history.push(links[stepIndex]);\r\n }}\r\n steps={steps}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default RegistrationProgress;\r\n","import React from \"react\";\r\nimport { ModalPopup } from \"isuppli-react-components\";\r\n\r\nconst OnboardingInvitationDetails = ({\r\n onClose,\r\n invitation,\r\n onAccept,\r\n onReject,\r\n}) => {\r\n const {\r\n registeredName,\r\n registrationNumber,\r\n vatNumber,\r\n tradingName,\r\n generalEmail,\r\n companyType,\r\n } = invitation;\r\n return (\r\n { onReject(); onClose(); },\r\n },\r\n {\r\n key: \"accept\",\r\n label: \"Accept\",\r\n color: \"primary\",\r\n onClick: () => { onAccept(); onClose(); },\r\n }]\r\n }\r\n >\r\n
    \r\n
    \r\n

    Onboarding Invitation Details

    \r\n
    \r\n
    \r\n Registered Name:\r\n
    \r\n
    {registeredName}
    \r\n
    \r\n\r\n {tradingName == null ? null : (\r\n
    \r\n
    \r\n Company Trading Name:\r\n
    \r\n
    {tradingName}
    \r\n
    \r\n )}\r\n\r\n {companyType == null ? null : (\r\n
    \r\n
    \r\n Company Type:\r\n
    \r\n
    {companyType}
    \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n Registration Number:\r\n
    \r\n
    {registrationNumber}
    \r\n
    \r\n\r\n {vatNumber == null || vatNumber === \"\" ? null : (\r\n
    \r\n
    \r\n VAT Number:\r\n
    \r\n
    {vatNumber}
    \r\n
    \r\n )}\r\n\r\n {generalEmail == null ? null : (\r\n
    \r\n
    \r\n General Business Email Address:\r\n
    \r\n
    {generalEmail}
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default OnboardingInvitationDetails;\r\n","import React, { Fragment } from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { Spinner } from \"isuppli-react-components\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n showLoadingModal: state.showLoadingModal,\r\n loadingScreenMsg: state.loadingScreenMsg,\r\n});\r\n\r\nfunction Loading({ showLoadingModal }) {\r\n return {showLoadingModal && };\r\n}\r\n\r\nexport default connect(mapStateToProps)(Loading);\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M7.809 0c.19 0 .362.116.433.294l.695 1.737h-.812v3.656L13 7.72v.406a.406.406 0 0 0-.406.406v3.656a.406.406 0 1 1 0 .813H.406a.406.406 0 1 1 0-.813h.406V2.031H0L.695.294A.466.466 0 0 1 1.13 0zm-.497 2.031H1.625v10.156h5.688V2.031zm4.002 6.094H8.592a.467.467 0 0 0-.467.467v3.595h3.656V8.592a.467.467 0 0 0-.467-.467zm-6.439 2.438v.812h-.813v-.813h.813zm-1.625 0v.812h-.813v-.813h.813zm3.25 0v.812h-.813v-.813H6.5zM4.875 8.937v.813h-.813v-.813h.813zm-1.625 0v.813h-.813v-.813h.813zm3.25 0v.813h-.813v-.813H6.5zM4.875 7.313v.812h-.813v-.813h.813zm-1.625 0v.812h-.813v-.813h.813zm3.25 0v.812h-.813v-.813H6.5zM4.875 5.688V6.5h-.813v-.813h.813zm-1.625 0V6.5h-.813v-.813h.813zm3.25 0V6.5h-.813v-.813H6.5zM4.875 4.063v.812h-.813v-.813h.813zm-1.625 0v.812h-.813v-.813h.813zm3.25 0v.812h-.813v-.813H6.5zM4.875 2.438v.812h-.813v-.813h.813zm-1.625 0v.812h-.813v-.813h.813zm3.25 0v.812h-.813v-.813H6.5z\"\n});\n\nvar SvgBuildings = function SvgBuildings(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 13,\n viewBox: \"0 0 13 13\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgBuildings, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/buildings.19725578.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M6.816 6.9a.274.274 0 0 1 .366 0l6.088 5.86c.09.09.025.24-.106.24H.838c-.132 0-.2-.15-.106-.24zM0 5.013c0-.135.165-.213.277-.131l3.925 2.83a.366.366 0 0 1 .04.572L.255 12.074c-.091.094-.256.029-.256-.098zm13.723-.131c.112-.082.277-.004.277.13v6.967c0 .127-.16.188-.256.098L9.756 8.284a.371.371 0 0 1 .039-.572zm-3.62-.254c.25 0 .454.198.454.44a.45.45 0 0 1-.458.441H3.668a.448.448 0 0 1-.455-.44c0-.243.204-.44.455-.44h6.435zM10.9 0c.106 0 .207.04.288.109l1.758 1.556c.09.08.136.185.136.297l-.013 2.417-.623.446c-.05.036-.122.004-.122-.056l-.005-2.63-1.02-.016a.528.528 0 0 1-.526-.527V.732l-.009-.008H1.955a.48.48 0 0 0-.491.466l.004 3.583c0 .06-.068.096-.118.06l-.661-.454L.7 1.19C.701.535 1.265 0 1.955 0zm-.797 2.864c.25 0 .454.198.454.441 0 .247-.204.44-.458.44H3.668a.448.448 0 0 1-.455-.44c0-.243.204-.44.455-.44h6.435z\"\n});\n\nvar SvgOpenEnvelope = function SvgOpenEnvelope(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 13,\n viewBox: \"0 0 14 13\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgOpenEnvelope, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/open-envelope.bd313391.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M7.5.462a1.465 1.465 0 0 0-.494-.326A1.466 1.466 0 0 0 6.431 0H.625A.64.64 0 0 0 0 .65v10.829c0 .357.281.65.625.65h8.75a.64.64 0 0 0 .625-.65v-7.8a1.628 1.628 0 0 0-.131-.598 1.54 1.54 0 0 0-.313-.514L7.5.462zm-.594.61l2.038 2.12a.697.697 0 0 1 .143.279H6.67V.923a.713.713 0 0 1 .262.15h-.025zm2.256 10.193H.838V.864h5v2.82c0 .358.282.65.626.65h2.706v6.93h-.007zM2.5 5.415v.435a.202.202 0 0 0 .194.215H7.288a.2.2 0 0 0 .212-.196v-.454a.202.202 0 0 0-.194-.215H2.712a.2.2 0 0 0-.212.195v.02zm.206 1.514c-.112-.006-.2.084-.206.201v.449a.202.202 0 0 0 .194.215H7.288a.2.2 0 0 0 .212-.196V7.15a.202.202 0 0 0-.194-.215H2.712l-.006-.006zm0 1.736c-.112-.007-.2.084-.206.201v.449a.202.202 0 0 0 .194.214H7.288a.2.2 0 0 0 .212-.195v-.455a.202.202 0 0 0-.194-.214h-4.6z\"\n});\n\nvar SvgDocument = function SvgDocument(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 10,\n height: 13,\n viewBox: \"0 0 10 13\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgDocument, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/document.13385020.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M6.5 0A6.507 6.507 0 0 0 0 6.5C0 10.084 2.916 13 6.5 13S13 10.084 13 6.5 10.084 0 6.5 0zm-.167 2.667a2 2 0 1 1 0 4 2 2 0 0 1 0-4zM10 11.033a5.82 5.82 0 0 1-7.333.004c.093-1.677 1.186-3.37 2.523-3.37h2.285c1.34 0 2.436 1.632 2.525 3.31v.056z\"\n});\n\nvar SvgUserBgDark = function SvgUserBgDark(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 13,\n viewBox: \"0 0 13 13\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgUserBgDark, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/user-bg-dark.2856a6ed.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M7.399 7.958c.218.137.455.248.705.329l.95 4.083.003.012v-.012l.95-4.084c.25-.081.486-.19.703-.328h.085a3.593 3.593 0 0 1 3.585 3.601v1.338l-.003.103H3.732l-.003-.103V11.56a3.593 3.593 0 0 1 3.584-3.601zm5.86 2.623H10.8v.438h2.458v-.438zM1.968 7.57c.116.076.225.12.357.162l.487 2.149.52-2.15c.132-.043.274-.085.389-.161h.045c.41 0 .79.123 1.1.345a4.131 4.131 0 0 0-1.083 1.029h-.007l-.007.009v-.01l-.046.001c-.265.388-.45.84-.597 1.26h-3.1c0-.038-.026-.026-.026-.044V9.45c0-1.053.875-1.882 1.922-1.882zm12.338 0c.077.05.147.087.224.118l.123.044.477 2.149.53-2.15c.088-.029.185-.057.274-.095l.125-.067h.045c.998 0 1.788.752 1.861 1.734l.006.148v.709c0 .012.013.01.022.02l.007.024h-3.036a4.436 4.436 0 0 0-1.772-2.321c.261-.18.569-.282.9-.307l.169-.007h.045zM17.4 8.942h-1.33v.23h1.33v-.23zM9.094 0c1.811 0 3.285 1.773 3.294 3.957a.177.177 0 0 1 .06-.001c.199.035.301.407.228.832-.074.425-.295.74-.495.705a.187.187 0 0 1-.038-.011c-.493 1.448-1.674 2.471-3.049 2.471-1.388 0-2.577-1.042-3.061-2.511a.195.195 0 0 1-.1.051c-.2.035-.42-.28-.494-.705-.074-.425.029-.797.228-.832a.242.242 0 0 1 .133.02C5.8 1.785 7.278 0 9.094 0zm6.119 3.331c.958 0 1.739.939 1.743 2.095a.107.107 0 0 1 .032 0c.105.018.16.215.12.44-.038.225-.155.392-.261.374a.094.094 0 0 1-.02-.006c-.262.766-.886 1.308-1.614 1.308-.735 0-1.365-.552-1.621-1.33a.103.103 0 0 1-.053.028c-.106.018-.223-.15-.262-.374-.039-.225.015-.422.121-.44a.128.128 0 0 1 .07.01c0-1.16.783-2.105 1.745-2.105zm-12.347 0c.959 0 1.739.939 1.744 2.095a.109.109 0 0 1 .031 0c.106.018.16.215.12.44-.038.225-.155.392-.261.374a.1.1 0 0 1-.02-.006C4.219 7 3.594 7.542 2.866 7.542c-.735 0-1.364-.552-1.62-1.33a.104.104 0 0 1-.054.028c-.105.018-.222-.15-.261-.374-.04-.225.015-.422.12-.44a.129.129 0 0 1 .071.01c0-1.16.782-2.105 1.744-2.105zm6.623-.193C8.654 2.1 7.202 2.162 6.52 3.05a4.14 4.14 0 0 0-.104.926c0 1.853 1.202 3.36 2.68 3.36 1.402 0 2.555-1.358 2.669-3.08-.276.01-1.398-.028-2.275-1.118zm4.36 1.808c-.035.156-.055.32-.055.49 0 .981.636 1.779 1.418 1.779.743 0 1.353-.719 1.414-1.63a1.513 1.513 0 0 1-1.204-.592c-.443-.55-1.212-.517-1.573-.047zm-10.774.047c-.442-.55-1.211-.517-1.572-.047a2.17 2.17 0 0 0-.055.49c0 .981.636 1.779 1.418 1.779.742 0 1.353-.719 1.413-1.63a1.513 1.513 0 0 1-1.204-.592z\"\n});\n\nvar SvgUserGroup = function SvgUserGroup(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 13,\n viewBox: \"0 0 18 13\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgUserGroup, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/user-group.7bb8d62b.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M11.7 0H1.3C.585 0 .006.563.006 1.25L0 8.75C0 9.438.585 10 1.3 10h10.4c.715 0 1.3-.563 1.3-1.25v-7.5C13 .562 12.415 0 11.7 0zm0 8.75H1.3V2.5l5.2 3.125L11.7 2.5v6.25zM6.5 4.375L1.3 1.25h10.4L6.5 4.375z\"\n});\n\nvar SvgEmail = function SvgEmail(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 10,\n viewBox: \"0 0 13 10\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgEmail, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/email.4f5c729d.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M6.923 1.922c.034 0 .078.018.116.071-.171-.243.19-.138.212-.37.204-.152.132-.251.189-.259l.065-.053a.604.604 0 0 1-.206.057l-.028-.001a.505.505 0 0 0-.032-.001c-.045 0-.117.009-.29.061-.396.029-.68.457-.814.47-.138.074-.132.088-.099.088l.031-.003a.302.302 0 0 1 .03-.001c.033 0 .025.014-.162.102.043.012-.328.177-.331.434-.014.1.028.167.097.167.057 0 .132-.045.21-.155.264-.304.82-.334 1.06-.519-.148-.011-.119-.088-.048-.088zm-1.34.104c-.027 0 .007-.033.048-.064a.897.897 0 0 1 .089-.064c.157-.059.06-.074.145-.116H5.86c-.016 0 .015-.025.043-.05.03-.025.057-.05.03-.05a.493.493 0 0 0-.118.034c.02-.03.098-.049.21-.113a2.87 2.87 0 0 1-.303.087c-.012 0 .056-.025.257-.087a.19.19 0 0 0 .023.002c.022 0 .03-.005.026-.01-.003-.006-.015-.01-.034-.01-.29.022-.507.205-.443.227a.275.275 0 0 1 .083-.019c.038 0 .02.032-.056.08.035.082-.586.293-.656.369a.178.178 0 0 1 .07-.027c.046 0-.015.09-.076.135.037.034.066.047.09.047.06 0 .088-.086.139-.111.012.025.025.035.039.035.05 0 .112-.122.16-.187a.075.075 0 0 0 .058.025c.047 0 .118-.038.228-.146a.158.158 0 0 1-.047.013zm-.672.536c-.105.066-.16.092-.184.092-.043 0 .015-.083.068-.166.053-.083.1-.165.032-.165a.5.5 0 0 0-.183.064c-.257.168-.688.638-.878.638H3.75c.306-.225.217-.668.646-.782.425-.245.716-.168 1.092-.444a1.302 1.302 0 0 1-.313.116c-.025 0 .01-.027.164-.102a.204.204 0 0 1-.034.004c-.102 0 .675-.278.71-.283-.32.045-.834.313-.905.313-.007 0-.01-.003-.007-.009.012-.01.011-.014 0-.014-.036 0-.196.053-.355.107-.16.054-.319.106-.356.106-.012 0-.011-.006.007-.018-1.384.785-2.535 2.108-2.898 3.679.148.342.047.995.292 1.187.28.238-.239.925-.102 1.351.141.767.748 1.292.812 2.076.11.541.516 1.198.688 1.543.13.128.482.501.546.501.025 0 .007-.057-.085-.205-.058-.166-.397-.603-.233-.603a.14.14 0 0 1 .03.004c-.204-.204.447-.15-.006-.428-.054-.064-.065-.086-.05-.086.013 0 .054.023.103.046.05.023.107.045.156.045.072 0 .124-.05.093-.232a.096.096 0 0 0 .033.007c.075 0 .05-.149.056-.298.007-.149.045-.298.248-.298.024 0 .049.003.077.007.473-.257.062-.97.607-1.231-.02-.591-.814-.62-1.114-.86a.276.276 0 0 1-.143.039.443.443 0 0 1-.141-.027c-.042-.013-.078-.026-.107-.026-.006 0-.012 0-.018.002.509-.134.138-.843-.285-.843l-.029.001c-.032-.307-.191-.19-.208-.445a.167.167 0 0 1-.079.02c-.071 0-.134-.048-.19-.096-.054-.049-.103-.098-.143-.098-.034 0-.062.032-.087.126.03-.143.022-.19-.008-.19s-.084.05-.14.1c-.058.051-.12.101-.17.101H1.89c-.342-.244.002-.675-.177-1.005.117-.126.164-.34.11-.34-.027 0-.08.053-.161.196-.117-.3.193-.975.456-1.013a.149.149 0 0 1 .023-.002c.048 0 .094.022.135.074.025.136-.035.427-.012.427.01 0 .035-.057.093-.212.077-.349.611-.601.664-.815a.01.01 0 0 0 .007.003c.061 0 .457-.348.631-.388.069-.068.116-.092.15-.092.037 0 .059.029.074.057.016.029.027.057.042.057.012 0 .027-.018.052-.068-.091-.18.143-.35.077-.35-.024 0-.092.024-.237.081a.139.139 0 0 1-.041.015c-.017 0 .053-.046.155-.092a.909.909 0 0 1 .341-.093c.054 0 .1.012.135.04.454-.108.203-.257.228-.257a.02.02 0 0 1 .006 0c.119-.08.08-.368.271-.549zm-2.033 1.2c-.006 0 .022-.04.109-.148.18-.135.329-.226.16-.313.073-.031.143-.07.212-.11-.002.141-.121.49-.188.49-.015 0-.028-.018-.035-.064.037-.068.041-.094.026-.094-.023 0-.09.06-.154.12-.063.059-.122.119-.13.119zm.168.08c-.08 0-.064-.05.178-.102.105-.015.022-.01.15-.038a.576.576 0 0 1-.328.14zm4.558-.296a.715.715 0 0 1 .08-.006c.085 0 .047.035-.002.07-.05.034-.112.07-.077.07.02 0 .076-.012.19-.045.575-.042-.225-.53-.097-.694l-.034-.011c-.236.302.158.308-.06.616zm-.24.01c.04 0 .094-.048.149-.178.075-.09.042-.102-.039-.145-.227.057-.206.323-.11.323zm2.02.93a.027.027 0 0 0-.02.007.368.368 0 0 0 .07.012.105.105 0 0 0-.05-.02zm3.935.728c.05.109.075.154.08.154.02 0-.37-.95-.53-1.12-.84-1.382-2.223-2.441-3.798-2.835-.044 0 .003.02.059.041.056.021.123.042.123.042l-.178-.054a2.224 2.224 0 0 0-.456-.088c-.026.01.642.27 1.089.41a2.38 2.38 0 0 0-.345-.09c-.025 0 0 .018.108.065a4.013 4.013 0 0 0-.193-.056c-.01 0 .175.06.35.122.175.061.341.123.296.123a.608.608 0 0 1-.094-.016c.15.082.203.114.193.114-.015 0-.2-.088-.388-.176-.188-.087-.38-.175-.406-.175-.016 0 .024.03.153.106.176.077.352.152.303.152-.022 0-.09-.015-.224-.053.293.15-.207.09-.036.293a.694.694 0 0 0-.142-.117c-.009 0 .016.035.038.07.022.036.041.07.02.07.198.222-.149.025.1.222-.186-.085-.506-.226-.364-.226.036 0 .102.01.209.031-.19-.222-.73-.23-.741-.256-.136.01-.139.11-.115.298-.002.294-.294.302-.256.472.01-.004.01.056.029.115.019.06.055.12.13.12.041 0 .094-.018.16-.061.092.163.173.223.237.223.096 0 .154-.133.15-.251-.105-.06-.244-.545-.093-.545.024 0 .054.012.092.038-.236.583.938.193.272.46.148.196-.095.187-.025.424a1.43 1.43 0 0 1-.351.062c-.164 0-.289-.07-.276-.317-.205.108.203.475-.204.475h-.024c-.196.36-.932.237-.354.619.032.166-.074.196-.208.196a1.89 1.89 0 0 1-.112-.005c-.038-.002-.076-.004-.11-.004-.152 0-.261.038-.167.276-.068.247.09.354.284.354.235 0 .523-.154.542-.406.127-.191.287-.268.454-.268.264 0 .543.197.724.444.016.023.026.033.032.033.014 0 .001-.059-.005-.117-.005-.047-.007-.093.012-.11-.261-.073-.459-.39-.373-.39.03 0 .09.036.192.13l.015-.001c.165 0 .292.13.394.259.102.13.179.259.245.259.027 0 .052-.022.077-.076a.472.472 0 0 1-.056-.117c-.018-.062-.016-.124.061-.124.032 0 .077.01.138.036.199-.054-.127-.57.137-.57.027 0 .06.005.1.016-.004.09.036.122.076.122.075 0 .152-.107-.033-.14.069-.067.11-.093.14-.093.101 0 .02.34.374.34.121.284-1.042.022-.672.565.086.06.19.072.292.072l.09-.002.087-.002c.18 0 .31.044.233.42a.525.525 0 0 1-.317.093c-.099 0-.2-.018-.297-.036-.097-.017-.19-.036-.274-.036-.132 0-.24.043-.302.197-.343-.141-.793-.147-.75-.572-.598.084-1.224.04-1.663.407-.025.534-.945.71-.723 1.318-.267.56.322 1.35.923 1.35a.793.793 0 0 0 .065-.003c.327-.003.66-.15.949-.15.148 0 .285.038.402.157a.525.525 0 0 1 .07-.006c.45 0-.145.712.392.832.486.505-.298 1.023.084 1.507.043.38.23.694.23 1.065.05.007.098.01.146.01.617 0 1.003-.538 1.369-.945-.111-.61.863-.73.53-1.411-.156-.747.736-1.19.685-1.936.008-.105-.02-.139-.066-.139-.044 0-.106.031-.17.063a.494.494 0 0 1-.191.062c-.073 0-.128-.05-.136-.214-.43-.401-.628-.947-1.028-1.39.52.253.816.821 1.056 1.336.021.005.043.008.064.008.426 0 1.016-1.018.373-1.263-.033.096-.082.134-.136.134-.096 0-.209-.117-.287-.233-.078-.117-.121-.233-.076-.233.028 0 .092.046.205.17.125.08.25.101.379.101.125 0 .254-.02.39-.03.17.065.243.282.295.282.01 0 .02-.01.03-.03.134.322.29.896.429 1.05-.067-.492-.084-1.013-.211-1.497zm-1.635-.675c-.33-.084-.438-.494-.7-.731-.002-.064.093-.053.072-.162.35.107.237.216.206.238.126.213.486.358.422.655zm-4.552-2.23c-.319.093-.364-.01-.308.188a.211.211 0 0 0 .111.025c.157 0 .369-.09.197-.213zm4.692 8.07c.418-.355.471-.776.493-1.202-.188.365-.746.768-.493 1.202zM7.5 0a7.5 7.5 0 1 0 0 15 7.5 7.5 0 1 0 0-15zm0 14.423A6.923 6.923 0 1 1 7.5.576a6.923 6.923 0 0 1 0 13.847z\"\n});\n\nvar SvgPlanet = function SvgPlanet(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgPlanet, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/planet.3b97ba8e.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component, Fragment } from \"react\";\r\nimport ValidationError from \"../ValidationError/ValidationError\";\r\nimport { ReactComponent as BuildingsSvg } from \"./buildings.svg\";\r\nimport { ReactComponent as EnvelopeSvg } from \"./open-envelope.svg\";\r\nimport { ReactComponent as DocumentSvg } from \"./document.svg\";\r\nimport { ReactComponent as UserSvg } from \"./user-bg-dark.svg\";\r\nimport { ReactComponent as UserGroupSvg } from \"./user-group.svg\";\r\nimport { ReactComponent as EmailSvg } from \"./email.svg\";\r\nimport { ReactComponent as PlanetSvg } from \"./planet.svg\";\r\n\r\nclass TextInput extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hasFocus: false,\r\n value: \"\",\r\n msgs: [],\r\n };\r\n this.showError = true;\r\n }\r\n\r\n applyFilters = (val) => {\r\n let returnVal = val;\r\n if (this.props.filters) {\r\n this.props.filters.forEach((fun) => {\r\n returnVal = fun(returnVal);\r\n });\r\n }\r\n return returnVal;\r\n };\r\n\r\n onChange = (ev) => {\r\n const val = this.applyFilters(ev.target.value);\r\n const newEv = { ...ev };\r\n newEv.target.value = val;\r\n this.props.onChangeCallback(newEv);\r\n this.setState(\r\n {\r\n value: val,\r\n msgs: [],\r\n },\r\n () => {\r\n if (this.props.validations) {\r\n const msgs = [];\r\n this.props.validations.map((fun) => {\r\n const validation = fun(val);\r\n if (!validation.isValid) {\r\n msgs.push(validation.msg);\r\n }\r\n return validation.isValid;\r\n });\r\n this.setState({\r\n msgs,\r\n });\r\n }\r\n }\r\n );\r\n };\r\n\r\n onFocus = () => {\r\n this.setState({\r\n hasFocus: true,\r\n });\r\n };\r\n\r\n onBlur = () => {\r\n if (this.state.hasFocus) {\r\n this.setState({\r\n hasFocus: false,\r\n });\r\n this.showError = this.state.value.length === 0;\r\n }\r\n };\r\n\r\n render() {\r\n const inputType = this.props.type ? this.props.type : \"text\";\r\n const additional = this.state.msgs.map((msg, i) => (\r\n \r\n \r\n \r\n ));\r\n const inputClassName = `full-width${\r\n this.props.iconName ? \" user-input-border\" : \"\"\r\n }`;\r\n\r\n let image = null;\r\n switch (this.props.iconName) {\r\n case \"buildings\":\r\n image = ;\r\n break;\r\n case \"open-envelope\":\r\n image = ;\r\n break;\r\n case \"document\":\r\n image = ;\r\n break;\r\n case \"user-bg-dark\":\r\n image = ;\r\n break;\r\n case \"user-group\":\r\n image = ;\r\n break;\r\n case \"email\":\r\n image = ;\r\n break;\r\n case \"planet\":\r\n image = ;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n
    \r\n {!!this.props.label && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n {!!this.props.iconName && image}\r\n \r\n
    \r\n {!!this.props.additional\r\n && this.props.additional.length > 0\r\n && !this.state.hasFocus\r\n && this.showError && (\r\n \r\n \r\n \r\n )}\r\n {additional.length !== 0 && {additional}}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default TextInput;\r\n","import { MTOMandatoryField } from \"isuppli-react-components\";\r\n\r\nexport const requiredFieldsStep1 = [\r\n { key: \"submitterFullName\", display: \"Submitter full name\" },\r\n { key: \"submitterRole\", display: \"Submitter role\" },\r\n { key: \"generalEmail\", display: \"Supplier email address\" },\r\n { key: \"generalPhone\", display: \"Supplier telephone number\" },\r\n { key: \"registeredName\", display: \"Company registered name\" },\r\n { key: \"registrationNumber\", display: \"Company registration number\" },\r\n { key: \"companyType\", display: \"Company type\" },\r\n { key: \"hasVatNumber\", display: \"VAT registered option\" },\r\n];\r\n\r\nexport const requiredFieldsStep2 = [\r\n {\r\n key: \"physicalAddress.streetAddressL1\",\r\n display: \"Physical address: street address first line\",\r\n },\r\n { key: \"physicalAddress.city\", display: \"Physical address: city\" },\r\n { key: \"physicalAddress.country\", display: \"Physical address: country\" },\r\n {\r\n key: \"physicalAddress.postalCode\",\r\n display: \"Physical address: postal code / zip\",\r\n },\r\n\r\n {\r\n key: \"postalAddress.streetAddressL1\",\r\n display: \"Postal address: street address first line\",\r\n },\r\n { key: \"postalAddress.city\", display: \"Postal address: city\" },\r\n { key: \"postalAddress.country\", display: \"Postal address: country\" },\r\n { key: \"postalAddress.postalCode\", display: \"Postal address: postal code / zip\" },\r\n];\r\n\r\nexport const requiredFieldsStep3 = [\r\n { key: \"hasBeeCertificate\", display: \"Certification option\" },\r\n { key: \"boPercentage\", display: \"Exact percentage\" },\r\n { key: \"bwoPercentage\", display: \"Exact percentage\" },\r\n];\r\n\r\nexport const requiredFieldsStep4 = [\r\n { key: \"tradeDescription\", display: \"Trade description\" },\r\n];\r\n\r\nexport const requiredFieldsStep5 = [\r\n { key: \"bankAccounts.0\", display: \"A bank account\" },\r\n];\r\n\r\nexport function getRequiredBankAccountFields(useCustomFields, index) {\r\n let fields = [];\r\n if (useCustomFields) {\r\n fields.push({ key: \"customBank\", display: `Account ${index + 1} - Bank name` });\r\n fields.push({ key: \"customBankAccountType\", display: `Account ${index + 1} - Account type` });\r\n } else {\r\n fields.push({ key: \"bankId\", display: `Account ${index + 1} - Bank name`, checkPositive: true });\r\n fields.push({ key: \"bankAccountTypeId\", display: `Account ${index + 1} - Account type`, checkPositive: true });\r\n }\r\n fields = [\r\n ...fields,\r\n { key: \"accountName\", display: `Account ${index + 1} - Account name` },\r\n { key: \"accountNumber\", display: `Account ${index + 1} - Account number` },\r\n { key: \"branchCode\", display: `Account ${index + 1} - Branch code` },\r\n ];\r\n return fields;\r\n}\r\n\r\nexport const requiredFieldsMTP1 = [\r\n { key: \"registeredName\", display: \"Registered name\" },\r\n { key: \"registrationNumber\", display: \"Registration number\" },\r\n { key: \"businessUnitIds\", display: \"Business unit\" },\r\n { key: \"isVatRegistered\", display: \"Vat registered option\" },\r\n { key: \"generalEmail\", display: \"Email address\" },\r\n { key: \"companyTypeId\", display: \"Company type\" },\r\n];\r\n\r\nexport const requiredFieldsManualSupplierMTP1 = [\r\n { key: \"registeredName\", display: \"Registered name\" },\r\n];\r\n\r\nexport const requiredFieldsMTP2 = [\r\n { key: \"paymentTerms\", display: \"Payment terms selection\" },\r\n];\r\n\r\nexport const requiredFieldsMTP5 = [\r\n { key: \"restrictions\", display: \"Restrictions\" },\r\n];\r\n\r\nexport const requiredMandatoryFieldsStep1 = [\r\n { key: \"registrationNumber\", display: \"Company registration number\", field: MTOMandatoryField.RegistrationNumber },\r\n { key: \"registeredName\", display: \"Company registered name\", field: MTOMandatoryField.RegisteredCompanyName },\r\n { key: \"generalEmail\", display: \"Email address\", field: MTOMandatoryField.EmailAddress },\r\n { key: \"tradingName\", display: \"Trading As Name\", field: MTOMandatoryField.TradingName },\r\n { key: \"companyTypeId\", display: \"Company type\", field: MTOMandatoryField.CompanyType },\r\n];\r\n\r\nexport const requiredMandatoryFieldsStep2 = [\r\n { key: \"physicalAddress.streetAddressL1\", display: \"Physical address: street address first line\", field: MTOMandatoryField.PhysicalAddress },\r\n { key: \"physicalAddress.city\", display: \"Physical address: city\", field: MTOMandatoryField.PhysicalAddress },\r\n { key: \"physicalAddress.country\", display: \"Physical address: country\", field: MTOMandatoryField.PhysicalAddress },\r\n { key: \"physicalAddress.postalCode\", display: \"Physical address: postal code / zip\", field: MTOMandatoryField.PhysicalAddress },\r\n { key: \"postalAddress.streetAddressL1\", display: \"Postal address: street address first line\", field: MTOMandatoryField.PostalAddress },\r\n { key: \"postalAddress.city\", display: \"Postal address: city\", field: MTOMandatoryField.PostalAddress },\r\n { key: \"postalAddress.country\", display: \"Postal address: country\", field: MTOMandatoryField.PostalAddress },\r\n { key: \"postalAddress.postalCode\", display: \"Postal address: postal code / zip\", field: MTOMandatoryField.PostalAddress },\r\n];\r\n\r\nexport const requiredMandatoryFieldsStep5 = [\r\n { key: \"bankAccounts.0\", display: \"A bank account\", field: MTOMandatoryField.Banking },\r\n];\r\n\r\nexport class Validation {\r\n constructor(isValid, msg) {\r\n this.isValid = isValid;\r\n this.msg = msg;\r\n }\r\n}\r\n\r\nexport function trueArray(arr) {\r\n let isTrue = true;\r\n for (let i = 0; i < arr.length; i += 1) {\r\n isTrue = isTrue && !!arr[i];\r\n if (!isTrue) {\r\n return isTrue;\r\n }\r\n }\r\n return isTrue;\r\n}\r\n\r\nexport function stringNullOrEmpty(value) {\r\n return !value || value.length === 0;\r\n}\r\n\r\nexport function valueNullOrEmpty(value) {\r\n switch (typeof value) {\r\n case \"number\": {\r\n return value === undefined || value === null;\r\n }\r\n case \"string\": {\r\n return stringNullOrEmpty(value);\r\n }\r\n case \"object\": {\r\n return !value;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function isEmailInvalid(email) {\r\n if (stringNullOrEmpty(email)) {\r\n return true;\r\n }\r\n // eslint-disable-next-line no-useless-escape\r\n const regex = /^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,6})$/;\r\n return !regex.test(email);\r\n}\r\n\r\nexport function validIdNumber(idNo) {\r\n if (idNo == null) return false;\r\n // Luhn formula (checksum)\r\n let tempTotal = 0;\r\n let checkSum = 0;\r\n let multiplier = 1;\r\n for (let i = 0; i < 13; i += 1) {\r\n tempTotal = parseInt(idNo.charAt(i), 10) * multiplier;\r\n if (tempTotal > 9) {\r\n tempTotal = parseInt(tempTotal.toString().charAt(0), 10)\r\n + parseInt(tempTotal.toString().charAt(1), 10);\r\n }\r\n checkSum += tempTotal;\r\n multiplier = (multiplier % 2 === 0) ? 1 : 2;\r\n }\r\n if ((checkSum % 10) !== 0) {\r\n return false; // not valid\r\n }\r\n\r\n // Check individual digits\r\n const regex = /(((\\d{2}((0[13578]|1[02])(0[1-9]|[12]\\d|3[01])|(0[13456789]|1[012])(0[1-9]|[12]\\d|30)|02(0[1-9]|1\\d|2[0-8])))|([02468][048]|[13579][26])0229))(( |-)(\\d{4})( |-)([01]8((( |-)\\d{1})|\\d{1}))|(\\d{4}[01]8\\d{1}))$/;\r\n return regex.test(idNo);\r\n}\r\n\r\nexport const checkIfValidUUID = (str) => {\r\n // Regular expression to check if string is a valid UUID\r\n const regexExp = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi;\r\n return regexExp.test(str);\r\n};\r\n","import { Validation, isEmailInvalid, validIdNumber } from \"./validation\";\r\n\r\nexport function validateVatNumber(callback) {\r\n return (value) => {\r\n const args = {};\r\n if (value === \"N/A\") {\r\n args.isValid = true;\r\n } else {\r\n let aErrorCount = 0;\r\n let strVat1;\r\n let strVat2;\r\n let strVat3;\r\n let strVat4;\r\n let strVat5;\r\n let strVat6;\r\n let strVat7;\r\n let strVat8;\r\n let strVat9;\r\n let strVat11;\r\n let strVat12;\r\n let strVat31;\r\n let strVat32;\r\n let strVat51;\r\n let strVat52;\r\n let strVat71;\r\n let strVat72;\r\n let strVat91;\r\n let strVat92;\r\n let strVatTotal;\r\n let strRnd;\r\n\r\n const strVat = value;\r\n\r\n if (value.length !== 10) {\r\n aErrorCount = 1;\r\n }\r\n\r\n strVat1 = strVat.substr(0, 1);\r\n strVat2 = strVat.substr(1, 1);\r\n strVat3 = strVat.substr(2, 1);\r\n strVat4 = strVat.substr(3, 1);\r\n strVat5 = strVat.substr(4, 1);\r\n strVat6 = strVat.substr(5, 1);\r\n strVat7 = strVat.substr(6, 1);\r\n strVat8 = strVat.substr(7, 1);\r\n strVat9 = strVat.substr(8, 1);\r\n const strVat10 = strVat.substr(9, 1);\r\n\r\n if (strVat1 !== \"4\") {\r\n aErrorCount = 1;\r\n }\r\n\r\n strVat1 *= 2;\r\n strVat3 *= 2;\r\n strVat5 *= 2;\r\n strVat7 *= 2;\r\n strVat9 *= 2;\r\n\r\n strVat1 += \"\";\r\n strVat11 = strVat1.substr(0, 1);\r\n strVat12 = strVat1.substr(1, 1);\r\n\r\n strVat11 *= 1;\r\n strVat12 *= 1;\r\n\r\n strVat1 = strVat11 + strVat12;\r\n\r\n strVat3 += \"\";\r\n strVat31 = strVat3.substr(0, 1);\r\n strVat32 = strVat3.substr(1, 1);\r\n\r\n strVat31 *= 1;\r\n strVat32 *= 1;\r\n\r\n strVat3 = strVat31 + strVat32;\r\n\r\n strVat5 += \"\";\r\n strVat51 = strVat5.substr(0, 1);\r\n strVat52 = strVat5.substr(1, 1);\r\n\r\n strVat51 *= 1;\r\n strVat52 *= 1;\r\n\r\n strVat5 = strVat51 + strVat52;\r\n\r\n strVat7 += \"\";\r\n strVat71 = strVat7.substr(0, 1);\r\n strVat72 = strVat7.substr(1, 1);\r\n\r\n strVat71 *= 1;\r\n strVat72 *= 1;\r\n\r\n strVat7 = strVat71 + strVat72;\r\n\r\n strVat9 += \"\";\r\n strVat91 = strVat9.substr(0, 1);\r\n strVat92 = strVat9.substr(1, 1);\r\n\r\n strVat91 *= 1;\r\n strVat92 *= 1;\r\n\r\n strVat9 = strVat91 + strVat92;\r\n\r\n strVat1 *= 1;\r\n strVat2 *= 1;\r\n strVat3 *= 1;\r\n strVat4 *= 1;\r\n strVat5 *= 1;\r\n strVat6 *= 1;\r\n strVat7 *= 1;\r\n strVat8 *= 1;\r\n strVat9 *= 1;\r\n\r\n strVatTotal = strVat1\r\n + strVat2\r\n + strVat3\r\n + strVat4\r\n + strVat5\r\n + strVat6\r\n + strVat7\r\n + strVat8\r\n + strVat9;\r\n\r\n strVatTotal += \"\";\r\n\r\n strVatTotal = strVatTotal.substr(1, 1);\r\n\r\n strVatTotal *= 1;\r\n\r\n if (strVatTotal === 0) {\r\n strRnd = 0;\r\n } else {\r\n strRnd = 10;\r\n }\r\n\r\n strVatTotal = strRnd - strVatTotal;\r\n\r\n if (Number(strVat10) !== strVatTotal) {\r\n aErrorCount = 1;\r\n }\r\n if (aErrorCount === 1) {\r\n args.isValid = false;\r\n } else {\r\n args.isValid = true;\r\n }\r\n }\r\n\r\n if (args.isValid) {\r\n if (callback) {\r\n callback(true);\r\n }\r\n return new Validation(true, \"\");\r\n }\r\n if (callback) {\r\n callback(false);\r\n }\r\n return new Validation(false, \"VAT number is not valid\");\r\n };\r\n}\r\n\r\nexport function filterOutLetters(value) {\r\n return value.replace(/\\D/g, \"\");\r\n}\r\n\r\nexport function filterOutNumbers(value) {\r\n return value.replace(/\\d/g, \"\");\r\n}\r\n\r\nexport function filterOutSpecialCharactersExceptFullstops(value) {\r\n return value.replace(/[^\\d,.]+/g, \"\");\r\n}\r\n\r\nexport function filterOutExtraFullstops(str) {\r\n return str.replace(/^([^.]*\\.)(.*)$/, (a, b, c) => b + c.replace(/\\./g, \"\"));\r\n}\r\n\r\nexport function formatTelNumber(value) {\r\n const number = [];\r\n const v = filterOutLetters(value);\r\n for (let i = 0; i < v.length; i += 1) {\r\n if (i > 0 && i % (i <= 6 ? 3 : 5) === 0) {\r\n number.push(\" \");\r\n }\r\n number.push(v[i]);\r\n }\r\n return number.join(\"\").slice(0, 12);\r\n}\r\n\r\nexport function formatRegNumber(value) {\r\n const v = filterOutLetters(value);\r\n\r\n // check if user entered a slash\r\n let slashDetected = false;\r\n if (value.slice(-1) === \"/\") slashDetected = true;\r\n\r\n // before and up till first slash\r\n const fourNum = v.match(/^(\\d{4})$/);\r\n\r\n // if all 4 numbers, and user entered a slash, add slash\r\n if (fourNum && slashDetected) {\r\n return `${fourNum[1]}/`;\r\n }\r\n const noSlash = v.match(/^(\\d{0,4})$/); // if 0-4 numbers, no slash\r\n if (noSlash) return noSlash[1];\r\n\r\n // after first slash\r\n const sixNum = v.match(/^(\\d{4})(\\d{6})$/);\r\n\r\n // if all 6 numbers, and user entered a slash, add slash\r\n if (sixNum && slashDetected) {\r\n return `${sixNum[1]}/${sixNum[2]}/`;\r\n }\r\n const firstSlash = v.match(/^(\\d{4})(\\d{0,6})$/); // if 0-6 numbers, no slash\r\n if (firstSlash) return `${firstSlash[1]}/${firstSlash[2]}`;\r\n\r\n // after second slash\r\n const secondSlash = v.match(/^(\\d{4})(\\d{6})(\\d{0,2})$/);\r\n if (secondSlash) return `${secondSlash[1]}/${secondSlash[2]}/${secondSlash[3]}`;\r\n\r\n return v;\r\n}\r\n\r\nexport function clampNumber(min, max, decimalPlace = 0) {\r\n return (value) => {\r\n const internalVal = filterOutExtraFullstops(value.replace(\",\", \".\"));\r\n\r\n if (internalVal < min) {\r\n return min;\r\n }\r\n if (internalVal > max) {\r\n return max;\r\n }\r\n\r\n const num = parseFloat(internalVal);\r\n const fixedNum = parseFloat(num.toFixed(decimalPlace));\r\n\r\n if (Number.isNaN(num) || fixedNum === num) {\r\n return internalVal;\r\n }\r\n return fixedNum;\r\n };\r\n}\r\n\r\nexport function minLength(minLengthVal, callback) {\r\n return (value) => {\r\n if (value.length < minLengthVal) {\r\n callback(false);\r\n return new Validation(false, \"Minimum characters not reached\");\r\n }\r\n callback(true);\r\n return new Validation(true, \"\");\r\n };\r\n}\r\n\r\nexport function maxLength(maxLengthVal, callback) {\r\n return (value) => {\r\n if (value.length > maxLengthVal) {\r\n callback(false);\r\n return new Validation(false, \"Maximum characters exceeded\");\r\n }\r\n callback(true);\r\n return new Validation(true, \"\");\r\n };\r\n}\r\n\r\nexport function isValidEmail(callback) {\r\n return (value) => {\r\n if (isEmailInvalid(value)) {\r\n callback(false);\r\n return new Validation(false, \"please enter a valid email\");\r\n }\r\n callback(true);\r\n return new Validation(true, \"\");\r\n };\r\n}\r\n\r\nexport function isIdNoValid(callback) {\r\n return (value) => {\r\n if (!validIdNumber(value)) {\r\n callback(false);\r\n return new Validation(false, \"please enter a valid South African ID Number\");\r\n }\r\n callback(true);\r\n return new Validation(true, \"\");\r\n };\r\n}\r\n\r\nexport function filterOutSpecialCharacters(value) {\r\n return value.replace(/[^\\w\\s]/gi, \"\");\r\n}\r\n\r\nexport function filterOutSpecialCharactersAndWhiteSpace(value) {\r\n return value.replace(/[^\\w]/gi, \"\");\r\n}\r\n\r\nexport function companyNameFilter(value) {\r\n return value.replace(/[^\\w@&)(-/\\s]/gi, \"\");\r\n}\r\n\r\nexport function getRegNumberConfig(selectedCompanyTypeName, setStepValid) {\r\n const regNumValidation = selectedCompanyTypeName === \"Private Company\"\r\n || selectedCompanyTypeName === \"Public Listed Company\"\r\n || selectedCompanyTypeName === \"Close Corporation\";\r\n\r\n const idNumValidation = selectedCompanyTypeName === \"Sole Proprietary\"\r\n || selectedCompanyTypeName === \"Incorporated Joint Venture\"\r\n || selectedCompanyTypeName === \"Partnership\";\r\n\r\n let regNumberValidationsConfig = [];\r\n let regNumberFilterConfig = [];\r\n let regNumberPlaceholder = \"\";\r\n let maxLengthValue = 40;\r\n if (regNumValidation === true) {\r\n regNumberValidationsConfig = [\r\n minLength(14, setStepValid),\r\n maxLength(14, setStepValid),\r\n ];\r\n regNumberFilterConfig = [formatRegNumber];\r\n regNumberPlaceholder = \"twelve digit number e.g. 2011/123456/12\";\r\n maxLengthValue = 14;\r\n } else if (idNumValidation === true) {\r\n regNumberValidationsConfig = [\r\n minLength(13, setStepValid),\r\n maxLength(13, setStepValid),\r\n isIdNoValid(setStepValid),\r\n ];\r\n regNumberFilterConfig = [filterOutLetters];\r\n regNumberPlaceholder = \"South African ID Number\";\r\n maxLengthValue = 13;\r\n } else {\r\n regNumberValidationsConfig = [\r\n maxLength(40, setStepValid),\r\n ];\r\n regNumberFilterConfig = [];\r\n regNumberPlaceholder = \"registration number\";\r\n maxLengthValue = 40;\r\n }\r\n\r\n return {\r\n regNumberValidationsConfig,\r\n regNumberFilterConfig,\r\n regNumberPlaceholder,\r\n regNumValidation,\r\n idNumValidation,\r\n maxLengthValue,\r\n };\r\n}\r\n\r\nexport function onCompanyTypeChangeHandler(\r\n selectedCompany,\r\n companyTypes,\r\n onInputChangeCallback,\r\n shouldClearRegNumber = true\r\n) {\r\n const selectedCompanyTypeName = companyTypes.filter(\r\n (c) => c.id === selectedCompany.target.value\r\n )[0]?.name;\r\n\r\n const idNumValidationRequired = selectedCompanyTypeName === \"Sole Proprietary\"\r\n || selectedCompanyTypeName === \"Incorporated Joint Venture\"\r\n || selectedCompanyTypeName === \"Partnership\";\r\n\r\n onInputChangeCallback({\r\n target: {\r\n name: \"requiredIdNumValidation\",\r\n value: idNumValidationRequired,\r\n },\r\n });\r\n\r\n if (shouldClearRegNumber) {\r\n // Reset registration number when changing company type\r\n // This will force the validation checks\r\n onInputChangeCallback({\r\n target: {\r\n name: \"registrationNumber\",\r\n value: \"\",\r\n },\r\n });\r\n }\r\n\r\n // check if vat exempted (foreign company)\r\n // const vatExempted = selectedCompanyTypeName === \"Foreign Entitys\";\r\n const vatExempted = false;\r\n\r\n // reset fields if vat exempted\r\n if (vatExempted) {\r\n onInputChangeCallback({\r\n target: {\r\n name: \"isVatRegistered\",\r\n value: 0,\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"hasVatNumber\",\r\n value: 0,\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"vatNumber\",\r\n value: \"\",\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"taxClearanceNumber\",\r\n value: \"\",\r\n },\r\n });\r\n }\r\n\r\n onInputChangeCallback({\r\n target: {\r\n name: \"vatExempted\",\r\n value: vatExempted,\r\n },\r\n });\r\n}\r\n\r\nexport function onHasBeeCertificateChangeHandler(hasBeeCertificate, onInputChangeCallback) {\r\n if (hasBeeCertificate === 0) {\r\n onInputChangeCallback({\r\n target: {\r\n name: \"beeStatusId\",\r\n value: null,\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"certificateExpiryDate\",\r\n value: null,\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"boPercentage\",\r\n value: 0,\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"bwoPercentage\",\r\n value: 0,\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"sector\",\r\n value: null,\r\n },\r\n });\r\n onInputChangeCallback({\r\n target: {\r\n name: \"turnoverBand\",\r\n value: null,\r\n },\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { BasicTable } from \"isuppli-react-components\";\r\nimport { formatTelNumber } from \"../../Validation/onChangeValidations\";\r\n\r\nconst ClientBaseTable = (props:\r\n {\r\n updateClientBaseHandler: (ev: { target: { name: string; value: any[] }}) => void,\r\n readOnly: boolean,\r\n data: {\r\n clientBase: {\r\n name: string | undefined,\r\n phone: string | undefined,\r\n periodInBusiness: string | undefined}[]\r\n },\r\n}) => (\r\n
    \r\n
    \r\n

    CLIENTBASE

    \r\n

    \r\n Please capture your current client base.\r\n

    \r\n
    \r\n [\r\n {\r\n key: `name_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n {\r\n // update client base name\r\n const updatedClientBase = [...props.data.clientBase];\r\n updatedClientBase[index] = { ...input, name: e.target.value };\r\n props.updateClientBaseHandler({\r\n target: {\r\n name: \"clientBase\",\r\n value: updatedClientBase,\r\n },\r\n });\r\n }}\r\n readOnly={props.readOnly}\r\n required\r\n />\r\n ),\r\n },\r\n {\r\n key: `telNum_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n {\r\n // update client telephone details\r\n const updatedClientBase = [...props.data.clientBase];\r\n updatedClientBase[index] = { ...input, phone: formatTelNumber(e.target.value) };\r\n props.updateClientBaseHandler({\r\n target: {\r\n name: \"clientBase\",\r\n value: updatedClientBase,\r\n },\r\n });\r\n }}\r\n readOnly={props.readOnly}\r\n required\r\n />\r\n ),\r\n },\r\n {\r\n key: `period_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n {\r\n // update client preiod in business field\r\n const updatedClientBase = [...props.data.clientBase];\r\n updatedClientBase[index] = { ...input, periodInBusiness: e.target.value };\r\n props.updateClientBaseHandler({\r\n target: {\r\n name: \"clientBase\",\r\n value: updatedClientBase,\r\n },\r\n });\r\n }}\r\n readOnly={props.readOnly}\r\n required\r\n />\r\n ),\r\n },\r\n ])\r\n }\r\n />\r\n
    \r\n);\r\n\r\nexport default ClientBaseTable;\r\n","const staticDataTypes = {\r\n BeeClassification: 1,\r\n BeeStatus: 2,\r\n CompanyType: 3,\r\n Country: 4,\r\n Province: 5,\r\n Sector: 6,\r\n TurnoverBand: 7,\r\n SectorTurnoverBand: 8,\r\n Bank: 9,\r\n BankAccountType: 10,\r\n SubscriptionTier: 11,\r\n UnspscSegment: 12,\r\n UnspscFamily: 13,\r\n DocumentTypes: 14,\r\n BusinessTypes: 15,\r\n ContactPerson: 16,\r\n SectorTurnoverBandStatus: 17,\r\n PaymentTerms: 18,\r\n Gender: 19,\r\n Race: 20,\r\n Municipality: 21,\r\n CompanyStatus: 22,\r\n};\r\n\r\nexport enum StaticDataTypes {\r\n BeeClassification = 1, // eslint-disable-line no-unused-vars\r\n BeeStatus = 2, // eslint-disable-line no-unused-vars\r\n CompanyType = 3, // eslint-disable-line no-unused-vars\r\n Country = 4, // eslint-disable-line no-unused-vars\r\n Province = 5, // eslint-disable-line no-unused-vars\r\n Sector = 6, // eslint-disable-line no-unused-vars\r\n TurnoverBand = 7, // eslint-disable-line no-unused-vars\r\n SectorTurnoverBand = 8, // eslint-disable-line no-unused-vars\r\n Bank = 9, // eslint-disable-line no-unused-vars\r\n BankAccountType = 10, // eslint-disable-line no-unused-vars\r\n SubscriptionTier = 11, // eslint-disable-line no-unused-vars\r\n UnspscSegment = 12, // eslint-disable-line no-unused-vars\r\n UnspscFamily = 13, // eslint-disable-line no-unused-vars\r\n DocumentTypes = 14, // eslint-disable-line no-unused-vars\r\n BusinessTypes = 15, // eslint-disable-line no-unused-vars\r\n ContactPerson = 16, // eslint-disable-line no-unused-vars\r\n SectorTurnoverBandStatus = 17, // eslint-disable-line no-unused-vars\r\n PaymentTerms = 18, // eslint-disable-line no-unused-vars\r\n Gender = 19, // eslint-disable-line no-unused-vars\r\n Race = 20, // eslint-disable-line no-unused-vars\r\n Municipality= 21, // eslint-disable-line no-unused-vars\r\n CompanyStatus= 22, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default staticDataTypes;\r\n","/* eslint-disable no-unused-vars */\r\nimport axios from \"axios\";\r\nimport { EditShareholderMessage } from \"./EditShareholderMessage\";\r\nimport { makeRequestAsync } from \"../util\";\r\nimport { ShareholdersViewMessage } from \"./ShareholdersViewMessage\";\r\n\r\nexport const GetShareholders = async () => {\r\n const url = \"api/shareholders\";\r\n return await makeRequestAsync(() => axios\r\n .get(url)) as Promise>;\r\n};\r\n\r\nexport const getSupplierTypeShareholdersConfigStatus = async (buyerCompanyId : number) => {\r\n const url = `api/shareholders/clientstab/${buyerCompanyId}`;\r\n return await makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n};\r\n\r\nexport const saveShareholders = async (shareholders : Array) => {\r\n const url = \"api/shareholders\";\r\n return await makeRequestAsync(() => axios.post(url, shareholders)) as Promise;\r\n};\r\n\r\nexport const deleteShareholder = async (shareholderId: number) => {\r\n const url = `api/shareholders/${shareholderId}`;\r\n return await makeRequestAsync(() => axios.delete(url)) as Promise;\r\n};\r\n\r\nexport const getSupplierShareholders = async (supplierCompanyId: number) => {\r\n const url = `api/shareholders/supplier/${supplierCompanyId}`;\r\n return await makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n};\r\n","import { useCallback } from \"react\";\r\n\r\nlet threadLock = false;\r\nconst que: Array<() => void> = [];\r\nconst useThreadSafe = (handler: () => Promise) : () => void => {\r\n const checkQue = () => {\r\n if (que.length > 0) {\r\n const nextItem = que.pop();\r\n if (nextItem != null) {\r\n nextItem();\r\n }\r\n }\r\n };\r\n\r\n const run = useCallback(async () => {\r\n if (threadLock) {\r\n que.push(run);\r\n return;\r\n }\r\n\r\n threadLock = true;\r\n await handler();\r\n threadLock = false;\r\n checkQue();\r\n }, [handler]);\r\n\r\n const returnHandler = useCallback(async () => {\r\n run();\r\n }, [run]);\r\n return returnHandler;\r\n};\r\n\r\nexport default useThreadSafe;\r\n","import { useEffect, useState, useRef } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { setStaticData } from \"../Store/actions\";\r\nimport { getOptionsAsync } from \"../http/index\";\r\nimport {\r\n StaticDataTypes, // eslint-disable-line no-unused-vars\r\n} from \"../Util/Enumerators/staticDataTypes\";\r\nimport {\r\n ReduxState, // eslint-disable-line no-unused-vars\r\n} from \"../Store/ReduxState\";\r\n\r\nimport useThreadSafe from \"./useThreadSafe\";\r\n\r\nexport interface staticOption {\r\n value: number,\r\n display: string,\r\n [key: string]: any,\r\n}\r\n\r\nconst useStaticData = (optionsToLoad: StaticDataTypes[]) : [staticOption[][], boolean] => {\r\n const [isReady, setIsReady] = useState(false);\r\n const storeOptions = useSelector((state: ReduxState) => state.staticData) ?? [];\r\n const cachedOptions = optionsToLoad.map((option) => storeOptions[option]);\r\n const dispatch = useDispatch();\r\n\r\n const currentStoreOptions = useRef(storeOptions);\r\n useEffect(() => {\r\n currentStoreOptions.current = storeOptions;\r\n }, [storeOptions]);\r\n\r\n const loader = useThreadSafe(async () => {\r\n // which options should I load\r\n const optionsToGetFromApi = optionsToLoad.filter(\r\n (option) => currentStoreOptions.current[option] == null\r\n );\r\n\r\n if (optionsToGetFromApi.length === 0) {\r\n setIsReady(true);\r\n return;\r\n }\r\n\r\n // call api\r\n const loadedOptions: {\r\n [key: string]: {\r\n id: number,\r\n name: string,\r\n [key: string]: any\r\n }[]\r\n } = await getOptionsAsync(optionsToGetFromApi);\r\n const dispatchPayload: {\r\n type: StaticDataTypes,\r\n value: staticOption[],\r\n }[] = [];\r\n\r\n const objectToDisplayObject = (object: { id: number, name: string }) => ({\r\n ...object,\r\n value: object.id,\r\n display: object.name,\r\n });\r\n\r\n optionsToGetFromApi.forEach((option) => {\r\n switch (option) {\r\n case StaticDataTypes.SubscriptionTier:\r\n const data = loadedOptions.subscriptionTierData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: data.map((category) => ({\r\n ...objectToDisplayObject(category),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.BeeClassification:\r\n const bcData = loadedOptions.beeClassificationData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: bcData.map((category) => ({\r\n ...objectToDisplayObject(category),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.DocumentTypes:\r\n const documentTypeData = loadedOptions.documentTypes;\r\n dispatchPayload.push({\r\n type: option,\r\n value: documentTypeData.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.SectorTurnoverBand:\r\n const sectorTurnoverData = loadedOptions.sectorTurnoverBandData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: sectorTurnoverData.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.SectorTurnoverBandStatus:\r\n const sectorTurnoverStatusData = loadedOptions.sectorTurnoverBandStatusData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: sectorTurnoverStatusData.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.Sector:\r\n const sectorData = loadedOptions.sectorData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: sectorData.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.TurnoverBand:\r\n const turnoverBandData = loadedOptions.turnoverBandData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: turnoverBandData.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.ContactPerson:\r\n const contractPersons = loadedOptions.contactPersonTypes;\r\n dispatchPayload.push({\r\n type: option,\r\n value: contractPersons.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.Bank:\r\n const banks = loadedOptions.bankData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: banks.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.BankAccountType:\r\n const bankAccounts = loadedOptions.bankAccountTypeData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: bankAccounts.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.CompanyType:\r\n const companyTypes = loadedOptions.companyTypeData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: companyTypes.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.BusinessTypes:\r\n const businessTypes = loadedOptions.businessTypeData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: businessTypes.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.Country:\r\n const countries = loadedOptions.countryData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: countries.map((c) => ({\r\n ...objectToDisplayObject(c),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.Province:\r\n const province = loadedOptions.provinceData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: province.map((p) => ({\r\n ...objectToDisplayObject(p),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.BeeStatus:\r\n const beeStatuses = loadedOptions.beeStatusData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: beeStatuses.map((p) => ({\r\n ...objectToDisplayObject(p),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.UnspscSegment:\r\n const unspscSegments = loadedOptions.unspscSegmentData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: unspscSegments.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n case StaticDataTypes.UnspscFamily:\r\n const unspscFamilyData = loadedOptions.unspscFamilyData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: unspscFamilyData.map((d) => ({\r\n ...objectToDisplayObject(d),\r\n })),\r\n });\r\n break;\r\n\r\n case StaticDataTypes.Gender:\r\n const genderData = loadedOptions.genderData;\r\n dispatchPayload.push({\r\n type: option,\r\n value: genderData.map((g) => ({\r\n ...objectToDisplayObject(g),\r\n })),\r\n });\r\n break;\r\n\r\n case StaticDataTypes.Race:\r\n const raceData = loadedOptions.raceData;\r\n\r\n dispatchPayload.push({\r\n type: option,\r\n value: raceData.map((r) => ({\r\n ...objectToDisplayObject(r),\r\n })),\r\n });\r\n break;\r\n\r\n case StaticDataTypes.Municipality:\r\n const municipalityData = loadedOptions.municipalityData;\r\n\r\n dispatchPayload.push({\r\n type: option,\r\n value: municipalityData.map((m) => ({\r\n ...objectToDisplayObject(m),\r\n })),\r\n });\r\n break;\r\n\r\n case StaticDataTypes.CompanyStatus:\r\n const companyStatuses = loadedOptions.companyStatusData;\r\n\r\n dispatchPayload.push({\r\n type: option,\r\n value: companyStatuses.map((m) => ({\r\n ...objectToDisplayObject(m),\r\n })),\r\n });\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n dispatch(setStaticData(dispatchPayload));\r\n setIsReady(true);\r\n });\r\n\r\n useEffect(() => {\r\n loader();\r\n }, [dispatch, optionsToLoad, loader]);\r\n\r\n return [cachedOptions, isReady];\r\n};\r\n\r\nexport default useStaticData;\r\n","import React, { Fragment } from \"react\";\r\n\r\nimport axios from \"axios\";\r\nimport {\r\n ActionsDropDown, ActionsDropDownItem,\r\n} from \"isuppli-react-components\";\r\n\r\nfunction FileOptions({\r\n uploadUrl,\r\n downloadUrl,\r\n fileName,\r\n onUploadProgress,\r\n onUploadDone,\r\n onUploadFileSizeExceeded,\r\n deleteDocument,\r\n readOnly,\r\n template,\r\n docExpires,\r\n expiryDate,\r\n}) {\r\n const fileInput = React.createRef();\r\n\r\n const fileChangeHandler = async () => {\r\n try {\r\n const formData = new FormData();\r\n const file = fileInput.current.files[0];\r\n\r\n // clear input to allow file with same name to be uploaded again\r\n if (fileInput.current != null) {\r\n fileInput.current.value = \"\";\r\n }\r\n\r\n const fileSize = file.size / 1024 / 1024; // convert to MB\r\n if (fileSize > 10) {\r\n onUploadFileSizeExceeded(true);\r\n } else {\r\n onUploadFileSizeExceeded(false);\r\n formData.append(file.name, file);\r\n const result = await axios.post(uploadUrl, formData, {\r\n onUploadProgress: (progressEvent) => {\r\n let progressFraction = (progressEvent.loaded / file.size);\r\n if (progressFraction > 1) {\r\n progressFraction = 1;\r\n }\r\n onUploadProgress(progressFraction);\r\n },\r\n });\r\n\r\n onUploadDone(result.data);\r\n }\r\n } catch (ex) {\r\n onUploadDone(null);\r\n }\r\n };\r\n\r\n const downloadTemplateHandler = () => {\r\n window.open(`${downloadUrl}${template}`, \"_blank\");\r\n };\r\n\r\n const uploadHandler = () => {\r\n setTimeout(() => {\r\n fileInput.current.dispatchEvent(new MouseEvent(\"click\"));\r\n });\r\n };\r\n\r\n const viewFileHandler = () => {\r\n window.open(`${downloadUrl}${fileName}`, \"_blank\");\r\n };\r\n\r\n const deleteFileHandler = () => {\r\n deleteDocument();\r\n };\r\n\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n \r\n {fileName && (\r\n View Document\r\n )}\r\n {fileName && !readOnly && (\r\n Delete Document\r\n )}\r\n {!readOnly && !fileName && template\r\n && Download Template}\r\n {!readOnly && !fileName\r\n && Upload New Document}\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default FileOptions;\r\n","enum DocumentClassification {\r\n /* eslint-disable no-unused-vars */\r\n None = 0,\r\n BeeCertificate = 1,\r\n BeeAffidavit = 2,\r\n BankAccountDocument = 4,\r\n ShareholderIdentityDocument = 7,\r\n /* eslint-enable no-unused-vars */\r\n}\r\n\r\nexport default DocumentClassification;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M3.628 0v1.244h5.744V0h1.008v1.244h.772c1.02 0 1.848.816 1.848 1.824v8.108A1.836 1.836 0 0 1 11.152 13H1.848A1.836 1.836 0 0 1 0 11.176V3.068C0 2.06.827 1.244 1.848 1.244h.772V0h1.008zm8.364 5.074H1.008v6.102c0 .458.376.83.84.83h9.304a.845.845 0 0 0 .594-.244.824.824 0 0 0 .246-.586V5.074zM7.61 8.854v2.171h-2.2v-2.17h2.2zm-3.125 0v2.171h-2.2v-2.17h2.2zm6.249 0v2.171h-2.2v-2.17h2.2zM7.609 6.037v2.17h-2.2v-2.17h2.2zm-3.125 0v2.17h-2.2v-2.17h2.2zm6.249 0v2.17h-2.2v-2.17h2.2zM2.637 2.239h-.79a.834.834 0 0 0-.84.829v1.011h10.985V3.068a.834.834 0 0 0-.84-.83h-.772v1.078H9.372V2.24H3.645v1.077H2.637V2.24z\"\n});\n\nvar SvgCalender = function SvgCalender(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 13,\n viewBox: \"0 0 13 13\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCalender, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/calender.e7759907.svg\";\nexport { ForwardRef as ReactComponent };","enum CompanyGroupingType {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n SouthAfrican = 1, // eslint-disable-line no-unused-vars\r\n Foreign = 2, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default CompanyGroupingType;\r\n","import React, { Component } from \"react\";\r\nimport ValidationError from \"../ValidationError/ValidationError\";\r\nimport { ReactComponent as CalenderSvg } from \"./calender.svg\";\r\n\r\nclass DateInput extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hasFocus: false,\r\n msgs: [],\r\n localValue: \"\",\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n const dateToLocalValue = (date) => {\r\n if (date == null || date === \"\") {\r\n // An empty string is equivalent to a empty date value for date inputs\r\n return \"\";\r\n }\r\n\r\n const dateObject = new Date(date);\r\n const options = {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n };\r\n\r\n return dateObject.toLocaleDateString(\"en-ZA\", options).replaceAll(\"/\", \"-\");// date.toString().substr(0, 10);\r\n };\r\n const newValue = dateToLocalValue(props.value);\r\n if (!state.hasFocus) {\r\n return {\r\n localValue: newValue,\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n onChange = (ev) => {\r\n const newStringValue = ev.target.value?.replaceAll(\"/\", \"-\");\r\n\r\n const event = {\r\n target: {\r\n name: ev.target.name,\r\n // empty string (unselected date) needs to be kept.\r\n value: newStringValue === \"\" ? null : newStringValue,\r\n },\r\n };\r\n // valid date\r\n this.props.onChangeCallback(event);\r\n\r\n this.setState({\r\n localValue: newStringValue,\r\n });\r\n };\r\n\r\n onFocus = () => {\r\n this.setState({\r\n hasFocus: true,\r\n });\r\n };\r\n\r\n onBlur = () => {\r\n if (this.state.hasFocus) {\r\n this.setState({\r\n hasFocus: false,\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const additional = this.state.msgs.map((msg, i) => (\r\n \r\n ));\r\n\r\n const inputClassName = \"full-width user-input-border\";\r\n\r\n const getDateString = (dateTimeValue) => {\r\n if (dateTimeValue == null) {\r\n // If min date not provided, then set mininum to Today's Date\r\n const today = new Date();\r\n let dd = today.getDate();\r\n let mm = today.getMonth() + 1; // January is 0!\r\n const yyyy = today.getFullYear();\r\n if (dd < 10) {\r\n dd = `0${dd}`;\r\n }\r\n if (mm < 10) {\r\n mm = `0${mm}`;\r\n }\r\n const todayString = `${yyyy}-${mm}-${dd}`;\r\n return todayString;\r\n }\r\n\r\n // Set minimum to provided min date\r\n const monthNumber = dateTimeValue.slice(5, 7);\r\n\r\n const dayNumber = dateTimeValue.slice(8, 10);\r\n\r\n const year = dateTimeValue.slice(0, 4);\r\n\r\n const month = `${monthNumber}`.slice(-2);\r\n const day = `${dayNumber}`.slice(-2);\r\n return `${year}-${month}-${day}`;\r\n };\r\n\r\n const minDateValue = getDateString(this.props.min);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {!!this.props.additional && this.props.additional.length > 0 && (\r\n \r\n \r\n \r\n )}\r\n {additional.length !== 0 && (\r\n {additional}\r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default DateInput;\r\n","import React, { Component } from \"react\";\r\nimport { getStaticValue, HelpIcon } from \"isuppli-react-components\";\r\nimport FileOptions from \"./FileOptions\";\r\nimport DocumentClassification from \"../../Util/Enumerators/DocumentClassification\";\r\nimport DateInput from \"../../Controls/DateInput/DateInput\";\r\n\r\nclass DocumentUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n uploadProgress: [],\r\n uploadFailed: [],\r\n fileSizeExceeded: [],\r\n };\r\n }\r\n\r\n onDateInputChangeCallback = (ev, doc) => {\r\n const newDocuments = this.props.documents.map(\r\n (d) => (d.documentTypeId !== doc.documentTypeId\r\n ? d\r\n : {\r\n ...doc,\r\n expiryDate: ev.target.value,\r\n })\r\n );\r\n this.props.onDocumentsChanges(newDocuments);\r\n }\r\n\r\n onDocumentUploading = (index, progress) => {\r\n this.setState((currentState) => {\r\n const progresses = [...currentState.uploadProgress];\r\n progresses[index] = progress;\r\n return {\r\n uploadProgress: progresses,\r\n };\r\n });\r\n };\r\n\r\n onDocumentUploaded = (doc, index, uploadDocumentMessage) => {\r\n const newDocuments = [...this.props.documents];\r\n newDocuments[index] = {\r\n ...doc,\r\n documentId: uploadDocumentMessage?.documentId,\r\n filename: uploadDocumentMessage?.filename,\r\n originalFilename: uploadDocumentMessage?.originalFilename,\r\n };\r\n\r\n this.props.onDocumentsChanges(newDocuments);\r\n\r\n const failed = uploadDocumentMessage?.filename == null;\r\n this.setState((currentState) => {\r\n const failedUploads = [...currentState.uploadFailed];\r\n failedUploads[index] = failed;\r\n return {\r\n uploadFailed: failedUploads,\r\n };\r\n });\r\n\r\n // clear progress\r\n this.onDocumentUploading(index, null);\r\n };\r\n\r\n onUploadFileSizeExceeded = (index, newVal) => {\r\n this.setState((currentState) => {\r\n const newFileSizeExceeded = [...currentState.fileSizeExceeded];\r\n newFileSizeExceeded[index] = newVal;\r\n return {\r\n fileSizeExceeded: newFileSizeExceeded,\r\n };\r\n });\r\n }\r\n\r\n deleteDocument = (doc) => {\r\n const newDocuments = this.props.documents.map(\r\n (d) => (d.documentId !== doc.documentId\r\n ? d\r\n : {\r\n ...doc,\r\n filename: null,\r\n originalFilename: null,\r\n })\r\n );\r\n this.props.onDocumentsChanges(newDocuments);\r\n }\r\n\r\n isBeeAffidavit = (documentTypeId) => {\r\n const documentType = this.props.documentTypes.find((x) => x.id === documentTypeId);\r\n if (documentType !== undefined\r\n && documentType?.documentClassification === DocumentClassification.BeeAffidavit) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n render() {\r\n const rows = this.props.documents.map((doc, i) => {\r\n const uploadProgress = this.state.uploadProgress[i];\r\n const failed = this.state.uploadFailed[i];\r\n const fileSizeExceeded = this.state.fileSizeExceeded[i];\r\n let statusContent = \"Document not uploaded\";\r\n let statusClassName = \"\";\r\n const contextQuery = `${doc.contextId != null ? `?contextId=${doc.contextId}` : \"\"}`;\r\n const queryPrefix = contextQuery === \"\" ? \"?\" : \"&\";\r\n const manualSupplierQuery = `${this.props.manualSupplierId != null ? `${queryPrefix}manualSupplierId=${this.props.manualSupplierId}` : \"\"}`;\r\n const documentType = this.props.documentTypes.find((x) => x.id === doc.documentTypeId);\r\n const hasTemplate = (documentType?.documentTemplate ?? null) != null;\r\n\r\n if (doc.filename != null) {\r\n statusContent = doc.originalFilename ?? doc.filename;\r\n } else if (hasTemplate) {\r\n statusContent = \"Download Document Template\";\r\n }\r\n\r\n if (fileSizeExceeded) {\r\n statusContent = \"File size exceeds 10 MB\";\r\n statusClassName = \"text-danger\";\r\n }\r\n\r\n if (failed) {\r\n statusContent = \"Upload Failed. Please try again.\";\r\n statusClassName = \"text-danger\";\r\n }\r\n\r\n if (uploadProgress != null) {\r\n if (uploadProgress < 0) {\r\n statusContent = \"Upload Failed. Please try again.\";\r\n statusClassName = \"text-danger\";\r\n } else {\r\n statusContent = `Uploading: ${Math.round(uploadProgress * 100)}%`;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {doc.displayPrefix ? `${doc.displayPrefix} - ` : \"\"}\r\n

    \r\n {\r\n e.preventDefault();\r\n if (hasTemplate) window.open(`${this.props.downloadUrl}${documentType?.documentTemplate}`, \"_blank\");\r\n }}\r\n >\r\n {getStaticValue(doc.documentTypeId, this.props.documentTypes, doc.filename)}\r\n {doc.optional ? (optional) : \"\"}\r\n \r\n {this.isBeeAffidavit(doc.documentTypeId) && (\r\n \r\n )}\r\n

    \r\n \r\n {statusContent}\r\n \r\n {doc.expires ? (\r\n this.onDateInputChangeCallback(ev, doc)}\r\n />\r\n ) :

    N/A

    }\r\n \r\n \r\n this.onDocumentUploading(i, progress)}\r\n onUploadDone={\r\n (uploadDocumentMessage) => this.onDocumentUploaded(doc, i, uploadDocumentMessage)\r\n }\r\n onUploadFileSizeExceeded={(newVal) => this.onUploadFileSizeExceeded(i, newVal)}\r\n deleteDocument={() => this.deleteDocument(doc)}\r\n readOnly={this.props.readOnly}\r\n template={documentType?.documentTemplate}\r\n docExpires={doc.expires}\r\n expiryDate={doc.expiryDate}\r\n />\r\n \r\n \r\n );\r\n });\r\n return (\r\n
    \r\n
    \r\n

    {this.props.header || \"UPLOAD SUPPORTING DOCUMENTS\"}

    \r\n
    \r\n\r\n
    \r\n
    \r\n Please ensure that all documents uploaded are the latest documents, and valid.\r\n Supported files include .pdf, .jpg and .png no larger than 10MB.\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rows}\r\n
    Document nameStatusExpiresOptions
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default DocumentUploader;\r\n","import React, { useEffect, useState, useRef } from \"react\";\r\nimport {\r\n CheckboxInput,\r\n ModalPopup,\r\n DropDownInput,\r\n formatTelephoneNumber,\r\n TextInput,\r\n // eslint-disable-next-line no-unused-vars\r\n ButtonInfo,\r\n Form,\r\n // eslint-disable-next-line no-unused-vars\r\n FormRef,\r\n} from \"isuppli-react-components\";\r\nimport { FormGroup, Input } from \"reactstrap\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { EditShareholderMessage } from \"../../http/Shareholders/EditShareholderMessage\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { Document } from \"../../http/ManualSupplier/Models/Document\";\r\nimport DocumentUploader from \"../Supplier/DocumentUploader\";\r\nimport DocumentClassification from \"../../Util/Enumerators/DocumentClassification\";\r\n\r\nconst ShareholderDetailsModal = ({\r\n shareholderMessage,\r\n readOnly,\r\n onClose,\r\n onUpdate,\r\n}: {\r\n shareholderMessage: EditShareholderMessage;\r\n readOnly: boolean;\r\n onClose: () => void;\r\n onUpdate: (item: EditShareholderMessage) => void;\r\n}) => {\r\n const [[genderData, raceData, documentTypes], isStaticDataReady] = useStaticData([\r\n StaticDataTypes.Gender,\r\n StaticDataTypes.Race,\r\n StaticDataTypes.DocumentTypes,\r\n ]);\r\n\r\n const formRef = useRef(null);\r\n const [modalValues, setModalValues] = useState(\r\n {} as EditShareholderMessage\r\n );\r\n\r\n // Set the initial modalValues state, and keep it up to date.\r\n useEffect(() => {\r\n setModalValues(shareholderMessage);\r\n }, [shareholderMessage]);\r\n\r\n const getDefaultGender = () => (isStaticDataReady ? genderData.find((g) => g.name === \"Other\")?.id : 0);\r\n\r\n const getDefaultRace = () => (isStaticDataReady ? raceData.find((r) => r.name === \"Other\")?.id : 0);\r\n\r\n // Validate the form, and if all is well, update the shareholders\r\n const submitHandler = () => {\r\n if (!formRef.current?.isValid()) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n\r\n // Added this because if a control is set to disabled, it's values are not sent during a form submit.\r\n if (modalValues.shareholderType === 1) {\r\n modalValues.genderId = getDefaultGender();\r\n modalValues.raceId = getDefaultRace();\r\n }\r\n\r\n onUpdate(modalValues);\r\n };\r\n\r\n // Update the modalValues document message object based on what has been loaded\r\n // by the DocumentUploader.\r\n const documentChangeHandler = (docMessage: Array) => {\r\n setModalValues({\r\n ...modalValues,\r\n shareholderIdentityDocumentMessage: docMessage[0] ?? [],\r\n });\r\n };\r\n\r\n // Get the required DocumentType from static data based on the ShareholderIdentityDocument classification.\r\n const documentType = () => (isStaticDataReady ? documentTypes.find((d) => d.documentClassification === DocumentClassification.ShareholderIdentityDocument)?.id : \"\");\r\n\r\n // Load up either the document present on the EditShareholderMessage object, or\r\n // load up a new document with the specific document type.\r\n const setupDocuments = (shareholderMsg: EditShareholderMessage) => (\r\n [shareholderMsg.shareholderIdentityDocumentMessage ?? { documentTypeId: documentType() }]);\r\n\r\n return (\r\n <>\r\n {\r\n submitHandler();\r\n },\r\n },\r\n ] as Array)\r\n }\r\n hasCancel\r\n cancelButtonText=\"Close\"\r\n heading=\"Shareholder Details\"\r\n subheading=\"This information is required for the purposes of onboarding to this client, and will be visible only to this client, and its internal users deemed by this client to be necessary.\"\r\n >\r\n <>\r\n
    \r\n
    \r\n
    \r\n {\r\n setModalValues({\r\n ...modalValues,\r\n shareholderType: selectedType,\r\n });\r\n }}\r\n required\r\n validationMessage=\"A shareholder type is required\"\r\n />\r\n
    \r\n\r\n
    \r\n (nameValue.trim() ? nameValue : \"\")}\r\n onChange={(nameValue) => {\r\n setModalValues({ ...modalValues, fullName: nameValue });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n (nameValue.trim() ? nameValue : \"\")}\r\n validationMessage=\"A valid entry is required here\"\r\n onChange={(idValue) => {\r\n setModalValues({ ...modalValues, idNumber: idValue });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n {\r\n setModalValues({\r\n ...modalValues,\r\n raceId: !selectedRace ? -1 : selectedRace,\r\n });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n {\r\n setModalValues({\r\n ...modalValues,\r\n disability: disabilityToggle,\r\n });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n {\r\n setModalValues({\r\n ...modalValues,\r\n genderId:\r\n !selectedGender ? -1 : selectedGender,\r\n });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n {\r\n setModalValues({\r\n ...modalValues,\r\n sharePercentage: Number(sharePercentageValue),\r\n });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n {\r\n setModalValues({\r\n ...modalValues,\r\n contactNumber: contactNumberValue,\r\n });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n (nameValue.trim() ? nameValue : \"\")}\r\n onChange={(titleValue) => {\r\n setModalValues({ ...modalValues, title: titleValue });\r\n }}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {/* quick solution for adding validation */}\r\n { }} />\r\n
    \r\n Please upload a shareholder identity/registration document.\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ShareholderDetailsModal;\r\n","import {\r\n BasicTable,\r\n ActionsDropDown,\r\n ActionsDropDownItem,\r\n // eslint-disable-next-line no-unused-vars\r\n BasicTableCell,\r\n // eslint-disable-next-line no-unused-vars\r\n BasicTableColumn,\r\n hasFeature,\r\n SystemFeatures,\r\n} from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Button } from \"reactstrap\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport {\r\n deleteShareholder,\r\n GetShareholders,\r\n getSupplierShareholders,\r\n} from \"../../http/Shareholders/ShareholderApi\";\r\nimport { ShareholdersViewMessage } from \"../../http/Shareholders/ShareholdersViewMessage\"; // eslint-disable-line no-unused-vars\r\nimport { setShareholderDetails } from \"../../Store/registrationActions\";\r\nimport ShareholderDetailsModal from \"../ShareholderDetailsModal/ShareholderDetailsModal\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { EditShareholderMessage } from \"../../http/Shareholders/EditShareholderMessage\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../Store/ReduxState\";\r\n\r\nconst ShareholderTable = ({\r\n supplierCompanyId = undefined,\r\n readOnly = false,\r\n}: {\r\n supplierCompanyId?: number;\r\n readOnly?: boolean;\r\n}) => {\r\n const [shareHolderData, setShareHolderData] = useState<\r\n Array\r\n >([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const [showAddEditModal, setShowAddEditModal] = useState(false); // Used to display the add/edit modal dialog for shareholders.\r\n const [modalReadOnly, setModalReadOnly] = useState(false);\r\n const [currentShareholderId, setCurrentShareHolderId] = useState<\r\n number | null\r\n >(null);\r\n\r\n const allowedFeatures = useSelector(\r\n (state: ReduxState) => state.loggedInUserDetails.allowedFeatures\r\n );\r\n\r\n const canView = hasFeature(\r\n allowedFeatures,\r\n SystemFeatures.ViewSupplierShareholderDetails\r\n );\r\n\r\n const showError = useShowError();\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setIsLoading(true);\r\n try {\r\n // Retrieve data when logged in as the company user (e.g registration & companyDetails)\r\n if (supplierCompanyId === undefined) {\r\n const data: Array = await GetShareholders();\r\n\r\n setShareHolderData(data ?? []);\r\n dispatch(data);\r\n } else {\r\n const data: ShareholdersViewMessage = await getSupplierShareholders(\r\n supplierCompanyId\r\n );\r\n setShareHolderData(data?.shareholders ?? []);\r\n }\r\n } catch {\r\n setIsLoading(false);\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n loader();\r\n }, [supplierCompanyId, dispatch]);\r\n\r\n useEffect(() => {\r\n dispatch(setShareholderDetails(shareHolderData));\r\n }, [shareHolderData, dispatch]);\r\n\r\n const onUpdateData = (item: EditShareholderMessage) => {\r\n const updates = shareHolderData.map((c) => {\r\n if (c.id === item.id) {\r\n return {\r\n ...c,\r\n ...item,\r\n };\r\n }\r\n return { ...c };\r\n });\r\n\r\n setShareHolderData(updates);\r\n setShowAddEditModal((prevState) => !prevState);\r\n };\r\n\r\n const onViewRow = (shareHolderId: number, readOnlyModal: boolean) => {\r\n setCurrentShareHolderId(shareHolderId);\r\n setModalReadOnly(readOnlyModal);\r\n setShowAddEditModal((prevState) => !prevState);\r\n };\r\n\r\n const addNewRow = () => {\r\n const newRow = {\r\n id: Math.min(...shareHolderData.map((c) => c.id), 0) - 1,\r\n } as EditShareholderMessage;\r\n setShareHolderData([...shareHolderData, newRow]);\r\n\r\n onViewRow(newRow.id, false);\r\n };\r\n\r\n const onDeleteRow = (shareholderId: number) => {\r\n const deleteRow = async () => {\r\n await deleteShareholder(shareholderId);\r\n };\r\n\r\n try {\r\n deleteRow();\r\n\r\n const updates = shareHolderData.filter((x) => x.id !== shareholderId);\r\n dispatch(setShareholderDetails(updates));\r\n setShareHolderData(updates);\r\n } catch {\r\n showError();\r\n }\r\n };\r\n\r\n const columnConfig: Array = [\r\n {\r\n key: \"\",\r\n text: \"*Shareholder Name\",\r\n align: \"left\",\r\n size: \"1fr\",\r\n },\r\n {\r\n key: \"Share\",\r\n align: \"left\",\r\n text: \"*Share %\",\r\n size: \"1fr\",\r\n },\r\n {\r\n key: \"Position\",\r\n align: \"left\",\r\n text: \"*Title/Position\",\r\n size: \"1fr\",\r\n },\r\n {\r\n key: \"Actions\",\r\n text: \"Actions\",\r\n size: \"auto\",\r\n align: \"center\",\r\n },\r\n ];\r\n\r\n const rowConfig: BasicTableCell<{}>[][] = shareHolderData.length <= 0\r\n ? []\r\n : shareHolderData.map((sh, index) => [\r\n {\r\n key: `Name_${index}`,\r\n value: sh.fullName,\r\n },\r\n {\r\n key: `Share_${index}`,\r\n value: sh.sharePercentage,\r\n },\r\n {\r\n key: `Postion_${index}`,\r\n value: sh.title,\r\n },\r\n {\r\n key: `actions_${index}`,\r\n valueTemplate: () => (\r\n <>\r\n \r\n {(supplierCompanyId === undefined\r\n || (supplierCompanyId !== undefined && canView)) && (\r\n onViewRow(sh.id, true)}>\r\n View\r\n \r\n )}\r\n {supplierCompanyId === undefined && (\r\n <>\r\n onViewRow(sh.id, false)}\r\n >\r\n Edit\r\n \r\n onDeleteRow(sh.id)}>\r\n Delete\r\n \r\n \r\n )}\r\n \r\n \r\n ),\r\n },\r\n ]);\r\n\r\n /*\r\n This method will check for any empty shareholders left behind after cancelling an add operation, and clean up\r\n the shareHolderData array, and table.\r\n */\r\n const removeEmptyShareholders = () => {\r\n if (\r\n shareHolderData.length > 0\r\n && shareHolderData[shareHolderData.length - 1].fullName === undefined\r\n && shareHolderData[shareHolderData.length - 1].idNumber === undefined\r\n && shareHolderData[shareHolderData.length - 1].title === undefined\r\n ) {\r\n shareHolderData.pop();\r\n }\r\n };\r\n\r\n return (\r\n \r\n {showAddEditModal && (\r\n x.id === currentShareholderId)\r\n ?? ({} as EditShareholderMessage)\r\n }\r\n readOnly={modalReadOnly}\r\n onClose={() => {\r\n removeEmptyShareholders();\r\n setShowAddEditModal((prevState) => !prevState);\r\n }}\r\n onUpdate={onUpdateData}\r\n />\r\n )}\r\n\r\n
    \r\n
    \r\n

    SHAREHOLDERS

    \r\n
    \r\n {!readOnly && (\r\n

    \r\n List the Shareholders/Directors/Members/Owners of your Enterprise\r\n

    \r\n )}\r\n \r\n {!readOnly && (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ShareholderTable;\r\n","import React, { Component } from \"react\";\r\n\r\nimport ValidationError from \"./ValidationError/ValidationError\";\r\n\r\nclass RadioSelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: [],\r\n };\r\n this.showError = true;\r\n }\r\n\r\n onOptionClick = (value) => {\r\n this.showError = false;\r\n const ev = {\r\n target: {\r\n name: this.props.name,\r\n value,\r\n },\r\n };\r\n this.props.onChangeCallback(ev);\r\n };\r\n\r\n render() {\r\n const btns = this.props.options.map((option, i) => {\r\n const isChecked = option.value === this.props.value;\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n });\r\n const additional = this.state.msgs.map((msg, i) => (\r\n \r\n ));\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {btns}\r\n \r\n {!!this.props.additional\r\n && this.props.additional.length > 0\r\n && this.showError && (\r\n \r\n \r\n \r\n )}\r\n {additional.length !== 0 && (\r\n {additional}\r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default RadioSelector;\r\n","import React, { Fragment } from \"react\";\r\nimport RadioSelector from \"../../Controls/RadioSelector\";\r\nimport TextInput from \"../../Controls/TextInput/TextInput\";\r\nimport { filterOutLetters, filterOutSpecialCharacters } from \"../../Validation/onChangeValidations\";\r\n\r\ninterface AdditionalCompanyDataMessage {\r\n royalBafokengNationalResident: boolean,\r\n localMunicipality: string,\r\n numberOfEmployees: number,\r\n}\r\n\r\nconst AdditionalCompanyData = (props:\r\n {\r\n updateClientSpecificDataHandler: (ev: { target: { name: string; value: AdditionalCompanyDataMessage } }) => void,\r\n readOnly: boolean,\r\n data: any,\r\n }) => {\r\n const onUpdateDataHandler = (e: { target: { name: string | number; value: any; }; }) => {\r\n const updatedAdditionalData = props.data.additionalCompanyData ?? {};\r\n updatedAdditionalData[e.target.name] = e.target.value;\r\n props.updateClientSpecificDataHandler({\r\n target: {\r\n name: \"additionalCompanyData\",\r\n value: updatedAdditionalData,\r\n },\r\n });\r\n };\r\n\r\n return (\r\n // eslint-disable-next-line react/jsx-indent\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AdditionalCompanyData;\r\n","import React from \"react\";\r\nimport { DataFeatures, MultiSelectDropDownInput, WithDataFeature } from \"isuppli-react-components\";\r\nimport TextInput from \"../../Controls/TextInput/TextInput\";\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\nimport ClientBaseTable from \"./ClientBaseTable\";\r\nimport ShareholderTable from \"../ShareholdersTable/ShareholderTable\";\r\nimport {\r\n isValidEmail,\r\n filterOutLetters,\r\n formatTelNumber,\r\n filterOutSpecialCharacters,\r\n maxLength,\r\n} from \"../../Validation/onChangeValidations\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport CompanyGroupingType from \"../../Util/Enumerators/CompanyGroupingType\";\r\nimport AdditionalCompanyData from \"../AdditionalCompanyData/AdditionalCompanyData\";\r\n\r\nconst GeneralBusinessInformation = (props: any) => {\r\n const [[companyTypes, provinces], isReady] = useStaticData([StaticDataTypes.CompanyType, StaticDataTypes.Province]);\r\n let isSouthAfricanCompany = true;\r\n if (isReady) {\r\n const selectedCompanyType = companyTypes\r\n .find((companyType) => companyType.value === props.data.companyType);\r\n if (selectedCompanyType != null) {\r\n isSouthAfricanCompany = selectedCompanyType?.companyGroupingType\r\n === CompanyGroupingType.SouthAfrican;\r\n }\r\n }\r\n\r\n const telephoneValidation = isSouthAfricanCompany\r\n ? [filterOutLetters, formatTelNumber]\r\n : [filterOutLetters];\r\n return (\r\n
    \r\n
    \r\n

    COMPANY INFORMATION

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n props.businessTypes\r\n && ( // this will only render on the registration page\r\n \r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n )\r\n }\r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n const newEvent = {\r\n target: {\r\n name: \"businessRegionProvinceIds\",\r\n value: selectedItems,\r\n },\r\n };\r\n props.onInputChangeCallback(newEvent);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n props.includeShareholders\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n
    \r\n );\r\n};\r\n\r\nexport default GeneralBusinessInformation;\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { hideInfoPopup } from \"../Store/actions\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n showInfoPopup: state.showInfoPopup,\r\n infoPopupHeader: state.infoPopupHeader,\r\n infoPopupContent: state.infoPopupContent,\r\n infoPopupSubheading: state.infoPopupSubheading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n hideInfoPopup: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n});\r\n\r\nfunction InfoPopup(props) {\r\n const msgs = props.infoPopupContent.map((msg, i) =>
  • {msg}
  • );\r\n return (\r\n
    \r\n {props.showInfoPopup && (\r\n
    \r\n
    \r\n
    \r\n

    {props.infoPopupHeader}

    \r\n

    {props.infoPopupSubheading}

    \r\n
    \r\n
    \r\n props.hideInfoPopup()}\r\n >\r\n

    \r\n \r\n
    \r\n
    \r\n
      {msgs}
    \r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(InfoPopup);\r\n","import React from \"react\";\r\nimport { ConfirmationModal } from \"isuppli-react-components\";\r\n\r\nfunction SaveAndContinueConfirm(props) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default SaveAndContinueConfirm;\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Badge } from \"reactstrap\";\r\nimport {\r\n DataFeatures,\r\n hasFeature,\r\n SystemFeatures,\r\n} from \"isuppli-react-components\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport DateInput from \"../../Controls/DateInput/DateInput\";\r\nimport TextInput from \"../../Controls/TextInput/TextInput\";\r\nimport RadioSelector from \"../../Controls/RadioSelector\";\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\nimport CompanyGroupingType from \"../../Util/Enumerators/CompanyGroupingType\";\r\nimport\r\nComplianceStatus, {\r\n complianceStatusToString,\r\n getComplianceStatusBadgeColor,\r\n} from \"../../Util/Enumerators/ComplianceStatus\";\r\nimport {\r\n validateVatNumber,\r\n maxLength,\r\n filterOutLetters,\r\n filterOutSpecialCharactersAndWhiteSpace,\r\n companyNameFilter,\r\n minLength,\r\n getRegNumberConfig,\r\n onCompanyTypeChangeHandler,\r\n} from \"../../Validation/onChangeValidations\";\r\nimport { getCompanyDataFeatures } from \"../../http\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n});\r\nclass RegistrationCompanyInfo extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n dataFeatures: 0,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const companyDataFeatures = await getCompanyDataFeatures();\r\n this.setState({ dataFeatures: companyDataFeatures });\r\n }\r\n\r\n onTurnoverChangeHandler(selectedBand) {\r\n if (!selectedBand.vatExempted && (\r\n this.props.data.hasVatNumber === 0\r\n || (this.props.data.vatNumber == null || this.props.data.vatNumber.trim().length <= 0)\r\n )) {\r\n // vat number is required. Set redux state\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"hasVatNumber\",\r\n value: 1,\r\n },\r\n });\r\n } else if (selectedBand.vatExempted && (this.props.data.vatNumber == null || this.props.data.vatNumber.trim().length <= 0)) {\r\n // if the user has not filled in a vat number, assume that has vat number is false\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"hasVatNumber\",\r\n value: 0,\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const currentCompanyType = this.props.companyTypes.filter(\r\n (c) => c.id === this.props.data.companyType\r\n )[0];\r\n\r\n const selectedCompanyTypeName = currentCompanyType?.name;\r\n\r\n const isForeignCompany = currentCompanyType?.companyGroupingType === CompanyGroupingType.Foreign ?? false;\r\n const regNumberConfig = getRegNumberConfig(selectedCompanyTypeName, this.props.setStepValid);\r\n return (\r\n \r\n
    \r\n

    \r\n COMPANY REGISTRATION INFORMATION\r\n {hasFeature(this.props.allowedFeatures, SystemFeatures.OngoingCompliance)\r\n && (this.props.validationStatus !== null\r\n && this.props.validationStatus !== ComplianceStatus.None)\r\n ? (\r\n {\r\n ev.preventDefault();\r\n this.props.history.push(\"/mycompany/compliance\");\r\n }}\r\n >\r\n {complianceStatusToString(this.props.validationStatus)}\r\n \r\n )\r\n : null}\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n Please capture your company's registration details\r\n as they appear on your Certificate of Incorporation,\r\n relevant Company Registration Document or ID document.\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {\r\n this.props.onInputChangeCallback(ev);\r\n onCompanyTypeChangeHandler(\r\n ev,\r\n this.props.companyTypes,\r\n this.props.onInputChangeCallback\r\n );\r\n }}\r\n disabled={this.props.readOnly\r\n || this.props.regNumberReadOnly}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    TAX INFORMATION

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n In accordance with South African Tax regulations,\r\n unless specifically exempt, any business with annual turnover\r\n in excess of R1m is required to register for VAT.\r\n

    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n {this.props.data.hasVatNumber === 1 && (\r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null)(RegistrationCompanyInfo));\r\n\r\nexport const WrappedRegistrationCompanyInfo = (props) => (\r\n \r\n);\r\n","import React from \"react\";\r\n\r\nimport { Line, UtilButton } from \"isuppli-react-components\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { hideInfoPopup } from \"../Store/actions\";\r\n\r\nfunction WizzardBtns(props) {\r\n const dispatch = useDispatch();\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {!!props.backUrl && (\r\n {\r\n props.history.replace(props.backUrl);\r\n dispatch(hideInfoPopup());\r\n }}\r\n >\r\n Back\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n SAVE AND CONTINUE LATER\r\n \r\n\r\n
    \r\n\r\n props.onClickNext(props.nextUrl)}\r\n >\r\n {`NEXT - ${props.nextText}`}\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n SAVE AND CONTINUE LATER\r\n \r\n
    \r\n
    \r\n
    \r\n {!!props.backUrl && (\r\n
    \r\n props.history.replace(props.backUrl)}\r\n >\r\n BACK\r\n \r\n
    \r\n )}\r\n
    \r\n props.onClickNext(props.nextUrl)}\r\n >\r\n Next\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default WizzardBtns;\r\n","import { valueNullOrEmpty } from \"./validation\";\r\n\r\nexport default function validateStep(data, requiredFields) {\r\n const msgs = {};\r\n let isValid = true;\r\n\r\n requiredFields.forEach((field) => {\r\n const path = field.key.split(\".\");\r\n\r\n let value = data;\r\n for (let i = 0; i < path.length; i += 1) {\r\n if (value === undefined) {\r\n if (i < path.length - 1) { // if not the last one\r\n msgs[path.join(\"\")] = `${field.display} is required`;\r\n isValid = false;\r\n return;\r\n }\r\n } else {\r\n value = value[path[i]];\r\n }\r\n }\r\n\r\n if (valueNullOrEmpty(value) || (field.checkPositive && Number(value) < 1)) {\r\n msgs[path.join(\"\")] = `${field.display} is required`;\r\n isValid = false;\r\n }\r\n });\r\n\r\n return { isValid, msgs };\r\n}\r\n","import staticDataTypes from \"./Enumerators/staticDataTypes\";\r\n\r\nimport {\r\n getOptions,\r\n getOptionsAsync,\r\n getSupplierCategories,\r\n} from \"../http/gets\";\r\n\r\nconst subscriptionTierTransform = (subscriptionTierDataItem) => ({\r\n ...subscriptionTierDataItem,\r\n\r\n // for sub options display\r\n title: subscriptionTierDataItem.name,\r\n msg: \"\",\r\n features: subscriptionTierDataItem.features.map((feature) => feature.name),\r\n monthlyPriceInclVAT: subscriptionTierDataItem.monthlyPriceInclVAT,\r\n\r\n // for drop downs\r\n value: subscriptionTierDataItem.id,\r\n display: subscriptionTierDataItem.name,\r\n});\r\n\r\nexport async function loadSupplierInfoOptions(props) {\r\n const filters = [];\r\n if (props.companyTypes.length === 0) {\r\n filters.push(staticDataTypes.CompanyType);\r\n }\r\n\r\n if (props.businessTypes == null || props.businessTypes.length === 0) {\r\n filters.push(staticDataTypes.BusinessTypes);\r\n }\r\n\r\n if (filters.length > 0) {\r\n const options = await getOptionsAsync(filters);\r\n if (props.companyTypes.length === 0) {\r\n const companyTypes = options.companyTypeData.map((type) => ({\r\n ...type,\r\n value: type.id,\r\n display: type.name,\r\n }));\r\n props.setOption(\"companyTypes\", companyTypes);\r\n }\r\n\r\n if (props.businessTypes == null || props.businessTypes.length === 0) {\r\n const businessTypes = options.businessTypeData?.map((type) => ({\r\n ...type,\r\n value: type.id,\r\n display: type.name,\r\n }));\r\n props.setOption(\"businessTypes\", businessTypes);\r\n }\r\n }\r\n}\r\n\r\nexport function loadAddressContactOptions(props) {\r\n const filters = [];\r\n if (props.provinceOptions.length === 0) {\r\n filters.push(staticDataTypes.Province);\r\n }\r\n if (props.countryOptions.length === 0) {\r\n filters.push(staticDataTypes.Country);\r\n }\r\n if (filters.length > 0) {\r\n getOptions(filters, (options) => {\r\n if (props.provinceOptions.length === 0) {\r\n const provinces = options.provinceData.map((option) => ({\r\n ...option,\r\n value: option.id,\r\n display: option.name,\r\n }));\r\n props.setOption(\"provinces\", provinces);\r\n }\r\n if (props.countryOptions.length === 0) {\r\n const countries = options.countryData.map((option) => ({\r\n ...option,\r\n value: option.id,\r\n display: option.name,\r\n }));\r\n props.setOption(\"countries\", countries);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport function loadBeePracticeOptions(props) {\r\n const filters = [];\r\n if (props.beeLvls.length === 0) {\r\n filters.push(staticDataTypes.BeeStatus);\r\n }\r\n if (props.beeSectors.length === 0) {\r\n filters.push(staticDataTypes.BeeClassification);\r\n }\r\n if (props.documentTypes.length === 0) {\r\n filters.push(staticDataTypes.DocumentTypes);\r\n }\r\n if (props.sectors.length === 0) {\r\n filters.push(staticDataTypes.Sector);\r\n }\r\n if (props.turnoverBands.length === 0) {\r\n filters.push(staticDataTypes.TurnoverBand);\r\n filters.push(staticDataTypes.SectorTurnoverBand);\r\n filters.push(staticDataTypes.SectorTurnoverBandStatus);\r\n }\r\n\r\n if (filters.length > 0) {\r\n getOptions(filters, (options) => {\r\n if (props.beeLvls.length === 0) {\r\n props.setOption(\r\n \"beeLvls\",\r\n options.beeStatusData.map((entry) => ({\r\n ...entry,\r\n value: entry.id,\r\n display: entry.name,\r\n }))\r\n );\r\n }\r\n if (props.beeSectors.length === 0) {\r\n props.setOption(\r\n \"beeSectors\",\r\n options.beeClassificationData.map((entry) => ({\r\n ...entry,\r\n value: entry.id,\r\n display: entry.name,\r\n }))\r\n );\r\n }\r\n\r\n if (props.documentTypes.length === 0) {\r\n props.setOption(\r\n \"documentTypes\",\r\n options.documentTypes.map((entry) => ({\r\n ...entry,\r\n value: entry.id,\r\n display: entry.name,\r\n }))\r\n );\r\n }\r\n\r\n if (props.sectors.length === 0) {\r\n const sectors = options.sectorData.map((sector) => ({\r\n ...sector,\r\n value: sector.id,\r\n display: sector.name,\r\n }));\r\n props.setOption(\"sectors\", sectors);\r\n }\r\n if (props.turnoverBands.length === 0) {\r\n const turnoverBands = options.turnoverBandData.map((turnoverBand) => ({\r\n ...turnoverBand,\r\n value: turnoverBand.id,\r\n display: turnoverBand.name,\r\n heading: (\r\n options.beeClassificationData.find(\r\n (cls) => cls.id\r\n === (\r\n options.sectorTurnoverBandData.find(\r\n (stbd) => stbd.turnoverBandId === turnoverBand.id\r\n ) || {}\r\n ).beeClassificationId\r\n ) || {}\r\n ).name,\r\n }));\r\n props.setOption(\"turnoverBands\", turnoverBands);\r\n const sectorTurnoverBands = options.sectorTurnoverBandData.map(\r\n (sectorTurnoverBand) => ({\r\n ...sectorTurnoverBand,\r\n value: sectorTurnoverBand.id,\r\n display: sectorTurnoverBand.name,\r\n })\r\n );\r\n\r\n props.setOption(\"sectorTurnoverBands\", sectorTurnoverBands);\r\n props.setOption(\"sectorTurnoverBandStatuses\", options.sectorTurnoverBandStatusData);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport async function loadSupplierSearchDetailsOptions(props) {\r\n const filters = [];\r\n if (props.beeLevels.length === 0) {\r\n filters.push(staticDataTypes.BeeStatus);\r\n }\r\n if (props.provinces.length === 0) {\r\n filters.push(staticDataTypes.Province);\r\n }\r\n if (props.countries.length === 0) {\r\n filters.push(staticDataTypes.Country);\r\n }\r\n if (props.companyTypes.length === 0) {\r\n filters.push(staticDataTypes.CompanyType);\r\n }\r\n if (props.sectors.length === 0) {\r\n filters.push(staticDataTypes.Sector);\r\n }\r\n if (props.turnoverBands.length === 0) {\r\n filters.push(staticDataTypes.TurnoverBand);\r\n filters.push(staticDataTypes.SectorTurnoverBand);\r\n filters.push(staticDataTypes.BeeClassification);\r\n }\r\n if (filters.length > 0) {\r\n const options = await getOptionsAsync(filters);\r\n\r\n if (props.beeLevels.length === 0) {\r\n props.setOption(\r\n \"beeLvls\",\r\n options.beeStatusData.map((entry) => ({\r\n ...entry,\r\n value: entry.id,\r\n display: entry.name,\r\n }))\r\n );\r\n }\r\n if (props.provinces.length === 0) {\r\n props.setOption(\r\n \"provinces\",\r\n options.provinceData.map((entry) => ({\r\n ...entry,\r\n value: entry.id,\r\n display: entry.name,\r\n }))\r\n );\r\n }\r\n\r\n if (props.countries.length === 0) {\r\n const countries = options.countryData.map((option) => ({\r\n ...option,\r\n value: option.id,\r\n display: option.name,\r\n }));\r\n props.setOption(\"countries\", countries);\r\n }\r\n\r\n if (props.companyTypes.length === 0) {\r\n const companyTypes = options.companyTypeData.map((type) => ({\r\n ...type,\r\n value: type.id,\r\n display: type.name,\r\n }));\r\n props.setOption(\"companyTypes\", companyTypes);\r\n }\r\n\r\n if (props.sectors.length === 0) {\r\n const sectors = options.sectorData.map((sector) => ({\r\n ...sector,\r\n value: sector.id,\r\n display: sector.name,\r\n }));\r\n props.setOption(\"sectors\", sectors);\r\n }\r\n\r\n if (props.turnoverBands.length === 0) {\r\n const turnoverBands = options.turnoverBandData.map((turnoverBand) => ({\r\n ...turnoverBand,\r\n value: turnoverBand.id,\r\n display: turnoverBand.name,\r\n heading: (\r\n options.beeClassificationData.find(\r\n (cls) => cls.id\r\n === (\r\n options.sectorTurnoverBandData.find(\r\n (stbd) => stbd.turnoverBandId === turnoverBand.id\r\n ) || {}\r\n ).beeClassificationId\r\n ) || {}\r\n ).name,\r\n }));\r\n props.setOption(\"turnoverBands\", turnoverBands);\r\n const sectorTurnoverBands = options.sectorTurnoverBandData.map(\r\n (sectorTurnoverBand) => ({\r\n ...sectorTurnoverBand,\r\n value: sectorTurnoverBand.id,\r\n display: sectorTurnoverBand.name,\r\n })\r\n );\r\n props.setOption(\"sectorTurnoverBands\", sectorTurnoverBands);\r\n }\r\n\r\n if (props.beeSectors.length === 0) {\r\n props.setOption(\r\n \"beeSectors\",\r\n options.beeClassificationData.map((entry) => ({\r\n ...entry,\r\n value: entry.id,\r\n display: entry.name,\r\n }))\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function loadProductServiceOptions(props) {\r\n getSupplierCategories((res) => {\r\n const prdInfo = {\r\n ...res,\r\n };\r\n props.setPrdInfo(prdInfo);\r\n if (props.setLastStepCompleted) {\r\n props.setLastStepCompleted(res.registrationStepCompleted);\r\n }\r\n });\r\n}\r\n\r\nexport function loadBankingDetailOptions(props) {\r\n const filters = [];\r\n if (props.bankAccountTypes.length === 0) {\r\n filters.push(staticDataTypes.BankAccountType);\r\n }\r\n if (props.banks.length === 0) {\r\n filters.push(staticDataTypes.Bank);\r\n }\r\n if (filters.length > 0) {\r\n getOptions(filters, (res) => {\r\n if (props.bankAccountTypes.length === 0) {\r\n props.setOption(\r\n \"bankAccountTypes\",\r\n res.bankAccountTypeData.map((acType) => ({\r\n ...acType,\r\n value: acType.id,\r\n display: acType.name,\r\n }))\r\n );\r\n }\r\n if (props.banks.length === 0) {\r\n props.setOption(\r\n \"banks\",\r\n res.bankData.map((bank) => ({\r\n ...bank,\r\n value: bank.id,\r\n display: bank.name,\r\n }))\r\n );\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport async function loadAddOnboardingRequestOptions(\r\n companyTypes,\r\n setOption\r\n) {\r\n const filters = [];\r\n\r\n if (companyTypes.length === 0) {\r\n filters.push(staticDataTypes.CompanyType);\r\n }\r\n\r\n if (filters.length === 0) {\r\n return;\r\n }\r\n\r\n const options = await getOptionsAsync(filters);\r\n\r\n if (options.companyTypeData != null) {\r\n setOption(\r\n \"companyTypes\",\r\n options.companyTypeData.map((entry) => ({\r\n ...entry,\r\n value: entry.id,\r\n display: entry.name,\r\n }))\r\n );\r\n }\r\n}\r\n\r\nexport async function loadSubscriptionTiers(subscriptions, setOption) {\r\n if (subscriptions.length > 0) {\r\n return;\r\n }\r\n\r\n const options = await getOptionsAsync([staticDataTypes.SubscriptionTier]);\r\n\r\n if (options.subscriptionTierData != null) {\r\n setOption(\r\n \"subscriptions\",\r\n options.subscriptionTierData.map(subscriptionTierTransform)\r\n );\r\n }\r\n}\r\n\r\nexport async function loadAuditTrailOptions() {\r\n // get options needed for audit trail search\r\n}\r\n","const staticCompanyDataTypes = {\r\n supplierCategory: 1,\r\n roles: 2,\r\n supplierType: 3,\r\n contactPersonType: 4,\r\n businessUnit: 5,\r\n documentTypes: 6,\r\n paymentTerms: 7,\r\n businessTypes: 8,\r\n supplierTransactionStatuses: 9,\r\n supportingDocuments: 10,\r\n};\r\n\r\nexport enum StaticCompanyDataTypes {\r\n supplierCategory = 1, // eslint-disable-line no-unused-vars\r\n roles = 2, // eslint-disable-line no-unused-vars\r\n supplierType = 3, // eslint-disable-line no-unused-vars\r\n contactPersonType = 4, // eslint-disable-line no-unused-vars\r\n businessUnit = 5, // eslint-disable-line no-unused-vars\r\n documentTypes = 6, // eslint-disable-line no-unused-vars\r\n paymentTerms = 7, // eslint-disable-line no-unused-vars\r\n businessTypes = 8, // eslint-disable-line no-unused-vars\r\n supplierTransactionStatuses = 9, // eslint-disable-line no-unused-vars\r\n supportingDocuments = 10, // eslint-disable-line no-unused-vars\r\n // not part of the API, but used internally\r\n contractTiers = 999, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default staticCompanyDataTypes;\r\n","import { useEffect, useState, useRef } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { setStaticCompanyData } from \"../Store/actions\";\r\nimport { getCompanyOptionsAsync } from \"../http/index\";\r\n\r\nimport {\r\n StaticCompanyDataTypes, // eslint-disable-line no-unused-vars\r\n} from \"../Util/Enumerators/staticCompanyDataTypes\";\r\nimport {\r\n ReduxState, // eslint-disable-line no-unused-vars\r\n} from \"../Store/ReduxState\";\r\nimport useThreadSafe from \"./useThreadSafe\";\r\n\r\nexport interface StaticOption extends TypedStaticOption {\r\n\r\n}\r\n\r\nexport interface TypedStaticOption {\r\n value: T,\r\n display: string,\r\n [key: string]: any,\r\n}\r\n\r\nexport const objectToDisplayObject = (object: { id: number, name: string }) => ({\r\n ...object,\r\n value: object.id,\r\n display: object.name,\r\n});\r\n\r\nconst useStaticCompanyData = (\r\n optionsToLoad: StaticCompanyDataTypes[]\r\n)\r\n : [StaticOption[][], boolean] => {\r\n const [isReady, setIsReady] = useState(false);\r\n\r\n const storeOptions = useSelector((state: ReduxState) => (state.staticCompanyData ?? []));\r\n const cachedOptions = optionsToLoad.map((option) => storeOptions[option]);\r\n\r\n const currentStoreOptions = useRef(storeOptions);\r\n useEffect(() => {\r\n currentStoreOptions.current = storeOptions;\r\n }, [storeOptions]);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const loader = useThreadSafe(async () => {\r\n // which options should I load\r\n\r\n const optionsToGetFromApi = optionsToLoad.filter(\r\n (option) => currentStoreOptions.current[option] == null\r\n );\r\n\r\n if (optionsToGetFromApi.length === 0) {\r\n setIsReady(true);\r\n return;\r\n }\r\n\r\n // call api\r\n\r\n const loadedOptions: {\r\n [key: string]: {\r\n id: number,\r\n name: string,\r\n [key: string]: any,\r\n }[]\r\n } = await getCompanyOptionsAsync(optionsToGetFromApi);\r\n const dispatchPayload: {\r\n type: StaticCompanyDataTypes,\r\n value: StaticOption[],\r\n }[] = [];\r\n\r\n optionsToGetFromApi.forEach((option) => {\r\n switch (option) {\r\n case StaticCompanyDataTypes.supplierCategory:\r\n const data = loadedOptions.supplierCategories;\r\n dispatchPayload.push({\r\n type: option,\r\n value: data.map((category) => ({\r\n ...objectToDisplayObject(category),\r\n supplierSubCategories: category.supplierSubCategories.map(\r\n (subCategory: { id: number, name: string }) => objectToDisplayObject(subCategory)\r\n ),\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.roles:\r\n const roles = loadedOptions.roles;\r\n dispatchPayload.push({\r\n type: option,\r\n value: roles.map((role) => ({\r\n ...objectToDisplayObject(role),\r\n id: role.roleId,\r\n value: role.roleId,\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.supplierType:\r\n const supplierTypes = loadedOptions.supplierTypes;\r\n dispatchPayload.push({\r\n type: option,\r\n value: supplierTypes.map((type) => ({\r\n ...objectToDisplayObject(type),\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.contactPersonType:\r\n const contactPersonTypes = loadedOptions.contactPersonTypes;\r\n dispatchPayload.push({\r\n type: option,\r\n value: contactPersonTypes.map((type) => ({\r\n ...objectToDisplayObject(type),\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.businessUnit:\r\n const buData = loadedOptions.businessUnits;\r\n dispatchPayload.push({\r\n type: option,\r\n value: buData.map((category) => ({\r\n ...objectToDisplayObject(category),\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.paymentTerms:\r\n const paymentTerms = loadedOptions.paymentTerms;\r\n dispatchPayload.push({\r\n type: option,\r\n value: paymentTerms.map((paymentTerm) => ({\r\n ...objectToDisplayObject(paymentTerm),\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.businessTypes:\r\n const businessTypes = loadedOptions.businessTypes;\r\n dispatchPayload.push({\r\n type: option,\r\n value: businessTypes.map((businessType) => ({\r\n ...objectToDisplayObject(businessType),\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.supplierTransactionStatuses:\r\n const supplierTransactionStatuses = loadedOptions.supplierTransactionStatuses;\r\n dispatchPayload.push({\r\n type: option,\r\n value: supplierTransactionStatuses.map((supplierTransactionStatus) => ({\r\n ...objectToDisplayObject(supplierTransactionStatus),\r\n })),\r\n });\r\n break;\r\n case StaticCompanyDataTypes.supportingDocuments:\r\n const supportingDocuments = loadedOptions.supportingDocuments;\r\n dispatchPayload.push({\r\n type: option,\r\n value: supportingDocuments.map((supportingDocument) => ({\r\n ...objectToDisplayObject(supportingDocument),\r\n })),\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n dispatch(setStaticCompanyData(dispatchPayload));\r\n setIsReady(true);\r\n });\r\n useEffect(() => {\r\n loader();\r\n }, [dispatch, optionsToLoad, loader]);\r\n\r\n return [cachedOptions, isReady];\r\n};\r\n\r\nexport default useStaticCompanyData;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport { ConfirmationModal, DataFeatures, hasFeature } from \"isuppli-react-components\";\r\nimport DuplicateRegistrationModal from \"./DuplicateRegistrationModal\";\r\n\r\nimport RegistrationProgress from \"./RegistrationProgress\";\r\nimport OnboardingInvitationDetails from \"./OnboardInvitationDetails\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport GeneralBusinessInformation from \"../../Containers/Supplier/GeneralBusinessInformation\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport RegistrationCompanyInfo from \"../../Containers/Supplier/RegistrationCompanyInfo\";\r\nimport WizzardBtns from \"../../Containers/WizzardBtns\";\r\n\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport {\r\n requiredFieldsStep1, isEmailInvalid, validIdNumber,\r\n} from \"../../Validation/validation\";\r\nimport { rejectOnboardingRequest } from \"../../http/puts\";\r\nimport { saveSupplierInfo, saveSupplierInfoAsync, getSupplierInfoMatches } from \"../../http/posts\";\r\n\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n} from \"../../Store/registrationActions\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n logOut,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n setStoreProperty,\r\n showInfoPopup,\r\n hideInfoPopup,\r\n setLastStepCompleted,\r\n setUserBasicDetails,\r\n setDataFeatures,\r\n} from \"../../Store/actions\";\r\n\r\nimport { loadSupplierInfoOptions } from \"../../Util/optionsLoader\";\r\n\r\nimport {\r\n getSupplierInfoAsync,\r\n getUserBasicDetails,\r\n getOnboardingInvitation,\r\n refreshToken,\r\n getCompanyDataFeatures,\r\n getCompanyOptionsAsync,\r\n} from \"../../http/index\";\r\nimport { onCompanyTypeChangeHandler } from \"../../Validation/onChangeValidations\";\r\nimport { saveShareholders } from \"../../http/Shareholders/ShareholderApi\";\r\nimport staticCompanyDataTypes from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport { objectToDisplayObject } from \"../../Hooks/useStaticCompanyData\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.supplierInfo,\r\n companyId: state.currentCompanyId,\r\n },\r\n isStepValid: state.isValidStep1,\r\n saveAndContinue: false,\r\n isVATNumberValid: state.isVATNumberValid,\r\n companyTypes: state.options.companyTypes,\r\n businessTypes: state.options.businessTypes,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"supplierInfo\", ev));\r\n },\r\n setSupplierInfo: (supplierInfo) => {\r\n dispatch(setRegistrationObject(\"supplierInfo\", supplierInfo));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n setUserBasicDetails: (userBasicDetails) => {\r\n dispatch(setUserBasicDetails(userBasicDetails));\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setLastStepCompleted: (value) => {\r\n dispatch(setLastStepCompleted(value));\r\n },\r\n setStepValid: (stepName) => (isValid) => {\r\n dispatch(setStoreProperty(stepName, isValid));\r\n },\r\n setDataFeatures: (dataFeatures) => {\r\n dispatch(setDataFeatures(dataFeatures));\r\n },\r\n logOut: () => {\r\n dispatch(logOut());\r\n },\r\n});\r\n\r\nclass RegistrationStep01 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: {},\r\n showConfirmMsg: false,\r\n showDuplicatesMsg: false,\r\n duplicates: [],\r\n showOnboardingInvitationModal: false,\r\n showOnboardingInvitationAcceptedModal: false,\r\n saveAndContinueLater: false,\r\n invitation: {},\r\n buyerOptions: {},\r\n };\r\n }\r\n\r\n saveSupplierInfoWithoutDuplicatesCheck = async (supplierDetailsToSave, onSuccess) => {\r\n await saveSupplierInfoAsync({\r\n ...supplierDetailsToSave,\r\n });\r\n onSuccess(true);\r\n }\r\n\r\n performSave = (onSuccess = null, stepNumber, checkDuplicates) => {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n const supplierDetailsToSave = {\r\n ...this.props.data,\r\n vatNumber:\r\n this.props.data.hasVatNumber === 1 ? this.props.data.vatNumber : null,\r\n registrationStepCompleted:\r\n this.props.data.registrationStepCompleted > stepNumber\r\n ? this.props.data.registrationStepCompleted\r\n : stepNumber,\r\n };\r\n const shareholders = this.props.data.shareholders?.shareholderDetails ?? [];\r\n if (!checkDuplicates) {\r\n this.saveSupplierInfoWithoutDuplicatesCheck(supplierDetailsToSave, onSuccess);\r\n } else {\r\n this.getDuplicates((res) => {\r\n const duplicatesFound = res.length > 0;\r\n const saveInfo = duplicatesFound\r\n ? {\r\n ...supplierDetailsToSave,\r\n registrationNumber: null,\r\n registrationStepCompleted: 0,\r\n } : supplierDetailsToSave;\r\n\r\n // save data\r\n saveSupplierInfo(\r\n {\r\n ...saveInfo,\r\n },\r\n async () => {\r\n await saveShareholders(shareholders);\r\n\r\n // update user basic details after saving step 1\r\n if (stepNumber === 1) {\r\n const basicUserDetails = await getUserBasicDetails(true);\r\n await refreshToken();\r\n\r\n // eslint-disable-next-line no-undef\r\n this.props.setUserBasicDetails({ ...basicUserDetails, allowedFeatures: BigInt(basicUserDetails.allowedFeaturesString) });\r\n this.props.hideInfoMsg();\r\n } else {\r\n this.props.hideInfoMsg();\r\n }\r\n if (duplicatesFound) { onSuccess(false); } else {\r\n onSuccess(true);\r\n }\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n // show modal if duplicates found\r\n if (duplicatesFound) { this.showDuplicateOptions(); }\r\n });\r\n }\r\n };\r\n\r\n getDuplicates = (onSuccess = null) => {\r\n getSupplierInfoMatches(\r\n {\r\n companyType: this.props.data.companyType,\r\n registrationNumber: this.props.data.registrationNumber,\r\n },\r\n (res) => {\r\n const duplicatesFound = res[0] == null ? []\r\n : res.filter((c) => c.companyId !== this.props.data.companyId);\r\n\r\n this.setState({ duplicates: duplicatesFound });\r\n onSuccess(duplicatesFound);\r\n },\r\n () => null\r\n );\r\n };\r\n\r\n onNextClick = async (arg) => {\r\n const dataFeatures = await getCompanyDataFeatures();\r\n let validation = validateStep(this.props.data, requiredFieldsStep1);\r\n\r\n if (this.props.data.vatExempted !== true) {\r\n // vat number\r\n if (this.props.data.hasVatNumber != null) {\r\n if (Number(this.props.data.hasVatNumber) === 1) {\r\n if (!this.props.data.vatNumber) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n vatNumber: \"VAT number is required\",\r\n };\r\n } else if (!this.props.isVATNumberValid) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n vatNumber: \"VAT number is invalid\",\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n // shareholders\r\n const shareholders = this.props.data.shareholders?.shareholderDetails ?? [];\r\n\r\n if (shareholders.length > 0) {\r\n let totalSharePercentageCount = 0;\r\n shareholders.forEach((sh) => {\r\n totalSharePercentageCount += sh.sharePercentage ?? 0;\r\n });\r\n let allShareholdersHaveDocs = false;\r\n allShareholdersHaveDocs = shareholders.every((shm) => shm.shareholderIdentityDocumentMessage\r\n && shm.shareholderIdentityDocumentMessage.filename !== null);\r\n\r\n if (totalSharePercentageCount !== 100) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n shareholders: \"Shareholders' cumilative shares % must equal 100\",\r\n };\r\n }\r\n\r\n if (allShareholdersHaveDocs === false) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n shareholders: \"All shareholders require Identity/Registration documents\",\r\n };\r\n }\r\n } else if (hasFeature(dataFeatures.dataFeatures, DataFeatures.ShareholdersDetails)) {\r\n // if company has ShareholdersDetails feature,\r\n // shareholder details will be mandatory\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n shareholders: \"Please include a shareholder\",\r\n };\r\n }\r\n\r\n if (hasFeature(dataFeatures.dataFeatures, DataFeatures.AdditionalCompanyData)) {\r\n // royalbafokeng\r\n const royalbafokeng = this.props.data.additionalCompanyData?.royalBafokengNationalResident ?? null;\r\n\r\n if (royalbafokeng === null) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n royalBafokengNationalResident: \"Please indicate whether the company is a resident of the Royal Bafokeng Nation.\",\r\n numberOfEmployees: \"Please indicate the Number of employees\",\r\n };\r\n }\r\n }\r\n\r\n if (hasFeature(dataFeatures.dataFeatures, DataFeatures.BusinessRegions)) {\r\n const validBusinessRegions = this.props.data.businessRegionProvinceIds?.length > 0;\r\n if (!validBusinessRegions) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n businessRegions: \"Please indicate the Geographical Region(s) for conducting your primary business\",\r\n };\r\n }\r\n }\r\n\r\n if (hasFeature(dataFeatures.dataFeatures, DataFeatures.BusinessTypes)) {\r\n const validBusinessType = this.props.data.businessTypeId > 0;\r\n if (!validBusinessType) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n businessType: \"Please select a valid business type\",\r\n };\r\n }\r\n }\r\n\r\n if (isEmailInvalid(this.props.data.generalEmail)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n generalEmail: \"General business email address is invalid\",\r\n };\r\n }\r\n\r\n if (this.props.data.requiredIdNumValidation === true\r\n && !validIdNumber(this.props.data.registrationNumber)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n registrationNumber: \"South African ID Number is invalid\",\r\n };\r\n }\r\n\r\n if (this.props.data.companyType <= 0) {\r\n validation = {\r\n isValid: false,\r\n msgs: {\r\n ...validation.msgs,\r\n companyType: \"Company type is required\",\r\n },\r\n };\r\n }\r\n\r\n if (hasFeature(dataFeatures.dataFeatures, DataFeatures.MandatoryTaxClearancePinNumber)) {\r\n if (this.props.data.taxClearanceNumber === null) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n taxClearanceNumber: \"Tax Clearance Number is required\",\r\n };\r\n }\r\n if (this.props.data.taxClearanceNumberExpiryDate === null) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n taxClearanceNumberExpiryDate: \"Tax Clearance Expiry Date is required\",\r\n };\r\n }\r\n }\r\n\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n\r\n if (validation.isValid && this.props.isStepValid) {\r\n this.performSave((onSuccess = null) => {\r\n if (onSuccess) {\r\n this.props.history.push(arg);\r\n }\r\n this.props.hideLoadingScreen();\r\n }, 1, true);\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevSate) => ({\r\n showConfirmMsg: !prevSate.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = () => {\r\n this.setState(() => ({\r\n saveAndContinueLater: true,\r\n }));\r\n this.performSave((onSuccess = null) => {\r\n if (onSuccess) {\r\n this.props.logOut();\r\n }\r\n this.props.hideLoadingScreen();\r\n }, 0, false);\r\n };\r\n\r\n toggleDuplicates = () => {\r\n this.setState((prevSate) => ({\r\n showDuplicatesMsg: !prevSate.showDuplicatesMsg,\r\n }));\r\n };\r\n\r\n invitationModalOnCloseHandler() {\r\n this.setState({\r\n showOnboardingInvitationModal: false,\r\n });\r\n }\r\n\r\n invitationAcceptedModalOnCloseHandler() {\r\n this.setState({\r\n showOnboardingInvitationAcceptedModal: false,\r\n });\r\n }\r\n\r\n async onRejectOnboardingInvitation() {\r\n this.props.showLoadingScreen();\r\n try {\r\n await rejectOnboardingRequest(this.state.invitation.invitationId);\r\n const dataFeatures = await getCompanyDataFeatures();\r\n this.props.setDataFeatures(dataFeatures.dataFeatures);\r\n } catch (error) {\r\n this.props.hideLoadingScreen();\r\n throw error;\r\n }\r\n this.props.hideLoadingScreen();\r\n }\r\n\r\n onAcceptOnboardingInvitation() {\r\n // populate fields from invitation\r\n if (this.state.invitation.registeredName && !this.props.data.disableEditRegistrationInfo) {\r\n this.props.onInputChange({ target: { name: \"registeredName\", value: this.state.invitation.registeredName } });\r\n }\r\n\r\n if (this.state.invitation.tradingName) {\r\n this.props.onInputChange({ target: { name: \"tradingName\", value: this.state.invitation.tradingName } });\r\n }\r\n\r\n if (this.state.invitation.registrationNumber && !this.props.data.disableEditRegistrationInfo) {\r\n this.props.onInputChange({\r\n target: {\r\n name: \"registrationNumber\",\r\n value: this.state.invitation.registrationNumber,\r\n },\r\n });\r\n }\r\n\r\n if (this.state.invitation.vatNumber) {\r\n this.props.onInputChange({\r\n target: { name: \"vatNumber\", value: this.state.invitation.vatNumber },\r\n });\r\n this.props.onInputChange({ target: { name: \"hasVatNumber\", value: 1 } });\r\n }\r\n\r\n if (this.state.invitation.generalEmail) {\r\n this.props.onInputChange({\r\n target: {\r\n name: \"generalEmail\",\r\n value: this.state.invitation.generalEmail,\r\n },\r\n });\r\n }\r\n\r\n if (this.state.invitation.companyTypeId && !this.props.data.disableEditRegistrationInfo) {\r\n this.props.onInputChange({\r\n target: {\r\n name: \"companyType\",\r\n value: this.state.invitation.companyTypeId,\r\n },\r\n });\r\n // Populate vat exempted\r\n onCompanyTypeChangeHandler({ target: { value: this.state.invitation.companyTypeId } },\r\n this.props.companyTypes, this.props.onInputChange, false);\r\n }\r\n\r\n // store invitation state to send when saving\r\n this.props.onInputChange({\r\n target: {\r\n name: \"onboadingRequestInvitationId\",\r\n value: this.state.invitation.invitationId,\r\n },\r\n });\r\n\r\n // set buyer company ID to use throughout registration\r\n this.props.onInputChange({\r\n target: {\r\n name: \"invitationBuyerCompanyId\",\r\n value: this.state.invitation.buyerCompanyId,\r\n },\r\n });\r\n }\r\n\r\n showDuplicateOptions = () => {\r\n this.toggleDuplicates();\r\n this.props.hideLoadingScreen();\r\n };\r\n\r\n setNewDuplicates = (duplicates) => {\r\n this.setState({\r\n duplicates,\r\n });\r\n };\r\n\r\n saveDuplicateOptions = (arg) => {\r\n this.performSave(() => {\r\n this.props.history.push(arg);\r\n this.props.hideLoadingScreen();\r\n });\r\n };\r\n\r\n async componentDidMount() {\r\n this.props.showLoadingScreen(\"Loading data...\");\r\n await loadSupplierInfoOptions(this.props);\r\n\r\n const res = await getSupplierInfoAsync(this.props.data.companyId);\r\n this.props.setSupplierInfo({ ...this.props.data, ...res });\r\n this.props.setLastStepCompleted(res.registrationStepCompleted);\r\n\r\n // Populate vat exempted\r\n onCompanyTypeChangeHandler({ target: { value: res.companyType } },\r\n this.props.companyTypes, this.props.onInputChange, false);\r\n\r\n try {\r\n const invitation = await getOnboardingInvitation();\r\n const autoAccept = invitation.autoAccept\r\n || !this.props.data.disableEditRegistrationInfo;\r\n\r\n if (invitation !== \"\") {\r\n this.setState((_, prevProps) => ({\r\n invitation,\r\n showOnboardingInvitationModal:\r\n autoAccept\r\n ? false\r\n : invitation.invitationId\r\n !== prevProps.data.onboadingRequestInvitationId,\r\n showOnboardingInvitationAcceptedModal:\r\n autoAccept\r\n ? invitation.invitationId\r\n !== prevProps.data.onboadingRequestInvitationId\r\n : false,\r\n }));\r\n\r\n if (autoAccept) {\r\n this.onAcceptOnboardingInvitation(invitation.invitationId);\r\n }\r\n const buyerOptions = await getCompanyOptionsAsync(\r\n [\r\n staticCompanyDataTypes.businessTypes,\r\n ],\r\n invitation?.buyerCompanyId\r\n );\r\n this.setState({ buyerOptions });\r\n }\r\n } catch (ex) {\r\n // error\r\n }\r\n this.props.hideLoadingScreen();\r\n }\r\n\r\n render() {\r\n const companyTypeName = (this.state.invitation.companyTypeId != null)\r\n ? this.props.companyTypes.find(\r\n (companyType) => companyType.id === this.state.invitation.companyTypeId\r\n )?.name\r\n : null;\r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n {this.state.showOnboardingInvitationModal && (\r\n this.onRejectOnboardingInvitation(this.state.invitation.invitationId)}\r\n onAccept={() => this.onAcceptOnboardingInvitation(this.state.invitation.invitationId)}\r\n onClose={() => this.invitationModalOnCloseHandler()}\r\n />\r\n )}\r\n\r\n {this.state.showOnboardingInvitationAcceptedModal && (\r\n this.invitationAcceptedModalOnCloseHandler()}\r\n proceedButtonText=\"Proceed\"\r\n onToggleModal={() => { }}\r\n />\r\n )}\r\n\r\n {\r\n this.state.showConfirmMsg\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n this.state.showDuplicatesMsg && (\r\n (this.state.saveAndContinueLater\r\n ? this.props.logOut() : {})}\r\n duplicates={this.state.duplicates}\r\n companyTypes={this.props.companyTypes}\r\n />\r\n )\r\n }\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 01

    \r\n
    \r\n
    \r\n

    SUPPLIER INFORMATION

    \r\n
    \r\n
    \r\n\r\n \r\n

    \r\n We need a little bit more information about your business, to\r\n ensure we know what your company has to offer.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n Please fill in the required fields below. All fields are\r\n mandatory unless stated otherwise.\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n ({\r\n ...objectToDisplayObject(businessType),\r\n }))\r\n ?? this.props.businessTypes\r\n ?? []}\r\n additional={this.state.msgs}\r\n onInputChangeCallback={this.props.onInputChange}\r\n setStepValid={this.props.setStepValid(\"isValidStep1\")}\r\n includeShareholders\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mappedRegistrationStep01 = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegistrationStep01);\r\nexport default withRouter(mappedRegistrationStep01);\r\n","import React, { Component } from \"react\";\r\n\r\nimport {\r\n CheckboxInput, Line, UtilButton, HelpIcon,\r\n} from \"isuppli-react-components\";\r\nimport TextInput from \"../../Controls/TextInput/TextInput\";\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\n\r\nimport {\r\n filterOutLetters,\r\n filterOutSpecialCharacters,\r\n} from \"../../Validation/onChangeValidations\";\r\n\r\nimport addressTypes from \"../../Util/Enumerators/addressTypes\";\r\n\r\nclass AddressInfo extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.physicalOption = \"physicalAddress\";\r\n this.postalOption = \"postalAddress\";\r\n this.state = {\r\n currentSelection: this.physicalOption,\r\n postalIsPhysical: false,\r\n };\r\n }\r\n\r\n changeSelection = (newSelection) => {\r\n this.setState({\r\n currentSelection: newSelection,\r\n });\r\n };\r\n\r\n updateAccordingToSelection = (name, value) => {\r\n const to = this.state.currentSelection === this.physicalOption\r\n ? this.postalOption\r\n : this.physicalOption;\r\n if (this.state.postalIsPhysical) {\r\n const event = {\r\n target: { name, value },\r\n };\r\n this.props.onInputChangeCallback(to, event);\r\n }\r\n };\r\n\r\n onPostalIsPhysicalChange = () => {\r\n if (!this.state.postalIsPhysical) {\r\n const newPostalAddress = {\r\n ...this.props.data.physicalAddress,\r\n addressId: (this.props.data.postalAddress || {}).addressId || 0,\r\n type: addressTypes.Postal,\r\n };\r\n this.props.setPostalAddress(newPostalAddress);\r\n }\r\n this.setState((prevState) => ({\r\n postalIsPhysical: !prevState.postalIsPhysical,\r\n }));\r\n };\r\n\r\n onInputChange = (ev) => {\r\n const event = {\r\n target: { name: ev.target.name, value: ev.target.value },\r\n };\r\n this.props.onInputChangeCallback(this.state.currentSelection, event);\r\n this.updateAccordingToSelection(ev.target.name, ev.target.value);\r\n };\r\n\r\n onCountryChange = (ev) => {\r\n const provinces = this.props.provinces.filter(\r\n (prov) => prov.countryId === ev.target.value\r\n );\r\n const hasProvinces = provinces.length > 0;\r\n this.props.data.hasProvinces = hasProvinces;\r\n\r\n const event = {\r\n target: { name: \"hasProvinces\", value: hasProvinces },\r\n };\r\n this.props.onInputChangeCallback(this.state.currentSelection, event);\r\n }\r\n\r\n onProvinceChange = (ev) => {\r\n const municipalities = this.props.municipalities.filter(\r\n (municipality) => municipality.provinceId === ev.target.value\r\n );\r\n const hasMunicipalities = municipalities.length > 0;\r\n this.props.data.hasMunicipalities = hasMunicipalities;\r\n\r\n const event = {\r\n target: { name: \"hasMunicipalities\", value: hasMunicipalities },\r\n };\r\n this.props.onInputChangeCallback(this.state.currentSelection, event);\r\n }\r\n\r\n render() {\r\n const physicalBtn = (\r\n this.changeSelection(this.physicalOption)}\r\n >\r\n {this.props.mandatoryPhysicalAddress ? \"*PHYSICAL ADDRESS\" : \"PHYSICAL ADDRESS\"}\r\n \r\n );\r\n const postalBtn = (\r\n this.changeSelection(this.postalOption)}\r\n >\r\n {this.props.mandatoryPostalAddress ? \"*POSTAL ADDRESS\" : \"POSTAL ADDRESS\"}\r\n \r\n );\r\n\r\n const currentSelection = this.props.data[this.state.currentSelection];\r\n const filteredProvices = this.props.provinces.filter(\r\n (prov) => prov.countryId === (currentSelection || {}).country\r\n );\r\n const hasProvinces = filteredProvices.length > 0;\r\n const filteredMunicipalities = this.props.municipalities.filter(\r\n (municipality) => municipality.provinceId === (currentSelection || {}).province\r\n );\r\n const hasMunicipalities = filteredMunicipalities.length > 0;\r\n const isSameChecked = this.state.postalIsPhysical;\r\n return (\r\n
    \r\n
    \r\n

    ADDRESS DETAILS

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {physicalBtn}\r\n\r\n {postalBtn}\r\n
    \r\n
    \r\n\r\n \r\n\r\n
     
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
     
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {\r\n this.onInputChange(ev);\r\n this.onCountryChange(ev);\r\n }}\r\n disabled={this.props.readOnly}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n hasProvinces && (\r\n
    \r\n {\r\n this.onInputChange(ev);\r\n this.onProvinceChange(ev);\r\n }}\r\n disabled={this.props.readOnly}\r\n />\r\n
    \r\n )\r\n }\r\n {\r\n hasProvinces && (\r\n
    \r\n )\r\n }\r\n\r\n {\r\n hasMunicipalities && hasProvinces && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n {\r\n hasMunicipalities && hasProvinces && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default AddressInfo;\r\n","import React, { Component } from \"react\";\r\nimport { ActionsDropDown, ActionsDropDownItem } from \"isuppli-react-components\";\r\n\r\nclass KeyContactStaffOptions extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showOptions: false,\r\n };\r\n }\r\n\r\n toggleOptions = () => {\r\n this.setState((prevState) => ({\r\n showOptions: !prevState.showOptions,\r\n }));\r\n };\r\n\r\n setContact = (role) => {\r\n this.props.setRoleCallback(role);\r\n this.toggleOptions();\r\n };\r\n\r\n getOptions = () => this.props.contacts.map((contactPerson) => {\r\n if (\r\n this.props.role === contactPerson.contactPersonTypeId\r\n || !contactPerson.fullName\r\n || contactPerson.fullName.length === 0\r\n || !contactPerson.contactNumber\r\n || contactPerson.contactNumber.length === 0\r\n || !contactPerson.email\r\n || contactPerson.email.length === 0\r\n ) {\r\n return null;\r\n }\r\n const type = this.props\r\n .contactPersonTypes.find((c) => c.id === contactPerson.contactPersonTypeId);\r\n\r\n return (\r\n this.setContact(contactPerson)}\r\n >\r\n {\r\n type.name\r\n }\r\n \r\n );\r\n });\r\n\r\n render() {\r\n const options = this.getOptions();\r\n return (\r\n option == null)}\r\n label=\"Same as\"\r\n >\r\n {options}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default KeyContactStaffOptions;\r\n","import React from \"react\";\r\n\r\nimport KeyContactStaffOptions from \"./KeyContactStaffOptions\";\r\n\r\nimport { formatTelNumber, filterOutNumbers, filterOutLetters } from \"../../Validation/onChangeValidations\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\n\r\nconst KeyContactStaff = (props) => {\r\n const [[contactPersonTypes], staticDataReady] = useStaticData(\r\n [StaticDataTypes.ContactPerson]\r\n );\r\n const onDetailsChange = (ev, contactPerson, role, filters) => {\r\n let { value } = ev.target;\r\n filters.forEach((filter) => {\r\n value = filter(value);\r\n });\r\n\r\n const newDetailsEntry = {\r\n ...contactPerson,\r\n contactPersonTypeId: role,\r\n [ev.target.name]: value,\r\n };\r\n props.onInputChangeCallback(newDetailsEntry);\r\n };\r\n\r\n const setRole = (targetRole, id, value, isGeneral) => {\r\n const newEntry = {\r\n ...value,\r\n id,\r\n contactPersonTypeId: targetRole,\r\n isGeneral,\r\n };\r\n props.onInputChangeCallback(newEntry);\r\n };\r\n\r\n const getDetailsCell = (name, value, contactPerson, role, filters = []) => (\r\n \r\n onDetailsChange(ev, contactPerson, role, filters)}\r\n autoComplete=\"nofill\"\r\n maxLength={40}\r\n />\r\n \r\n );\r\n\r\n const getTableContent = () => {\r\n const headerRow = (\r\n \r\n Designation\r\n Name\r\n ID Number\r\n Tel. Number\r\n Email Address\r\n {props.readOnly ? null : Options}\r\n \r\n );\r\n const dataRows = !staticDataReady ? null : props.details.map((contactPerson) => {\r\n const contactPersonType = contactPersonTypes.find(\r\n (c) => c.id === contactPerson.contactPersonTypeId\r\n );\r\n let contactPersonTypeDisplay = contactPersonType.name;\r\n if (props.allContactsMandatory\r\n || (contactPersonType.name === \"Primary Contact\" && props.primaryContactMandatory)) {\r\n contactPersonTypeDisplay = `*${contactPersonTypeDisplay}`;\r\n }\r\n return (\r\n \r\n {contactPersonTypeDisplay}\r\n {getDetailsCell(\r\n \"fullName\",\r\n contactPerson?.fullName,\r\n contactPerson,\r\n contactPersonType.id,\r\n [filterOutNumbers]\r\n )}\r\n {getDetailsCell(\"idNumber\", contactPerson?.idNumber, contactPerson, contactPersonType.id)}\r\n {getDetailsCell(\r\n \"contactNumber\",\r\n contactPerson?.contactNumber,\r\n contactPerson,\r\n contactPersonType.id,\r\n props.hasTelNumValidation ? [formatTelNumber] : [filterOutLetters]\r\n )}\r\n {getDetailsCell(\"email\", contactPerson?.email, contactPerson, contactPersonType.id)}\r\n {props.readOnly || (props.generalReadOnly && contactPerson.isGeneral)\r\n ? null\r\n : (\r\n \r\n setRole(\r\n contactPersonType.id,\r\n contactPerson?.id ?? 0,\r\n selectedValue,\r\n contactPerson?.isGeneral ?? false\r\n )\r\n }\r\n contactPersonTypes={staticDataReady ? contactPersonTypes : []}\r\n />\r\n \r\n )}\r\n \r\n );\r\n });\r\n return (\r\n \r\n {headerRow}\r\n {dataRows}\r\n
    \r\n );\r\n };\r\n\r\n return
    {getTableContent()}
    ;\r\n};\r\n\r\nexport default KeyContactStaff;\r\n","// eslint-disable-next-line no-unused-vars\r\nimport { StaticDataTypes } from \"../Util/Enumerators/staticDataTypes\";\r\nimport useStaticData from \"./useStaticData\";\r\n\r\nconst StaticData = (\r\n { optionsToLoad }\r\n :\r\n {\r\n optionsToLoad: StaticDataTypes[],\r\n }\r\n) => {\r\n useStaticData(optionsToLoad);\r\n return null;\r\n};\r\n\r\nexport default StaticData;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport { DataFeatures, hasFeature } from \"isuppli-react-components\";\r\nimport RegistrationProgress from \"./RegistrationProgress\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport AddressInfo from \"../../Containers/Supplier/AddressInfo\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport KeyContactStaff from \"../../Containers/Supplier/KeyContactStaff\";\r\nimport WizzardBtns from \"../../Containers/WizzardBtns\";\r\n\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsStep2 } from \"../../Validation/validation\";\r\n\r\nimport addressTypes from \"../../Util/Enumerators/addressTypes\";\r\n\r\nimport { saveAddressInfo, saveKeyStaffContactDetails } from \"../../http/posts\";\r\n\r\nimport { setOption } from \"../../Store/optionActions\";\r\n\r\nimport StaticData from \"../../Hooks/StaticData\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\n\r\nimport {\r\n logOut,\r\n onStaffContactInfoChange,\r\n onAddressInfoChange,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showInfoPopup,\r\n hideInfoPopup,\r\n setLastStepCompleted,\r\n setStoreProperty,\r\n} from \"../../Store/actions\";\r\n\r\nimport {\r\n getCompanyDataFeatures,\r\n} from \"../../http/index\";\r\n\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n setPostalAddress,\r\n} from \"../../Store/registrationActions\";\r\nimport { loadAddressContactData } from \"../../Util/dataLoader\";\r\nimport { loadAddressContactOptions } from \"../../Util/optionsLoader\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.addressInfo,\r\n companyId: state.currentCompanyId,\r\n },\r\n invitationBuyerCompanyId: state.registration.supplierInfo.invitationBuyerCompanyId,\r\n contactPersonTypes: state.staticData[StaticDataTypes.ContactPerson],\r\n provinceOptions: state.staticData[StaticDataTypes.Province] ?? [],\r\n countryOptions: state.staticData[StaticDataTypes.Country] ?? [],\r\n municipalityOptions: state.staticData[StaticDataTypes.Municipality] ?? [],\r\n isStepValid: state.isValidStep2,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"addressInfo\", ev));\r\n },\r\n setAddressInfo: (addressInfo) => {\r\n dispatch(setRegistrationObject(\"addressInfo\", addressInfo));\r\n },\r\n onAddressInputChange: (category, ev) => {\r\n dispatch(onAddressInfoChange(category, ev));\r\n },\r\n setPostalAddress: (physicalAddress) => {\r\n dispatch(setPostalAddress(physicalAddress));\r\n },\r\n onStaffContactInfoChange: (newEntry) => {\r\n dispatch(onStaffContactInfoChange(newEntry));\r\n },\r\n setOption: (optionName, optionValues) => {\r\n dispatch(setOption(optionName, optionValues));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setLastStepCompleted: (value) => {\r\n dispatch(setLastStepCompleted(value));\r\n },\r\n setStepValid: (stepName) => (isValid) => {\r\n dispatch(setStoreProperty(stepName, isValid));\r\n },\r\n logOut: () => {\r\n dispatch(logOut());\r\n },\r\n});\r\n\r\nclass RegistrationStep02 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: {},\r\n showConfirmMsg: false,\r\n };\r\n }\r\n\r\n extractKeyContactStaffDetails = () => {\r\n const contactPersons = this.props.data.contactPersons.map((\r\n person\r\n ) => (person == null || (!person.fullName || !person.email || !person.contactNumber)\r\n ? null\r\n : person));\r\n\r\n return contactPersons;\r\n };\r\n\r\n performSave = (onSuccess = null, stepNumber) => {\r\n const physical = {\r\n ...this.props.data.physicalAddress,\r\n type: addressTypes.Physical,\r\n };\r\n const postal = {\r\n ...this.props.data.postalAddress,\r\n type: addressTypes.Postal,\r\n };\r\n const content = {\r\n companyId: this.props.data.companyId,\r\n addresses: [physical, postal],\r\n };\r\n this.props.showLoadingScreen(\"saving data...\");\r\n saveAddressInfo(\r\n {\r\n ...content,\r\n registrationStepCompleted:\r\n this.props.data.registrationStepCompleted > stepNumber\r\n ? this.props.data.registrationStepCompleted\r\n : stepNumber,\r\n },\r\n () => {\r\n const keyContactStaff = this.extractKeyContactStaffDetails().filter(\r\n (i) => !!i\r\n );\r\n saveKeyStaffContactDetails(\r\n {\r\n companyId: this.props.data.companyId,\r\n contactPersons: keyContactStaff,\r\n registrationStepCompleted:\r\n this.props.data.registrationStepCompleted > stepNumber\r\n ? this.props.data.registrationStepCompleted\r\n : stepNumber,\r\n },\r\n () => {\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n this.props.hideInfoMsg();\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n };\r\n\r\n onNextClick = async (arg) => {\r\n const dataFeatures = await getCompanyDataFeatures();\r\n const validation = validateStep(this.props.data, requiredFieldsStep2);\r\n const physAdd = this.props.data.physicalAddress;\r\n const postAdd = this.props.data.postalAddress;\r\n if (physAdd !== undefined\r\n && physAdd.hasProvinces === true\r\n && (physAdd.province <= 0 || physAdd.province === undefined)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressProvince: \"Physical address: province is required\",\r\n };\r\n }\r\n\r\n if (postAdd !== undefined\r\n && postAdd.hasProvinces === true\r\n && (postAdd.province <= 0 || postAdd.province === undefined)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n postalAddressProvince: \"Postal address: province is required\",\r\n };\r\n }\r\n if (physAdd !== undefined && (physAdd.hasMunicipalities === true || hasFeature(dataFeatures.dataFeatures, DataFeatures.MandatoryMunicipality))\r\n && (physAdd.municipality <= 0 || physAdd.municipality === undefined)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressMunicipality: \"Physical address: municipality is required\",\r\n };\r\n }\r\n\r\n if (postAdd !== undefined && (postAdd.hasMunicipalities === true || hasFeature(dataFeatures.dataFeatures, DataFeatures.MandatoryMunicipality))\r\n && (postAdd.municipality <= 0 || postAdd.municipality === undefined)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n postalAddressMunicipality: \"Postal address: municipality is required\",\r\n };\r\n }\r\n\r\n if (physAdd !== undefined\r\n && physAdd.hasMunicipalities === true\r\n && hasFeature(dataFeatures.dataFeatures, DataFeatures.MandatoryMunicipality)\r\n && (physAdd.municipality <= 0 || physAdd.municipality === undefined)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressMunicipality: \"Physical address: municipality is required\",\r\n };\r\n }\r\n\r\n if (physAdd !== undefined\r\n && physAdd.hasMunicipalities === true\r\n && hasFeature(dataFeatures.dataFeatures, DataFeatures.MandatoryMunicipality)\r\n && (physAdd.municipality <= 0 || physAdd.municipality === undefined)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressMunicipality: \"Physical address: municipality is required\",\r\n };\r\n }\r\n\r\n if (physAdd !== undefined\r\n && physAdd.hasMunicipalities === true\r\n && hasFeature(dataFeatures.dataFeatures, DataFeatures.MandatoryMunicipality)\r\n && (physAdd.municipality <= 0 || physAdd.municipality === undefined)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressMunicipality: \"Physical address: municipality is required\",\r\n };\r\n }\r\n\r\n if (\r\n this.extractKeyContactStaffDetails().length\r\n !== this.extractKeyContactStaffDetails().filter((i) => !!i).length\r\n ) {\r\n validation.msgs.keycontactstaffdetails = \"Key contact staff details is required\";\r\n validation.isValid = false;\r\n }\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n if (validation.isValid && this.props.isStepValid) {\r\n this.performSave(() => {\r\n this.props.history.push(arg);\r\n this.props.hideLoadingScreen();\r\n }, 2);\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevState) => ({\r\n showConfirmMsg: !prevState.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = () => {\r\n this.performSave(() => {\r\n this.props.logOut();\r\n this.props.hideLoadingScreen();\r\n }, 1);\r\n };\r\n\r\n componentDidMount() {\r\n loadAddressContactData(this.props, this.props.invitationBuyerCompanyId);\r\n loadAddressContactOptions(this.props);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n\r\n \r\n\r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 02

    \r\n
    \r\n
    \r\n

    ADDRESS & CONTACT DETAILS

    \r\n
    \r\n
    \r\n\r\n \r\n

    \r\n We need a little bit more information about your business, to\r\n ensure we know what your company has to offer.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n Please fill in the required fields below. All fields are\r\n mandatory unless stated otherwise.\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    KEY CONTACT STAFF DETAILS

    \r\n
    \r\n\r\n
    \r\n
    \r\n Please complete contact details for all roles in your\r\n organisation. If the same person fulfils more than 1 role, you may\r\n use the "Options" column to select which person's\r\n details you want to copy into that role.\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mappedRegistrationStep02 = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegistrationStep02);\r\nexport default withRouter(mappedRegistrationStep02);\r\n","import React, { Fragment } from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport BeeValidationStatus from \"../../Util/Enumerators/beeValidationStatus\";\r\nimport RadioSelector from \"../../Controls/RadioSelector\";\r\nimport BeeStatusBadge from \"./BeeStatusBadge\";\r\n\r\nimport {\r\n onHasBeeCertificateChangeHandler,\r\n} from \"../../Validation/onChangeValidations\";\r\nimport CompanyGroupingType from \"../../Util/Enumerators/CompanyGroupingType\";\r\n\r\nexport interface Event {\r\n target: {\r\n name: string,\r\n value: any\r\n },\r\n}\r\n\r\nconst BeeStatus = (\r\n {\r\n hasBeeCertificate,\r\n validationStatus,\r\n hasBeeValidationMessage = \"\",\r\n onInputChange,\r\n onHasBeeCertificateChange,\r\n readOnly = false,\r\n companyGroupingType,\r\n }\r\n :\r\n {\r\n hasBeeCertificate?: boolean\r\n validationStatus?: BeeValidationStatus,\r\n hasBeeValidationMessage?: string\r\n onInputChange: (ev: Event) => void,\r\n onHasBeeCertificateChange: (newVal: number) => void,\r\n readOnly?: boolean,\r\n companyGroupingType: CompanyGroupingType,\r\n }\r\n) => (\r\n \r\n \r\n
    \r\n
    \r\n {\r\n onInputChange(ev);\r\n onHasBeeCertificateChangeHandler(\r\n ev.target.value,\r\n onInputChange\r\n );\r\n onHasBeeCertificateChange(ev.target.value);\r\n }}\r\n disabled={\r\n readOnly\r\n || companyGroupingType === CompanyGroupingType.Foreign\r\n }\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n);\r\n\r\nexport default BeeStatus;\r\n","// eslint-disable-next-line no-unused-vars\r\nconst filterBeeStatuses = (beeLevels, sectorTurnoverBands, sectorTurnoverBandStatuses,\r\n selectedSectorId, selectedTurnoverBandId, boPercentage) => {\r\n // Get sector turnover band\r\n const sectorTurnoverBand = sectorTurnoverBands\r\n .find((stb) => stb.sectorId === selectedSectorId\r\n && stb.turnoverBandId === selectedTurnoverBandId);\r\n\r\n // get all sector turnover band statuses for given id\r\n const filteredSectorTurnoverBandStatuses = sectorTurnoverBandStatuses\r\n .filter((stbs) => (stbs.sectorTurnoverBandId === sectorTurnoverBand?.id));\r\n\r\n // find sector turnover band status that matches current BO value\r\n const sectorTurnoverBandStatus = filteredSectorTurnoverBandStatuses\r\n .find((stbs) => (boPercentage < stbs.maxBOPercentage\r\n && boPercentage >= stbs.minBOPercentage));\r\n\r\n // only filter bee levels if there is a rule found\r\n if (sectorTurnoverBandStatus != null) {\r\n return beeLevels.filter((beeLevel) => (beeLevel.id === sectorTurnoverBandStatus.beeStatusId));\r\n }\r\n\r\n return [...beeLevels];\r\n};\r\n\r\nexport default filterBeeStatuses;\r\n","import React, { Fragment, useMemo } from \"react\";\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\nimport DateInput from \"../../Controls/DateInput/DateInput\";\r\n\r\nimport filterBeeStatuses from \"../../Validation/businessRules\";\r\n\r\nconst BeeCertification = (props) => {\r\n const filteredBeeLevels = useMemo(() => filterBeeStatuses(\r\n props.beeLvls,\r\n props.sectorTurnoverBands,\r\n props.sectorTurnoverBandStatuses,\r\n props.data.sector,\r\n props.data.turnoverBand,\r\n props.data.boPercentage\r\n ), [\r\n props.beeLvls,\r\n props.sectorTurnoverBands,\r\n props.sectorTurnoverBandStatuses,\r\n props.data.sector,\r\n props.data.turnoverBand,\r\n props.data.boPercentage,\r\n ]);\r\n\r\n return (\r\n \r\n
    \r\n

    \r\n CERTIFICATE DETAILS\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default BeeCertification;\r\n","import React from \"react\";\r\nimport TextInput from \"../../Controls/TextInput/TextInput\";\r\n\r\nimport {\r\n filterOutSpecialCharactersExceptFullstops,\r\n clampNumber,\r\n} from \"../../Validation/onChangeValidations\";\r\n\r\nconst BlackOwnership = (props) => (\r\n
    \r\n
    \r\n

    BLACK OWNERSHIP (%)

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default BlackOwnership;\r\n","import React, { Component } from \"react\";\r\n\r\nimport ValidationError from \"./ValidationError/ValidationError\";\r\n\r\nclass OptionSelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.showError = true;\r\n }\r\n\r\n onOptionClick = (value) => {\r\n this.showError = false;\r\n const ev = {\r\n target: {\r\n name: this.props.name,\r\n value,\r\n },\r\n };\r\n this.props.onChangeCallback(ev);\r\n };\r\n\r\n render() {\r\n const btns = this.props.options.map((option, i) => {\r\n const className = option.value === this.props.value\r\n ? \"active-option \"\r\n : \"inactive-option \";\r\n return (\r\n (this.props.disabled ? null : this.onOptionClick(option.value))}\r\n >\r\n {!!option.heading &&
    {option.heading}
    }\r\n
    {option.display}
    \r\n
    \r\n );\r\n });\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    {btns}
    \r\n {!!this.props.additional\r\n && this.props.additional.length > 0\r\n && this.showError && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default OptionSelector;\r\n","import React, { Fragment, useEffect, useRef } from \"react\";\r\n\r\nimport OptionSelector from \"../../Controls/OptionSelector\";\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport useStaticData, { staticOption } from \"../../Hooks/useStaticData\"; // eslint-disable-line no-unused-vars\r\n\r\nexport interface Event {\r\n target: {\r\n name: string,\r\n value: any\r\n },\r\n}\r\n\r\nexport interface TurnoverBand extends staticOption {\r\n vatExempted: boolean\r\n}\r\n\r\nconst SectorTurnoverInfo = (\r\n {\r\n sector,\r\n turnoverBand,\r\n readOnly,\r\n onInputChange,\r\n onVatExemptedChange,\r\n additional,\r\n }\r\n :\r\n {\r\n sector?: number,\r\n turnoverBand?: number,\r\n readOnly: boolean,\r\n onInputChange: (event: Event) => void,\r\n onVatExemptedChange: (vatExempted: boolean) => void,\r\n additional: { sector: string, turnoverBand: string},\r\n }\r\n) => {\r\n const [[\r\n sectorTurnoverBands,\r\n turnoverBands,\r\n sectors,\r\n beeClassifications,\r\n ], staticDataReady] = useStaticData([\r\n StaticDataTypes.SectorTurnoverBand,\r\n StaticDataTypes.TurnoverBand,\r\n StaticDataTypes.Sector,\r\n StaticDataTypes.BeeClassification,\r\n ]);\r\n\r\n const onTurnoverChangeHandler = (selectedBand: TurnoverBand) => {\r\n onVatExemptedChange(selectedBand.vatExempted);\r\n };\r\n\r\n const onVatExemptedChangeReference = useRef(onVatExemptedChange);\r\n\r\n useEffect(() => {\r\n onVatExemptedChangeReference.current = onVatExemptedChange;\r\n }, [onVatExemptedChange]);\r\n\r\n useEffect(() => {\r\n if (staticDataReady) {\r\n const selectedItems = turnoverBands.filter(\r\n (c) => c.value === turnoverBand\r\n );\r\n\r\n if (selectedItems.length === 1) {\r\n onVatExemptedChangeReference.current(selectedItems[0].vatExempted);\r\n }\r\n }\r\n }, [staticDataReady, turnoverBand, turnoverBands]);\r\n\r\n let annualTurnover = null;\r\n\r\n if (staticDataReady) {\r\n const currentSectorTurnoverBandIds = sectorTurnoverBands\r\n .filter((entry) => entry.sectorId === sector)\r\n .map((entry) => entry.turnoverBandId);\r\n\r\n const filteredTurnoverBands = turnoverBands.filter(\r\n (entry) => currentSectorTurnoverBandIds.includes(entry.value)\r\n ).map((entry) => ({\r\n ...entry,\r\n heading: beeClassifications\r\n .find((beeClassification) => beeClassification.id === (sectorTurnoverBands\r\n .find((stb) => stb.turnoverBandId === entry.id))?.beeClassificationId)?.display,\r\n }));\r\n\r\n annualTurnover = !sector ? (\r\n Make a sector selection\r\n ) : (\r\n {\r\n onInputChange(ev);\r\n\r\n const selectedTurnoverBand = turnoverBands.find(\r\n (c) => c.value === ev.target.value\r\n );\r\n\r\n if (selectedTurnoverBand != null) {\r\n onTurnoverChangeHandler(selectedTurnoverBand as TurnoverBand);\r\n }\r\n\r\n // set bee classification based on turn over band selection\r\n const selectedSectorTurnoverBand = sectorTurnoverBands\r\n .find((sectorTurnoverBand) => sectorTurnoverBand.sectorId === sector\r\n && sectorTurnoverBand.turnoverBandId === selectedTurnoverBand?.value);\r\n\r\n if (selectedSectorTurnoverBand != null) {\r\n const beeClassification = selectedSectorTurnoverBand.beeClassificationId;\r\n onInputChange({\r\n target: {\r\n name: \"beeClassificationId\",\r\n value: beeClassification,\r\n },\r\n });\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n \r\n
    \r\n

    SECTOR INFORMATION

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n {annualTurnover}\r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SectorTurnoverInfo;\r\n","const millisPerDay = 1000 * 60 * 60 * 24;\r\n\r\nexport function isBefore(considered, compared) {\r\n const d1Time = considered.getTime();\r\n const d2Time = compared.getTime();\r\n return d1Time < d2Time;\r\n}\r\n\r\nexport function addDays(days, date) {\r\n const timeDays = days * millisPerDay;\r\n const timeDate = date.getTime();\r\n return new Date(timeDays + timeDate);\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport {\r\n ModalPopup,\r\n} from \"isuppli-react-components\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport RegistrationProgress from \"./RegistrationProgress\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport BeeStatus from \"../../Containers/Supplier/BeeStatus\";\r\nimport BeeCertification from \"../../Containers/Supplier/BeeCertification\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport BlackOwnership from \"../../Containers/Supplier/BlackOwnership\";\r\nimport SectorTurnoverInfo from \"../../Containers/Supplier/SectorTurnoverInfo\";\r\n\r\nimport WizzardBtns from \"../../Containers/WizzardBtns\";\r\n\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsStep3 } from \"../../Validation/validation\";\r\n\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n} from \"../../Store/registrationActions\";\r\nimport {\r\n logOut,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n hideInfoPopup,\r\n showInfoPopup,\r\n setLastStepCompleted,\r\n} from \"../../Store/actions\";\r\n\r\nimport { saveBeeCertificationInfo } from \"../../http/posts\";\r\n\r\nimport { addDays, isBefore } from \"../../Util/dateArith\";\r\nimport { loadBeePracticeOptions } from \"../../Util/optionsLoader\";\r\nimport { loadBeePracticeData } from \"../../Util/dataLoader\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.beeInfo,\r\n companyId: state.currentCompanyId,\r\n },\r\n isStepValid: state.isValidStep3,\r\n beeLvls: state.options.beeLvls,\r\n beeSectors: state.options.beeSectors,\r\n turnoverband: state.options.turnoverBands.find(\r\n (tob) => tob.id === state.registration.supplierInfo.turnoverBand\r\n ),\r\n documentTypes: state.options.documentTypes,\r\n sectors: state.options.sectors,\r\n turnoverBands: state.options.turnoverBands,\r\n sectorTurnoverBands: state.options.sectorTurnoverBands,\r\n sectorTurnoverBandStatuses: state.options.sectorTurnoverBandStatuses,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"beeInfo\", ev));\r\n },\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n setBeeInfo: (beeInfo) => {\r\n dispatch(setRegistrationObject(\"beeInfo\", beeInfo));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setLastStepCompleted: (value) => {\r\n dispatch(setLastStepCompleted(value));\r\n },\r\n logOut: () => {\r\n dispatch(logOut());\r\n },\r\n});\r\n\r\nclass RegistrationStep03 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: {},\r\n showConfirmMsg: false,\r\n showTurnoverModal: false,\r\n isVatExempted: true,\r\n };\r\n }\r\n\r\n performSave = (onSuccess = null, stepNumber) => {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n saveBeeCertificationInfo(\r\n {\r\n ...this.props.data,\r\n boPercentage: Number(this.props.data.boPercentage),\r\n bwoPercentage: Number(this.props.data.bwoPercentage),\r\n registrationStepCompleted:\r\n this.props.data.registrationStepCompleted > stepNumber\r\n ? this.props.data.registrationStepCompleted\r\n : stepNumber,\r\n },\r\n () => {\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n this.props.hideInfoMsg();\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n };\r\n\r\n onNextClick = (arg) => {\r\n const validation = validateStep(this.props.data, requiredFieldsStep3);\r\n\r\n if (this.props.data.hasBeeCertificate === 1) {\r\n if (\r\n Number(this.props.data.boPercentage)\r\n < Number(this.props.data.bwoPercentage)\r\n ) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n boPercentage:\r\n \"Black ownership should be higher than black woman ownership\",\r\n bwoPercentage:\r\n \"Black woman ownership should be lower than black ownership\",\r\n };\r\n }\r\n\r\n if (!this.props.data.beeStatusId || this.props.data.beeStatusId === 0) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n beeStatusId: \"Bee level is required\",\r\n };\r\n }\r\n\r\n if (!this.props.data.certificateExpiryDate) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n certificateExpiryDate: \"Certificate expiry date is required\",\r\n };\r\n } else {\r\n const newDate = addDays(365, new Date());\r\n const expiryDate = new Date(this.props.data.certificateExpiryDate);\r\n const isCertificateValid = this.props.data.certificateExpiryDate\r\n && isBefore(expiryDate, newDate);\r\n\r\n if (!isCertificateValid) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n certificateExpiryDate:\r\n \"Certificate expiry date is invalid\",\r\n };\r\n }\r\n }\r\n\r\n if (this.props.data.sector == null || this.props.data.sector <= 0) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n sector: \"Sector is required\",\r\n };\r\n } else if (this.props.data.turnoverBand == null || this.props.data.turnoverBand <= 0) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n turnoverBand: \"Turnover band is required\",\r\n };\r\n }\r\n }\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n if (validation.isValid) {\r\n // check hasVatNumber if selected turnover band is not vat exempted\r\n\r\n if (!this.props.data.hasVatNumber && !this.state.isVatExempted) {\r\n // show modal\r\n this.setTurnoverModal(true);\r\n } else {\r\n this.saveAndContinueToStep(arg);\r\n }\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n onHasBeeCertificateChangeHandler = (newVal) => {\r\n if (newVal === 0) {\r\n this.setState(() => ({\r\n isVatExempted: true,\r\n }));\r\n }\r\n }\r\n\r\n setTurnoverModal = (newValue) => {\r\n this.setState(() => ({\r\n showTurnoverModal: newValue,\r\n }));\r\n }\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevSate) => ({\r\n showConfirmMsg: !prevSate.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = () => {\r\n this.performSave(() => {\r\n this.props.logOut();\r\n this.props.hideLoadingScreen();\r\n }, 2);\r\n };\r\n\r\n saveAndContinueToStep = (step) => {\r\n this.performSave(() => {\r\n this.props.history.push(step);\r\n this.props.hideLoadingScreen();\r\n }, 3);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.data.companyId === 0) {\r\n this.props.history.push(\"/registration/supinfo\");\r\n return;\r\n }\r\n loadBeePracticeOptions(this.props);\r\n loadBeePracticeData(this.props);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n\r\n {\r\n this.state.showTurnoverModal\r\n && (\r\n {\r\n this.setTurnoverModal(false);\r\n }\r\n }\r\n buttons={[{\r\n key: \"saveAndReturn\",\r\n label: \"Save and return to company information\",\r\n onClick: () => { this.saveAndContinueToStep(\"/registration/supinfo\"); },\r\n color: \"primary\",\r\n },\r\n {\r\n key: \"proceed\",\r\n label: \"Save and proceed to general product offering\",\r\n onClick: () => { this.saveAndContinueToStep(\"/registration/prdinfo\"); },\r\n color: \"attention\",\r\n }]}\r\n />\r\n )\r\n }\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 03

    \r\n
    \r\n
    \r\n

    B-BBEE PRACTICES & DOCUMENTATION

    \r\n
    \r\n
    \r\n\r\n \r\n

    \r\n We need a little bit more information about your business, to\r\n ensure we know what your company has to offer.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n Please consider uploading your B-BBEE Verification Document\r\n as most corporate companies will use this information to claim\r\n procurement spend against their own B-BBEE scorecard.\r\n Some companies may overlook your services and instead look for\r\n other B-BBEE compliant companies to transact with.\r\n Get ahead of your competition and stay B-BBEE compliant\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {this.props.data.hasBeeCertificate === 1 && (\r\n
    \r\n
    \r\n this.setState({\r\n isVatExempted: newValue,\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mappedRegistrationStep03 = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegistrationStep03);\r\nexport default withRouter(mappedRegistrationStep03);\r\n","import axios from \"axios\";\r\n\r\nimport {\r\n SupplierContractInfoMessage, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\n\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport const getSupplierContractInfoMessage = async (supplierCompanyId: number) => {\r\n const url = `/api/motivation/suppliercontractinfo/${supplierCompanyId}`;\r\n const supplierContractInfoMessage = makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n return supplierContractInfoMessage;\r\n};\r\n\r\nexport const x = \"\";\r\n","import React, {\r\n useEffect, useState, Fragment, useRef,\r\n} from \"react\";\r\nimport {\r\n BasicTable,\r\n ActionsDropDown,\r\n ActionsDropDownItem,\r\n // eslint-disable-next-line no-unused-vars\r\n FileSelectorRef,\r\n Spinner,\r\n FileSelector,\r\n ConfirmationModal,\r\n} from \"isuppli-react-components\";\r\nimport { Progress } from \"reactstrap\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { AxiosRequestConfig } from \"axios\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n ContractMessage,\r\n getContracts,\r\n approveContract,\r\n uploadContract,\r\n uploadContractForTemplate,\r\n getContractTiers,\r\n getContractAgreements,\r\n // eslint-disable-next-line no-unused-vars\r\n ContractTierMessage,\r\n} from \"../../http/Contracting/contractingApi\";\r\n\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport { getSupplierContractInfoMessage } from \"../../http/Marketplace/onboardingAPI\";\r\n\r\ninterface ContractWithProgress extends ContractMessage{\r\n progress?: number,\r\n done?: boolean,\r\n error?: boolean,\r\n uploadError?: string\r\n}\r\nconst AgreementsTable = ({\r\n signatoryCompanyId,\r\n currentUserIsBuyer,\r\n contractTiersList,\r\n onContractApproved,\r\n} : {\r\n signatoryCompanyId : number,\r\n currentUserIsBuyer: boolean,\r\n contractTiersList?: Array,\r\n onContractApproved?: (approvals: Array) => void,\r\n}) => {\r\n const showError = useShowError();\r\n const [loadingTable, setLoadingTable] = useState(true);\r\n const [loading, setLoading] = useState(false);\r\n const [showApproveModal, setShowApproveModal] = useState(false);\r\n const [selectedContract, setSelectedContract] = useState();\r\n const [agreements, setAgreements] = useState([]);\r\n const [contractTierId, setContractTierId] = useState(0);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoadingTable(true);\r\n\r\n try {\r\n // make sure contracts are populated if the user is the supplier. This will happen\r\n // during registration or after invite acceptance\r\n if (signatoryCompanyId > 0) {\r\n const contracts = await getContracts(signatoryCompanyId, !currentUserIsBuyer);\r\n const newAgreements = contracts.items;\r\n onContractApproved?.(newAgreements.map((a) => a.approved || a.noConfirmationRequired));\r\n const supplierContractInfo = await getSupplierContractInfoMessage(signatoryCompanyId);\r\n if (supplierContractInfo.supplierTypeId != null\r\n && supplierContractInfo.externalContractTierId != null) {\r\n // to do, load contract tier static data in a better manner\r\n const contractTiers = contractTiersList ?? await getContractTiers();\r\n // use external contract tier id to get contract tier id\r\n const newContractTierId = contractTiers\r\n .find((tier) => (\r\n tier.externalContractTierId === supplierContractInfo.externalContractTierId\r\n && tier.supplierTypeId === supplierContractInfo.supplierTypeId))?.id ?? 0;\r\n setContractTierId(newContractTierId);\r\n\r\n // call get agreements api using contract tier id\r\n if (newContractTierId > 0) {\r\n const contractTemplates = await getContractAgreements(newContractTierId);\r\n\r\n // add missing templates\r\n contractTemplates.forEach((contractTemplate) => {\r\n if (!contracts.items.map((item) => item.contractTemplateId)\r\n .includes(contractTemplate.id)) {\r\n const agreement: ContractMessage = {\r\n contractTemplateId: contractTemplate.id,\r\n agreementName: contractTemplate.agreementName,\r\n approved: false,\r\n approvedByOtherSignatories: false,\r\n fileName: \"\",\r\n id: 0,\r\n noConfirmationRequired: contractTemplate.noConfirmationRequired,\r\n allowNewVersions: true,\r\n };\r\n newAgreements.push(agreement);\r\n }\r\n });\r\n }\r\n }\r\n\r\n setAgreements(newAgreements);\r\n }\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoadingTable(false);\r\n };\r\n\r\n loader();\r\n }, [signatoryCompanyId, showError, currentUserIsBuyer, contractTiersList]);\r\n\r\n const updateContractInTable = (newContract: ContractWithProgress) => {\r\n setAgreements((oldvalue: ContractWithProgress[]) => {\r\n const newAgreements = oldvalue.map(\r\n (c) => {\r\n if (c.id !== 0) {\r\n if (c.id === newContract.id) return newContract;\r\n } else if (c.contractTemplateId === newContract.contractTemplateId) return newContract;\r\n return c;\r\n }\r\n );\r\n onContractApproved?.(newAgreements.map((a) => a.approved || a.noConfirmationRequired));\r\n return newAgreements;\r\n });\r\n };\r\n\r\n const getViewAction = (contract: ContractWithProgress) => (\r\n (contract.done ?? true) && !(contract.error ?? false) && (contract.id !== 0)\r\n ? (\r\n \r\n View\r\n \r\n )\r\n : null\r\n );\r\n\r\n const [uploadingContract, setUploadingContract] = useState();\r\n const fileSelector = useRef(null);\r\n const getUploadAction = (contract: ContractWithProgress) => (\r\n !contract.approved\r\n && (contract.done ?? true)\r\n && contract.allowNewVersions\r\n && currentUserIsBuyer\r\n ? (\r\n {\r\n // timeout makes sure that drop down closed before modal is opened\r\n setTimeout(() => {\r\n setUploadingContract(contract);\r\n fileSelector.current?.selectFiles();\r\n });\r\n }}\r\n >\r\n {\r\n (contract.id !== 0)\r\n ? \"Upload New Version\"\r\n : \"Upload\"\r\n }\r\n \r\n )\r\n : null\r\n );\r\n\r\n const getUploadCancelAction = (contract: ContractWithProgress) => (\r\n contract.error === true\r\n ? (\r\n {\r\n // timeout makes sure that drop down closed before modal is opened\r\n setTimeout(() => {\r\n updateContractInTable({\r\n ...contract,\r\n error: undefined,\r\n done: undefined,\r\n progress: undefined,\r\n });\r\n });\r\n }}\r\n >\r\n Cancel Upload\r\n \r\n )\r\n : null);\r\n\r\n const onFilesSelectedHandler = async (fileNames: Array,\r\n formData: FormData, uploadErrors: Array) => {\r\n if (uploadingContract == null) {\r\n return;\r\n }\r\n const contractIdToUse = uploadingContract.id;\r\n\r\n updateContractInTable({\r\n ...uploadingContract,\r\n done: false,\r\n progress: 0,\r\n error: false,\r\n });\r\n\r\n const config: AxiosRequestConfig = {\r\n onUploadProgress: (progressEvent) => {\r\n const progress = (progressEvent.loaded * 100) / progressEvent.total;\r\n updateContractInTable({\r\n ...uploadingContract,\r\n done: false,\r\n progress,\r\n error: false,\r\n });\r\n },\r\n };\r\n\r\n try {\r\n if (contractIdToUse === 0) {\r\n const contractId = await uploadContractForTemplate(\r\n signatoryCompanyId,\r\n uploadingContract.contractTemplateId,\r\n contractTierId,\r\n formData,\r\n config\r\n );\r\n\r\n const newContract = {\r\n ...uploadingContract,\r\n id: contractId,\r\n };\r\n updateContractInTable({\r\n ...newContract,\r\n fileName: fileNames[0],\r\n approved: false,\r\n approvedByOtherSignatories: false,\r\n done: true,\r\n progress: 1,\r\n error: false,\r\n });\r\n } else {\r\n await uploadContract(\r\n contractIdToUse,\r\n formData,\r\n config\r\n );\r\n\r\n updateContractInTable({\r\n ...uploadingContract,\r\n fileName: fileNames[0],\r\n approved: false,\r\n approvedByOtherSignatories: false,\r\n done: true,\r\n progress: 1,\r\n error: false,\r\n });\r\n }\r\n } catch (error) {\r\n updateContractInTable({\r\n ...uploadingContract,\r\n done: true,\r\n progress: 1,\r\n error: true,\r\n uploadError: uploadErrors[0],\r\n });\r\n }\r\n };\r\n\r\n const handleContractApproval = async (contract: ContractWithProgress | null | undefined) => {\r\n setLoading(true);\r\n if (contract != null) {\r\n try {\r\n await approveContract(contract.id);\r\n // set to approved in table\r\n updateContractInTable({ ...contract, approved: true });\r\n setShowApproveModal(false);\r\n setSelectedContract(null);\r\n } catch (error) {\r\n showError();\r\n setShowApproveModal(false);\r\n setSelectedContract(null);\r\n }\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const getApproveAction = (contract: ContractWithProgress): JSX.Element | null => (\r\n !contract.approved\r\n && (contract.done ?? true)\r\n && !(contract.error ?? false)\r\n && (contract.id !== 0)\r\n ? (\r\n {\r\n if (currentUserIsBuyer) {\r\n handleContractApproval(contract);\r\n } else {\r\n setSelectedContract(contract);\r\n setShowApproveModal(true);\r\n }\r\n }}\r\n >\r\n Approve\r\n \r\n )\r\n : null);\r\n\r\n return (\r\n \r\n {loading && }\r\n {\r\n showApproveModal\r\n && !currentUserIsBuyer\r\n && (\r\n {\r\n setSelectedContract(null);\r\n setShowApproveModal(false);\r\n }\r\n }\r\n proceedButtonText=\"continue\"\r\n onProceedClick={() => handleContractApproval(selectedContract)}\r\n />\r\n )\r\n }\r\n \r\n\r\n [\r\n {\r\n key: `agreementName_${contract.id}`,\r\n value: contract.agreementName,\r\n },\r\n {\r\n key: `allStatus_${contract.id}`,\r\n valueTemplate: () => (\r\n \r\n {contract.approvedByOtherSignatories && \"Approved\"}\r\n {!contract.approvedByOtherSignatories\r\n && (contract.id === 0\r\n ? \"N/A\"\r\n : \"Approval Required\")}\r\n \r\n ),\r\n },\r\n {\r\n key: `status_${contract.id}`,\r\n valueTemplate: () => {\r\n if (contract.done == null) {\r\n return (\r\n \r\n {contract.approved && \"Approved\"}\r\n {!contract.approved\r\n && (contract.id === 0\r\n ? \"Not Uploaded\"\r\n : \"Approval Required\")}\r\n \r\n );\r\n }\r\n if (contract.error === true) {\r\n return (\r\n \r\n {contract.uploadError !== \"\"\r\n ? contract.uploadError\r\n : \"Upload Failed. Please try again.\"}\r\n \r\n );\r\n }\r\n if (contract.done === true) {\r\n return (\r\n \r\n {contract.approved\r\n ? \"Approved\"\r\n : \"Approval Required\"}\r\n \r\n );\r\n }\r\n return ;\r\n },\r\n },\r\n {\r\n key: `actions_${contract.id}`,\r\n valueTemplate: () => (\r\n \r\n { getApproveAction(contract) }\r\n { getUploadAction(contract) }\r\n { getViewAction(contract) }\r\n { getUploadCancelAction(contract) }\r\n \r\n ),\r\n },\r\n ])}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default AgreementsTable;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { DataFeatures, Spinner, useDataFeatureCheck } from \"isuppli-react-components\";\r\n\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { Alert } from \"reactstrap\";\r\nimport RegistrationProgress from \"../RegistrationProgress\";\r\nimport InfoPopup from \"../../../Containers/InfoPopup\";\r\nimport SaveAndContinueConfirm from \"../../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport DocumentUploader from \"../../../Containers/Supplier/DocumentUploader\";\r\nimport WizzardBtns from \"../../../Containers/WizzardBtns\";\r\n\r\nimport {\r\n hideInfoPopup, logOut, showInfoPopup, setLastStepCompleted,\r\n} from \"../../../Store/actions\";\r\nimport { setRegistrationObject } from \"../../../Store/registrationActions\";\r\n\r\nimport { getDocumentsAsync, saveDocumentsInfo } from \"../../../http/index\";\r\nimport AgreementsTable from \"../../../Containers/AgreementsTable/AgreementsTable\";\r\nimport useStaticData from \"../../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../../Util/Enumerators/staticDataTypes\";\r\n\r\nconst RegistrationStepDocuments = () => {\r\n const [showSaveAndContinue, setShowSaveAndContinue] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [[documentTypes], isReady] = useStaticData([StaticDataTypes.DocumentTypes]);\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const dataFeatureCheck = useDataFeatureCheck();\r\n const [approvals, setApprovals] = useState>([]);\r\n\r\n const data = useSelector((state: any) => (\r\n {\r\n ...state.registration.beeInfo,\r\n documents: state.registration.documents,\r\n companyId: state.currentCompanyId,\r\n invitationBuyerCompanyId: state.registration.supplierInfo.invitationBuyerCompanyId,\r\n }));\r\n\r\n const documents = useSelector((state: any) => state.registration.documents);\r\n\r\n const performSave = (onSuccess : () =>void, stepNumber: number) => {\r\n setLoading(true);\r\n const documentSummary = {\r\n companyId: data.companyId,\r\n companyDocuments: documents,\r\n registrationStepCompleted:\r\n data.registrationStepCompleted > stepNumber\r\n ? data.registrationStepCompleted\r\n : stepNumber,\r\n };\r\n saveDocumentsInfo(\r\n documentSummary,\r\n () => {\r\n onSuccess();\r\n dispatch(hideInfoPopup());\r\n },\r\n () => {\r\n setLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const onNextClick = async (arg: string) => {\r\n // check if all documents were added - special case\r\n const validation : {\r\n isValid: boolean,\r\n msgs: { [key: string]: string },\r\n } = { isValid: true, msgs: {} };\r\n for (let i = 0; i < data.documents.length; i += 1) {\r\n if (!data.documents[i].optional && !data.documents[i].filename) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n documents: \"Please ensure all required documents are uploaded\",\r\n };\r\n }\r\n }\r\n \r\n // agreement approval validation\r\n if (approvals.length > 0) {\r\n for (let i = 0; i < approvals.length; i += 1) {\r\n if (!approvals[i]) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n agreements: \"Please ensure all agreements are approved\",\r\n };\r\n }\r\n }\r\n }\r\n\r\n if (validation.isValid) {\r\n performSave(() => {\r\n history.push(arg);\r\n setLoading(false);\r\n }, 6);\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n dispatch(showInfoPopup(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n ));\r\n }\r\n };\r\n\r\n const setDocuments = (newDocuments: any) => {\r\n dispatch(setRegistrationObject(\"documents\", newDocuments));\r\n };\r\n\r\n const saveAndContinueLater = () => {\r\n performSave(() => {\r\n dispatch(logOut());\r\n setLoading(false);\r\n }, 5);\r\n };\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n const res = await getDocumentsAsync(data.companyId, true);\r\n dispatch(setRegistrationObject(\"documents\", res.companyDocuments));\r\n dispatch(setLastStepCompleted(res.registrationStepCompleted));\r\n };\r\n\r\n loader();\r\n }, [data.companyId, dispatch]);\r\n\r\n return (\r\n
    \r\n {loading && }\r\n \r\n {showSaveAndContinue && (\r\n setShowSaveAndContinue(false)}\r\n saveAndContinueCallback={saveAndContinueLater}\r\n />\r\n )}\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {dataFeatureCheck(DataFeatures.BankingDetails)\r\n ? \"STEP 06\"\r\n : \"STEP 05\"}\r\n

    \r\n
    \r\n
    \r\n

    SUPPORTING DOCUMENTS & AGREEMENTS

    \r\n
    \r\n
    \r\n\r\n \r\n

    \r\n We need a little bit more information about your business, to\r\n ensure we know what your company has to offer.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n This section will remain incomplete until you upload your\r\n latest and up-to-date BEE rating. Over and above this, your\r\n profile will only be available for on-boarding when B1LINK\r\n has validated you BEE rating.\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
     
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n setDocuments(newDocuments)}\r\n />\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n

    AGREEMENTS

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n View, update and approve agreements.\r\n
    \r\n
    \r\n\r\n ) => setApprovals(a)}\r\n />\r\n
    \r\n setShowSaveAndContinue(true)}\r\n onClickNext={onNextClick}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default RegistrationStepDocuments;\r\n","import React, { Component } from \"react\";\r\nimport { CheckboxInput, TextAreaInput } from \"isuppli-react-components\";\r\n\r\nclass OfferingSelectionSummary extends Component {\r\n constructor() {\r\n super();\r\n this.state = {};\r\n }\r\n\r\n onInputChange = (ev) => {\r\n this.props.onInputChangeCallback(ev);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n this.onInputChange({\r\n target: {\r\n name: \"notifyNewOpportunities\",\r\n value,\r\n },\r\n })}\r\n />\r\n this.onInputChange({\r\n target: {\r\n name: \"tradeDescription\",\r\n value,\r\n },\r\n })}\r\n />\r\n\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default OfferingSelectionSummary;\r\n","// eslint-disable-next-line no-unused-vars\r\nimport { StaticCompanyDataTypes } from \"../Util/Enumerators/staticCompanyDataTypes\";\r\nimport useStaticCompanyData from \"./useStaticCompanyData\";\r\n\r\nconst StaticCompanyData = (\r\n { optionsToLoad }\r\n :\r\n {\r\n optionsToLoad: StaticCompanyDataTypes[]\r\n }\r\n) => {\r\n useStaticCompanyData(optionsToLoad);\r\n return null;\r\n};\r\n\r\nexport default StaticCompanyData;\r\n","import axios from \"axios\";\r\n\r\nimport {\r\n ClientSpecificSupplierSubCategoriesMessage, // eslint-disable-line no-unused-vars\r\n ClientSupplierCategoryMessage, SupplierCategoryMessage, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\n\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport const getClientSupplierCategories = async (buyerCompanyId: number) => makeRequestAsync(\r\n () => axios.get(`/api/suppliercategory/client/${buyerCompanyId}`)\r\n) as Promise>;\r\n\r\nexport const getSupplierCategoriesSelectionAsBuyer = async (supplierCompanyId: number) => makeRequestAsync(\r\n () => axios.get(`/api/suppliercategory?supplierCompanyId=${supplierCompanyId}`)\r\n) as Promise>;\r\n\r\nexport const getBuyerProductCategoriesOptions = async (buyerCompanyId: number) => makeRequestAsync(\r\n () => axios.get(`/api/suppliercategory/options?buyerCompanyId=${buyerCompanyId}`)\r\n) as Promise>;\r\n\r\nexport const saveClientSpecificProductCategories = async (message: ClientSpecificSupplierSubCategoriesMessage) => makeRequestAsync(\r\n () => axios.post(\"/api/suppliercategory/client\", message)\r\n) as Promise;\r\n\r\nexport const canSupplierEditClientSpecificProductCategories = async (buyerCompanyId: number) => makeRequestAsync(\r\n () => axios.get(`/api/suppliercategory/edit?buyerCompanyId=${buyerCompanyId}`)\r\n) as Promise;\r\n","import React from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ClientSupplierCategoryMessage } from \"../../../http/SupplierCategory/Models/Models\";\r\n\r\nconst ClientOfferingSummaryDisplay = ({\r\n clientProductOfferings,\r\n}: {\r\n clientProductOfferings: Array,\r\n}) => (\r\n
    \r\n {\r\n clientProductOfferings?.map((offering) => (\r\n
    \r\n

    {offering.name}

    \r\n
      \r\n {\r\n offering.subCategories\r\n .map((subCategory) =>
    • {subCategory.name}
    • )\r\n }\r\n
    \r\n
    \r\n ))\r\n }\r\n {clientProductOfferings.length === 0 && }\r\n
    \r\n);\r\n\r\nexport default ClientOfferingSummaryDisplay;\r\n","import { Spinner } from \"isuppli-react-components\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ClientSupplierCategoryMessage } from \"../../../http/SupplierCategory/Models/Models\";\r\nimport { getClientSupplierCategories } from \"../../../http/SupplierCategory/supplierCategoryAPI\";\r\nimport ClientOfferingSummaryDisplay from \"./ClientOfferingSummaryDisplay\";\r\n\r\nconst ClientOfferingSummary = ({\r\n buyerCompanyId,\r\n}: {\r\n buyerCompanyId: number,\r\n}) => {\r\n const showError = useShowError();\r\n const [\r\n clientProductOfferings,\r\n setClientProductOfferings,\r\n ] = useState>([]);\r\n\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n const loadData = async () => {\r\n setLoading(true);\r\n try {\r\n const result = await getClientSupplierCategories(\r\n buyerCompanyId\r\n );\r\n\r\n setClientProductOfferings(result);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n loadData();\r\n }, [buyerCompanyId, setClientProductOfferings, setLoading, showError]);\r\n\r\n return (\r\n
    \r\n {\r\n loading && \r\n }\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ClientOfferingSummary;\r\n","import React, { Fragment, useState, useEffect } from \"react\";\r\nimport {\r\n CheckboxInput, ModalPopup, Spinner, FilterInput,\r\n} from \"isuppli-react-components\";\r\n\r\nimport { SupplierCategoryMessage } from \"../../../http/SupplierCategory/Models/SupplierCategoryMessage\";// eslint-disable-line no-unused-vars\r\nimport {\r\n getBuyerProductCategoriesOptions,\r\n saveClientSpecificProductCategories,\r\n} from \"../../../http/SupplierCategory/supplierCategoryAPI\";\r\n\r\nimport { ClientSupplierCategoryMessage } from \"../../../http/SupplierCategory/Models/ClientSupplierCategoryMessage\";// eslint-disable-line no-unused-vars\r\nimport {\r\n ClientSpecificSupplierSubCategoriesMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/SupplierCategory/Models/ClientSpecificSupplierSubCategoriesMessage\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n\r\nconst BuyerOfferingSelector = ({\r\n selection,\r\n setSelection,\r\n onCloseCallback,\r\n buyerCompanyId,\r\n}: {\r\n selection: ClientSupplierCategoryMessage[];\r\n setSelection: (value: ClientSupplierCategoryMessage[], selectionIdList : number[]) => void;\r\n onCloseCallback: () => void;\r\n buyerCompanyId: number,\r\n}) => {\r\n const [internalSelection, setInternalSelection] = useState([]);\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const selectionList: Array = [];\r\n // eslint-disable-next-line array-callback-return\r\n selection.map((x) => {\r\n const result = x.subCategories.map((subCat) => subCat.id);\r\n selectionList.push(...result);\r\n });\r\n setInternalSelection(selectionList);\r\n }, [selection]);\r\n\r\n const [supplierCategories, setSupplierCategories] = useState>([]);\r\n const [isReady, setIsReady] = useState(false);\r\n const [filterTerm, setFilterTerm] = useState(\"\");\r\n useEffect(() => {\r\n setIsReady(false);\r\n const loadData = async () => {\r\n try {\r\n const productCategories = await getBuyerProductCategoriesOptions(buyerCompanyId);\r\n setSupplierCategories(productCategories);\r\n setIsReady(true);\r\n } catch (error) {\r\n setIsReady(true);\r\n showError();\r\n }\r\n };\r\n\r\n loadData();\r\n }, [buyerCompanyId, showError]);\r\n const removeSupplierCategory = (item: number) => {\r\n setInternalSelection((prevState) => prevState.filter((sel) => sel !== item));\r\n };\r\n\r\n const addSupplierCategory = (item: number) => {\r\n setInternalSelection((prevState) => [...prevState, item]);\r\n };\r\n\r\n const toggleItem = (item: number, isSelected: boolean) => {\r\n if (isSelected) {\r\n removeSupplierCategory(item);\r\n } else {\r\n addSupplierCategory(item);\r\n }\r\n };\r\n\r\n const buildSelection = () => {\r\n const optionsToShow = supplierCategories.map((cat, i) => {\r\n const optionRows: JSX.Element[][] = [];\r\n let index = -1;\r\n cat.supplierSubCategories\r\n .filter((subCat: any) => (filterTerm.length === 0\r\n ? true\r\n : cat.name\r\n .toLocaleLowerCase()\r\n .includes(filterTerm.toLocaleLowerCase())\r\n || subCat.name\r\n .toLowerCase()\r\n .includes(filterTerm.toLocaleLowerCase())))\r\n .forEach((subCat: any, j: number) => {\r\n if (j % 3 === 0) {\r\n index += 1;\r\n optionRows.push([]);\r\n }\r\n const isSelected = !!internalSelection.find(\r\n (s) => s === subCat.id\r\n );\r\n optionRows[index].push(\r\n
    \r\n {\r\n toggleItem(subCat.id, isSelected);\r\n }}\r\n />\r\n
    \r\n );\r\n });\r\n const options = optionRows.map((row, k) => (\r\n
    \r\n {row}\r\n
    \r\n ));\r\n return options.length > 0 ? (\r\n
    \r\n \r\n

    {cat.name}

    \r\n
    \r\n
    {options}
    \r\n \r\n ) : null;\r\n });\r\n return optionsToShow;\r\n };\r\n\r\n const onApplyClick = () => {\r\n const categorySelection = supplierCategories.map((x) => {\r\n const result = {\r\n id: x.id,\r\n name: x.name,\r\n subCategories: x.supplierSubCategories.filter((y) => internalSelection.includes(y.id)) ?? [],\r\n };\r\n if (result.subCategories.length > 0) { return (result); }\r\n return undefined;\r\n }).filter((res) => res !== undefined) as Array;\r\n setSelection(categorySelection, internalSelection);\r\n onCloseCallback();\r\n\r\n const saveData = async () => {\r\n const input: ClientSpecificSupplierSubCategoriesMessage = { buyerCompanyId, selectedSubCategoryIdList: internalSelection };\r\n try {\r\n await saveClientSpecificProductCategories(input);\r\n } catch (error) {\r\n showError();\r\n }\r\n };\r\n saveData();\r\n };\r\n\r\n const onFilter = (term: string) => {\r\n setFilterTerm(term);\r\n };\r\n\r\n const onFilterChange = (ev: React.FormEvent) => {\r\n setFilterTerm(ev.currentTarget.value);\r\n };\r\n\r\n return (\r\n \r\n onCloseCallback()}\r\n hasCancel\r\n heading=\"SELECT PRODUCT / SERVICE CATEGORIES\"\r\n subheading=\"Please indicate your primary product and/or service offering only.\r\n Keep in mind that buyers may be wary of a supplier who claims to do everything.\"\r\n size=\"large\"\r\n buttons={[\r\n {\r\n key: \"ok\",\r\n label: \"Save\",\r\n onClick: () => {\r\n onApplyClick();\r\n },\r\n color: \"primary\",\r\n },\r\n ]}\r\n >\r\n

    \r\n B1LINK is authorized to adopt The United Nations Standard Products and\r\n Services Code (UNSPSC).\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isReady ? buildSelection() : }\r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default BuyerOfferingSelector;\r\n","// eslint-disable-next-line no-unused-vars\r\nimport { StaticDataTypes } from \"../Util/Enumerators/staticDataTypes\";\r\nimport useStaticData from \"./useStaticData\";\r\n\r\nconst useStaticDataCustom = (optionsToLoad: StaticDataTypes[]) => useStaticData(optionsToLoad);\r\nexport default useStaticDataCustom;\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n DataFeatures,\r\n withDataFeatureCheck,\r\n UtilButton,\r\n GlobalOfferingSelector,\r\n GlobalProductsAndServicesList,\r\n} from \"isuppli-react-components\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport RegistrationProgress from \"./RegistrationProgress\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport OfferingSelectionSummary from \"../../Containers/Supplier/OfferingSelectionSummary\";\r\n\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport WizzardBtns from \"../../Containers/WizzardBtns\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\n\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsStep4 } from \"../../Validation/validation\";\r\n\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n setSupplierCategories,\r\n setUnspscFamilies,\r\n} from \"../../Store/registrationActions\";\r\n\r\nimport { saveProductServiceOffering } from \"../../http/posts\";\r\n\r\nimport {\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n hideInfoPopup,\r\n showInfoPopup,\r\n setLastStepCompleted,\r\n logOut,\r\n} from \"../../Store/actions\";\r\n\r\nimport { loadProductServiceOptions } from \"../../Util/optionsLoader\";\r\n\r\nimport staticCompanyDataTypes from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport StaticCompanyData from \"../../Hooks/StaticCompanyData\";\r\n\r\nimport ClientOfferingSummary from \"../../Containers/Supplier/ClientOfferingSummary/ClientOfferingSummary\";\r\nimport BuyerOfferingSelector from \"../../Containers/Supplier/BuyerOfferingSelector/BuyerOfferingSelector\";\r\nimport { canSupplierEditClientSpecificProductCategories, getClientSupplierCategories } from \"../../http/SupplierCategory/supplierCategoryAPI\";\r\nimport ClientOfferingSummaryDisplay from \"../../Containers/Supplier/ClientOfferingSummary/ClientOfferingSummaryDisplay\";\r\nimport { SearchUsnpscFamilies } from \"../../http/Search/searchApi\";\r\nimport useStaticDataCustom from \"../../Hooks/useStaticDataCustom\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: { ...state.registration.prdInfo, companyId: state.currentCompanyId },\r\n supplierCategories: state.staticCompanyData[staticCompanyDataTypes.supplierCategory] ?? [],\r\n invitationBuyerCompanyId: state.registration.supplierInfo.invitationBuyerCompanyId,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n setPrdInfo: (prdInfo) => {\r\n dispatch(setRegistrationObject(\"prdInfo\", prdInfo));\r\n },\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"prdInfo\", ev));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setLastStepCompleted: (value) => {\r\n dispatch(setLastStepCompleted(value));\r\n },\r\n logOut: () => {\r\n dispatch(logOut());\r\n },\r\n setSelection: (newSelection) => {\r\n dispatch(setSupplierCategories(newSelection));\r\n },\r\n setGlobalSelection: (newSelection) => {\r\n dispatch(setUnspscFamilies(newSelection));\r\n },\r\n});\r\n\r\nclass RegistrationStep04 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showGlobalProductsModal: false,\r\n showClientOfferingSelectorModal: false,\r\n buyerProductCategoriesSelection: [],\r\n supplierCanEditCategoryData: false,\r\n };\r\n this.maxSelection = 3;\r\n }\r\n\r\n toggleGlobalProductsModal = () => {\r\n this.setState((prevState) => ({\r\n showGlobalProductsModal: !prevState.showGlobalProductsModal,\r\n }));\r\n };\r\n\r\n toggleClientOfferingSelectorModal = () => {\r\n this.setState((prevState) => ({\r\n showClientOfferingSelectorModal: !prevState.showClientOfferingSelectorModal,\r\n }));\r\n };\r\n\r\n setBuyerProductSegmentSelection = (selectedProductCategories) => {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n buyerProductCategoriesSelection: selectedProductCategories,\r\n }));\r\n }\r\n\r\n performSave = (onSuccess = null, stepNumber) => {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n const productServiceOffering = {\r\n tradeDescription: this.props.data.tradeDescription,\r\n selectedUnspscFamilyIds: this.props.data.selectedUnspscFamilyIds,\r\n registrationStepCompleted:\r\n this.props.data.registrationStepCompleted > stepNumber\r\n ? this.props.data.registrationStepCompleted\r\n : stepNumber,\r\n notifyNewOpportunities: this.props.data.notifyNewOpportunities,\r\n };\r\n\r\n saveProductServiceOffering(\r\n productServiceOffering,\r\n () => {\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n this.props.hideInfoMsg();\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n };\r\n\r\n onNextClick = (arg) => {\r\n const validation = validateStep(this.props.data, requiredFieldsStep4);\r\n\r\n if (validation.isValid) {\r\n this.performSave(() => {\r\n this.props.history.push(arg);\r\n this.props.hideLoadingScreen();\r\n }, 4);\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevState) => ({\r\n showConfirmMsg: !prevState.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = () => {\r\n this.performSave(() => {\r\n this.props.logOut();\r\n this.props.hideLoadingScreen();\r\n }, 3);\r\n };\r\n\r\n async componentDidMount() {\r\n loadProductServiceOptions(\r\n {\r\n ...this.props,\r\n }\r\n );\r\n\r\n const loadClientSupplierCategoriesData = async () => {\r\n const categorySelectionData = await getClientSupplierCategories(\r\n this.props.invitationBuyerCompanyId ?? 0\r\n );\r\n\r\n const supplierCanEditCategories = await\r\n canSupplierEditClientSpecificProductCategories(\r\n this.props.invitationBuyerCompanyId ?? 0\r\n );\r\n\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n buyerProductCategoriesSelection: categorySelectionData,\r\n supplierCanEditCategories,\r\n }));\r\n };\r\n\r\n loadClientSupplierCategoriesData();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n\r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n\r\n {this.state.showGlobalProductsModal && (\r\n \r\n )}\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 04

    \r\n
    \r\n
    \r\n

    PRODUCT OFFERINGS

    \r\n
    \r\n
    \r\n\r\n \r\n

    \r\n We need a little bit more information about your business, to\r\n ensure we know what your company has to offer.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n We need you to define your product offerings and services and\r\n how you differ from other suppliers.\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n

    GLOBAL PRODUCT OFFERINGS

    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n this.toggleGlobalProductsModal()}\r\n >\r\n SELECT PRODUCTS AND/OR SERVICES\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n {this.props.invitationBuyerCompanyId > 0\r\n && (\r\n this.state.supplierCanEditCategories\r\n ? (\r\n \r\n
    \r\n

    CLIENT PRODUCT OFFERINGS

    \r\n
    \r\n {this.state.showClientOfferingSelectorModal && (\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n EDIT CLIENT PRODUCT OFFERINGS\r\n \r\n
    \r\n ) : (\r\n \r\n
    \r\n

    CLIENT PRODUCT OFFERINGS

    \r\n
    \r\n
    \r\n \r\n \r\n )\r\n )}\r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mappedRegistrationStep04 = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegistrationStep04);\r\nexport default withDataFeatureCheck(withRouter(mappedRegistrationStep04));\r\n","import React from \"react\";\r\n\r\nimport {\r\n BasicTable,\r\n ActionsDropDown,\r\n TableActionsItem,\r\n DropDownInput,\r\n} from \"isuppli-react-components\";\r\n\r\nimport {\r\n Button, Input,\r\n} from \"reactstrap\";\r\n\r\nimport {\r\n filterOutLetters,\r\n filterOutSpecialCharacters,\r\n} from \"../../Validation/onChangeValidations\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { BankAccountDetails } from \"../../http/CompanyDetails/BankAccountDetails\";\r\n\r\nconst BankingDetails = (props:\r\n {\r\n onInputChangeCallback: (ev: { target: { name: string; value: BankAccountDetails[] } }) => void,\r\n additional: BankAccountDetails\r\n readOnly: boolean,\r\n data: {\r\n useCustomFields: boolean,\r\n bankAccounts: BankAccountDetails[]\r\n },\r\n }) => {\r\n const [[banks, bankAccountTypes]] = useStaticData(\r\n [StaticDataTypes.Bank, StaticDataTypes.BankAccountType]\r\n );\r\n\r\n const setBankAccounts = (bankAccounts: BankAccountDetails[]) => {\r\n props.onInputChangeCallback({\r\n target: {\r\n name: \"bankAccounts\",\r\n value: bankAccounts,\r\n },\r\n });\r\n };\r\n\r\n const bankAccounts = props.data.bankAccounts || [];\r\n\r\n const doAdd = () => {\r\n setBankAccounts([\r\n ...bankAccounts,\r\n {\r\n bankAccountDetailsId: 0,\r\n bankId: 0,\r\n customBank: \"\",\r\n bankAccountTypeId: 0,\r\n customBankAccountType: \"\",\r\n accountName: \"\",\r\n accountNumber: \"\",\r\n branchCode: \"\",\r\n branchName: \"\",\r\n },\r\n ]);\r\n };\r\n\r\n const doUpdate = (account: BankAccountDetails, index: number) => {\r\n const newValues = bankAccounts.map((a, i) => {\r\n if (i === index) return { ...account };\r\n return { ...a };\r\n });\r\n setBankAccounts(newValues);\r\n };\r\n\r\n const doDelete = (index: number) => {\r\n const newValues = [];\r\n for (let i = 0; i < bankAccounts.length; i += 1) {\r\n if (i !== index) {\r\n newValues.push(bankAccounts[i]);\r\n }\r\n }\r\n setBankAccounts(newValues);\r\n };\r\n\r\n return (\r\n
    \r\n [\r\n {\r\n key: `bankName_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n props.data.useCustomFields\r\n ? (\r\n doUpdate(\r\n { ...account, customBank: e.target.value }, index\r\n )}\r\n maxLength={40}\r\n />\r\n )\r\n : (\r\n doUpdate(\r\n { ...account, bankId: Number(value) }, index\r\n )}\r\n options={banks ?? []}\r\n />\r\n )\r\n ),\r\n },\r\n {\r\n key: `accountType_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n props.data.useCustomFields\r\n ? (\r\n doUpdate(\r\n { ...account, customBankAccountType: e.target.value }, index\r\n )}\r\n maxLength={40}\r\n />\r\n )\r\n : (\r\n doUpdate(\r\n { ...account, bankAccountTypeId: Number(value) }, index\r\n )}\r\n options={bankAccountTypes ?? []}\r\n />\r\n )\r\n ),\r\n },\r\n {\r\n key: `accountName_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n doUpdate(\r\n { ...account, accountName: e.target.value }, index\r\n )}\r\n maxLength={40}\r\n />\r\n ),\r\n },\r\n {\r\n key: `accountNumber_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n doUpdate(\r\n { ...account, accountNumber: filterOutLetters(e.target.value) }, index\r\n )}\r\n maxLength={15}\r\n />\r\n ),\r\n },\r\n {\r\n key: `branchName_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n doUpdate(\r\n { ...account, branchName: filterOutSpecialCharacters(e.target.value) }, index\r\n )}\r\n maxLength={40}\r\n />\r\n ),\r\n },\r\n {\r\n key: `branchCode_${index}`,\r\n fullSize: true,\r\n valueTemplate: () => (\r\n doUpdate(\r\n { ...account, branchCode: filterOutLetters(e.target.value) }, index\r\n )}\r\n maxLength={10}\r\n />\r\n ),\r\n },\r\n {\r\n key: `actions_${index}`,\r\n valueTemplate: () => (\r\n \r\n doDelete(index)}>\r\n Delete\r\n \r\n \r\n ),\r\n },\r\n ])\r\n }\r\n emptyMessage=\"Use the Add button below to add a bank account\"\r\n />\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default BankingDetails;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Alert } from \"reactstrap\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport RegistrationProgress from \"./RegistrationProgress\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport BankingDetails from \"../../Containers/Supplier/BankingDetails\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport WizzardBtns from \"../../Containers/WizzardBtns\";\r\n\r\nimport { saveBankingDetails } from \"../../http/posts\";\r\n\r\nimport { requiredFieldsStep5, getRequiredBankAccountFields } from \"../../Validation/validation\";\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\n\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n} from \"../../Store/registrationActions\";\r\nimport {\r\n logOut,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n hideInfoPopup,\r\n showInfoPopup,\r\n setLastStepCompleted,\r\n} from \"../../Store/actions\";\r\n\r\nimport { loadBankingDetailsData } from \"../../Util/dataLoader\";\r\nimport { loadBankingDetailOptions } from \"../../Util/optionsLoader\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.bankDetails,\r\n companyId: state.currentCompanyId,\r\n },\r\n bankAccountTypes: state.options.bankAccountTypes,\r\n banks: state.options.banks,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"bankDetails\", ev));\r\n },\r\n setBankingDetails: (bankDetails) => {\r\n dispatch(setRegistrationObject(\"bankDetails\", bankDetails));\r\n },\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setLastStepCompleted: (value) => {\r\n dispatch(setLastStepCompleted(value));\r\n },\r\n logOut: () => {\r\n dispatch(logOut());\r\n },\r\n});\r\n\r\nclass RegistrationStep05 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: [],\r\n showConfirmMsg: false,\r\n };\r\n }\r\n\r\n performSave = (onSuccess = null, stepNumber) => {\r\n this.props.showLoadingScreen();\r\n saveBankingDetails(\r\n {\r\n ...this.props.data,\r\n registrationStepCompleted:\r\n this.props.data.registrationStepCompleted > stepNumber\r\n ? this.props.data.registrationStepCompleted\r\n : stepNumber,\r\n },\r\n () => {\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n this.props.hideInfoMsg();\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n };\r\n\r\n onNextClick = (arg) => {\r\n const validation = validateStep(this.props.data, requiredFieldsStep5);\r\n if (validation.isValid) {\r\n this.props.data.bankAccounts.forEach((account, index) => {\r\n const requiredFields = getRequiredBankAccountFields(this.props.data.useCustomFields, index);\r\n const validate = validateStep(account, requiredFields);\r\n\r\n if (!validate.isValid) {\r\n const messages = {};\r\n // make each message unique for the specific bank account\r\n Object.keys(validate.msgs)\r\n .forEach((a) => {\r\n messages[`${a}${index}`] = validate.msgs[a];\r\n });\r\n\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n ...messages,\r\n };\r\n }\r\n });\r\n }\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n if (validation.isValid) {\r\n this.performSave(() => {\r\n this.props.history.push(arg);\r\n this.props.hideLoadingScreen();\r\n }, 5);\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevState) => ({\r\n showConfirmMsg: !prevState.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = () => {\r\n this.performSave(() => {\r\n this.props.logOut();\r\n this.props.hideLoadingScreen();\r\n }, 4);\r\n };\r\n\r\n componentDidMount() {\r\n loadBankingDetailOptions(this.props);\r\n loadBankingDetailsData(this.props);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 05

    \r\n
    \r\n
    \r\n

    BANK DETAILS

    \r\n
    \r\n
    \r\n \r\n

    \r\n We need a little bit more information about your business, to\r\n ensure we know what your company has to offer.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Your banking information will only be visible to the relevant users\r\n within the companies you have been onboarded to via B1LINK. These users\r\n cannot edit your information in any way. If you would like further\r\n information regarding the security of your banking information,\r\n please contact\r\n {\" \"}\r\n support@b1link.co.za\r\n {\" \"}\r\n or contact 011 455 0033\r\n \r\n
    \r\n
    \r\n
    \r\n
     
    \r\n\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mappedRegistrationStep05 = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegistrationStep05);\r\nexport default withRouter(mappedRegistrationStep05);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Alert } from \"reactstrap\";\r\nimport { ModalPopup, Spinner } from \"isuppli-react-components\";\r\nimport { saveTermsAndConditions } from \"../../http/posts\";\r\nimport { getTermsAndConditionsAsync } from \"../../http/gets\";\r\n\r\nimport {\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: { companyId: state.currentCompanyId, ...state.registration.prtInfo },\r\n invitationId: state.registration.supplierInfo.onboadingRequestInvitationId,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass TermsConditions extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sponsored: this.props?.sponsored ?? false,\r\n freeTier: this.props?.freeTier ?? false,\r\n agreeTC: true,\r\n loading: false,\r\n buyerList: [],\r\n };\r\n if (this.props.sponsored === null) {\r\n this.props.sponsored = false;\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n const termsAndConditions = await getTermsAndConditionsAsync(\r\n this.props.data.companyId\r\n );\r\n\r\n this.setState({\r\n buyerList: termsAndConditions.buyerList,\r\n });\r\n }\r\n\r\n onInputChange = (ev) => {\r\n this.setState({\r\n [ev.target.name]: ev.target.value,\r\n });\r\n };\r\n\r\n onNextClick = () => {\r\n this.setState({\r\n loading: true,\r\n });\r\n saveTermsAndConditions(\r\n {\r\n ...this.state,\r\n ...this.props.data,\r\n registrationStepCompleted: 7,\r\n onboadingRequestInvitationId: this.props.invitationId,\r\n },\r\n () => {\r\n this.props.onAccepted();\r\n },\r\n () => {\r\n this.setState({\r\n loading: false,\r\n });\r\n this.props.showErrorDialog();\r\n }\r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n this.onNextClick(),\r\n disabled: !this.state.agreeTC,\r\n color: \"primary\",\r\n },\r\n ]}\r\n >\r\n \r\n {this.state.buyerList.length === 0 ? \"You are about to submit your company details to B1Link.\" : \"\"}\r\n {this.state.buyerList.length >= 1 ? `You are about to submit your company details to B1Link, ${this.state.buyerList.join(\", \")}` : \"\"}\r\n \r\n\r\n
    \r\n {this.state.loading && }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TermsConditions);\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z\"\n});\n\nvar SvgCheckMark = function SvgCheckMark(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCheckMark, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/check-mark.3008a48e.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Fragment } from \"react\";\r\nimport { HelpIcon, UtilButton } from \"isuppli-react-components\";\r\n\r\nimport Styles from \"./PlanOption.module.scss\";\r\nimport { formatCurrency } from \"../../../Util/valueFormatter\";\r\nimport { ReactComponent as CheckMarkSvg } from \"../../../Images/check-mark.svg\";\r\n\r\nconst PlanOption = (props) => {\r\n const propFeatures = props.config.features;\r\n\r\n const features = propFeatures.map((feature, i) => (\r\n
    \r\n {(props.config.features.length > 1)\r\n ? (\r\n \r\n \r\n
    {feature.name}
    \r\n
    \r\n )\r\n :
    {feature.name}
    }\r\n
    \r\n ));\r\n\r\n let priceValue = \"\";\r\n if (props.config.monthlyPriceInclVAT === null) {\r\n priceValue = \"ON ENQUIRY\";\r\n } else if (props.config.monthlyPriceInclVAT === 0) {\r\n priceValue = \"FREE\";\r\n } else {\r\n priceValue = formatCurrency(props.config.monthlyPriceInclVAT);\r\n }\r\n\r\n const planName = props.config.display.trim();\r\n\r\n const buttonText = props.disabled\r\n ? \"ENQUIRE NOW\"\r\n : \"SELECT\";\r\n\r\n // TODO make custom sponsored message, not hard coded\r\n const date = new Date();\r\n date.setFullYear(date.getFullYear() + 1);\r\n // eslint-disable-next-line no-nested-ternary\r\n const message = props.sponsored && !props.disabled\r\n ? props.sponsorName === \"FRASER ALEXANDER\"\r\n ? `Sponsored until ${date.toLocaleDateString()} by Fraser Alexander. For qualifying beneficiaries, acceptance of this sponsorship constitutes a valid Enterprise and Supplier Development relationship between the parties`\r\n : `Sponsored by ${props.sponsorName}`\r\n : \"Per month VAT incl.\";\r\n\r\n const fundedComplianceMessage = props.fundCompliance && !props.disabled\r\n ? \"Compliance will be funded by Fraser Alexander upon successful completion of the onboarding process. For qualifying beneficiaries, acceptance of this funded compliance constitutes a valid Enterprise & Supplier Development agreement between the parties.\"\r\n : \"\";\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n

    {planName}

    \r\n \r\n
    \r\n
    \r\n {features}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    PRICE

    \r\n

    \r\n {priceValue}\r\n

    \r\n {props.fundCompliance && props.config.monthlyPriceInclVAT === 0 && (\r\n

    \r\n {fundedComplianceMessage}\r\n

    \r\n )}\r\n {props.config.monthlyPriceInclVAT > 0 && props.config.monthlyPriceInclVAT < 10000 && (\r\n

    \r\n {message}\r\n

    \r\n )}\r\n
    \r\n\r\n
    \r\n {\r\n if (!props.disabled) {\r\n props.onActionCallback();\r\n } else {\r\n props.onEnquire();\r\n }\r\n }}\r\n >\r\n {buttonText}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PlanOption;\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { CarouselItem, CarouselIndicators, Carousel } from \"reactstrap\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport PlanOption from \"../Supplier/PlanOption/PlanOption\";\r\n\r\nimport Styles from \"./ProductTierSelector.module.scss\";\r\n\r\nconst ProductTierSelector = (\r\n {\r\n value,\r\n onChange,\r\n onEnquire,\r\n sponsored,\r\n sponsorName,\r\n fundCompliance,\r\n sponsoredSubscriptionTierId,\r\n disabledSubscriptionTierIds,\r\n recommendedSubscriptionTierId,\r\n }:\r\n {\r\n value: number,\r\n onChange: (value: number) => void,\r\n onEnquire: (value: number) => void,\r\n sponsored: boolean,\r\n sponsorName: string,\r\n fundCompliance: boolean,\r\n sponsoredSubscriptionTierId: number,\r\n disabledSubscriptionTierIds?: Array,\r\n recommendedSubscriptionTierId: number,\r\n }\r\n) => {\r\n const [[\r\n subscriptionTiers,\r\n ], staticDataReady] = useStaticData([StaticDataTypes.SubscriptionTier]);\r\n\r\n // if sponsored, filter out all subscription tiers that have a lower price\r\n const sponsoredTier = subscriptionTiers?.find((tier) => tier.id === sponsoredSubscriptionTierId);\r\n const filteredSubscriptionTiers = sponsored\r\n ? subscriptionTiers\r\n ?.filter((tier) => tier.monthlyPriceInclVAT >= sponsoredTier?.monthlyPriceInclVAT\r\n || tier.monthlyPriceInclVAT == null)\r\n : subscriptionTiers;\r\n\r\n const [activeIndex, setActiveIndex] = useState(value);\r\n const [animating, setAnimating] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!staticDataReady) {\r\n return;\r\n }\r\n const newIndex = filteredSubscriptionTiers.findIndex((c) => c.value === value);\r\n setActiveIndex(newIndex);\r\n }, [value, setActiveIndex, staticDataReady, filteredSubscriptionTiers]);\r\n\r\n const next = () => {\r\n if (animating) return;\r\n const nextIndex = activeIndex === filteredSubscriptionTiers.length - 1 ? 0 : activeIndex + 1;\r\n setActiveIndex(nextIndex);\r\n };\r\n\r\n const previous = () => {\r\n if (animating) return;\r\n const nextIndex = activeIndex === 0 ? filteredSubscriptionTiers.length - 1 : activeIndex - 1;\r\n setActiveIndex(nextIndex);\r\n };\r\n\r\n const goToIndex = (newIndex: number) => {\r\n if (animating) return;\r\n setActiveIndex(newIndex);\r\n };\r\n\r\n useEffect(() => {\r\n if (staticDataReady && value <= 0) {\r\n const recommended = filteredSubscriptionTiers.filter((c) => c.value === recommendedSubscriptionTierId)[0].value;\r\n onChange(recommended);\r\n }\r\n }, [staticDataReady, value, recommendedSubscriptionTierId, filteredSubscriptionTiers, onChange]);\r\n\r\n const mobileOptions = !staticDataReady ? [] : filteredSubscriptionTiers.map((option, i) => (\r\n setAnimating(true)}\r\n onExited={() => setAnimating(false)}\r\n key={i}\r\n className={`px-3\r\n ${Styles.CarouselItem}\r\n ${option.value === recommendedSubscriptionTierId ? Styles.Recommended : \"\"}\r\n `}\r\n >\r\n
    Recommended
    \r\n\r\n onEnquire(option.id)}\r\n onActionCallback={() => onChange(option.value)}\r\n isSelected={option.id === value}\r\n sponsored={sponsored && sponsoredSubscriptionTierId === option.value}\r\n sponsorName={sponsorName}\r\n fundCompliance={fundCompliance}\r\n disabled={\r\n disabledSubscriptionTierIds?.includes(option.id)\r\n || option.onEnquiry\r\n }\r\n />\r\n \r\n ));\r\n\r\n const desktopOptions = !staticDataReady ? [] : filteredSubscriptionTiers.map((option, i) => (\r\n
    \r\n
    Recommended
    \r\n onEnquire(option.id)}\r\n onActionCallback={() => onChange(option.value)}\r\n isSelected={option.id === value}\r\n sponsored={sponsored && sponsoredSubscriptionTierId === option.value}\r\n sponsorName={sponsorName}\r\n fundCompliance={fundCompliance}\r\n disabled={\r\n disabledSubscriptionTierIds?.includes(option.id)\r\n || option.onEnquiry\r\n }\r\n />\r\n
    \r\n ));\r\n\r\n return (\r\n \r\n
    \r\n {desktopOptions}\r\n
    \r\n { staticDataReady && value && (\r\n
    \r\n \r\n {mobileOptions}\r\n\r\n \r\n \r\n\r\n
    \r\n ) }\r\n

    * Limited functionality applies

    \r\n

    \r\n {\"(B-BBEE Compliance and Regulatory Compliance is only \"\r\n + \"applicable to South African registered companies)\"}\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default ProductTierSelector;\r\n","import axios from \"axios\";\r\n\r\nimport {\r\n SubscriptionMessage, // eslint-disable-line no-unused-vars\r\n InvoicesMessage, // eslint-disable-line no-unused-vars\r\n CompanySubscriptionChangeMessage, // eslint-disable-line no-unused-vars\r\n BillingSubscriptionStatusMessage, // eslint-disable-line no-unused-vars,\r\n} from \"./Models/Models\";\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport async function getInvoices(limit: number, offset: number = 0) {\r\n const url = `/api/billing/invoices?limit=${limit}&offset=${offset}`;\r\n const invoicesMessage = makeRequestAsync(() => axios.get(url)) as Promise;\r\n return invoicesMessage;\r\n}\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport async function addNewSubscription(\r\n message: SubscriptionMessage\r\n) {\r\n const url = \"/api/billing/subscription\";\r\n const paymentRedirectUrl = makeRequestAsync(() => axios.post(url, message)) as Promise;\r\n return paymentRedirectUrl;\r\n}\r\n\r\nexport async function updateSubscription(\r\n message: CompanySubscriptionChangeMessage\r\n) {\r\n const url = \"/api/billing/subscription\";\r\n const paymentRedirectUrl = makeRequestAsync(\r\n () => axios.put(url, message)\r\n ) as Promise;\r\n return paymentRedirectUrl;\r\n}\r\n\r\nexport async function retrySubscriptionPayment(\r\n pendingSubscriptionTierId: number,\r\n subscriptionId: number\r\n) {\r\n const url = `/api/billing/subscription/retry?pendingSubscriptionTierId=${pendingSubscriptionTierId}&subscriptionId=${subscriptionId}`;\r\n const paymentRedirectUrl = makeRequestAsync(() => axios.post(url)) as Promise;\r\n return paymentRedirectUrl;\r\n}\r\n\r\nexport async function getSubscriptionStatus() {\r\n const invoicesMessage = makeRequestAsync(() => axios.get(\"/api/billing/subscription\")) as Promise;\r\n return invoicesMessage;\r\n}\r\n","import React from \"react\";\r\nimport { ConfirmationModal } from \"isuppli-react-components\";\r\n\r\nconst SendSubscriptionEnquiryModal = ({\r\n Onclose,\r\n selectedTierName,\r\n}: {\r\n Onclose: () => void;\r\n selectedTierName: string;\r\n}) => (\r\n \r\n);\r\n\r\nexport default SendSubscriptionEnquiryModal;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Alert } from \"reactstrap\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { DataFeatures, useDataFeatureCheck } from \"isuppli-react-components\";\r\nimport RegistrationProgress from \"./RegistrationProgress\";\r\nimport TermsConditions from \"./TermsConditions\";\r\nimport Loading from \"../Loading\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport WizzardBtns from \"../../Containers/WizzardBtns\";\r\nimport ProductTierSelector from \"../../Containers/ProductTierSelector/ProductTierSelector\";\r\nimport CompanyGroupingType from \"../../Util/Enumerators/CompanyGroupingType\";\r\nimport staticDataTypes, { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport StaticData from \"../../Hooks/StaticData\";\r\n\r\nimport {\r\n logOut,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n setLastStepCompleted,\r\n} from \"../../Store/actions\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n} from \"../../Store/registrationActions\";\r\n\r\nimport {\r\n saveCurrentSubscription,\r\n getTermsAndConditions,\r\n getRegistrationSelectedSubscription,\r\n sendSubscriptionEnquirySupportEmail,\r\n} from \"../../http/index\";\r\n\r\nimport { addNewSubscription } from \"../../http/Billing/billingApi\";\r\n\r\nimport { loadSubscriptionTiers } from \"../../Util/optionsLoader\";\r\nimport { loadAddressDataAsync } from \"../../Util/dataLoader\";\r\n\r\nimport SendSubscriptionEnquiryModal from \"../Subscription/SendSubscriptionEnquiryModal/SendSubscriptionEnquiryModal\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n companyTypes: state.staticData[StaticDataTypes.CompanyType] ?? [],\r\n data: {\r\n ...state.registration.prtInfo,\r\n ...state.registration.supplierInfo,\r\n companyId: state.currentCompanyId,\r\n addressInfo: state.registration.addressInfo,\r\n },\r\n subscriptions: state.options.subscriptions,\r\n userDetails: state.loggedInUserDetails,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n setPrtInfo: (prtInfo) => {\r\n dispatch(setRegistrationObject(\"prtInfo\", prtInfo));\r\n },\r\n setPrtInfoField: (ev) => {\r\n dispatch(onRegistrationInputChange(\"prtInfo\", ev));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n setLastStepCompleted: (value) => {\r\n dispatch(setLastStepCompleted(value));\r\n },\r\n logOut: () => {\r\n dispatch(logOut());\r\n },\r\n});\r\n\r\nclass RegistrationStep06 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showTermsConditions: false,\r\n sponsored: false,\r\n showOnEnquireModal: false,\r\n selectedTierName: \"\",\r\n sponsorName: \"\",\r\n fundCompliance: false,\r\n sponsoredSubscriptionTierId: null,\r\n disabledSubscriptionTierIds: [],\r\n addressInfo: null,\r\n };\r\n }\r\n\r\n performSave = (onSuccess = null, stepNumber) => {\r\n // eslint-disable-next-line no-unused-vars\r\n this.props.showLoadingScreen();\r\n saveCurrentSubscription(\r\n {\r\n ...this.props.data,\r\n registrationStepCompleted:\r\n this.props.data.registrationStepCompleted > stepNumber\r\n ? this.props.data.registrationStepCompleted\r\n : stepNumber,\r\n },\r\n (subDetails) => {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n companySubscription: { ...subDetails },\r\n }));\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevState) => ({\r\n showConfirmMsg: !prevState.showConfirmMsg,\r\n }));\r\n };\r\n\r\n onEnquireHandler = async (selectedTierId) => {\r\n const selectedTier = this.props.subscriptions.find((tier) => tier.id === selectedTierId);\r\n this.setState((prevState) => ({\r\n selectedTierName: selectedTier.name,\r\n showOnEnquireModal: !prevState.showOnEnquireModal,\r\n }));\r\n\r\n // send email\r\n await sendSubscriptionEnquirySupportEmail(selectedTierId);\r\n }\r\n\r\n saveAndContinueLater = () => {\r\n this.performSave(() => {\r\n this.props.logOut();\r\n this.props.hideLoadingScreen();\r\n }, 6);\r\n };\r\n\r\n toggleTermsConditions = () => {\r\n this.performSave(() => {\r\n this.props.hideLoadingScreen();\r\n this.setState((prevState) => ({\r\n showTermsConditions: !prevState.showTermsConditions,\r\n }));\r\n });\r\n };\r\n\r\n setSelected = (index) => {\r\n this.selectionMade = true;\r\n const ev = {\r\n target: {\r\n name: \"subscriptionTierId\",\r\n value: index,\r\n },\r\n };\r\n this.props.setPrtInfoField(ev);\r\n };\r\n\r\n componentDidMount = async () => {\r\n const prtInfo = {};\r\n await getRegistrationSelectedSubscription((resTiers) => {\r\n prtInfo.subscriptionTierId = resTiers.subscriptionTierId;\r\n this.setState({\r\n sponsored: resTiers.sponsored,\r\n sponsorName: resTiers.sponsorName,\r\n fundCompliance: resTiers.fundCompliance,\r\n sponsoredSubscriptionTierId: resTiers.sponsoredSubscriptionTierId,\r\n disabledSubscriptionTierIds: resTiers.disabledSubscriptionTierIds,\r\n recommendedSubscriptionTierId: resTiers.recommendedSubscriptionTierId,\r\n });\r\n getTermsAndConditions(this.props.data.companyId, (resTandC) => {\r\n prtInfo.termsConditionsId = resTandC.termsConditionsId;\r\n this.props.setPrtInfo(prtInfo);\r\n this.props.setLastStepCompleted(resTandC.registrationStepCompleted);\r\n });\r\n const sponsoredTier = this.state.sponsoredSubscriptionTierId;\r\n\r\n if (this.state.sponsored) {\r\n const ev = {\r\n target: {\r\n name: \"subscriptionTierId\",\r\n value: sponsoredTier,\r\n },\r\n };\r\n this.props.setPrtInfoField(ev);\r\n }\r\n });\r\n\r\n loadSubscriptionTiers(this.props.subscriptions, this.props.setOption);\r\n\r\n if (this.props.data.addressInfo?.physicalAddress == null) {\r\n const addressInfo = await loadAddressDataAsync(this.props.data.companyId);\r\n this.setState({\r\n addressInfo: addressInfo.physicalAddress,\r\n });\r\n } else {\r\n this.setState({\r\n addressInfo: this.props.data.addressInfo.physicalAddress,\r\n });\r\n }\r\n }\r\n\r\n onAcceptHandler = async () => {\r\n this.setState((prevState) => ({\r\n showTermsConditions: !prevState.showTermsConditions,\r\n }));\r\n this.props.showLoadingScreen();\r\n // retrieve selected subscription\r\n const selected = this.props.subscriptions.find(\r\n (sub) => sub.id === this.props.data.subscriptionTierId\r\n );\r\n\r\n // send message to API\r\n const subscription = {\r\n registrationNumber: this.props.data.registrationNumber,\r\n submitterName: `${this.props.data.registeredName} t/a ${this.props.data.tradingName} [#${this.props.data.companyId}]`,\r\n emailAddress: this.props.userDetails.emailAddress,\r\n address: this.state.addressInfo,\r\n vatNumber: this.props.data.vatNumber,\r\n subscriptionName: `${selected.name}`,\r\n subscriptionTierId: selected.id,\r\n SubscriptionId: this.state.companySubscription.companySubscriptionId,\r\n price: selected.monthlyPriceInclVAT,\r\n };\r\n\r\n // redirect to checkout or registration complete page\r\n if ((this.state.sponsored && this.state.sponsoredSubscriptionTierId === selected.id)\r\n || selected.monthlyPriceInclVAT === 0\r\n || selected.monthlyPriceInclVAT == null) {\r\n window.location.href = \"/Account/RegistrationComplete\";\r\n } else {\r\n const result = await addNewSubscription(subscription);\r\n window.location.href = result;\r\n }\r\n };\r\n\r\n render() {\r\n const dataFeatureCheck = useDataFeatureCheck();\r\n const currentCompanyType = this.props.companyTypes?.find(\r\n (companyType) => companyType.value === this.props.data.companyType);\r\n\r\n const isForeignCompany = currentCompanyType?.companyGroupingType === CompanyGroupingType.Foreign ?? false;\r\n\r\n return (\r\n
    \r\n \r\n \r\n\r\n \r\n\r\n {this.state.showTermsConditions && (\r\n x.id === this.props.data.subscriptionTierId).monthlyPriceInclVAT === 0) ? true : false}\r\n toggleModalCallback={() => {\r\n this.setState((prevState) => ({\r\n showTermsConditions: !prevState.showTermsConditions,\r\n }));\r\n }}\r\n onAccepted={this.onAcceptHandler}\r\n />\r\n )}\r\n {this.state.showOnEnquireModal && (\r\n this.setState({\r\n showOnEnquireModal: false,\r\n })}\r\n selectedTierName={this.state.selectedTierName}\r\n />\r\n )}\r\n\r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {dataFeatureCheck(DataFeatures.BankingDetails)\r\n ? \"STEP 07\"\r\n : \"STEP 06\"}\r\n

    \r\n
    \r\n
    \r\n

    SUBSCRIPTION PACKAGE

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n isForeignCompany && (\r\n \r\n We notice that you are a non South African registered company.\r\n Our global application is in development for release in the near future,\r\n and you are currently limited to the free B1LINK package.\r\n
    \r\n
    \r\n We will notify you as soon as the option to upgrade your package becomes\r\n available, and trust that you will still be able to make use of the platform\r\n until that time. Thank you for your patience and understanding.\r\n
    \r\n )\r\n }\r\n {\r\n !isForeignCompany && (\r\n
    \r\n \r\n We wish to provide you with the system benefits fit for your\r\n business needs. Please select a subscription package.\r\n \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n
     
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n { this.setSelected(value); }}\r\n onEnquire={((value) => this.onEnquireHandler(value))}\r\n sponsored={this.state.sponsored}\r\n sponsorName={this.state.sponsorName}\r\n fundCompliance={this.state.fundCompliance}\r\n sponsoredSubscriptionTierId={this.state.sponsoredSubscriptionTierId}\r\n disabledSubscriptionTierIds={this.state.disabledSubscriptionTierIds}\r\n recommendedSubscriptionTierId={this.state.recommendedSubscriptionTierId}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n this.toggleTermsConditions()}\r\n />\r\n\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mappedRegistrationStep06 = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RegistrationStep06);\r\nexport default withRouter(mappedRegistrationStep06);\r\n","import React from \"react\";\r\n\r\nimport { Route } from \"react-router-dom\";\r\n\r\nimport RegistrationStep01 from \"../Sections/Registration/RegistrationStep01\";\r\nimport RegistrationStep02 from \"../Sections/Registration/RegistrationStep02\";\r\nimport RegistrationStep03 from \"../Sections/Registration/RegistrationStep03\";\r\nimport RegistrationStepDocuments from \"../Sections/Registration/RegistrationStepDocuments/RegistrationStepDocuments\";\r\nimport RegistrationStep04 from \"../Sections/Registration/RegistrationStep04\";\r\nimport RegistrationStep05 from \"../Sections/Registration/RegistrationStep05\";\r\nimport RegistrationStep06 from \"../Sections/Registration/RegistrationStep06\";\r\n\r\nfunction RegistrationView() {\r\n return (\r\n
    \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n
    \r\n );\r\n}\r\n\r\nexport default RegistrationView;\r\n","enum OnboardingRequestOrigin {\r\n /* eslint-disable no-unused-vars */\r\n Unknown = 0,\r\n ManualImport = 1,\r\n BulkSupplierImport = 2,\r\n /* eslint-enable no-unused-vars */\r\n}\r\n\r\nexport default OnboardingRequestOrigin;\r\n","import React from \"react\";\r\n\r\nexport const supplierModalHeading = \"UPLOAD SUPPLIERS\";\r\n\r\nexport const supplierModalPreUploadText = (\r\n <>\r\n

    Please upload your suppliers, and invite them to join B1LINK

    \r\n
    \r\n Steps to follow:\r\n
      \r\n
    1. Download the template below
    2. \r\n
    3. Populate your supplier details into the template
    4. \r\n
    5. Upload the populated file and continue
    6. \r\n
    \r\n
    \r\n
    \r\n Do's and Don'ts:\r\n
      \r\n
    1. Please do not alter the template in any way.
    2. \r\n
    3. Please ensure that all mandatory fields are captured
    4. \r\n
    5. \r\n Please ensure that all data is in a valid format for the data type,\r\n ie: email addresses\r\n
    6. \r\n
    7. Please ensure only one unique record per supplier company
    8. \r\n
    9. \r\n Please limit your file to a maximum of 20 000 records.\r\n You can upload multiple files if required\r\n
    10. \r\n
    \r\n
    \r\n \r\n);\r\n\r\nexport const supplierModalPostUploadText = (\r\n <>\r\n

    On uploading the file, the system will:

    \r\n
    \r\n
      \r\n
    1. \r\n Send an automated email to your suppliers,\r\n containing a unique link from which to register.\r\n This link will complete the connection between the\r\n supplier and your company upon registration\r\n
    2. \r\n
    3. Generate a file of rejected records (if any), which you can edit and re-upload
    4. \r\n
    \r\n
    \r\n

    \r\n On successful upload of records, these will be immediately\r\n visible in your Onboarding page\r\n

    \r\n \r\n);\r\n","import axios from \"axios\";\r\nimport { makeRequestAsync } from \"../util\";\r\nimport { SupplierImportMessage } from \"./Models/SupplierImportMessage\";// eslint-disable-line no-unused-vars\r\n\r\nexport const getSupplierImport = async () => {\r\n const url = \"/api/supplierImport\";\r\n return makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n};\r\n\r\nexport const resolveSupplierImport = async () => {\r\n const url = \"/api/supplierImport\";\r\n return makeRequestAsync(\r\n () => axios.put(url)\r\n ) as Promise;\r\n};\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\",\n fill: \"currentColor\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n});\n\nvar SvgDownload = function SvgDownload(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgDownload, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/download.eec2081d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Fragment } from \"react\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SupplierImportMessage } from \"../../http/SupplierImport/Models/SupplierImportMessage\";\r\nimport { ReactComponent as DownloadSvg } from \"../../Images/download.svg\";\r\n\r\nconst ImportCompleteScreen = ({ message }: { message: SupplierImportMessage}) => (\r\n \r\n
    \r\n

    \r\n Thank you. All qualifying uploaded supplier records will now be contacted to register.\r\n
    \r\n {\r\n message?.errorFileGuid\r\n && \"Please review the error report for details on rejected records.\"\r\n }\r\n

    \r\n
    \r\n
    \r\n

    Supplier invitations sent:

    \r\n

    {message.processedRecords}

    \r\n
    \r\n
    \r\n

    Rejected records:

    \r\n

    {message.failedRecords}

    \r\n {\r\n message?.errorFileGuid\r\n && (\r\n
    \r\n { }}\r\n >\r\n \r\n DOWNLOAD ERROR FILE\r\n \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n);\r\n\r\nexport default ImportCompleteScreen;\r\n","import React, {\r\n Fragment, useEffect, useRef, useState,\r\n} from \"react\";\r\nimport { ModalPopup, DragDropFileUpload } from \"isuppli-react-components\";\r\nimport { Alert, Progress } from \"reactstrap\";\r\nimport axios, { CancelTokenSource } from \"axios\";// eslint-disable-line no-unused-vars\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport { supplierModalHeading, supplierModalPostUploadText, supplierModalPreUploadText } from \"./SupplierModalStaticContent\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport useSignalR, { SignalRNotifications, SupplierImportStatus } from \"../../Hooks/useSignalR\";\r\nimport { getSupplierImport, resolveSupplierImport } from \"../../http/SupplierImport/supplierImportAPI\";\r\nimport Spinner from \"../Spinner/Spinner\";\r\nimport CompleteScreen from \"./SupplierImportCompleteScreen\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SupplierImportMessage } from \"../../http/SupplierImport/Models/SupplierImportMessage\";\r\n\r\nconst SupplierImportModal = ({\r\n onCloseModal,\r\n}:\r\n {\r\n onCloseModal: () => void,\r\n }) => {\r\n const [file, setFile] = useState();\r\n const [fileUploaded, setFileUploaded] = useState(false);\r\n const [busyUploadingFile, setBusyUploadingFile] = useState(false);\r\n const [showProgressBar, setShowProgressBar] = useState(false);\r\n const [progressBarPercentage, setProgressBarPercentage] = useState(0);\r\n const [importProgressMessage, setImportProgressMessage] = useState(); // eslint-disable-line max-len\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n const httpCancelToken = useRef();\r\n\r\n // setup SignalR connection\r\n const disconnect = useSignalR(\r\n SignalRNotifications.SupplierImportProgressUpdates,\r\n async (data) => {\r\n if (showProgressBar) {\r\n setProgressBarPercentage(50 + (data.progressPercentage / 2));\r\n setImportProgressMessage(data);\r\n }\r\n }\r\n );\r\n\r\n // cleanup when component is removed\r\n useEffect(() => () => {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n disconnect();\r\n }, [disconnect]);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n const supplierImport = await getSupplierImport();\r\n setImportProgressMessage(supplierImport);\r\n switch (supplierImport.status) {\r\n case SupplierImportStatus.Enqued:\r\n setProgressBarPercentage(50);\r\n setShowProgressBar(true);\r\n break;\r\n case SupplierImportStatus.BusyProcessing:\r\n setProgressBarPercentage(50);\r\n setShowProgressBar(true);\r\n break;\r\n case SupplierImportStatus.Complete:\r\n setProgressBarPercentage(100);\r\n setShowProgressBar(true);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n loader();\r\n }, []);\r\n\r\n const handleFileNewFileUpload = (newFile: File | Array) => {\r\n if (!Array.isArray(newFile)) {\r\n setFile(newFile);\r\n }\r\n };\r\n const handleRemoveFile = () => {\r\n setFile(null);\r\n };\r\n\r\n const uploadFile = (targetFile: File) => {\r\n setShowProgressBar(true);\r\n const formData = new FormData();\r\n formData.append(targetFile.name, targetFile);\r\n axios\r\n .post(\"api/supplierImport/\", formData, {\r\n onUploadProgress: (progEv) => {\r\n const progress = (() => {\r\n const val = Math.round((progEv.loaded / targetFile.size) * 50);\r\n return val <= 50 ? val : 50;\r\n })();\r\n setProgressBarPercentage(progress);\r\n },\r\n })\r\n .then(() => {\r\n setFileUploaded(true);\r\n setBusyUploadingFile(false);\r\n setFile(null);\r\n })\r\n .catch(() => {\r\n setShowProgressBar(false);\r\n showError();\r\n });\r\n };\r\n\r\n const getProgressBarText = () => {\r\n if (fileUploaded\r\n || importProgressMessage?.status === SupplierImportStatus.Enqued\r\n || importProgressMessage?.status === SupplierImportStatus.BusyProcessing) {\r\n return \"Uploading suppliers, please be patient as this could take a few minutes.\";\r\n }\r\n return \"Uploading file\";\r\n };\r\n\r\n const getUploadButtonText = () => {\r\n if (importProgressMessage?.status === SupplierImportStatus.Complete) {\r\n return \"Upload another file\";\r\n }\r\n return \"Upload suppliers\";\r\n };\r\n\r\n const resolveImportCompletion = async () => {\r\n try {\r\n setLoading(true);\r\n await resolveSupplierImport();\r\n } catch {\r\n setLoading(false);\r\n showError();\r\n }\r\n setImportProgressMessage((prevState) => {\r\n if (prevState != null) {\r\n return (\r\n {\r\n ...prevState,\r\n status: SupplierImportStatus.Finalized,\r\n }\r\n );\r\n }\r\n return prevState;\r\n });\r\n setFile(null);\r\n setImportProgressMessage(null);\r\n setProgressBarPercentage(0);\r\n setShowProgressBar(false);\r\n setLoading(false);\r\n };\r\n\r\n return (\r\n \r\n {\r\n loading && \r\n }\r\n {\r\n if (importProgressMessage?.status === SupplierImportStatus.Complete) {\r\n resolveImportCompletion();\r\n }\r\n\r\n if (file != null) {\r\n uploadFile(file);\r\n }\r\n },\r\n },\r\n ]}\r\n >\r\n {\r\n // eslint-disable-next-line no-nested-ternary\r\n importProgressMessage?.status === SupplierImportStatus.Complete\r\n ? (\r\n
    \r\n \r\n
    \r\n )\r\n : showProgressBar ? (\r\n \r\n
    \r\n \r\n
    \r\n

    {getProgressBarText()}

    \r\n { (importProgressMessage?.totalRecords ?? 0) > 0\r\n ? (\r\n

    \r\n {`Processed ${\r\n (importProgressMessage?.processedRecords ?? 0)\r\n + (importProgressMessage?.failedRecords ?? 0)\r\n } of ${\r\n importProgressMessage?.totalRecords\r\n }`}\r\n

    \r\n )\r\n : null}\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n : (\r\n \r\n \r\n {file == null ? supplierModalPreUploadText : supplierModalPostUploadText}\r\n \r\n
    \r\n {\r\n }}\r\n >\r\n DOWNLOAD TEMPLATE\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n \r\n
    \r\n
    \r\n Upload your suppliers to invite them\r\n
    \r\n
    \r\n\r\n \r\n );\r\n};\r\n\r\nexport default SupplierImportModal;\r\n","import React from \"react\";\r\n\r\nimport {\r\n PageHeading, UtilButton, SearchInput, SystemFeatures, useSystemFeatureCheck,\r\n} from \"isuppli-react-components\";\r\nimport { useLocation, useHistory } from \"react-router\";\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport SupplierImportModal from \"../../Containers/SupplierImportModal/SupplierImportModal\";\r\n\r\nfunction OnboardingSearch(props : any) {\r\n const featureCheck = useSystemFeatureCheck();\r\n\r\n // supplier modal is toggle via URL parameters\r\n const location = useLocation();\r\n const history = useHistory();\r\n const urlParams = new URLSearchParams(location.search);\r\n const showSupplierImportModal = urlParams.get(\"supplierImportModal\") != null;\r\n const setShowSupplierImportModal = (show : boolean = false) => {\r\n const paramVal = show ? \"1\" : \"0\";\r\n if (show) {\r\n urlParams.append(\"supplierImportModal\", paramVal);\r\n } else {\r\n urlParams.delete(\"supplierImportModal\");\r\n }\r\n history.replace({\r\n ...location,\r\n search: decodeURIComponent(urlParams.toString()),\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n {\r\n setShowSupplierImportModal(true);\r\n }}\r\n size=\"small\"\r\n disabled={!featureCheck(SystemFeatures.SupplierImport)}\r\n feature={SystemFeatures.SupplierImport}\r\n >\r\n UPLOAD MY SUPPLIERS\r\n \r\n\r\n
    \r\n\r\n props.onNewOnboardingRequest()}\r\n size=\"small\"\r\n disabled={!featureCheck(SystemFeatures.OnboardingNewCompany)}\r\n feature={SystemFeatures.OnboardingNewCompany}\r\n >\r\n ONBOARD NEW COMPANY\r\n \r\n\r\n {}}\r\n size=\"small\"\r\n disabled={!featureCheck(SystemFeatures.OnboardingCreateRequest)}\r\n feature={SystemFeatures.OnboardingCreateRequest}\r\n >\r\n COMPLIANCE MANAGEMENT\r\n \r\n\r\n {\r\n showSupplierImportModal\r\n && (\r\n {\r\n setShowSupplierImportModal(false);\r\n }}\r\n />\r\n )\r\n }\r\n\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default OnboardingSearch;\r\n","enum ComplianceCheckType {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n CIPC = 1, // eslint-disable-line no-unused-vars\r\n PropertyInformation = 2, // eslint-disable-line no-unused-vars\r\n NonPreferredListing = 3, // eslint-disable-line no-unused-vars\r\n SARS = 4, // eslint-disable-line no-unused-vars\r\n Judgements = 5, // eslint-disable-line no-unused-vars\r\n SAFPS = 6, // eslint-disable-line no-unused-vars\r\n LexisDiligence = 7, // eslint-disable-line no-unused-vars\r\n CreditInformation = 8, // eslint-disable-line no-unused-vars\r\n BankVerification = 9, // eslint-disable-line no-unused-vars\r\n Persal = 11, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const complianceCheckTypeToString = (value: ComplianceCheckType) => {\r\n switch (value) {\r\n case ComplianceCheckType.None:\r\n return \"None\";\r\n case ComplianceCheckType.CIPC:\r\n return \"CIPC\";\r\n case ComplianceCheckType.PropertyInformation:\r\n return \"Property Information\";\r\n case ComplianceCheckType.NonPreferredListing:\r\n return \"Non-Preferred Listing\";\r\n case ComplianceCheckType.SARS:\r\n return \"SARS\";\r\n case ComplianceCheckType.Judgements:\r\n return \"Judgments\";\r\n case ComplianceCheckType.SAFPS:\r\n return \"SAFPS\";\r\n case ComplianceCheckType.LexisDiligence:\r\n return \"Lexis Diligence\";\r\n case ComplianceCheckType.CreditInformation:\r\n return \"Credit Information\";\r\n case ComplianceCheckType.BankVerification:\r\n return \"Bank Verification\";\r\n case ComplianceCheckType.Persal:\r\n return \"Persal\";\r\n default:\r\n return \"Unknown\";\r\n }\r\n};\r\n\r\nexport default ComplianceCheckType;\r\n","enum SubCheckType {\r\n None, // eslint-disable-line no-unused-vars\r\n One, // eslint-disable-line no-unused-vars\r\n Two, // eslint-disable-line no-unused-vars\r\n Three, // eslint-disable-line no-unused-vars\r\n Four, // eslint-disable-line no-unused-vars\r\n Five, // eslint-disable-line no-unused-vars\r\n Six, // eslint-disable-line no-unused-vars\r\n Seven, // eslint-disable-line no-unused-vars\r\n Eight, // eslint-disable-line no-unused-vars\r\n Nine, // eslint-disable-line no-unused-vars\r\n Ten, // eslint-disable-line no-unused-vars\r\n Eleven, // eslint-disable-line no-unused-vars\r\n Twelve, // eslint-disable-line no-unused-vars\r\n Thirteen, // eslint-disable-line no-unused-vars\r\n Fourteen, // eslint-disable-line no-unused-vars\r\n Fifteen, // eslint-disable-line no-unused-vars\r\n Sixteen, // eslint-disable-line no-unused-vars\r\n Seventeen, // eslint-disable-line no-unused-vars\r\n Eighteen, // eslint-disable-line no-unused-vars\r\n Nineteen, // eslint-disable-line no-unused-vars\r\n Twenty, // eslint-disable-line no-unused-vars\r\n TwentyOne, // eslint-disable-line no-unused-vars\r\n TwentyTwo, // eslint-disable-line no-unused-vars\r\n TwentyThree, // eslint-disable-line no-unused-vars\r\n TwentyFour, // eslint-disable-line no-unused-vars\r\n TwentyFive, // eslint-disable-line no-unused-vars\r\n TwentySix, // eslint-disable-line no-unused-vars\r\n TwentySeven, // eslint-disable-line no-unused-vars\r\n TwentyEight, // eslint-disable-line no-unused-vars\r\n TwentyNine, // eslint-disable-line no-unused-vars\r\n Thirty, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const subCheckTypeToString = (value: SubCheckType) => {\r\n switch (value) {\r\n case SubCheckType.None:\r\n return \"Unknown Check\";\r\n case SubCheckType.One:\r\n return \"Company name matches CIPC\";\r\n case SubCheckType.Two:\r\n return \"Vendor directors are one of clients active employees\";\r\n case SubCheckType.Three:\r\n return \"Family of a Vendor directors are one of the Clients employee\";\r\n case SubCheckType.Four:\r\n return \"Family member of a Vendor directors are a director of a company which one of the directors are one of the Clients employees\";\r\n case SubCheckType.Five:\r\n return \"Vendor directors are directors of other companies which the Clients employee is a director of\";\r\n case SubCheckType.Six:\r\n return \"Vendor directors or members are directors of other active Vendors\";\r\n case SubCheckType.Seven:\r\n return \"Vendor directors are one of clients inactive employees\";\r\n case SubCheckType.Eight:\r\n return \"Company Business Status with CIPC\";\r\n case SubCheckType.Nine:\r\n return \"Vendor directors purchased a property from the Client employee\";\r\n case SubCheckType.Ten:\r\n return \"Vendor directors sold a property to one of the Client Employees\";\r\n case SubCheckType.Eleven:\r\n return \"Vendor directors coowns property with one of the Client’s Employees\";\r\n case SubCheckType.Twelve:\r\n return \"Vendor directors (or CIPRO associations) co-owns property with an Employee’s coowner of property and co directors\";\r\n case SubCheckType.Thirteen:\r\n return \"Vendor directors (or CIPRO associations) sold property to an Employee’s coowner of property and co directors\";\r\n case SubCheckType.Fourteen:\r\n return \"Vendor directors (or CIPRO associations) purchase property from an Employee’s coowner of property and codirectors\";\r\n case SubCheckType.Fifteen:\r\n return \"Family member of a Vendor’s directors/members co-owns property with one of the Client’s Employees\";\r\n case SubCheckType.Sixteen:\r\n return \"Vendor Blacklisted\";\r\n case SubCheckType.Seventeen:\r\n return \"Vendor directors co-directors are directors of a blacklisted vendor\";\r\n case SubCheckType.Eighteen:\r\n return \"Vendor directors co-directors are blacklisted employees\";\r\n case SubCheckType.Nineteen:\r\n return \"Vendor directors are directors of a blacklisted vendor\";\r\n case SubCheckType.Twenty:\r\n return \"Vendor directors are blacklisted employees\";\r\n case SubCheckType.TwentyOne:\r\n return \"Vendor found in National Treasury Non-Preferred list\";\r\n case SubCheckType.TwentyTwo:\r\n return \"Company VAT Number confirmed with SARS\";\r\n case SubCheckType.TwentyThree:\r\n return \"Vendor has Judgements\";\r\n case SubCheckType.TwentyFour:\r\n return \"Alert detected on fraud database for vendor\";\r\n case SubCheckType.TwentyFive:\r\n return \"Negative News\";\r\n case SubCheckType.TwentySix:\r\n return \"Credit Information check\";\r\n case SubCheckType.TwentySeven:\r\n return \"Vendors Banking Details Are Valid\";\r\n case SubCheckType.TwentyEight:\r\n return \"Persal\";\r\n case SubCheckType.TwentyNine:\r\n return \"Vendor has single VAT number\";\r\n case SubCheckType.Thirty:\r\n return \"VAT number found and/or validated for vendor\";\r\n default:\r\n return \"Unknown Check\";\r\n }\r\n};\r\n\r\nexport default SubCheckType;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"backgroundrect\",\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n fill: \"none\",\n stroke: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"title\", null, \"Layer 1\");\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BE1E2D\",\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\",\n id: \"svg_1\",\n className: \"\",\n fillOpacity: 1\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.747253224089775,52.747253224089775 h-28.747253224089775 v-28.747253224089775 H52.747253224089775 z\",\n fill: \"none\",\n id: \"svg_2\",\n className: \"\"\n});\n\nvar SvgTimes = function SvgTimes(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 24,\n width: 24,\n style: {},\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, /*#__PURE__*/React.createElement(\"g\", {\n className: \"currentLayer\",\n style: {}\n }, _ref3, _ref4, _ref5));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgTimes, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/times.a56528a5.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"backgroundrect\",\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n fill: \"none\",\n stroke: \"none\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"title\", null, \"Layer 1\");\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0,0 h24 v24 H0 z\",\n id: \"svg_1\",\n className: \"\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#798637\",\n d: \"M9,16.2 L4.8,12 l-1.4,1.4 L9,19 L21,7 l-1.4,-1.4 L9,16.2 z\",\n id: \"svg_2\",\n className: \"selected\",\n fillOpacity: 1\n});\n\nvar SvgCheckMark = function SvgCheckMark(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n style: {},\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, /*#__PURE__*/React.createElement(\"g\", {\n className: \"currentLayer\",\n style: {}\n }, _ref3, _ref4, _ref5));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCheckMark, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/check-mark.5d5b52ad.svg\";\nexport { ForwardRef as ReactComponent };","export enum overallComplianceStatus {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n Outstanding = 1, // eslint-disable-line no-unused-vars\r\n Failure = 2, // eslint-disable-line no-unused-vars\r\n Success = 3, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const overallComplianceStatusToString = (value: overallComplianceStatus) => {\r\n switch (value) {\r\n case overallComplianceStatus.None:\r\n return \"None\";\r\n case overallComplianceStatus.Outstanding:\r\n return \"Outstanding\";\r\n case overallComplianceStatus.Failure:\r\n return \"Failure\";\r\n case overallComplianceStatus.Success:\r\n return \"Success\";\r\n default:\r\n return \"Unknown Status\";\r\n }\r\n};\r\n","import {\r\n BasicTable,\r\n // eslint-disable-next-line no-unused-vars\r\n BasicTableCell,\r\n ImageText,\r\n SystemFeatures,\r\n UtilButton,\r\n} from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport Alert from \"reactstrap/lib/Alert\";\r\nimport { useSelector } from \"react-redux\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getCompanyCompliance } from \"../../../http/Compliance/complianceApi\";\r\nimport { modifyCompanyName } from \"../../../http/MyCompany/myCompanyAPI\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n OnboardingComplianceExceptionMessage,\r\n} from \"../../../http/Compliance/Models/Models\";\r\nimport { getOnboardingRequestExceptionReason } from \"../../../http/gets\";\r\nimport { checkHttpStatus } from \"../../../http/httpHelpers\";\r\nimport { complianceCheckTypeToString } from \"../../../Util/Enumerators/ComplianceCheckType\";\r\nimport ComplianceStatus, {\r\n complianceStatusToString,\r\n getComplianceStatusTextClass,\r\n} from \"../../../Util/Enumerators/ComplianceStatus\";\r\nimport { subCheckTypeToString } from \"../../../Util/Enumerators/SubCheckType\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n DetailsDisplay,\r\n getFormattedComplianceDetails,\r\n getCheckStatus,\r\n} from \"../../../Util/complianceFormatter\";\r\nimport Styles from \"./SupplierCheckDetails.module.scss\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../../Store/ReduxState\";\r\n\r\nimport { ReactComponent as TimesSvg } from \"./times.svg\";\r\nimport { ReactComponent as CheckMarkSvg } from \"./check-mark.svg\";\r\n\r\nconst SupplierCheckDetails = (\r\n {\r\n companyId,\r\n vendorNumber,\r\n }:\r\n {\r\n companyId: number,\r\n vendorNumber?: string,\r\n }\r\n) => {\r\n const [loading, setLoading] = useState(true);\r\n const [checkDetails, setCheckDetails] = useState();\r\n const myCompanyId = useSelector((state: ReduxState) => state.loggedInUserDetails.companyId);\r\n const showError = useShowError();\r\n const [correctingValuesSent, setValuesSent] = useState(false);\r\n const [correctingValue, setCorrectingValue] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n try {\r\n const details = await getCompanyCompliance(companyId);\r\n\r\n const exceptionReason: OnboardingComplianceExceptionMessage = await\r\n getOnboardingRequestExceptionReason(companyId);\r\n\r\n const formattedDetails = getFormattedComplianceDetails(details, exceptionReason);\r\n\r\n setCheckDetails(formattedDetails);\r\n formattedDetails?.complianceResults?.forEach((result) => {\r\n result?.procureCheckResultItems?.forEach((procureCheckItem) => {\r\n if (procureCheckItem.correctingValue ?? false) {\r\n setCorrectingValue(procureCheckItem.correctingValue);\r\n }\r\n });\r\n });\r\n setLoading(false);\r\n } catch (getError) {\r\n if (checkHttpStatus(getError, 404)) {\r\n setCheckDetails({\r\n complianceCheckId: companyId,\r\n company: {\r\n registeredName: \"\",\r\n registrationNumber: \"\",\r\n vatNumber: \"\",\r\n externalVendorId: \"\",\r\n registrationType: 0,\r\n },\r\n complianceProvider: 0,\r\n status: ComplianceStatus.AwaitingResults,\r\n complianceResults: [],\r\n error: \"No compliance details available\",\r\n });\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n showError();\r\n }\r\n };\r\n\r\n loader();\r\n }, [showError, companyId]);\r\n return (\r\n
    \r\n {!loading && checkDetails != null && checkDetails.error != null && (\r\n {checkDetails.error}\r\n )}\r\n\r\n
    \r\n
    \r\n Company registration number:\r\n {loading ? \"...\" : checkDetails?.company.registrationNumber ?? \"\"}\r\n
    \r\n {vendorNumber\r\n && (\r\n
    \r\n Vendor number:\r\n {loading ? \"...\" : vendorNumber ?? \"\"}\r\n
    \r\n )}\r\n
    \r\n {\r\n (myCompanyId === companyId && checkDetails?.status === 100 && !correctingValuesSent)\r\n ? (\r\n
    \r\n {\r\n checkDetails.complianceResults.some((result) => (\r\n result.procureCheckResultItems?.some((procureCheck) => procureCheck.correctingValue ?? false)\r\n ))\r\n && (\r\n
    \r\n The following details can be ammended and compliance checks resubmitted:\r\n
    \r\n )\r\n }\r\n
    \r\n {\r\n checkDetails?.complianceResults?.map((complianceResultItem) => {\r\n const items = complianceResultItem.procureCheckResultItems?.map((procureCheckItem, index) => {\r\n if (procureCheckItem?.correctingValue ?? false) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n return null;\r\n });\r\n return items;\r\n })\r\n }\r\n
    \r\n
    \r\n {\r\n\r\n checkDetails.complianceResults.some((result) => (\r\n result.procureCheckResultItems?.some((procureCheck) => procureCheck.correctingValue ?? false)\r\n ))\r\n && (\r\n {\r\n setLoading(true);\r\n if (correctingValue !== \"\" && (correctingValue ?? false)) {\r\n modifyCompanyName(correctingValue);\r\n setValuesSent(true);\r\n } else {\r\n setValuesSent(false);\r\n }\r\n setLoading(false);\r\n }\r\n }\r\n />\r\n )\r\n }\r\n
    \r\n
    \r\n )\r\n : correctingValuesSent && New values accepted, Compliance will be resubmitted.\r\n }\r\n
    \r\n {\r\n checkDetails?.status === ComplianceStatus.Disabled && (\r\n \r\n

    Note: This supplier is not eligable for ongoing compliance checks.

    \r\n
    \r\n )\r\n }\r\n {checkDetails?.error == null && checkDetails?.status !== ComplianceStatus.Disabled && (\r\n [\r\n {\r\n key: `${check.verificationTypeId}_date`,\r\n value: check.dateCheckedDisplay,\r\n } as BasicTableCell,\r\n {\r\n key: `${check.verificationTypeId}_type`,\r\n value: complianceCheckTypeToString(check.verificationTypeId),\r\n } as BasicTableCell,\r\n {\r\n key: `${check.verificationTypeId}_run`,\r\n value: `${\r\n check.procureCheckResultItems?.length\r\n ?? check.totalFailedChecks + check.totalPassedChecks\r\n }`,\r\n align: \"center\",\r\n },\r\n {\r\n key: `${check.verificationTypeId}_passed`,\r\n value: `${check.totalPassedChecks}`,\r\n align: \"center\",\r\n },\r\n {\r\n key: `${check.verificationTypeId}_failed`,\r\n value: `${check.totalFailedChecks}`,\r\n align: \"center\",\r\n },\r\n {\r\n key: `${check.verificationTypeId}_outstanding`,\r\n value: `${\r\n (check.procureCheckResultItems?.length\r\n ?? check.totalFailedChecks)\r\n + check.totalPassedChecks\r\n - check.totalFailedChecks\r\n - check.totalPassedChecks\r\n }`,\r\n align: \"center\",\r\n },\r\n {\r\n key: `${check.verificationTypeId}_status`,\r\n valueTemplate: () => {\r\n const status = getCheckStatus(check);\r\n return (\r\n \r\n {complianceStatusToString(status)}\r\n \r\n );\r\n },\r\n },\r\n ])}\r\n subRows={checkDetails?.complianceResults?.map((check) => {\r\n const items = (\r\n \r\n {check.procureCheckResultItems?.map((item, index) => (\r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n {item.message && {` *${item.message}`}}\r\n

    \r\n
    \r\n ))}\r\n
    \r\n );\r\n return items;\r\n })}\r\n />\r\n )}\r\n\r\n {checkDetails?.error == null\r\n && (\r\n
    \r\n
    \r\n Overall Supplier Vetting Status:\r\n \r\n {\r\n checkDetails?.status == null\r\n ? \"...\"\r\n : complianceStatusToString(checkDetails.status)\r\n }\r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {checkDetails?.reason != null && checkDetails?.reason !== \"\"\r\n && (\r\n
    \r\n
    \r\n Compliance Exception Reason:\r\n {checkDetails?.reason}\r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierCheckDetails;\r\n","import React from \"react\";\r\nimport {\r\n ModalPopup,\r\n} from \"isuppli-react-components\";\r\nimport SupplierCheckDetails from \"../../Supplier/SupplierCheckDetails/SupplierCheckDetails\";\r\n\r\nconst SupplierCheckModal = (\r\n {\r\n company,\r\n onClose,\r\n }\r\n :\r\n {\r\n company: { id: number, name: string, vendorNumber: string },\r\n onClose: () => void\r\n }\r\n) => (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n);\r\nexport default SupplierCheckModal;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { ModalPopup } from \"isuppli-react-components\";\r\n\r\nimport AgreementsTable from \"../AgreementsTable/AgreementsTable\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport { StaticCompanyDataTypes } from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport useStaticCompanyData from \"../../Hooks/useStaticCompanyData\";\r\nimport { getSupplierContractInfoMessage } from \"../../http/Marketplace/onboardingAPI\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ContractTierMessage, getContractTiers } from \"../../http/Contracting/contractingApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SupplierContractInfoMessage } from \"../../http/Marketplace/Models/SupplierContractInfoMessage\";\r\n\r\nconst AgreementsModal = (\r\n {\r\n supplierCompanyId,\r\n supplierCompanyRegisteredName,\r\n onClose,\r\n }\r\n :\r\n {\r\n supplierCompanyId: number,\r\n supplierCompanyRegisteredName: string,\r\n onClose: () => void,\r\n }\r\n) => {\r\n const [[supplierTypes], isReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.supplierType]\r\n );\r\n\r\n const [supplierContractDetails, setSupplierContractDetails] = useState();\r\n const [supplierTypeName, setSupplierTypeName] = useState(\"...\");\r\n const [contractTierName, setContractTierName] = useState(\"...\");\r\n const [contractTiers, setContractTiers] = useState|undefined>();\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n try {\r\n const result = await getSupplierContractInfoMessage(supplierCompanyId);\r\n setSupplierContractDetails(result);\r\n\r\n const contractTierResults = await getContractTiers();\r\n setContractTiers(contractTierResults);\r\n } catch (error) {\r\n showError();\r\n }\r\n };\r\n\r\n loader();\r\n }, [supplierCompanyId, showError]);\r\n\r\n useEffect(() => {\r\n // set supplierTypeName\r\n const nameSupplierType = isReady && supplierContractDetails\r\n ? supplierTypes?.find(\r\n (supplierType: any) => supplierType.id === supplierContractDetails?.supplierTypeId\r\n )?.name ?? \"N/A\"\r\n : \"...\";\r\n setSupplierTypeName(nameSupplierType);\r\n\r\n // set contractTierName\r\n const contractTier = contractTiers?.find(\r\n (ct) => ct.externalContractTierId === supplierContractDetails?.externalContractTierId\r\n );\r\n const nameContractTier = contractTier != null\r\n ? `${contractTier.externalContractTierId} - ${contractTier.name}`\r\n : \"N/A\";\r\n setContractTierName(contractTiers ? nameContractTier : \"...\");\r\n }, [isReady, supplierTypes, contractTiers, supplierCompanyId, supplierContractDetails]);\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n Supplier Type:\r\n
    \r\n
    \r\n {supplierTypeName}\r\n
    \r\n
    \r\n Supplier Contract Tier:\r\n
    \r\n
    \r\n {contractTierName}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AgreementsModal;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M0 8.933c0 4.826 3.843 8.757 8.561 8.757h24.256c3.4 0 6.183-2.846 6.183-6.325 0-3.478-2.782-6.324-6.183-6.324H8.561c-2.083 0-3.805 1.761-3.805 3.892 0 2.13 1.722 3.892 3.805 3.892h20.927c.514.007.993-.27 1.252-.724.26-.454.26-1.017 0-1.471-.259-.455-.738-.731-1.252-.724H8.56c-.552 0-.951-.409-.951-.973 0-.564.4-.973.951-.973h24.256c1.87 0 3.33 1.494 3.33 3.405 0 1.912-1.46 3.406-3.33 3.406H8.561c-3.187 0-5.707-2.579-5.707-5.838 0-3.26 2.52-5.838 5.707-5.838h21.878c.515.008.993-.269 1.253-.724.259-.454.259-1.016 0-1.471-.26-.455-.738-.731-1.253-.724H8.561C3.843.176 0 4.107 0 8.933z\"\n});\n\nvar SvgPaperclip = function SvgPaperclip(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 39,\n height: 18,\n viewBox: \"0 0 39 18\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgPaperclip, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/paperclip.4110e480.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M5.5 5.45L.55.5h9.9z\"\n});\n\nvar SvgTrianglePrimary = function SvgTrianglePrimary(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 6,\n viewBox: \"0 0 11 6\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgTrianglePrimary, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/triangle-primary.b297a4bf.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useCallback, useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Alert, Progress } from \"reactstrap\";\r\nimport { ModalPopup } from \"isuppli-react-components\";\r\nimport {\r\n ReduxState, // eslint-disable-line no-unused-vars\r\n} from \"../../../Store/ReduxState\";\r\n\r\nimport Styles from \"./ComposeMessageModal.module.scss\";\r\nimport {\r\n broadcastMessage,\r\n BroadcastMessage, // eslint-disable-line no-unused-vars\r\n CompanySearchCriteria, // eslint-disable-line no-unused-vars\r\n DraftMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/Messaging/messagesApi\";\r\nimport Spinner from \"../../Spinner/Spinner\";\r\nimport MessageComposer from \"../../../Sections/Messaging/MessageComposer/MessageComposer\";\r\nimport useSignalR, { SignalRNotifications } from \"../../../Hooks/useSignalR\";\r\n\r\nexport enum SendTo {\r\n searchQuery = \"searchQuery\", // eslint-disable-line no-unused-vars\r\n single = \"single\", // eslint-disable-line no-unused-vars\r\n multiple = \"multiple\", // eslint-disable-line no-unused-vars\r\n}\r\n\r\nconst ComposeMessageModal = ({\r\n sendTo,\r\n recipientDetails,\r\n // search query will be used to send message to all search results\r\n searchQuery,\r\n searchQueryResultCount,\r\n onClose,\r\n} :\r\n{\r\n sendTo : SendTo,\r\n recipientDetails?: {name: string, id: number}[] | undefined,\r\n searchQuery?: CompanySearchCriteria,\r\n searchQueryResultCount?: number,\r\n onClose: () => void,\r\n}) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [hasError, setHasError] = useState(false);\r\n const [forceUpdate, setForceUpdate] = useState<() => Promise>();\r\n const [draftMessageId, setDraftMessageId] = useState();\r\n const [isSendDisabled, setIsSendDisabled] = useState(true);\r\n const [showSendingProgress, setShowSendingProgress] = useState(false);\r\n const [sendingProgress, setSendingProgress] = useState(0);\r\n const [sendingTotal, setSendingTotal] = useState(null);\r\n\r\n const userBasicDetails = useSelector((state: ReduxState) => state.loggedInUserDetails);\r\n\r\n // listen for bulk message progress\r\n const disconnect = useSignalR<{progress: number, totalMessages: number}>(\r\n SignalRNotifications.BulkMessageProgress,\r\n async (data) => {\r\n if (showSendingProgress) {\r\n setSendingProgress(data.progress);\r\n if (data.progress >= 1) {\r\n onClose();\r\n }\r\n if (data.totalMessages > 0) {\r\n setSendingTotal(data.totalMessages);\r\n }\r\n }\r\n }\r\n );\r\n\r\n // cleanup signalR listener when disposing\r\n useEffect(() => () => {\r\n disconnect();\r\n }, [disconnect]);\r\n\r\n const onDraftChangedHandler = useCallback((newDraft: DraftMessage) => {\r\n setShowSendingProgress(newDraft.sending);\r\n }, [setShowSendingProgress]);\r\n\r\n const onSendHandler = async () => {\r\n if (draftMessageId == null) {\r\n onClose();\r\n return;\r\n }\r\n setIsLoading(true);\r\n\r\n if (forceUpdate != null) {\r\n await forceUpdate();\r\n }\r\n\r\n setHasError(false);\r\n\r\n // send message to API\r\n const model: BroadcastMessage = {\r\n myCompany: {\r\n registeredName: userBasicDetails.companyName,\r\n companyId: userBasicDetails.companyId,\r\n },\r\n };\r\n\r\n switch (sendTo) {\r\n case SendTo.single:\r\n case SendTo.multiple:\r\n model.recipientCompanies = recipientDetails?.map((c) => ({\r\n registeredName: c.name,\r\n companyId: c.id,\r\n }));\r\n break;\r\n case SendTo.searchQuery:\r\n model.searchCriteria = searchQuery;\r\n break;\r\n default:\r\n }\r\n\r\n try {\r\n await broadcastMessage(0, draftMessageId, model);\r\n setShowSendingProgress(true);\r\n setIsLoading(false);\r\n } catch (error) {\r\n setHasError(true);\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const getForceUpdateHandler = useCallback((handler: () => Promise) => {\r\n setForceUpdate(() => handler);\r\n }, [setForceUpdate]);\r\n\r\n let subheading = \"\";\r\n switch (sendTo) {\r\n case SendTo.single:\r\n subheading = `Sending message to ${recipientDetails?.[0]?.name}`;\r\n break;\r\n case SendTo.multiple:\r\n subheading = `Sending message to ${recipientDetails?.length} recipients`;\r\n break;\r\n case SendTo.searchQuery:\r\n subheading = `Sending message to ${searchQueryResultCount} recipients`;\r\n break;\r\n default:\r\n subheading = \"\";\r\n }\r\n\r\n if (showSendingProgress) {\r\n // when sending bulk, override the heading to prevent incorrect data when opening the\r\n // modal later\r\n subheading = sendingTotal == null\r\n ? \"Message broadcast in progress.\"\r\n : `Message broadcast to ${sendingTotal} recipients in progress.`;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n {hasError\r\n ? (\r\n
    \r\n \r\n Could not send message. Please try again or contact your system administrator\r\n \r\n
    \r\n )\r\n : null}\r\n
    \r\n
    \r\n {isLoading\r\n ? \r\n : null}\r\n {!isLoading && !showSendingProgress\r\n ? (\r\n {\r\n setIsSendDisabled(value);\r\n }}\r\n />\r\n )\r\n : null}\r\n {\r\n showSendingProgress\r\n ? (\r\n
    \r\n \r\n {sendingProgress <= 0\r\n ? \"Preparing messages...\"\r\n : `${Math.floor(sendingProgress * 100)}%`}\r\n \r\n

    Sending messages

    \r\n
    \r\n )\r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ComposeMessageModal;\r\n","import React, { useRef, useEffect, useCallback } from \"react\";\r\nimport Axios, {\r\n // eslint-disable-next-line no-unused-vars\r\n AxiosRequestConfig,\r\n} from \"axios\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n AddAttachmentMessage,\r\n} from \"../../http/Messaging/Models/Models\";\r\n\r\nexport type Attachment = {\r\n id: number,\r\n fileId: number | null,\r\n fileUrl:string,\r\n filename: string,\r\n progress: number,\r\n uploadError?: string\r\n}\r\n\r\nconst FileInput = (\r\n {\r\n getFileSelectHandler,\r\n uploadHandler,\r\n onUploadProgress,\r\n onUploadDone,\r\n allowMultiple = false,\r\n } :\r\n {\r\n getFileSelectHandler : (triggerHandler: () => void) => void,\r\n uploadHandler: (\r\n formData: FormData,\r\n config: AxiosRequestConfig\r\n ) => Promise,\r\n onUploadProgress: (files: Attachment[]) => void,\r\n onUploadDone: (files: Attachment[]) => void,\r\n allowMultiple?: boolean,\r\n }\r\n) => {\r\n const fileInput = useRef(null);\r\n\r\n const triggerFileSelect = useCallback(() => {\r\n const currentInput = fileInput?.current ?? { dispatchEvent: () => {} };\r\n currentInput.dispatchEvent(new MouseEvent(\"click\"));\r\n }, [fileInput]);\r\n\r\n useEffect(() => {\r\n getFileSelectHandler(triggerFileSelect);\r\n }, [getFileSelectHandler, triggerFileSelect]);\r\n\r\n const fileChangeHandler = async () => {\r\n try {\r\n const fileCount = fileInput?.current?.files?.length ?? 0;\r\n if (fileCount === 0) {\r\n return;\r\n }\r\n const formData = new FormData();\r\n let uploadProgress = 0;\r\n let uploadError = \"\";\r\n\r\n let progress: Attachment[] = [];\r\n if (allowMultiple) {\r\n for (let i = 0; i < fileCount; i += 1) {\r\n const files = fileInput?.current?.files ?? [];\r\n const file = files[i];\r\n\r\n // check size\r\n const fileSize = file.size / 1024 / 1024; // convert to MB\r\n if (fileSize < 10) {\r\n formData.append(file.name, file);\r\n } else {\r\n uploadProgress = -1;\r\n uploadError = \"File size exceeds 10 MB\";\r\n }\r\n progress.push({\r\n id: Date.now() + i, fileId: null, filename: file.name, progress: uploadProgress, fileUrl: \"\", uploadError,\r\n });\r\n }\r\n } else {\r\n const file = (fileInput?.current?.files ?? [])[0];\r\n\r\n // check size\r\n const fileSize = file.size / 1024 / 1024; // convert to MB\r\n if (fileSize < 10) {\r\n formData.append(file.name, file);\r\n } else {\r\n uploadProgress = -1;\r\n uploadError = \"File size exceeds 10 MB\";\r\n }\r\n progress.push({\r\n id: Date.now(), fileId: null, filename: file.name, progress: uploadProgress, fileUrl: \"\", uploadError,\r\n });\r\n }\r\n\r\n // clear input to allow file with same name to be uploaded again\r\n if (fileInput.current != null) {\r\n fileInput.current.value = \"\";\r\n }\r\n\r\n try {\r\n const result = await uploadHandler(formData, {\r\n onUploadProgress: (progressEvent) => {\r\n const progressFraction = (progressEvent.loaded * 1.0) / progressEvent.total;\r\n progress = progress.map((p) => ({ ...p, progress: progressFraction }));\r\n onUploadProgress(progress);\r\n },\r\n });\r\n\r\n // save file ids\r\n progress = progress.map((p) => ({\r\n ...p,\r\n fileId: result.files.find(\r\n (f) => f.filename === p.filename\r\n )?.id ?? null,\r\n fileUrl: `api/messaging/${result.files.find(\r\n (f) => f.filename === p.filename\r\n )?.fileUrl}` ?? null,\r\n progress: result.files.find(\r\n (f) => f.filename === p.filename\r\n )?.success === true ? 1 : -1,\r\n }));\r\n onUploadProgress(progress);\r\n onUploadDone(progress);\r\n } catch (error) {\r\n if (!Axios.isCancel(error)) {\r\n progress = progress.map((p) => ({ ...p, progress: -1 }));\r\n onUploadProgress(progress);\r\n onUploadDone(progress);\r\n }\r\n }\r\n } catch (ex) {\r\n onUploadDone([]);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\nexport default FileInput;\r\n","import React, {\r\n useState, useRef, useEffect, useMemo,\r\n} from \"react\";\r\nimport axios, {\r\n CancelTokenSource, // eslint-disable-line no-unused-vars\r\n} from \"axios\";\r\nimport { Badge } from \"reactstrap\";\r\nimport { MessageAttachment, UtilButton, useDebounce } from \"isuppli-react-components\";\r\nimport Styles from \"./MessageComposer.module.scss\";\r\nimport { ReactComponent as PaperClipSvg } from \"./paperclip.svg\";\r\nimport { ReactComponent as TriangleSvg } from \"./triangle-primary.svg\";\r\n\r\nimport {\r\n uploadAttachments,\r\n createDraftMessage,\r\n updateDraftMessage,\r\n sendMessage,\r\n Message, // eslint-disable-line no-unused-vars\r\n deleteMessageAttachment,\r\n DraftMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/Messaging/messagesApi\";\r\n\r\nimport\r\nFileInput,\r\n{\r\n Attachment, // eslint-disable-line no-unused-vars\r\n}\r\n from \"../../../Controls/FileInput/FileInput\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n\r\n interface BusyAttachment extends Attachment {\r\n done: boolean,\r\n }\r\n\r\nconst MessageComposer = ({\r\n channelId,\r\n onMessageSent,\r\n alwaysOpen = false,\r\n defaultOpen = false,\r\n hideSendButton = false,\r\n className,\r\n onMessageIdChange,\r\n getForceUpdate,\r\n onDisableSendChanged,\r\n onDraftChanged,\r\n}: {\r\n channelId: number,\r\n onMessageSent?: (message: Message) => void;\r\n alwaysOpen? : boolean,\r\n defaultOpen? : boolean,\r\n hideSendButton?: boolean,\r\n className? : string,\r\n onMessageIdChange?: (id: number) => void;\r\n getForceUpdate?: (forceUpdater: () => Promise) => void,\r\n onDisableSendChanged?: (disable: boolean) => void,\r\n onDraftChanged?: (message: DraftMessage) => void,\r\n}) => {\r\n const openInitValue = alwaysOpen || defaultOpen;\r\n const textArea = useRef(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const showError = useShowError();\r\n // whether the current state has been saved\r\n const [attachments, setAttachments] = useState([]);\r\n const [messageId, setMessageId] = useState(null);\r\n const [body, setBody] = useState(\"\");\r\n const [isSending, setIsSending] = useState(false);\r\n const sendQue = useRef(false);\r\n const getForceUpdatePromiseResolver = useRef<() => void>();\r\n const fileSelectHandler = useRef<() => void>();\r\n const draftCancelToken = useRef(axios.CancelToken.source());\r\n const attachmentUploadCancelToken = useRef(axios.CancelToken.source());\r\n\r\n // change openState of composer on open variables prop changes\r\n useEffect(() => {\r\n setIsOpen(openInitValue);\r\n }, [openInitValue]);\r\n\r\n // cancel uploads when component disposes\r\n useEffect(() => {\r\n attachmentUploadCancelToken.current.cancel();\r\n attachmentUploadCancelToken.current = axios.CancelToken.source();\r\n return () => {\r\n attachmentUploadCancelToken.current.cancel();\r\n };\r\n }, [channelId]);\r\n\r\n useEffect(() => {\r\n if (onMessageIdChange == null || messageId == null) {\r\n return;\r\n }\r\n onMessageIdChange(messageId);\r\n }, [messageId, onMessageIdChange]);\r\n\r\n useEffect(() => {\r\n // create a draft\r\n const createDraft = async () => {\r\n try {\r\n draftCancelToken.current.cancel();\r\n draftCancelToken.current = axios.CancelToken.source();\r\n const newDraft = await createDraftMessage(channelId, {\r\n cancelToken: draftCancelToken.current.token,\r\n });\r\n setMessageId(newDraft.id);\r\n setBody(newDraft.content);\r\n if (onDraftChanged != null) {\r\n onDraftChanged(newDraft);\r\n }\r\n\r\n const draftAttachments: BusyAttachment[] = newDraft.attachments.map((a) => ({\r\n id: a.id,\r\n fileId: a.id,\r\n filename: a.filename,\r\n fileUrl: a.fileUrl,\r\n progress: 1,\r\n done: true,\r\n }));\r\n setAttachments(draftAttachments);\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n showError();\r\n }\r\n }\r\n };\r\n\r\n createDraft();\r\n return () => {\r\n // dispose component\r\n draftCancelToken.current.cancel();\r\n };\r\n }, [channelId, showError, onDraftChanged]);\r\n\r\n const isSendDisabled = useMemo(() => (!body && attachments.length <= 0)\r\n || attachments.some((a) => !a.done || a.progress < 1),\r\n [body, attachments]);\r\n\r\n const updatePending = useRef(false);\r\n\r\n let onSendHandler: () => Promise;\r\n\r\n const [\r\n triggerUpdateDebounce,\r\n forceUpdateDebounce,\r\n ] = useDebounce(async (latestBody) => {\r\n if (latestBody == null || messageId == null) {\r\n return;\r\n }\r\n setBody(latestBody);\r\n await updateDraftMessage(channelId, messageId, latestBody);\r\n updatePending.current = false;\r\n if (sendQue.current) {\r\n sendQue.current = false;\r\n onSendHandler();\r\n }\r\n\r\n if (getForceUpdatePromiseResolver.current != null) {\r\n getForceUpdatePromiseResolver.current();\r\n getForceUpdatePromiseResolver.current = undefined;\r\n }\r\n },\r\n 1000);\r\n\r\n const onBodyChangeHandler = (newValue: string) => {\r\n updatePending.current = true;\r\n setBody(newValue);\r\n triggerUpdateDebounce(newValue);\r\n };\r\n\r\n onSendHandler = async () => {\r\n setIsSending(true);\r\n if (updatePending.current) {\r\n sendQue.current = true;\r\n forceUpdateDebounce();\r\n return;\r\n }\r\n\r\n if (messageId == null) {\r\n return;\r\n }\r\n const sentMessage = await sendMessage(channelId, messageId);\r\n if (onMessageSent != null) {\r\n onMessageSent(sentMessage);\r\n }\r\n\r\n const newDraftMessage = await createDraftMessage(channelId);\r\n setBody(newDraftMessage.content);\r\n setAttachments([]);\r\n setMessageId(newDraftMessage.id);\r\n setIsSending(false);\r\n setIsOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n if (getForceUpdate != null) {\r\n const forceUpdater = () => new Promise((resolver) => {\r\n if (updatePending.current) {\r\n getForceUpdatePromiseResolver.current = resolver;\r\n forceUpdateDebounce();\r\n return;\r\n }\r\n resolver();\r\n });\r\n getForceUpdate(forceUpdater);\r\n }\r\n }, [getForceUpdate, forceUpdateDebounce]);\r\n\r\n const onTextFocusHandler = () => {\r\n setIsOpen(true);\r\n };\r\n\r\n const onToggleButtonClickHandler = () => {\r\n setIsOpen(!isOpen);\r\n setBody(body.trimStart());\r\n\r\n // eslint-disable-next-line no-unused-expressions\r\n textArea.current?.scrollTo(0, 0);\r\n };\r\n\r\n const onAttachmentDeleteHandler = async (id: number | null) => {\r\n if (messageId !== null) {\r\n const attachmentToDelete = attachments.find((c) => c.id === id);\r\n if (attachmentToDelete == null) {\r\n return;\r\n }\r\n setAttachments((prevAttachments) => prevAttachments.filter((c) => c.id !== id));\r\n\r\n if (attachmentToDelete.fileId != null) {\r\n // check for failed downloads\r\n await deleteMessageAttachment(channelId, messageId, attachmentToDelete.fileId);\r\n }\r\n }\r\n };\r\n\r\n const onAttachmentUploadedHandler = (uploadResult : Attachment[]) => {\r\n setAttachments((prevAttachments) => {\r\n const newAttachments = prevAttachments\r\n .map((file) => ({\r\n ...file,\r\n fileUrl: file.fileUrl,\r\n done: file.done || uploadResult.some((progressFile) => file.id === progressFile.id),\r\n }));\r\n return newAttachments;\r\n });\r\n };\r\n\r\n const updateProgress = (progress : Attachment[]) => {\r\n setAttachments((prevAttachments) => {\r\n const newAttachments = [...prevAttachments];\r\n progress.forEach((progressItem) => {\r\n const idMatch = newAttachments.find((c) => c.id === progressItem.id);\r\n\r\n if (idMatch != null) {\r\n idMatch.progress = progressItem.progress;\r\n idMatch.fileId = progressItem.fileId;\r\n idMatch.fileUrl = progressItem.fileUrl;\r\n return;\r\n }\r\n\r\n newAttachments.push({ ...progressItem, done: false });\r\n });\r\n return newAttachments;\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (onDisableSendChanged != null) {\r\n onDisableSendChanged(isSendDisabled);\r\n }\r\n }, [isSendDisabled, onDisableSendChanged]);\r\n\r\n const classes = [Styles.MessageComposer, \"bg-white\", className ?? \"\"];\r\n if (isOpen) {\r\n classes.push(Styles.Expand);\r\n } else {\r\n classes.push(Styles.Collapse);\r\n }\r\n\r\n if (hideSendButton) {\r\n classes.push(Styles.HideSendButton);\r\n }\r\n\r\n if (alwaysOpen) {\r\n classes.push(Styles.HideToggleButton);\r\n }\r\n\r\n return (\r\n
    \r\n onBodyChangeHandler(ev.target.value)}\r\n onFocus={onTextFocusHandler}\r\n />\r\n {isOpen && attachments.length > 0\r\n ? (\r\n
    \r\n {attachments.map((attachment) => {\r\n let progress = attachment.progress;\r\n if (attachment.done) {\r\n progress = progress >= 1 ? 1 : -1;\r\n } else {\r\n progress = progress >= 1 ? 0.99 : progress;\r\n }\r\n return (\r\n onAttachmentDeleteHandler(attachment.id)}\r\n link={`api/messaging/${attachment.fileUrl}`}\r\n canClose\r\n uploadError={attachment.uploadError}\r\n />\r\n );\r\n })}\r\n
    \r\n )\r\n : null}\r\n\r\n {!isOpen && attachments.length > 0\r\n ? {isSendDisabled ? \"Uploading..\" : `${attachments.length} Attachments`} : null}\r\n {!alwaysOpen\r\n ? (\r\n \r\n \r\n \r\n )\r\n : null}\r\n\r\n uploadAttachments(\r\n channelId,\r\n messageId ?? -1,\r\n formData,\r\n {\r\n ...config,\r\n cancelToken: attachmentUploadCancelToken.current.token,\r\n }\r\n )}\r\n getFileSelectHandler={(handler) => { fileSelectHandler.current = handler; }}\r\n onUploadProgress={(files) => {\r\n updateProgress(files);\r\n }}\r\n onUploadDone={(files) => {\r\n onAttachmentUploadedHandler(files);\r\n }}\r\n />\r\n {\r\n const handler = fileSelectHandler?.current ?? (() => {});\r\n handler();\r\n }}\r\n >\r\n \r\n \r\n \r\n Send\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default MessageComposer;\r\n","const onboardingStatuses = {\r\n New: 0,\r\n\r\n invitationPending: 10,\r\n awaitingRegistration: 11,\r\n awaitingCompliance: 12,\r\n complianceFailure: 13,\r\n profileIncomplete: 14,\r\n\r\n pendingApproval1: 20,\r\n pendingApproval2: 21,\r\n PendingAddSupplierApproval: 22,\r\n\r\n declined: 30,\r\n suspended: 31,\r\n\r\n awaitingContractApprovals: 39,\r\n awaitingVendorNumber: 40,\r\n manualSupplierInvitationPending: 43,\r\n manualSupplierAwaitingRegistration: 44,\r\n networkVendorInvitationPending: 45,\r\n networkVendorAwaitingRegistration: 46,\r\n\r\n completed: 50,\r\n\r\n toString: (value) => {\r\n switch (value) {\r\n case onboardingStatuses.New:\r\n return \"New\";\r\n case onboardingStatuses.invitationPending:\r\n case onboardingStatuses.manualSupplierInvitationPending:\r\n case onboardingStatuses.networkVendorInvitationPending:\r\n return \"Awaiting Supplier Invitation Acceptance\";\r\n case onboardingStatuses.awaitingRegistration:\r\n case onboardingStatuses.manualSupplierAwaitingRegistration:\r\n case onboardingStatuses.networkVendorAwaitingRegistration:\r\n return \"Awaiting Supplier Registration\";\r\n case onboardingStatuses.awaitingCompliance:\r\n return \"Awaiting Compliance Checks\";\r\n case onboardingStatuses.complianceFailure:\r\n return \"Compliance Failure\";\r\n case onboardingStatuses.profileIncomplete:\r\n return \"Profile Incomplete\";\r\n case onboardingStatuses.pendingApproval1:\r\n return \"Pending approval 1\";\r\n case onboardingStatuses.pendingApproval2:\r\n return \"Pending approval 2\";\r\n case onboardingStatuses.PendingAddSupplierApproval:\r\n return \"Pending approval\";\r\n case onboardingStatuses.declined:\r\n return \"Declined\";\r\n case onboardingStatuses.suspended:\r\n return \"Suspended\";\r\n case onboardingStatuses.awaitingContractApprovals:\r\n return \"Awaiting Contract Approval\";\r\n case onboardingStatuses.awaitingVendorNumber:\r\n return \"Awaiting Vendor Number\";\r\n case onboardingStatuses.completed:\r\n return \"Completed\";\r\n default:\r\n return `Supplier status ${value}`;\r\n }\r\n },\r\n};\r\n\r\nexport default onboardingStatuses;\r\n","const onboardingFilterOptions = {\r\n Active: 0,\r\n Declined: 1,\r\n All: 2,\r\n Completed: 3,\r\n Suspended: 4,\r\n New: 5,\r\n AwaitingSupplierInvitationAcceptance: 6,\r\n AwaitingSupplierRegistration: 7,\r\n ProfileIncomplete: 8,\r\n AwaitingComplianceChecks: 9,\r\n ComplianceFailure: 10,\r\n AwaitingContractApproval: 11,\r\n PendingApproval1: 12,\r\n PendingApproval2: 13,\r\n PendingDelegatedReview: 14,\r\n DelegatedApproved: 15,\r\n DelegatedDeclined: 16,\r\n AwaitingVendorNumber: 17,\r\n\r\n toString: (value) => {\r\n switch (value) {\r\n case null:\r\n return \"\";\r\n case onboardingFilterOptions.Active:\r\n return \"Active\";\r\n case onboardingFilterOptions.Declined:\r\n return \"Declined\";\r\n case onboardingFilterOptions.Suspended:\r\n return \"Suspended\";\r\n case onboardingFilterOptions.All:\r\n return \"All\";\r\n case onboardingFilterOptions.Completed:\r\n return \"Completed\";\r\n case onboardingFilterOptions.New:\r\n return \"New\";\r\n case onboardingFilterOptions.AwaitingSupplierInvitationAcceptance:\r\n return \"Awaiting Supplier Invitation Acceptance\";\r\n case onboardingFilterOptions.AwaitingSupplierRegistration:\r\n return \"Awaiting Supplier Registration\";\r\n case onboardingFilterOptions.ProfileIncomplete:\r\n return \"Profile Incomplete\";\r\n case onboardingFilterOptions.AwaitingComplianceChecks:\r\n return \"Awaiting Compliance Checks\";\r\n case onboardingFilterOptions.ComplianceFailure:\r\n return \"Compliance Failure\";\r\n case onboardingFilterOptions.AwaitingContractApproval:\r\n return \"Awaiting Contract Approval\";\r\n case onboardingFilterOptions.PendingApproval1:\r\n return \"Pending Approval 1\";\r\n case onboardingFilterOptions.PendingApproval2:\r\n return \"Pending Approval 2\";\r\n case onboardingFilterOptions.PendingDelegatedReview:\r\n return \"Pending Delegation Review\";\r\n case onboardingFilterOptions.DelegatedApproved:\r\n return \"Delegated Approved\";\r\n case onboardingFilterOptions.DelegatedDeclined:\r\n return \"Delegated Declined\";\r\n case onboardingFilterOptions.AwaitingVendorNumber:\r\n return \"Awaiting Vendor Number\";\r\n default:\r\n return `${value}`;\r\n }\r\n },\r\n};\r\nexport default onboardingFilterOptions;\r\n","import React, { Fragment } from \"react\";\r\nimport { ReactComponent as CheckMarkSvg } from \"../../Images/check-mark.svg\";\r\n\r\nfunction SupplierCheckStatus() {\r\n return (\r\n \r\n \r\n Supplier Checks\r\n \r\n );\r\n}\r\n\r\nexport default SupplierCheckStatus;\r\n","import React from \"react\";\r\nimport SupplierCheckStatus from \"../OnboardingSearch/SupplierCheckStatus\";\r\nimport onboardingFilterOptions from \"../../Util/Enumerators/onboardingFilterOptions\";\r\n\r\nexport const sortingValues = {\r\n newestFirst: 0,\r\n oldestFirst: 1,\r\n};\r\n\r\nexport const getTableConfig = (actionOptions) => ({\r\n columns: [\r\n {\r\n key: \"registeredName\",\r\n heading: \"Registered Name\",\r\n size: \"1fr\",\r\n propName: \"registeredName\",\r\n },\r\n {\r\n key: \"dateRequestedDisplay\",\r\n heading: \"Date Requested\",\r\n size: \"1fr\",\r\n propName: \"dateRequestedDisplay\",\r\n },\r\n {\r\n key: \"onboardingStatusDisplay\",\r\n heading: \"Approval Stage\",\r\n size: \"1fr\",\r\n propName: \"onboardingStatusDisplay\",\r\n },\r\n {\r\n key: \"businessUnit\",\r\n heading: \"Business Unit\",\r\n size: \"1fr\",\r\n propName: \"businessUnit\",\r\n },\r\n {\r\n key: \"invitationEmail\",\r\n heading: \"Invitation email\",\r\n size: \"1fr\",\r\n propName: \"generalEmail\",\r\n },\r\n ],\r\n footerItems: [\r\n {\r\n key: \"footer-checks\",\r\n label: ,\r\n propName: \"supplierChecks\",\r\n },\r\n {\r\n key: \"subcategories\",\r\n label: \"Product Segments & Families\",\r\n propName: \"subcategories\",\r\n },\r\n ],\r\n actionOptions,\r\n sortOptions: {\r\n selectedSortOption: 0,\r\n options: [\r\n {\r\n display: \"Newest first\",\r\n value: sortingValues.newestFirst,\r\n },\r\n {\r\n display: \"Oldest first\",\r\n value: sortingValues.oldestFirst,\r\n },\r\n ],\r\n },\r\n statusFilterOptions: {\r\n selectedStatusFilterOption: 0,\r\n options: [\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.Active),\r\n value: onboardingFilterOptions.Active,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.All),\r\n value: onboardingFilterOptions.All,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.Completed),\r\n value: onboardingFilterOptions.Completed,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.Declined),\r\n value: onboardingFilterOptions.Declined,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.Suspended),\r\n value: onboardingFilterOptions.Suspended,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.New),\r\n value: onboardingFilterOptions.New,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.AwaitingSupplierInvitationAcceptance),\r\n value: onboardingFilterOptions.AwaitingSupplierInvitationAcceptance,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.AwaitingSupplierRegistration),\r\n value: onboardingFilterOptions.AwaitingSupplierRegistration,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.ProfileIncomplete),\r\n value: onboardingFilterOptions.ProfileIncomplete,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.AwaitingComplianceChecks),\r\n value: onboardingFilterOptions.AwaitingComplianceChecks,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.ComplianceFailure),\r\n value: onboardingFilterOptions.ComplianceFailure,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.AwaitingContractApproval),\r\n value: onboardingFilterOptions.AwaitingContractApproval,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.PendingApproval1),\r\n value: onboardingFilterOptions.PendingApproval1,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.PendingApproval2),\r\n value: onboardingFilterOptions.PendingApproval2,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.PendingDelegatedReview),\r\n value: onboardingFilterOptions.PendingDelegatedReview,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.DelegatedApproved),\r\n value: onboardingFilterOptions.DelegatedApproved,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.DelegatedDeclined),\r\n value: onboardingFilterOptions.DelegatedDeclined,\r\n },\r\n {\r\n display: onboardingFilterOptions\r\n .toString(onboardingFilterOptions.AwaitingVendorNumber),\r\n value: onboardingFilterOptions.AwaitingVendorNumber,\r\n },\r\n ],\r\n },\r\n});\r\n","import React from \"react\";\r\nimport { BasicTable } from \"isuppli-react-components\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport { getStaticValue } from \"../../Util/valueFormatter\";\r\n\r\nconst DocumentViewer = (props) => {\r\n const [[documentTypes], isReady] = useStaticData([StaticDataTypes.DocumentTypes]);\r\n\r\n const rows = props.documents.filter((doc) => {\r\n if (isReady ? (documentTypes.find((element) => doc.documentTypeId === element.id)?.documentClassification === 4\r\n && !props.displayBanking) : false) {\r\n return false;\r\n }\r\n return doc.filename != null;\r\n }).map((doc) => {\r\n const documentName = (doc.displayPrefix ? `${doc.displayPrefix} - ` : \"\")\r\n + getStaticValue(doc.documentTypeId, isReady ? documentTypes : []);\r\n return [\r\n {\r\n key: documentName,\r\n value: documentName,\r\n },\r\n {\r\n key: doc.filename,\r\n valueTemplate: () => (\r\n \r\n View\r\n {\" \"}\r\n \r\n ),\r\n },\r\n ];\r\n });\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default DocumentViewer;\r\n","import { BasicTable } from \"isuppli-react-components\";\r\nimport React from \"react\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport { getStaticValue } from \"../../Util/valueFormatter\";\r\n\r\nfunction KeyContactsTable({ keyContacts }) {\r\n const [[contactPersonTypes], isReady] = useStaticData([StaticDataTypes.ContactPerson]);\r\n\r\n return (\r\n {\r\n const id = contactPerson.contactPersonTypeId;\r\n return [\r\n {\r\n key: `${id}_designation`,\r\n value: getStaticValue(contactPerson.contactPersonTypeId, contactPersonTypes),\r\n },\r\n {\r\n key: `${id}_name`,\r\n value: `${contactPerson?.fullName ?? \"\"}`,\r\n },\r\n {\r\n key: `${id}_id`,\r\n value: `${contactPerson?.idNumber ?? \"\"}`,\r\n },\r\n {\r\n key: `${id}_tel`,\r\n value: `${contactPerson?.contactNumber ?? \"\"}`,\r\n },\r\n {\r\n key: `${id}_email`,\r\n valueTemplate: () => (\r\n {contactPerson?.email ?? \"\"}\r\n ),\r\n },\r\n ];\r\n })}\r\n emptyMessage=\"No contact persons\"\r\n />\r\n );\r\n}\r\n\r\nexport default KeyContactsTable;\r\n","import React from \"react\";\r\n\r\nconst DetailsItem = (\r\n {\r\n loading = false,\r\n label,\r\n value,\r\n badge,\r\n }\r\n :\r\n {\r\n loading?: boolean,\r\n label: string,\r\n value: string,\r\n badge?: React.Component,\r\n }\r\n) => (\r\n
    \r\n
    {label}
    \r\n
    \r\n {loading ? \"...\" : value}\r\n {badge ?? null}\r\n
    \r\n
    \r\n);\r\n\r\nexport default DetailsItem;\r\n","/* eslint-disable no-nested-ternary */\r\nimport React, { Fragment } from \"react\";\r\nimport { Badge, Alert } from \"reactstrap\";\r\nimport {\r\n WithFeature, SystemFeatures, DataFeatures, hasFeature,\r\n} from \"isuppli-react-components\";\r\nimport addressTypes from \"../../Util/Enumerators/addressTypes\";\r\nimport DetailsItem from \"../../Controls/DetailsItem\";\r\nimport {\r\n getStaticValue,\r\n formatDate,\r\n formatPercentage,\r\n} from \"../../Util/valueFormatter\";\r\n\r\nimport { complianceCheckTypeToString } from \"../../Util/Enumerators/ComplianceCheckType\";\r\nimport BeeValidationStatus,\r\n{\r\n getBeeValidationStatusBadgeColor,\r\n beeValidationStatusToString,\r\n} from \"../../Util/Enumerators/beeValidationStatus\";\r\nimport ComplianceStatus from \"../../Util/Enumerators/ComplianceStatus\";\r\n\r\nfunction SupplierSearchDetails({\r\n loading,\r\n companyDetails,\r\n clientSpecificInfo,\r\n provinces,\r\n beeLevels,\r\n countries,\r\n companyTypes,\r\n sectors,\r\n turnoverBands,\r\n beeSectors,\r\n complianceDetails,\r\n supplierTransactionStatuses,\r\n municipalities,\r\n}) {\r\n const item = (itemName, itemValue, badge) => (\r\n \r\n );\r\n\r\n const referencedItem = (itemName, itemValue, options) => item(itemName, getStaticValue(itemValue, options));\r\n\r\n const processBadge = (date) => {\r\n if (date !== null && new Date(date) < new Date()) {\r\n return (\r\n \r\n Expired\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n const physicalAddress = companyDetails.addresses != null\r\n ? companyDetails.addresses.find((a) => a.type === addressTypes.Physical) ?? {}\r\n : {};\r\n const postalAddress = companyDetails.addresses != null\r\n ? companyDetails.addresses.find((a) => a.type === addressTypes.Physical) ?? {}\r\n : {};\r\n\r\n // object destructuring\r\n const {\r\n supplierType,\r\n paymentTerms,\r\n businessUnits,\r\n categoryManagerUser,\r\n contractTier,\r\n businessType,\r\n } = clientSpecificInfo;\r\n\r\n const { businessRegionProvinceIds } = companyDetails;\r\n\r\n const beeInfo = companyDetails.beeInfo || {};\r\n\r\n // use empty string instead of null so that isBeeExpired is false if no date provided\r\n const isBeeExpired = new Date(beeInfo.certificateExpiryDate ?? \"\") < new Date();\r\n\r\n const businessUnitsDisplay = businessUnits?.length > 0\r\n ? businessUnits.map((x, index) => (index + 1 < businessUnits.length\r\n ? `${x.shortName}, `\r\n : `${x.shortName}`\r\n )) : \"N/A\";\r\n\r\n const businessRegionsDisplay = businessRegionProvinceIds?.length > 0\r\n ? businessRegionProvinceIds?.map((id, index) => (\r\n index + 1 < businessRegionProvinceIds.length\r\n ? `${getStaticValue(id, provinces)}, `\r\n : `${getStaticValue(id, provinces)}`\r\n ))\r\n : \"N/A\";\r\n\r\n return (\r\n
    \r\n
    \r\n {referencedItem(\r\n \"Company Type\",\r\n companyDetails.companyType,\r\n companyTypes\r\n )}\r\n {item(\"Registered Company Name\", companyDetails.registeredName)}\r\n {item(\"Company Trading Name\", companyDetails.tradingName)}\r\n {item(\r\n \"Company Registration Number\",\r\n companyDetails.registrationNumber\r\n )}\r\n {item(\"Tax Clearance Pin Number\", companyDetails.taxClearanceNumber)}\r\n {item(\r\n \"TCC Expiry Date\",\r\n companyDetails.taxClearanceNumberExpiryDate !== null\r\n ? formatDate(new Date(companyDetails.taxClearanceNumberExpiryDate))\r\n : null,\r\n processBadge(companyDetails.taxClearanceNumberExpiryDate)\r\n )}\r\n
    \r\n\r\n
    \r\n {item(\"VAT Registered\", companyDetails.hasVatNumber ? \"Yes\" : \"No\")}\r\n {item(\"Company Telephone Number\", companyDetails.generalPhone)}\r\n
    \r\n
    General Company Email Address
    \r\n
    \r\n {loading\r\n ? \"...\"\r\n : {companyDetails.generalEmail}}\r\n
    \r\n
    \r\n {companyDetails.transactionStatusId > 0 && (\r\n <>\r\n {item(\"Transaction Status:\", supplierTransactionStatuses.find((status) => (\r\n status.id === companyDetails.transactionStatusId))?.name ?? \"\")}\r\n {item(\"Order Type\", companyDetails.orderType ? \"Yes\" : \"No\")}\r\n {item(\"Exception Flag\", companyDetails.exceptionFlag ?? \"\")}\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n

    PHYSICAL ADDRESS DETAILS

    \r\n {loading ? (\r\n
    ...
    \r\n ) : (\r\n \r\n
    {physicalAddress.unitNumber}
    \r\n
    {physicalAddress.streetAddressL1}
    \r\n
    {physicalAddress.streetAddressL2}
    \r\n
    {physicalAddress.city}
    \r\n
    {getStaticValue(physicalAddress.province, provinces)}
    \r\n
    {getStaticValue(physicalAddress.country, countries)}
    \r\n
    {physicalAddress.postalCode}
    \r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n

    POSTAL ADDRESS DETAILS

    \r\n {loading ? (\r\n
    ...
    \r\n ) : (\r\n \r\n
    {postalAddress.unitNumber}
    \r\n
    {postalAddress.streetAddressL1}
    \r\n
    {postalAddress.streetAddressL2}
    \r\n
    {postalAddress.city}
    \r\n
    {getStaticValue(postalAddress.province, provinces)}
    \r\n
    {getStaticValue(postalAddress.country, countries)}
    \r\n
    {postalAddress.postalCode}
    \r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n

    \r\n B-BBEE CERTIFICATION\r\n {beeInfo.validationStatus != null\r\n && beeInfo.validationStatus !== BeeValidationStatus.None\r\n ? (\r\n \r\n {isBeeExpired ? \"Expired\" : beeValidationStatusToString(beeInfo.validationStatus)}\r\n \r\n )\r\n : null}\r\n

    \r\n {item(\r\n \"B-BBEE Certificate/Affidavit\",\r\n beeInfo.hasBeeCertificate ? \"Yes\" : \"No\"\r\n )}\r\n {beeInfo.hasBeeCertificate === 1\r\n && referencedItem(\"B-BBEE Level\", beeInfo.beeStatusId, beeLevels)}\r\n {beeInfo.hasBeeCertificate === 1 && item(\r\n \"Expiry Date of Certificate\",\r\n formatDate(beeInfo.certificateExpiryDate)\r\n )}\r\n {beeInfo.hasBeeCertificate === 1\r\n && referencedItem(\r\n \"B-BBEE Classification\",\r\n beeInfo.beeClassificationId,\r\n beeSectors\r\n )}\r\n {beeInfo.hasBeeCertificate === 1\r\n && item(\"Black Ownership\", formatPercentage(beeInfo.boPercentage))}\r\n {beeInfo.hasBeeCertificate === 1\r\n && item(\"Black Woman Ownership\", formatPercentage(beeInfo.bwoPercentage))}\r\n {beeInfo.hasBeeCertificate === 1\r\n && referencedItem(\r\n \"B-BBEE Sector\",\r\n beeInfo.sector,\r\n sectors\r\n )}\r\n {beeInfo.hasBeeCertificate === 1\r\n && referencedItem(\r\n \"Annual Turnover\",\r\n beeInfo.turnoverBand,\r\n turnoverBands\r\n )}\r\n
    \r\n\r\n
    \r\n

    PRODUCT OR SERVICE DESCRIPTION

    \r\n {loading ? (\r\n
    ...
    \r\n ) : (\r\n
    \r\n {companyDetails.tradeDescription}\r\n
    \r\n )}\r\n
    \r\n\r\n \r\n
    \r\n

    REGULATORY COMPLIANCE

    \r\n
    \r\n {\r\n complianceDetails == null\r\n && (\r\n
    \r\n Loading\r\n
    \r\n )\r\n }\r\n {\r\n complianceDetails != null\r\n && complianceDetails.complianceResults != null\r\n && complianceDetails.status !== ComplianceStatus.Error\r\n && complianceDetails.complianceResults != null\r\n && complianceDetails.complianceResults.length > 0\r\n ? complianceDetails.complianceResults.map((check) => {\r\n let status = \"\";\r\n let statusClass = \"Black\";\r\n if (check.totalFailedChecks > 0) {\r\n status = \"Failed\";\r\n statusClass = \"Failed\";\r\n } else if (check.totalPassedChecks > 0) {\r\n status = \"Passed\";\r\n statusClass = \"Success\";\r\n } else {\r\n status = \"Outstanding\";\r\n }\r\n return (\r\n
    \r\n

    {complianceCheckTypeToString(check.verificationTypeId)}

    \r\n

    {status}

    \r\n
    \r\n );\r\n })\r\n : (\r\n complianceDetails != null\r\n && (\r\n \r\n {complianceDetails.error || \"No compliance details available\"}\r\n \r\n )\r\n )\r\n }\r\n
    \r\n {\r\n clientSpecificInfo && (\r\n \r\n

    CLIENT SPECIFIC INFO

    \r\n
    \r\n {loading ? (\r\n
    ...
    \r\n ) : (\r\n \r\n {item(\"Business Units\", businessUnitsDisplay)}\r\n {item(\"Supplier Type\", supplierType?.name ?? \"N/A\")}\r\n {contractTier && (item(\"Contract Tier\", contractTier?.name ?? \"N/A\"))}\r\n {paymentTerms && item(\"Payment Terms\", paymentTerms?.name ?? \"N/A\")}\r\n {categoryManagerUser && item(\"Category Manager\", categoryManagerUser.fullName ?? \"N/A\")}\r\n {categoryManagerUser && item(\"Category Manager Code\", categoryManagerUser.categoryManagerCode ?? \"N/A\")}\r\n \r\n )}\r\n
    \r\n
    \r\n {loading ? (\r\n
    ...
    \r\n ) : (\r\n \r\n {\r\n hasFeature(supplierType?.dataFeatures ?? 0, DataFeatures.DirectorNames)\r\n && item(\"Director Names\", companyDetails.directorsNames ?? \"N/A\")\r\n }\r\n {\r\n hasFeature(supplierType?.dataFeatures ?? 0, DataFeatures.AdditionalCompanyData)\r\n && (\r\n <>\r\n {item(\"Number of Employees\", companyDetails.additionalCompanyData?.numberOfEmployees ?? \"N/A\")}\r\n {item(\"Royal Bofokeng Resident\", companyDetails.additionalCompanyData?.royalBafokengNationalResident == null ? \"N/A\"\r\n : companyDetails.additionalCompanyData?.royalBafokengNationalResident === 1 ? \"Yes\" : \"No\")}\r\n \r\n )\r\n }\r\n {\r\n hasFeature(supplierType?.dataFeatures ?? 0, DataFeatures.BusinessTypes)\r\n && item(\"Business Type\", businessType?.name ?? \"N/A\")\r\n }\r\n {\r\n // conditionally render if:\r\n // dataFeature applies to supplierType OR royal bafokeng question !== undefined\r\n (hasFeature(supplierType?.dataFeatures ?? 0, DataFeatures.MandatoryMunicipality)\r\n || companyDetails.additionalCompanyData?.royalBafokengNationalResident != null)\r\n && (physicalAddress.municipality\r\n ? referencedItem(\"Municipality\", physicalAddress.municipality, municipalities)\r\n : item(\"Municipality\", \"N/A\"))\r\n }\r\n {\r\n hasFeature(supplierType?.dataFeatures ?? 0, DataFeatures.BusinessRegions)\r\n && item(\"Region(s) for conducting of primary business\",\r\n businessRegionsDisplay)\r\n }\r\n \r\n )}\r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n );\r\n}\r\n\r\nexport default SupplierSearchDetails;\r\n","import React from \"react\";\r\nimport StarRatingInput from \"../../Controls/StarRatingInput/StarRatingInput\";\r\n\r\nconst SupplierSearchRating = (\r\n {\r\n rating,\r\n totalRatings,\r\n }\r\n :\r\n {\r\n rating: number,\r\n totalRatings: number,\r\n }\r\n) => (\r\n
    \r\n

    COMPANY RATING

    \r\n
    \r\n

    Overall Rating

    \r\n \r\n
    \r\n
    \r\n);\r\n\r\nexport default SupplierSearchRating;\r\n","import React from \"react\";\r\nimport { BasicTable } from \"isuppli-react-components\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { CompanyGetBankDetailsMessage } from \"../../../http/CompanyDetails/CompanyGetBankDetailsMessage\";\r\n\r\nimport useStaticData from \"../../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../../Util/Enumerators/staticDataTypes\";\r\nimport { getStaticValue } from \"../../../Util/valueFormatter\";\r\n\r\nconst BankDetailsTable = (\r\n {\r\n bankDetails,\r\n loading,\r\n }\r\n :\r\n {\r\n bankDetails: CompanyGetBankDetailsMessage,\r\n loading: boolean,\r\n }\r\n) => {\r\n const [[banks, bankAccountTypes], isReady] = useStaticData(\r\n [StaticDataTypes.Bank, StaticDataTypes.BankAccountType]\r\n );\r\n\r\n return (\r\n [\r\n {\r\n key: `${bankAccount.bankAccountDetailsId}-name`,\r\n value: bankAccount.accountName,\r\n },\r\n {\r\n key: `${bankAccount.bankAccountDetailsId}-number`,\r\n value: bankAccount.accountNumber,\r\n },\r\n {\r\n key: `${bankAccount.bankAccountDetailsId}-bank`,\r\n value: bankDetails.useCustomFields\r\n ? bankAccount.customBank\r\n : getStaticValue(bankAccount.bankId, banks),\r\n },\r\n {\r\n key: `${bankAccount.bankAccountDetailsId}-type`,\r\n value: bankDetails.useCustomFields\r\n ? bankAccount.customBankAccountType\r\n : getStaticValue(bankAccount.bankAccountTypeId, bankAccountTypes),\r\n },\r\n {\r\n key: `${bankAccount.branchName}-branchName`,\r\n value: bankAccount.branchName,\r\n },\r\n {\r\n key: `${bankAccount.bankAccountDetailsId}-branch`,\r\n value: bankAccount.branchCode,\r\n },\r\n ])}\r\n />\r\n );\r\n};\r\n\r\nexport default BankDetailsTable;\r\n","import React from \"react\";\r\nimport { BasicTable } from \"isuppli-react-components\";\r\n// eslint-disable-next-line no-unused-vars\r\n\r\ninterface CompanySubAccount {\r\n tradingName: string\r\n}\r\n\r\nconst SubAccountsTable = (\r\n {\r\n subAccounts,\r\n loading,\r\n }\r\n :\r\n {\r\n subAccounts: Array,\r\n loading: boolean,\r\n }\r\n) => (\r\n [\r\n {\r\n key: `${subAccount.tradingName}-name`,\r\n value: subAccount.tradingName,\r\n },\r\n ])}\r\n />\r\n);\r\n\r\nexport default SubAccountsTable;\r\n","import axios from \"axios\";\r\nimport { ClientSpecificInfoMessage } from \"./ClientSpecificInfoMessage\"; // eslint-disable-line no-unused-vars\r\nimport { makeRequestAsync } from \"../util\";\r\nimport { ClientSpecificInfoUpdateMessage } from \"./ClientSpecificInfoUpdateMessage\";// eslint-disable-line no-unused-vars\r\n\r\nexport function getClientSpecificInfoAsync(companyId : number) {\r\n const url = `api/client/clientSpecificInfo/${companyId}`;\r\n return makeRequestAsync(() => axios.get(url)) as Promise;\r\n}\r\n\r\nexport function getClientSpecificInfoAsTheSupplierAsync(buyerCompanyId: number) {\r\n const url = `api/client/clientSpecificInfo/${buyerCompanyId}/supplier`;\r\n return makeRequestAsync(() => axios.get(url)) as Promise;\r\n}\r\n\r\nexport function saveClientSpecificInfoAsTheSupplierAsync(message : ClientSpecificInfoUpdateMessage) {\r\n const url = \"api/client/clientSpecificInfo\";\r\n return makeRequestAsync(() => axios.post(url, message)) as Promise;\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n WithFeature, SystemFeatures, ActionsDropDownItem, ModalPopup, hasFeature,\r\n} from \"isuppli-react-components\";\r\nimport {\r\n getSupplierKeyContactDetailsAsync,\r\n getDocumentsAsync,\r\n getSupplierInfoAsync,\r\n getCompanySubAccountsAsync,\r\n getAddressInfoAsync,\r\n getBeeDetailsAsync,\r\n getBankingDetailsAsync,\r\n} from \"../http/index\";\r\n\r\nimport { getContractTiers } from \"../http/Contracting/contractingApi\";\r\nimport {\r\n getCompanyCompliance,\r\n} from \"../http/Compliance/complianceApi\";\r\n\r\nimport { setOption } from \"../Store/optionActions\";\r\nimport { loadSupplierSearchDetailsOptions } from \"../Util/optionsLoader\";\r\n\r\nimport DocumentViewer from \"../Containers/Supplier/DocumentViewer\";\r\nimport KeyContactsTable from \"../Containers/SupplierSearch/KeyContactsTable\";\r\nimport SupplierSearchDetails from \"../Containers/SupplierSearch/SupplierSearchDetails\";\r\nimport SupplierSearchRating from \"../Containers/SupplierSearch/SupplierSearchRating\";\r\nimport BankDetailsTable from \"../Containers/SupplierSearch/BankDetailsTable/BankDetailsTable\";\r\nimport AgreementsTable from \"../Containers/AgreementsTable/AgreementsTable\";\r\nimport SubAccountsTable from \"../Containers/SupplierSearch/SubAccountsTable/SubAccountsTable\";\r\n\r\nimport { ReactComponent as DownloadSvg } from \"../Images/download.svg\";\r\nimport ShareholderTable from \"../Containers/ShareholdersTable/ShareholderTable\";\r\nimport { StaticCompanyDataTypes } from \"../Util/Enumerators/staticCompanyDataTypes\";\r\nimport { setStaticCompanyData } from \"../Store/actions\";\r\nimport { StaticDataTypes } from \"../Util/Enumerators/staticDataTypes\";\r\nimport { getClientSpecificInfoAsync } from \"../http/Client/ClientApi\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n provinces: state.options.provinces,\r\n beeLevels: state.options.beeLvls,\r\n countries: state.options.countries,\r\n companyTypes: state.options.companyTypes,\r\n sectors: state.options.sectors,\r\n turnoverBands: state.options.turnoverBands,\r\n beeSectors: state.options.beeSectors,\r\n contractTiers: state.staticCompanyData[StaticCompanyDataTypes.contractTiers],\r\n supplierTransactionStatuses: state.staticCompanyData[StaticCompanyDataTypes.supplierTransactionStatuses],\r\n municipalityOptions: state.staticData[StaticDataTypes.Municipality] ?? [],\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n});\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setOption: (optionName, optionValues) => {\r\n dispatch(setOption(optionName, optionValues));\r\n },\r\n setContractTiers: (contractTiers) => {\r\n dispatch(setStaticCompanyData([{\r\n type: StaticCompanyDataTypes.contractTiers,\r\n value: contractTiers,\r\n }], true));\r\n },\r\n});\r\n\r\nclass SupplierDetailsModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loadingCompanyDetails: true,\r\n companyDetails: {},\r\n clientSpecificInfo: {},\r\n loadingKeyContacts: true,\r\n keyContacts: [],\r\n\r\n loadingDocuments: true,\r\n documents: [],\r\n bankDetails: {},\r\n\r\n subAccounts: [],\r\n loadingSubAccounts: true,\r\n };\r\n }\r\n\r\n async loadContacts() {\r\n const keyContacts = await getSupplierKeyContactDetailsAsync(this.props.company.companyId);\r\n\r\n this.setState({\r\n loadingKeyContacts: false,\r\n keyContacts,\r\n });\r\n }\r\n\r\n async loadClientSpecificInfo() {\r\n const clientSpecificInfo = await getClientSpecificInfoAsync(this.props.company.companyId);\r\n\r\n this.setState({\r\n clientSpecificInfo,\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n const loadContractTiers = async () => {\r\n // load contracting tiers\r\n if (this.props.contractTiers == null || this.props.contractTiers.length === 0) {\r\n try {\r\n const contractTiers = await getContractTiers();\r\n const formattedContractTiers = contractTiers.map(\r\n (c) => ({ ...c, value: c.id, display: c.name })\r\n );\r\n this.props.setContractTiers(formattedContractTiers);\r\n } catch {\r\n this.props.setContractTiers([]);\r\n }\r\n }\r\n };\r\n // load company details\r\n this.loadContacts();\r\n this.loadDocuments();\r\n this.loadDetails();\r\n this.loadClientSpecificInfo();\r\n loadContractTiers();\r\n }\r\n\r\n async loadDocuments() {\r\n const documents = await getDocumentsAsync(this.props.company.companyId, true);\r\n\r\n this.setState({\r\n loadingDocuments: false,\r\n documents: documents.companyDocuments,\r\n });\r\n }\r\n\r\n async loadDetails() {\r\n const id = this.props.company.companyId;\r\n\r\n const getDataPromises = [\r\n getSupplierInfoAsync(id),\r\n getAddressInfoAsync(id),\r\n getBeeDetailsAsync(id),\r\n getCompanyCompliance(id),\r\n getBankingDetailsAsync(id),\r\n loadSupplierSearchDetailsOptions(this.props),\r\n ];\r\n\r\n const results = await Promise.all(getDataPromises.map((p) => p.catch((e) => e)));\r\n const companyDetails = results[0] instanceof Error ? {} : results[0];\r\n const addressResults = results[1] instanceof Error ? {} : results[1];\r\n const beeInfo = results[2] instanceof Error ? {} : results[2];\r\n const complianceDetails = results[3] instanceof Error ? {} : results[3];\r\n const bankDetails = results[4] instanceof Error ? {} : results[4];\r\n\r\n this.setState({\r\n loadingCompanyDetails: false,\r\n companyDetails: {\r\n ...companyDetails,\r\n addresses: addressResults.addresses,\r\n beeInfo,\r\n },\r\n complianceDetails,\r\n bankDetails,\r\n });\r\n\r\n let subAccounts = [];\r\n if (companyDetails?.hasSubAccounts) {\r\n subAccounts = await getCompanySubAccountsAsync(id);\r\n }\r\n\r\n this.setState({\r\n subAccounts,\r\n loadingSubAccounts: false,\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n loadingCompanyDetails,\r\n companyDetails = {},\r\n clientSpecificInfo = {},\r\n complianceDetails = null,\r\n loadingKeyContacts,\r\n keyContacts = [],\r\n loadingSubAccounts,\r\n subAccounts = [],\r\n loadingDocuments,\r\n documents = [],\r\n bankDetails = {},\r\n } = this.state;\r\n\r\n const disableDownloadButton = loadingCompanyDetails\r\n || loadingDocuments\r\n || loadingSubAccounts\r\n || loadingKeyContacts;\r\n\r\n const {\r\n provinces = [],\r\n beeLevels = [],\r\n countries = [],\r\n companyTypes = [],\r\n sectors = [],\r\n turnoverBands = [],\r\n beeSectors = [],\r\n supplierTransactionStatuses = [],\r\n municipalityOptions = [],\r\n } = this.props;\r\n\r\n const loadingMessage = ;\r\n return (\r\n <>\r\n this.props.onCloseCallback(),\r\n },\r\n ]}\r\n actionItems={this.props.isPotentialSupplier && this.props.hasActionItems ? [\r\n {\r\n this.props.onCloseCallback();\r\n this.props.onboardSupplierCallback();\r\n }}\r\n >\r\n Onboard supplier\r\n ,\r\n ] : []}\r\n >\r\n
    \r\n
    \r\n

    COMPANY DETAILS

    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n

    KEY CONTACT DETAILS

    \r\n {loadingKeyContacts ? (\r\n loadingMessage\r\n ) : (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n

    SUPPORTING DOCUMENTS

    \r\n {loadingDocuments ? (\r\n loadingMessage\r\n ) : (\r\n \r\n )}\r\n
    \r\n {companyDetails?.isSupplierOfCurrentCompany\r\n && (\r\n \r\n
    \r\n

    BANK DETAILS

    \r\n \r\n
    \r\n
    \r\n )}\r\n {\r\n this.props.contractTiers?.length > 0\r\n && (\r\n
    \r\n

    AGREEMENTS

    \r\n \r\n
    \r\n )\r\n }\r\n\r\n {companyDetails?.hasSubAccounts\r\n && (\r\n
    \r\n

    SUB ACCOUNTS

    \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n {\r\n }}\r\n >\r\n \r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SupplierDetailsModal);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport { UnspscSegment, UnspscFamily } from \"isuppli-react-components\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { StaticOption } from \"../Hooks/useStaticCompanyData\";\r\n\r\nexport interface UnspscSegmentWithFamilies extends UnspscSegment {\r\n families: Array,\r\n}\r\n\r\nexport const createProductServiceSummary = (\r\n selectedSubCategoryIds: number[],\r\n categoriesStaticData: StaticOption[]\r\n) => {\r\n if (!selectedSubCategoryIds) {\r\n return [];\r\n }\r\n\r\n const categories = categoriesStaticData.map((category) => ({\r\n heading: category.name,\r\n items: category.supplierSubCategories\r\n .filter(\r\n (subCategory: StaticOption) => selectedSubCategoryIds.includes(subCategory.value as number)\r\n )\r\n .map((c: StaticOption) => c.name),\r\n }));\r\n\r\n return categories.filter((c) => c.items.length > 0);\r\n};\r\n\r\nexport const createGlobalProductServiceSummary = (\r\n selectedUnspscFamilyIds: number[],\r\n segmentsStaticData: StaticOption[]\r\n) => {\r\n if (!selectedUnspscFamilyIds) {\r\n return [];\r\n }\r\n\r\n const segments = segmentsStaticData.map((segment) => ({\r\n heading: segment.display,\r\n items: segment.families\r\n .filter(\r\n (family: StaticOption) => selectedUnspscFamilyIds.includes(family.value as number)\r\n )\r\n .map((c: StaticOption) => c.name),\r\n }));\r\n\r\n return segments.filter((c) => c.items.length > 0);\r\n};\r\n\r\nexport const getUnspscInfo = (\r\n unspscSegments: Array,\r\n unspscFamilies: Array\r\n) => {\r\n // build segments array\r\n const segments = unspscSegments?.map((unspscSegment: any) => ({\r\n value: unspscSegment.id,\r\n display: unspscSegment.display,\r\n code: unspscSegment.code,\r\n families: [],\r\n } as UnspscSegmentWithFamilies));\r\n\r\n // assign families to appropriate segment\r\n unspscFamilies?.map((unspscFamily: any) => {\r\n segments.find((segment) => segment.value === unspscFamily.segmentId)\r\n ?.families.push(unspscFamily);\r\n });\r\n\r\n return segments;\r\n};\r\n","import axios from \"axios\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DelegateOnboardingRequestApprovalMessage } from \"./DelegateOnboardingRequestApprovalMessage\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { AddOrUpdateVendorNumberMessage } from \"./AddOrUpdateVendorNumberMessage\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { OnboardingConfigurationMessage } from \"./OnboardingConfigurationMessage\";\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport async function addOrUpdateVendorNumber(message: AddOrUpdateVendorNumberMessage) {\r\n const url = \"/api/motivation/vendorNumber\";\r\n return makeRequestAsync(\r\n () => axios.post(url, message)\r\n ) as Promise;\r\n}\r\n\r\nexport async function delegateOnboardingRequestApproval(message : DelegateOnboardingRequestApprovalMessage) {\r\n const url = \"/api/motivation/delegation\";\r\n return makeRequestAsync(\r\n () => axios.post(url, message)\r\n ) as Promise;\r\n}\r\n\r\nexport async function getOnboardingReqeustComments(onboardingRequestId : number) {\r\n const url = `/api/motivation/comments?onboardingRequestId=${onboardingRequestId}`;\r\n return makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n}\r\n\r\nexport async function getOnboardingConfiguration() {\r\n const url = \"/api/enterprise/onboarding\";\r\n return makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n}\r\n\r\nexport async function getSupplierPaymentTermsId(supplierCompanyId : number) {\r\n const url = `/api/motivation/supplierPaymentTerms?SupplierCompanyId=${supplierCompanyId}`;\r\n return makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n}\r\n\r\nexport async function updateSupplierPaymentTerms(supplierCompanyId : number, paymentTermsId : number, comment : string) {\r\n const url = \"/api/motivation/supplierPaymentTerms\";\r\n return makeRequestAsync(\r\n () => axios.post(url, { supplierCompanyId, paymentTermsId, comment })\r\n ) as Promise;\r\n}\r\n\r\nexport async function bulkEmailUpdate(onboardingRequestId : number, email : string) {\r\n const url = \"/api/motivation/bulkEmailUpdate\";\r\n return makeRequestAsync(\r\n () => axios.post(url, { onboardingRequestId, email })\r\n ) as Promise;\r\n}","import {\r\n Form, ModalPopup, FormRef, TextInput, ButtonInfo, Spinner, // eslint-disable-line no-unused-vars\r\n} from \"isuppli-react-components\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { getOnboardingRequest } from \"../../http\";\r\nimport { checkHttpStatus } from \"../../http/httpHelpers\";\r\nimport { addOrUpdateVendorNumber } from \"../../http/Onboarding/OnboardingApi\";\r\n\r\nconst UpdateVendorNumberModal = (\r\n {\r\n onboardingRequestId,\r\n onSubmitCallback,\r\n onCloseCallback,\r\n }:\r\n {\r\n onboardingRequestId: number,\r\n onSubmitCallback?: () => void,\r\n onCloseCallback: () => void\r\n }\r\n) => {\r\n const formRef = useRef(null);\r\n const [vendorNumber, setVendorNumber] = useState(\"\");\r\n const [onboardingRequest, setOnboardingRequest] = useState({});\r\n const [loading, setLoading] = useState(false);\r\n const [vendorNumberInvalid, setVendorNumberInvalid] = useState(false);\r\n const [invalidInputMessage, setInvalidInputMessage] = useState();\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const loadData = async () => {\r\n const data = await getOnboardingRequest(onboardingRequestId);\r\n setOnboardingRequest(data);\r\n setLoading(false);\r\n };\r\n\r\n loadData();\r\n }, [onboardingRequestId]);\r\n\r\n const saveData = async () => {\r\n setVendorNumberInvalid(false);\r\n setInvalidInputMessage(undefined);\r\n if (!(formRef.current?.isValid() ?? false)) {\r\n formRef.current?.showValidation();\r\n } else {\r\n try {\r\n await addOrUpdateVendorNumber({ vendorNumber, onboardingRequestId });\r\n if (onSubmitCallback != null) {\r\n onSubmitCallback();\r\n onCloseCallback();\r\n }\r\n } catch (error) {\r\n if (checkHttpStatus(error, 409)) {\r\n setInvalidInputMessage(\"Duplicate detected, this vendor number has already been allocated.\");\r\n } else if (!checkHttpStatus(error, 400)) {\r\n setInvalidInputMessage(\"An Unexpected Error Occurred, Please contact your administrator if this continues\");\r\n }\r\n setVendorNumberInvalid(true);\r\n formRef.current?.showValidation();\r\n }\r\n }\r\n };\r\n const buttons = [\r\n {\r\n key: \"Submit\",\r\n label: \"Submit\",\r\n onClick: saveData,\r\n color: \"primary\",\r\n },\r\n ] as ButtonInfo[];\r\n\r\n return (\r\n \r\n
    \r\n {\r\n loading ? : (\r\n
    \r\n setVendorNumber(value)}\r\n validationMessage={invalidInputMessage ?? \"You have to enter a valid vendor number\"}\r\n />\r\n \r\n )\r\n }\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default UpdateVendorNumberModal;\r\n","enum VendorNumberOrigin {\r\n Autogenerated, // eslint-disable-line no-unused-vars\r\n ERPIntegration, // eslint-disable-line no-unused-vars\r\n ManualAssignment, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default VendorNumberOrigin;\r\n","/* eslint-disable no-undef */\r\n/* eslint-disable no-unused-vars */\r\nimport {\r\n Form, ModalPopup, FormRef, ButtonInfo, Spinner, SystemFeatures, hasFeature, DropDownInput, // eslint-disable-line no-unused-vars\r\n} from \"isuppli-react-components\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport useStaticCompanyData from \"../../Hooks/useStaticCompanyData\";\r\nimport { delegateOnboardingRequestApproval } from \"../../http/Onboarding/OnboardingApi\";\r\nimport { StaticCompanyDataTypes } from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport { checkIfValidUUID } from \"../../Validation/validation\";\r\n\r\ninterface RoleMessage {\r\n display: string,\r\n id: string,\r\n value: string,\r\n allowedFeatures: bigint,\r\n}\r\n\r\nconst DelegateMTOApprovalModal = (\r\n {\r\n onboardingRequestId,\r\n roleId,\r\n onSubmitCallback,\r\n onCloseCallback,\r\n }:\r\n {\r\n onboardingRequestId: number,\r\n roleId: string,\r\n onSubmitCallback?: () => void,\r\n onCloseCallback: () => void\r\n }\r\n) => {\r\n const formRef = useRef(null);\r\n const [[roles], isCompanyStaticDataReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.roles]\r\n );\r\n const [selectedUserRole, setSelectedUserRole] = useState();\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n if (checkIfValidUUID(roleId)) {\r\n setSelectedUserRole(roleId);\r\n }\r\n }, [onboardingRequestId, roleId]);\r\n\r\n const [rolesThatCanApproveOnDelegation, setRolesThatCanApproveOnDelegation] = useState>([]);\r\n useEffect(() => {\r\n setRolesThatCanApproveOnDelegation(\r\n roles?.map((role: any) => ({\r\n ...role, display: role.name, value: role.id, allowedFeatures: BigInt(role.allowedFeaturesString ?? SystemFeatures.None),\r\n }))\r\n .filter((r) => hasFeature(r.allowedFeatures, SystemFeatures.ApproveDelegatedOnboardingRequestApproval2))\r\n );\r\n }, [isCompanyStaticDataReady, roles]);\r\n\r\n const saveData = async () => {\r\n if (!(formRef.current?.isValid() ?? false)) {\r\n formRef.current?.showValidation();\r\n } else {\r\n try {\r\n if (onSubmitCallback != null) {\r\n await delegateOnboardingRequestApproval({ onboardingRequestId, roleId: selectedUserRole ?? \"\" });\r\n onSubmitCallback();\r\n onCloseCallback();\r\n }\r\n } catch (ex) {\r\n showError();\r\n }\r\n }\r\n };\r\n const buttons = [\r\n {\r\n key: \"Submit\",\r\n label: \"Delegate Approval\",\r\n onClick: saveData,\r\n color: \"primary\",\r\n },\r\n ] as ButtonInfo[];\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {\r\n isCompanyStaticDataReady ? (\r\n setSelectedUserRole(val)}\r\n />\r\n )\r\n : \r\n }\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DelegateMTOApprovalModal;\r\n","const onboardingDelegationStatus = {\r\n None: 0,\r\n PendingReview: 1,\r\n Accepted: 2,\r\n Declined: 3,\r\n\r\n toString: (value: number, delegatedUserRoleName: string) => {\r\n switch (value) {\r\n case onboardingDelegationStatus.None:\r\n return \"None\";\r\n case onboardingDelegationStatus.PendingReview:\r\n return `Pending [${delegatedUserRoleName}] Review`;\r\n case onboardingDelegationStatus.Accepted:\r\n return `[${delegatedUserRoleName}] Approved`;\r\n case onboardingDelegationStatus.Declined:\r\n return `[${delegatedUserRoleName}] Declined`;\r\n default:\r\n return `Delegation status: ${value}`;\r\n }\r\n },\r\n};\r\n\r\nexport default onboardingDelegationStatus;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n BasicTable,\r\n ModalPopup,\r\n} from \"isuppli-react-components\";\r\nimport { getOnboardingReqeustComments } from \"../../../http/Onboarding/OnboardingApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport CommentMessage from \"./CommentMessage\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n\r\nconst CommentModal = ({\r\n onClose,\r\n onboardingRequestId = -1,\r\n}\r\n:\r\n{\r\n onClose: () => void,\r\n onboardingRequestId: number\r\n}) => {\r\n const [loading, setLoading] = useState(true);\r\n const [comments, setComments] = useState();\r\n\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const load = async () => {\r\n const results: { comments: CommentMessage[] } = await getOnboardingReqeustComments(onboardingRequestId);\r\n setComments(results.comments);\r\n };\r\n\r\n setLoading(true);\r\n\r\n try {\r\n load();\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n }, [setLoading, setComments, getOnboardingReqeustComments]);\r\n\r\n return (\r\n \r\n [\r\n {\r\n key: `type${comment.onboardingId}`,\r\n value: comment.commentType,\r\n },\r\n {\r\n key: `date${comment.onboardingId}`,\r\n value: comment.date,\r\n },\r\n {\r\n key: `user${comment.onboardingId}`,\r\n value: comment.user,\r\n },\r\n {\r\n key: `reason${comment.onboardingId}`,\r\n value: comment.reason,\r\n },\r\n ]) ?? []}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default CommentModal;\r\n","import React, { Fragment, useState, useEffect } from \"react\";\r\nimport {\r\n ModalPopup,\r\n Spinner,\r\n} from \"isuppli-react-components\";\r\n\r\nimport StaticCompanyData from \"../../../Hooks/StaticCompanyData\";\r\nimport staticCompanyDataTypes, {\r\n StaticCompanyDataTypes,\r\n} from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport useStaticCompanyData from \"../../../Hooks/useStaticCompanyData\";\r\nimport { getSupplierPaymentTermsId, updateSupplierPaymentTerms } from \"../../../http/Onboarding/OnboardingApi\";\r\n\r\nimport Styles from \"./PaymentTermsUpdate.module.scss\";\r\n\r\nconst PaymentTermsUpdate = ({\r\n companyId,\r\n onCloseCallback,\r\n}: {\r\n companyId: number;\r\n onCloseCallback: () => void;\r\n}) => {\r\n const [loading, setLoading] = useState(true);\r\n const [internalValue, setInternalValue] = useState();\r\n const [text, setText] = useState('');\r\n\r\n useEffect(() => {\r\n getSupplierPaymentTermsId(companyId)\r\n .then((value) => {\r\n setInternalValue(value);\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n onCloseCallback();\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }, [companyId]);\r\n \r\n const [[paymentTerms], isReady] = useStaticCompanyData([\r\n StaticCompanyDataTypes.paymentTerms,\r\n ]);\r\n\r\n // dropdown options for payment terms\r\n const buildSelection = () => {\r\n const optionsToShow = paymentTerms.map((terms, i) => {\r\n return (\r\n \r\n );\r\n });\r\n return (\r\n setInternalValue(parseInt(e.target.value))}\r\n >\r\n {optionsToShow}\r\n \r\n );\r\n };\r\n \r\n return (\r\n \r\n \r\n onCloseCallback()}\r\n hasCancel\r\n heading=\"Update Payment Terms\"\r\n subheading=\"\"\r\n size=\"medium\"\r\n buttons={[\r\n {\r\n key: \"ok\",\r\n label: \"Save\",\r\n onClick: () => {\r\n updateSupplierPaymentTerms(companyId, internalValue as number, text)\r\n .then(() => {\r\n onCloseCallback();\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n },\r\n color: \"primary\",\r\n },\r\n ]}\r\n >\r\n
    \r\n

    \r\n Update payment terms to reflect your current business\r\n

    \r\n
    \r\n
    \r\n {isReady && !loading ? buildSelection() : }\r\n \r\n
    \r\n
    \r\n setText(ev.target.value)}\r\n placeholder={'COMMENTS'}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default PaymentTermsUpdate;\r\n","import React, { Fragment, useState, useEffect } from \"react\";\r\nimport {\r\n ModalPopup,\r\n Spinner,\r\n} from \"isuppli-react-components\";\r\n\r\nimport StaticCompanyData from \"../../../Hooks/StaticCompanyData\";\r\nimport staticCompanyDataTypes, {\r\n StaticCompanyDataTypes,\r\n} from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport useStaticCompanyData from \"../../../Hooks/useStaticCompanyData\";\r\nimport { bulkEmailUpdate, getSupplierPaymentTermsId, updateSupplierPaymentTerms } from \"../../../http/Onboarding/OnboardingApi\";\r\n\r\nimport Styles from \"./BulkEmailUpdate.module.scss\";\r\n\r\nconst BulkEmailUpdate = ({\r\n onboardingRequestId,\r\n onCloseCallback,\r\n onUpdatedCallback,\r\n}: {\r\n onboardingRequestId: number;\r\n onCloseCallback: () => void;\r\n onUpdatedCallback: () => void;\r\n}) => {\r\n const [loading, setLoading] = useState(false);\r\n const [text, setText] = useState('');\r\n \r\n return (\r\n \r\n onCloseCallback()}\r\n hasCancel\r\n heading=\"Update Email\"\r\n subheading=\"\"\r\n size=\"medium\"\r\n buttons={[\r\n {\r\n key: \"ok\",\r\n label: \"Update\",\r\n onClick: () => {\r\n // regex to check if email is valid\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(text)) {\r\n alert('Please enter a valid email address');\r\n return;\r\n }\r\n setLoading(true);\r\n bulkEmailUpdate(onboardingRequestId, text.trim())\r\n .then(() => {\r\n onUpdatedCallback();\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n },\r\n color: \"primary\",\r\n },\r\n ]}\r\n >\r\n {loading && }\r\n {!loading &&
    \r\n

    \r\n Update Email for suppliers\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n setText(ev.target.value)}\r\n placeholder={'New Email'}\r\n rows={1}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    }\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default BulkEmailUpdate;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport {\r\n Table, TableActionsItem, SystemFeatures, ConfirmationModal,\r\n SearchFiltersContainer,\r\n FilterTypes,\r\n hasFeature,\r\n HelpIcon,\r\n} from \"isuppli-react-components\";\r\n\r\nimport { getStaticValue, formatDate } from \"../../Util/valueFormatter\";\r\nimport OnboardingRequestOrigin from \"../../Util/Enumerators/onboardingRequestOrigin\";\r\n\r\nimport OnboardingSearch from \"../OnboardingSearch/OnboardingSearch\";\r\nimport SupplierCheckModal from \"../../Containers/Marketplace/SupplierChecksModal/SupplierCheckModal\";\r\nimport AgreementsModal from \"../../Containers/AgreementsModal/AgreementsModal\";\r\n\r\nimport { overallComplianceStatus, overallComplianceStatusToString } from \"../../Util/Enumerators/overallComplianceStatus\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\n\r\nimport Loading from \"../Loading\";\r\n\r\nimport ComposeMessageModal from \"../../Containers/SupplierSearch/CompseMessageModal/ComposeMessageModal\";\r\n\r\nimport {\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showErrorDialog,\r\n setStaticCompanyData,\r\n} from \"../../Store/actions\";\r\nimport { setOnboardingRequestObject } from \"../../Store/onboardingRequestActions\";\r\n\r\nimport onboardingStatuses from \"../../Util/Enumerators/onboardingStatuses\";\r\nimport onboardingFilterOptions from \"../../Util/Enumerators/onboardingFilterOptions\";\r\n\r\nimport {\r\n sortingValues,\r\n getTableConfig,\r\n} from \"./OnboardingRequestConfiguration\";\r\n\r\nimport {\r\n getOnboardingRequests,\r\n deleteOnboardingRequest,\r\n approveOnboardingRequest,\r\n declineOnboardingRequest,\r\n sendOnboardingRequestEmail,\r\n retractOnboardingRequest,\r\n acceptOnboardingRequest,\r\n updateOnboardingRequestDelegationStatus,\r\n suspendOnboardingRequest,\r\n addComment,\r\n} from \"../../http/index\";\r\nimport SupplierDetailsModal from \"../SupplierDetailsModal\";\r\nimport {\r\n StaticCompanyDataTypes, // eslint-disable-line no-unused-vars\r\n} from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\nimport StaticCompanyData from \"../../Hooks/StaticCompanyData\";\r\nimport StaticData from \"../../Hooks/StaticData\";\r\n\r\nimport { createProductServiceSummary } from \"../../Util/dataTransform\";\r\nimport UpdateVendorNumberModal from \"../../Containers/UpdateVendorNumberModal/UpdateVendorNumberModal\";\r\nimport { getOnboardingConfiguration } from \"../../http/EnterpriseConfiguration/enterpriseConfiguration\";\r\nimport VendorNumberOrigin from \"../../Util/Enumerators/vendorNumberOriginEnum\";\r\nimport DelegateMTOApprovalModal from \"../OnboardingSearch/DelegateMTOApprovalModal\";\r\nimport onboardingDelegationStatus from \"../../Util/Enumerators/OnboardingDelegationStatus\";\r\nimport { getContractTiers } from \"../../http/Contracting/contractingApi\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport CommentModal from \"./CommentModal/CommentModal\";\r\nimport PaymentTermsUpdate from \"./PaymentTermsUpdate/PaymentTermsUpdate\";\r\nimport BulkEmailUpdate from \"./BulkEmailUpdate/BulkEmailUpdate\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: { ...state.registration.prdInfo, companyId: state.currentCompanyId },\r\n businessUnits: (state.staticCompanyData[StaticCompanyDataTypes.businessUnit] ?? []),\r\n supplierCategories: (state.staticCompanyData[StaticCompanyDataTypes.supplierCategory] ?? []),\r\n userBusinessUnitIds: state.loggedInUserDetails.businessUnitIds,\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n roles: state.staticCompanyData[StaticCompanyDataTypes.roles] ?? [],\r\n contractTiers: state.staticCompanyData[StaticCompanyDataTypes.contractTiers],\r\n paymentTerms: state.staticCompanyData[StaticCompanyDataTypes.paymentTerms] ?? [],\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setOption: (optionName, optionValues) => {\r\n dispatch(setOption(optionName, optionValues));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n setOnboardingRequestToEdit: (onbordingRequest) => {\r\n dispatch(setOnboardingRequestObject(onbordingRequest));\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n setContractTiers: (contractTiers) => {\r\n dispatch(setStaticCompanyData([{\r\n type: StaticCompanyDataTypes.contractTiers,\r\n value: contractTiers,\r\n }], true));\r\n },\r\n});\r\n\r\nclass OnboardingRequest extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n onboardingRequests: {\r\n items: [],\r\n totalItems: 0,\r\n limit: 20,\r\n offset: 0,\r\n },\r\n limit: 20,\r\n offset: 0,\r\n showSupplierStatus: false,\r\n supplierStatusCompany: {},\r\n searchTerm: \"\",\r\n showDeleteConfirm: false,\r\n showApproveConfirm: false,\r\n showApproveDelegatedReviewConfirm: false,\r\n showDeclineDelegatedReviewConfirm: false,\r\n showDeclineConfirm: false,\r\n showSuspendConfirm: false,\r\n showSendEmailConfirm: false,\r\n showRetractConfirm: false,\r\n showAcceptWithExceptionConfirm: false,\r\n showComplianceDeclineConfirm: false,\r\n showMessageModal: false,\r\n showOnboardingApprovalCommentModal: false,\r\n showAddCommentModal: false,\r\n showUpdatePaymentTermsModal: false,\r\n showUpdateBulkEmailModal: false,\r\n filterValues: [],\r\n sortOption: sortingValues.newestFirst,\r\n filterOption: onboardingFilterOptions.Active,\r\n showViewMoreModal: false,\r\n company: null,\r\n onboardingRequestId: null,\r\n dataLoading: true,\r\n showUpdateVendorNumberModal: false,\r\n showDelegateApprovalModal: false,\r\n manullyAssignVendorNumber: false,\r\n companyIdToPerformAction: null,\r\n };\r\n }\r\n\r\n findOnboardingRequest(onboardingId) {\r\n return this.state.onboardingRequests.items.find(\r\n (item) => item.onboardingId === onboardingId\r\n );\r\n }\r\n\r\n featureCheck(feature) {\r\n if (typeof (feature) === \"bigint\") {\r\n return hasFeature(\r\n this.props.allowedFeatures,\r\n feature\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n canSeeApproveButton(item) {\r\n return ((this.featureCheck(SystemFeatures.OnboardingApprove1) && item.onboardingStatus === onboardingStatuses.pendingApproval1)\r\n || (this.featureCheck(SystemFeatures.OnboardingApprove2) && item.onboardingStatus === onboardingStatuses.pendingApproval2)\r\n || (this.featureCheck(SystemFeatures.OnboardingAddSupplierApproval)\r\n && item.onboardingStatus === onboardingStatuses.PendingAddSupplierApproval))\r\n && item.delegationStatus !== onboardingDelegationStatus.PendingReview\r\n && item.delegationStatus !== onboardingDelegationStatus.Declined;\r\n }\r\n\r\n static canSeeSendMessageOption(item) {\r\n return (item.onboardingStatus === onboardingStatuses.awaitingCompliance\r\n || item.onboardingStatus === onboardingStatuses.complianceFailure\r\n || item.onboardingStatus === onboardingStatuses.profileIncomplete\r\n || item.onboardingStatus === onboardingStatuses.pendingApproval1\r\n || item.onboardingStatus === onboardingStatuses.pendingApproval2\r\n || item.onboardingStatus === onboardingStatuses.PendingAddSupplierApproval\r\n || item.onboardingStatus === onboardingStatuses.declined\r\n || item.onboardingStatus === onboardingStatuses.suspended\r\n || item.onboardingStatus === onboardingStatuses.awaitingContractApprovals\r\n || item.onboardingStatus === onboardingStatuses.awaitingVendorNumber\r\n || item.onboardingStatus === onboardingStatuses.completed);\r\n }\r\n\r\n canSeeSuspendButton(item) {\r\n return this.featureCheck(SystemFeatures.CanSuspendMTO)\r\n && (item.onboardingStatus === onboardingStatuses.pendingApproval1\r\n || item.onboardingStatus === onboardingStatuses.pendingApproval2\r\n || item.onboardingStatus === onboardingStatuses.PendingAddSupplierApproval);\r\n }\r\n\r\n canSeeUpdatePaymentTermsButton(item) {\r\n return (this.props?.paymentTerms?.length > 0);\r\n }\r\n\r\n canSeeComments(item) {\r\n return item.onboardingStatus !== onboardingStatuses.New;\r\n }\r\n\r\n tableConfig = getTableConfig([\r\n item.onboardingStatus !== onboardingStatuses.New\r\n && item.onboardingStatus !== onboardingStatuses.invitationPending\r\n }\r\n key=\"viewSupplier\"\r\n onClick={async (items) => {\r\n const companyId = this.findOnboardingRequest(items[0]).supplierCompanyId;\r\n if (!companyId) {\r\n // null supplier id\r\n } else {\r\n this.toggleViewMoreModal({ companyId });\r\n }\r\n }}\r\n >\r\n View Supplier Details\r\n ,\r\n item.onboardingStatus !== onboardingStatuses.New\r\n && item.onboardingStatus !== onboardingStatuses.invitationPending\r\n }\r\n shouldDisable={() => this.props.contractTiers?.length <= 0}\r\n key=\"agreements\"\r\n onClick={async (items) => {\r\n const onboardingRequest = this.state.onboardingRequests.items.find(\r\n (item) => item.onboardingId === items[0]\r\n );\r\n if (!onboardingRequest) {\r\n // null supplier id\r\n } else {\r\n this.toggleAgreementsModal({\r\n companyId: onboardingRequest.supplierCompanyId,\r\n registeredName: onboardingRequest.registeredName,\r\n });\r\n }\r\n }}\r\n >\r\n View Agreements\r\n ,\r\n {\r\n const onboardingRequest = this.state.onboardingRequests.items.find(\r\n (item) => item.onboardingId === items[0]\r\n );\r\n if (onboardingRequest) {\r\n this.toggleCommentModal(onboardingRequest.id);\r\n }\r\n }}\r\n >\r\n View Comments\r\n ,\r\n item.onboardingStatus !== onboardingStatuses.New\r\n && item.onboardingStatus !== onboardingStatuses.invitationPending\r\n && item.onboardingStatus !== onboardingStatuses.awaitingRegistration}\r\n key=\"viewChecks\"\r\n feature={SystemFeatures.SupplierChecks}\r\n onClick={(ids) => {\r\n const item = this.state.onboardingRequests.items.find((c) => c.id === ids[0]);\r\n this.toggleSupplierStatus(item);\r\n }}\r\n >\r\n View Compliance Management Details\r\n ,\r\n item.onboardingStatus === onboardingStatuses.New\r\n || item.onboardingStatus === onboardingStatuses.declined\r\n\r\n // bulk import supplier\r\n || ((item.onboardingStatus === onboardingStatuses.manualSupplierInvitationPending\r\n || item.onboardingStatus === onboardingStatuses.invitationPending)\r\n && item.origin === OnboardingRequestOrigin.BulkSupplierImport\r\n )}\r\n key=\"delete\"\r\n onClick={(items) => this.toggleDeleteConfirm(items[0])}\r\n >\r\n Delete Onboarding Request\r\n ,\r\n item.onboardingStatus === onboardingStatuses.New\r\n || item.onboardingStatus === onboardingStatuses.declined}\r\n key=\"edit\"\r\n onClick={async (items) => {\r\n this.props.history.push(`${this.props.location.pathname}/${items[0]}`);\r\n }}\r\n >\r\n Edit Onboarding Request\r\n ,\r\n this.canSeeUpdatePaymentTermsButton(item)}\r\n onClick={(item) => {\r\n const companyId = this.findOnboardingRequest(item[0]).supplierCompanyId;\r\n if (!companyId) {\r\n // null supplier id\r\n } else {\r\n this.toggleUpdatePaymentTermsModal(companyId);\r\n }\r\n }}\r\n >\r\n Update Payment Terms\r\n ,\r\n item.origin === OnboardingRequestOrigin.BulkSupplierImport\r\n && (item.onboardingStatus === onboardingStatuses.New\r\n || item.onboardingStatus === onboardingStatuses.invitationPending\r\n || item.onboardingStatus === onboardingStatuses.manualSupplierInvitationPending\r\n || item.onboardingStatus === onboardingStatuses.networkVendorInvitationPending)}\r\n onClick={(item) => this.toggleUpdateBulkEmailModal(item[0])}\r\n >\r\n Update Email\r\n ,\r\n item.onboardingStatus === onboardingStatuses.pendingApproval1\r\n && item.delegationStatus === onboardingDelegationStatus.PendingReview}\r\n key=\"approveDelegatedPendingReview\"\r\n feature={SystemFeatures.ApproveDelegatedOnboardingRequestApproval1}\r\n onClick={(items) => {\r\n this.toggleApproveDelegateConfirm(items[0]);\r\n }}\r\n >\r\n Approve Onboarding Request (Preliminary Review)\r\n ,\r\n item.delegationStatus === onboardingDelegationStatus.PendingReview}\r\n key=\"declineDelegatedPendingReview\"\r\n feature={SystemFeatures.ApproveDelegatedOnboardingRequestApproval1}\r\n onClick={(items) => {\r\n this.toggleDeclineDelegateConfirm(items[0]);\r\n }}\r\n >\r\n Decline Onboarding Request (Preliminary Review)\r\n ,\r\n this.canSeeApproveButton(item)}\r\n key=\"approve\"\r\n feature={\r\n // eslint-disable-next-line no-bitwise\r\n SystemFeatures.OnboardingApprove1\r\n | SystemFeatures.OnboardingApprove2\r\n | SystemFeatures.OnboardingAddSupplierApproval\r\n }\r\n onClick={(items) => {\r\n this.toggleApproveConfirm(items[0]);\r\n }}\r\n >\r\n Approve Onboarding Request\r\n ,\r\n item.onboardingStatus === onboardingStatuses.pendingApproval2\r\n && item.delegationStatus === onboardingDelegationStatus.PendingReview}\r\n key=\"approveDelegatedPendingReview\"\r\n feature={SystemFeatures.ApproveDelegatedOnboardingRequestApproval2}\r\n onClick={(items) => {\r\n this.toggleApproveDelegateConfirm(items[0]);\r\n }}\r\n >\r\n Approve Onboarding Request (Preliminary Review)\r\n ,\r\n item.delegationStatus === onboardingDelegationStatus.PendingReview}\r\n key=\"declineDelegatedPendingReview\"\r\n feature={SystemFeatures.ApproveDelegatedOnboardingRequestApproval2}\r\n onClick={(items) => {\r\n this.toggleDeclineDelegateConfirm(items[0]);\r\n }}\r\n >\r\n Decline Onboarding Request (Preliminary Review)\r\n ,\r\n item.onboardingStatus === onboardingStatuses.awaitingVendorNumber\r\n && this.state.manullyAssignVendorNumber\r\n && this.featureCheck(SystemFeatures.AssignManualManualVendorNumber)}\r\n key=\"allocateVendorNumber\"\r\n feature={SystemFeatures.AssignManualManualVendorNumber}\r\n onClick={(items) => {\r\n this.toggleUpdateVendorNumberModal(items[0]);\r\n }}\r\n >\r\n Allocate Vendor Number\r\n ,\r\n item.onboardingStatus === onboardingStatuses.pendingApproval2\r\n && item.delegationStatus === onboardingDelegationStatus.None\r\n && this.featureCheck(SystemFeatures.DelegateOnboardingRequestApproval2)}\r\n key=\"delegateOnboardingApproval2\"\r\n feature={SystemFeatures.DelegateOnboardingRequestApproval2}\r\n onClick={(items) => {\r\n this.toggleDelegateApprovalModal(items[0]);\r\n }}\r\n >\r\n Delegate Approval\r\n ,\r\n item.onboardingStatus === onboardingStatuses.pendingApproval1\r\n || item.onboardingStatus === onboardingStatuses.pendingApproval2\r\n || item.onboardingStatus === onboardingStatuses.PendingAddSupplierApproval}\r\n key=\"decline\"\r\n feature={\r\n // eslint-disable-next-line no-bitwise\r\n SystemFeatures.OnboardingApprove1\r\n | SystemFeatures.OnboardingApprove2\r\n | SystemFeatures.OnboardingAddSupplierApproval\r\n }\r\n onClick={(items) => this.toggleDeclineConfirm(items[0])}\r\n >\r\n Decline Onboarding Request\r\n ,\r\n this.canSeeSuspendButton(item)}\r\n key=\"suspend\"\r\n feature={\r\n // eslint-disable-next-line no-bitwise\r\n SystemFeatures.CanSuspendMTO\r\n }\r\n onClick={(items) => this.toggleSuspendConfirm(items[0])}\r\n >\r\n Suspend Onboarding Request\r\n ,\r\n item.onboardingStatus === onboardingStatuses.suspended}\r\n key=\"amend\"\r\n feature={\r\n // eslint-disable-next-line no-bitwise\r\n SystemFeatures.OnboardingCreateRequest\r\n | SystemFeatures.OnboardingApprove1\r\n | SystemFeatures.OnboardingApprove2\r\n | SystemFeatures.OnboardingAddSupplier\r\n | SystemFeatures.OnboardingAddSupplierApproval\r\n }\r\n onClick={async (items) => {\r\n this.props.history.push(`${this.props.location.pathname}/${items[0]}`);\r\n }}\r\n >\r\n Amend Request\r\n ,\r\n (\r\n item.onboardingStatus === onboardingStatuses.invitationPending\r\n || item.onboardingStatus === onboardingStatuses.manualSupplierInvitationPending\r\n )\r\n || item.onboardingStatus === onboardingStatuses.networkVendorInvitationPending}\r\n key=\"sendEmail\"\r\n onClick={(items) => this.toggleSendEmailConfirm(items[0])}\r\n > \r\n Resend Onboarding Request Email\r\n ,\r\n (item.onboardingStatus === onboardingStatuses.invitationPending\r\n || item.onboardingStatus === onboardingStatuses.awaitingRegistration\r\n || item.onboardingStatus === onboardingStatuses.awaitingCompliance\r\n || item.onboardingStatus === onboardingStatuses.complianceFailure\r\n || item.onboardingStatus === onboardingStatuses.profileIncomplete\r\n || item.onboardingStatus === onboardingStatuses.pendingApproval1\r\n || item.onboardingStatus === onboardingStatuses.pendingApproval2\r\n || item.onboardingStatus === onboardingStatuses.awaitingContractApprovals)}\r\n key=\"retract\"\r\n // eslint-disable-next-line no-bitwise\r\n feature={SystemFeatures.OnboardingCreateRequest}\r\n onClick={(items) => this.toggleRetractConfirm(items[0])}\r\n >\r\n Retract Onboarding Request\r\n ,\r\n item.canAcceptWithException}\r\n key=\"accept-with-exception\"\r\n onClick={(items) => this.toggleAcceptWithExceptionConfirm(items[0])}\r\n >\r\n Accept With Exception\r\n ,\r\n item.onboardingStatus === onboardingStatuses.complianceFailure}\r\n key=\"compliance-error-decline\"\r\n onClick={(items) => this.toggleComplianceDeclineConfirm(items[0])}\r\n >\r\n Decline Onboarding Request\r\n ,\r\n OnboardingRequest.canSeeSendMessageOption(item)}\r\n key=\"message\"\r\n onClick={(items) => {\r\n const company = this.state.onboardingRequests.items.find(\r\n (item) => item.onboardingId === items[0]\r\n );\r\n this.toggleMessageModal(company);\r\n }}\r\n >\r\n Send Message to Supplier\r\n ,\r\n {\r\n this.toggleAddComment(items[0]);\r\n }}\r\n >\r\n Add Comment\r\n ,\r\n ]);\r\n\r\n toggleSupplierStatus = (item) => {\r\n this.setState((prevState) => ({\r\n showSupplierStatus: !prevState.showSupplierStatus,\r\n supplierStatusCompany: {\r\n id: item?.supplierCompanyId,\r\n name: item?.registeredName,\r\n },\r\n }));\r\n };\r\n\r\n updateOnboardingLists(onboardingId) {\r\n this.setState((prevState) => {\r\n // update onboarding list\r\n const newOnboarding = prevState.onboardingRequests.items.filter((item) => {\r\n if (item.onboardingId === onboardingId) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n const onboardingRequests = {\r\n ...prevState.onboardingRequests,\r\n items: newOnboarding,\r\n totalItems: newOnboarding.length,\r\n };\r\n return {\r\n onboardingRequests,\r\n };\r\n });\r\n }\r\n\r\n deleteOnboarding = async (onboardingId) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n await deleteOnboardingRequest(onboardingId);\r\n\r\n this.updateOnboardingLists(onboardingId);\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n approveOnboarding = async (onboardingId, reason) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n await approveOnboardingRequest(onboardingId, reason);\r\n\r\n // will change this back after user roles are in effect\r\n // this.updateOnboardingLists(onboardingId);\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n declineOnboarding = async (onboardingId, reason) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n await declineOnboardingRequest(onboardingId, reason);\r\n\r\n // this.updateOnboardingLists(onboardingId);\r\n // will change this back after user roles are in effect\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n // Suspends an Onboarding request, and saves the reason.\r\n suspendOnboarding = async (onboardingId, reason) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n await suspendOnboardingRequest(onboardingId, reason);\r\n\r\n // Leaving this comment here (in case it is relevant to this function):\r\n // this.updateOnboardingLists(onboardingId);\r\n // will change this back after user roles are in effect\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n sendOnboardingEmail = async (onboardingId) => {\r\n try {\r\n this.props.showLoadingScreen(\"sending email...\");\r\n\r\n await sendOnboardingRequestEmail(onboardingId);\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n retractOnboarding = async (onboardingId) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n await retractOnboardingRequest(onboardingId);\r\n\r\n // this.updateOnboardingLists(onboardingId);\r\n // will change this back after user roles are in effect\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n acceptOnboarding = async (onboardingId, reason) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n await acceptOnboardingRequest(onboardingId, reason);\r\n\r\n // this.updateOnboardingLists(onboardingId);\r\n // will change this back after user roles are in effect\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n preliminiaryAcceptOnboarding = async (onboardingId) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n await updateOnboardingRequestDelegationStatus(onboardingId, onboardingDelegationStatus.Accepted);\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n preliminiaryDeclineOnboarding = async (onboardingId, reason) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n await updateOnboardingRequestDelegationStatus(onboardingId, onboardingDelegationStatus.Declined, reason);\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n addComment = async (onboardingId, comment) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n await addComment({\r\n onboardingRequestId: onboardingId,\r\n comment,\r\n });\r\n await this.loadOnboardingRequests();\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n };\r\n\r\n toggleViewMoreModal = (company) => {\r\n this.setState((prevState) => ({\r\n showViewMoreModal: !prevState.showViewMoreModal,\r\n company,\r\n }));\r\n };\r\n\r\n toggleAgreementsModal = (company) => {\r\n this.setState((prevState) => ({\r\n showAgreementsModal: !prevState.showAgreementsModal,\r\n company,\r\n }));\r\n };\r\n\r\n toggleMessageModal = () => {\r\n this.setState((prevState) => ({\r\n showMessageModal: !prevState.showMessageModal,\r\n }));\r\n };\r\n\r\n toggleCommentModal = (onboardingRequestId) => {\r\n this.setState((prevState) => ({\r\n showOnboardingApprovalCommentModal: !prevState.showOnboardingApprovalCommentModal,\r\n onboardingRequestId,\r\n }));\r\n };\r\n\r\n toggleAddCommentModal = (onboardingRequestId) => {\r\n this.setState((prevState) => ({\r\n showAddCommentModal: !prevState.showAddCommentModal,\r\n onboardingRequestId,\r\n }));\r\n };\r\n\r\n // state toggle methods\r\n toggleStateProp = (currentItemForAction = null, statePropName = null) => {\r\n if (statePropName != null) {\r\n this.setState((prevState) => ({\r\n [statePropName]: !prevState[statePropName],\r\n currentItemForAction: currentItemForAction || -1,\r\n }));\r\n }\r\n };\r\n\r\n toggleDeleteConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showDeleteConfirm\");\r\n };\r\n\r\n toggleApproveConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showApproveConfirm\");\r\n };\r\n\r\n toggleApproveDelegateConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showApproveDelegatedReviewConfirm\");\r\n };\r\n\r\n toggleUpdateVendorNumberModal = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showUpdateVendorNumberModal\");\r\n };\r\n\r\n toggleDelegateApprovalModal = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showDelegateApprovalModal\");\r\n };\r\n\r\n toggleDeclineConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showDeclineConfirm\");\r\n };\r\n\r\n toggleDeclineDelegateConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showDeclineDelegatedReviewConfirm\");\r\n };\r\n\r\n // Display or hide the Suspend Opportunity modal\r\n toggleSuspendConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showSuspendConfirm\");\r\n };\r\n\r\n toggleRetractConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showRetractConfirm\");\r\n };\r\n\r\n toggleAcceptWithExceptionConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showAcceptWithExceptionConfirm\");\r\n };\r\n\r\n toggleComplianceDeclineConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showComplianceDeclineConfirm\");\r\n };\r\n\r\n toggleSendEmailConfirm = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showSendEmailConfirm\");\r\n };\r\n\r\n toggleAddComment = (currentItemForAction = null) => {\r\n this.toggleStateProp(currentItemForAction, \"showAddCommentModal\");\r\n };\r\n\r\n async onNewOnboardingRequestHandler() {\r\n this.props.history.push(`${this.props.location.pathname}/new`);\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n getOboardingStatusDisplay(item) {\r\n if (item.onboardingStatus === onboardingStatuses.pendingApproval2 && item.delegationStatus > onboardingDelegationStatus.None) {\r\n let userRoleName = this.props.roles.find((x) => x.roleId === item.approval2DelegatedRoleId)?.display;\r\n if (userRoleName.length > 23) { userRoleName = `${userRoleName.substring(0, 20)}...`; }\r\n return (\r\n
    \r\n {onboardingDelegationStatus.toString(item.delegationStatus, userRoleName)}\r\n {\r\n item.delegationStatus === onboardingDelegationStatus.Declined && (\r\n \r\n )\r\n }\r\n
    \r\n );\r\n }\r\n\r\n return onboardingStatuses.toString(\r\n item.onboardingStatus\r\n );\r\n }\r\n\r\n loadOnboardingRequests = async () => {\r\n this.setState({\r\n dataLoading: true,\r\n });\r\n try {\r\n const dateFilter = this.state.filterValues[0];\r\n let startDate = null;\r\n let endDate = null;\r\n if (dateFilter != null) {\r\n startDate = dateFilter[0];\r\n endDate = dateFilter[1];\r\n }\r\n\r\n const businessUnitIds = this.state.filterValues[1] ?? [];\r\n const overallComplianceStatuses = this.state.filterValues[2] ?? [];\r\n const { items, totalItems } = await getOnboardingRequests({\r\n limit: this.state.limit,\r\n offset: this.state.offset,\r\n businessUnitIds: businessUnitIds.length > 0 ? businessUnitIds : undefined,\r\n startDate: startDate ?? undefined,\r\n endDate: endDate ?? undefined,\r\n registeredName: this.state.searchTerm ?? undefined,\r\n overallComplianceStatuses: overallComplianceStatuses.length > 0\r\n ? overallComplianceStatuses\r\n : undefined,\r\n newestFirst: this.state.sortOption === sortingValues.newestFirst,\r\n onboardingRequestSearchFilter: this.state.filterOption,\r\n });\r\n\r\n this.setState({\r\n dataLoading: false,\r\n });\r\n\r\n this.setState((prevState, prevProps) => {\r\n // Convert enum to string value\r\n const formattedItems = items.map((item) => ({\r\n ...item,\r\n onboardingStatusDisplay: this.getOboardingStatusDisplay(item),\r\n dateRequestedDisplay:\r\n item.onboardingStatus === onboardingStatuses.New\r\n ? \"N/A\"\r\n : formatDate(item.dateRequested),\r\n businessUnit:\r\n (item.businessUnitIds != null && item.businessUnitIds.length > 0)\r\n ? item.businessUnitIds.map((businessUnitId) => (\r\n getStaticValue(businessUnitId, prevProps.businessUnits)\r\n )).join(\", \")\r\n : \"Not set\",\r\n generalEmail: (\r\n item.generalEmail ?? \"N/A\"\r\n ),\r\n subcategories:\r\n (item.supplierSubCategoryIds != null && item.supplierSubCategoryIds.length > 0)\r\n ? createProductServiceSummary(\r\n item.supplierSubCategoryIds, prevProps.supplierCategories\r\n )\r\n ?.map((iSum, i) => (\r\n \r\n {i !== 0\r\n && (\r\n \r\n |\r\n \r\n )}\r\n \r\n {`${iSum.heading}: ${iSum.items.join(\", \")}`}\r\n \r\n \r\n ))\r\n : \"Not set\",\r\n id: item.onboardingId,\r\n }));\r\n\r\n const onboardingRequests = {\r\n items: formattedItems,\r\n totalItems,\r\n limit: prevState.limit,\r\n offset: prevState.offset,\r\n };\r\n\r\n return {\r\n onboardingRequests,\r\n };\r\n });\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n throw error;\r\n }\r\n };\r\n\r\n searchTermChangeHandler(searchTerm) {\r\n this.setState({\r\n searchTerm,\r\n }, async () => {\r\n await this.loadOnboardingRequests();\r\n });\r\n }\r\n\r\n onSearch = async () => {\r\n await this.loadOnboardingRequests();\r\n }\r\n\r\n onClear() {\r\n this.setState(\r\n {\r\n searchTerm: \"\",\r\n filterValues: [],\r\n },\r\n () => {\r\n this.onSearch();\r\n }\r\n );\r\n }\r\n\r\n onSortChangeHandler(newSortOption) {\r\n this.setState({\r\n sortOption: newSortOption,\r\n }, async () => {\r\n await this.loadOnboardingRequests();\r\n });\r\n }\r\n\r\n onStatusFilterChangeHandler(newStatusFilterOption) {\r\n this.setState({\r\n filterOption: newStatusFilterOption,\r\n }, async () => {\r\n await this.loadOnboardingRequests();\r\n });\r\n }\r\n\r\n toggleUpdatePaymentTermsModal(companyId) {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showUpdatePaymentTermsModal: !prevState.showUpdatePaymentTermsModal,\r\n companyIdToPerformAction: companyId,\r\n }));\r\n }\r\n\r\n toggleUpdateBulkEmailModal(onboardingRequestId) {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showUpdateBulkEmailModal: !prevState.showUpdateBulkEmailModal,\r\n onboardingRequestId,\r\n }));\r\n }\r\n\r\n async componentDidMount() {\r\n const loadContractTiers = async () => {\r\n // load contracting tiers\r\n if (this.props.contractTiers == null || this.props.contractTiers.length === 0) {\r\n try {\r\n const contractTiers = await getContractTiers();\r\n const formattedContractTiers = contractTiers.map(\r\n (c) => ({ ...c, value: c.id, display: c.name })\r\n );\r\n this.props.setContractTiers(formattedContractTiers);\r\n } catch {\r\n this.props.setContractTiers([]);\r\n }\r\n }\r\n };\r\n loadContractTiers();\r\n await this.loadOnboardingRequests();\r\n const onboardingConfig = await getOnboardingConfiguration();\r\n this.setState({\r\n manullyAssignVendorNumber: onboardingConfig?.vendorNumberOrigin === VendorNumberOrigin.ManualAssignment,\r\n });\r\n }\r\n\r\n render() {\r\n const supplierChecks = [\r\n {\r\n value: overallComplianceStatus.Outstanding,\r\n display: overallComplianceStatusToString(overallComplianceStatus.Outstanding),\r\n }, {\r\n value: overallComplianceStatus.Success,\r\n display: overallComplianceStatusToString(overallComplianceStatus.Success),\r\n }, {\r\n value: overallComplianceStatus.Failure,\r\n display: overallComplianceStatusToString(overallComplianceStatus.Failure),\r\n },\r\n ];\r\n\r\n const filters = [\r\n {\r\n filterName: \"Date Requested\",\r\n propName: \"dateRequested\",\r\n filterType: FilterTypes.DateRangeInput,\r\n },\r\n {\r\n filterName: \"Compliance Management Status\",\r\n propName: \"supplierChecksStatus\",\r\n options: supplierChecks,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n ];\r\n\r\n if (this.props.businessUnits.length > 0) {\r\n filters.splice(1, 0, {\r\n filterName: \"Business Unit\",\r\n propName: \"businessUnitId\",\r\n options: this.props.businessUnits.filter(\r\n (businessUnit) => this.props.userBusinessUnitIds.includes(businessUnit.id)\r\n ),\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n });\r\n }\r\n\r\n const { tableConfig } = this;\r\n tableConfig.sortOptions.selectedSortOption = this.state.sortOption;\r\n tableConfig.statusFilterOptions.selectedStatusFilterOption = this.state.filterOption;\r\n tableConfig.statusFilterOptions.options = tableConfig.statusFilterOptions\r\n .options\r\n .filter((x) => (\r\n // Filter delegate option\r\n ((x.value === onboardingFilterOptions.PendingDelegatedReview\r\n || x.value === onboardingFilterOptions.DelegatedApproved\r\n || x.value === onboardingFilterOptions.DelegatedDeclined)\r\n && (hasFeature(this.props.allowedFeatures, SystemFeatures.ApproveDelegatedOnboardingRequestApproval2)\r\n || hasFeature(this.props.allowedFeatures, SystemFeatures.DelegateOnboardingRequestApproval2))\r\n )\r\n // Filter subscription tier\r\n || ((x.value === onboardingFilterOptions.New\r\n || x.value === onboardingFilterOptions.AwaitingSupplierInvitationAcceptance\r\n || x.value === onboardingFilterOptions.AwaitingSupplierRegistration\r\n || x.value === onboardingFilterOptions.ProfileIncomplete\r\n || x.value === onboardingFilterOptions.AwaitingComplianceChecks\r\n || x.value === onboardingFilterOptions.ComplianceFailure\r\n || x.value === onboardingFilterOptions.PendingApproval1\r\n || x.value === onboardingFilterOptions.PendingApproval2)\r\n && hasFeature(this.props.allowedFeatures, SystemFeatures.OnboardingCreateRequest))\r\n // Filter contract agreements\r\n //|| (x.value === onboardingFilterOptions.AwaitingContractApproval && this.props.contractTiers?.length > 0)\r\n // Include defaults\r\n || x.value === onboardingFilterOptions.AwaitingContractApproval\r\n || x.value === onboardingFilterOptions.Active\r\n || x.value === onboardingFilterOptions.All\r\n || x.value === onboardingFilterOptions.Declined\r\n || x.value === onboardingFilterOptions.Suspended\r\n || x.value === onboardingFilterOptions.Completed));\r\n\r\n if (this.props.contractTiers?.length <= 0)\r\n {\r\n tableConfig.statusFilterOptions.options = tableConfig.statusFilterOptions\r\n .options\r\n .filter((x) => (x.value !== onboardingFilterOptions.AwaitingContractApproval));\r\n }\r\n \r\n return (\r\n
    \r\n \r\n \r\n\r\n {this.state.showViewMoreModal && (\r\n this.toggleViewMoreModal(null)}\r\n />\r\n )}\r\n\r\n {this.state.showAgreementsModal && (\r\n this.toggleAgreementsModal(null)}\r\n />\r\n )}\r\n\r\n \r\n\r\n {this.state.showDeleteConfirm && (\r\n this.deleteOnboarding(this.state.currentItemForAction)}\r\n />\r\n )}\r\n\r\n {this.state.showSupplierStatus && (\r\n \r\n )}\r\n\r\n {this.state.showApproveConfirm && (\r\n this.approveOnboarding(this.state.currentItemForAction, reason)\r\n }\r\n captureType=\"text\"\r\n capturePlaceholder=\"Enter a reason for approving the request\"\r\n />\r\n )}\r\n\r\n {this.state.showApproveDelegatedReviewConfirm && (\r\n this.preliminiaryAcceptOnboarding(this.state.currentItemForAction)}\r\n />\r\n )}\r\n\r\n {this.state.showDeclineConfirm && (\r\n this.declineOnboarding(this.state.currentItemForAction, reason)\r\n }\r\n captureType=\"text\"\r\n capturePlaceholder=\"Enter a reason for declining the request\"\r\n />\r\n )}\r\n\r\n {this.state.showDeclineDelegatedReviewConfirm && (\r\n this.preliminiaryDeclineOnboarding(this.state.currentItemForAction, reason)\r\n }\r\n captureType=\"text\"\r\n capturePlaceholder=\"Enter a reason for declining the request\"\r\n />\r\n )}\r\n\r\n {this.state.showSuspendConfirm && (\r\n this.suspendOnboarding(this.state.currentItemForAction, reason)\r\n }\r\n captureType=\"text\"\r\n capturePlaceholder=\"Enter a reason for suspending the request\"\r\n />\r\n )}\r\n\r\n {this.state.showSendEmailConfirm && (\r\n this.sendOnboardingEmail(this.state.currentItemForAction)\r\n }\r\n />\r\n )}\r\n\r\n {this.state.showRetractConfirm && (\r\n this.retractOnboarding(this.state.currentItemForAction)}\r\n />\r\n )}\r\n\r\n {this.state.showMessageModal && (\r\n this.toggleMessageModal()}\r\n />\r\n )}\r\n\r\n {this.state.showAcceptWithExceptionConfirm && (\r\n this.acceptOnboarding(this.state.currentItemForAction, reason)\r\n }\r\n captureType=\"text\"\r\n capturePlaceholder=\"Enter a reason for accepting the request\"\r\n />\r\n )}\r\n\r\n {this.state.showComplianceDeclineConfirm && (\r\n this.declineOnboarding(this.state.currentItemForAction, reason)\r\n }\r\n captureType=\"text\"\r\n capturePlaceholder=\"Enter a reason for declining the request\"\r\n />\r\n )}\r\n\r\n {\r\n this.state.showUpdateVendorNumberModal && (\r\n this.toggleUpdateVendorNumberModal()}\r\n onSubmitCallback={async () => {\r\n // to-do: update this to load list in front-end\r\n await this.loadOnboardingRequests();\r\n }}\r\n />\r\n )\r\n }\r\n\r\n {\r\n this.state.showDelegateApprovalModal && (\r\n this.toggleDelegateApprovalModal()}\r\n onSubmitCallback={async () => {\r\n // to-do: update this to load list in front-end\r\n await this.loadOnboardingRequests();\r\n }}\r\n />\r\n )\r\n }\r\n\r\n {\r\n this.state.showOnboardingApprovalCommentModal && (\r\n this.toggleCommentModal()}\r\n />\r\n )\r\n }\r\n\r\n {\r\n this.state.showAddCommentModal && (\r\n this.addComment(this.state.currentItemForAction, reason)\r\n }\r\n captureType=\"text\"\r\n capturePlaceholder=\"Enter a comment here\"\r\n />\r\n )\r\n }\r\n \r\n {this.state.showUpdatePaymentTermsModal && (\r\n this.toggleUpdatePaymentTermsModal()}\r\n />\r\n )}\r\n\r\n {this.state.showUpdateBulkEmailModal && (\r\n this.toggleUpdateBulkEmailModal(null)}\r\n onUpdatedCallback={() => {\r\n this.toggleUpdateBulkEmailModal(null);\r\n this.loadOnboardingRequests();\r\n }}\r\n />\r\n )}\r\n\r\n
    \r\n
    \r\n this.setState({ searchTerm })}\r\n onSearchCallback={() => this.loadOnboardingRequests()}\r\n onNewOnboardingRequest={() => this.onNewOnboardingRequestHandler()}\r\n />\r\n
    \r\n this.onClear(), color: \"secondary\",\r\n }, {\r\n key: \"search\", label: \"Search\", onClick: () => this.onSearch(), color: \"primary\",\r\n }]}\r\n onChange={(f) => this.setState({ filterValues: f })}\r\n filters={filters}\r\n />\r\n
    \r\n {\r\n this.setState({\r\n limit,\r\n offset,\r\n }, async () => { await this.loadOnboardingRequests(); });\r\n }}\r\n tableConfig={tableConfig}\r\n data={this.state.onboardingRequests}\r\n tableStyle=\"compact\"\r\n title=\"LATEST ONBOARDING REQUESTS\"\r\n onSortOptionChange={(newSortOption) => this.onSortChangeHandler(newSortOption)}\r\n onStatusFilterChange={\r\n (newStatusFilterOption) => this.onStatusFilterChangeHandler(newStatusFilterOption)\r\n }\r\n loading={this.state.dataLoading}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(OnboardingRequest)\r\n);\r\n","import React from \"react\";\r\nimport { ProgressIndicator, PageHeading } from \"isuppli-react-components\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\n\r\nfunction MTPProgress({\r\n currentStep,\r\n lastStepCompleted,\r\n steps,\r\n onClick,\r\n}) {\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default MTPProgress;\r\n","/* eslint-disable no-unused-vars */\r\nenum CompanyConfigurationFeatures {\r\n None = 0,\r\n Contracting = 0x1,\r\n MTOCompanyProductsAndFamilies = 0x2,\r\n MTOProductAndSegments = 0x4,\r\n MTORestrictions = 0x8,\r\n MTOMotivation = 0x10,\r\n}\r\nexport default CompanyConfigurationFeatures;\r\n","enum ContactPersonClassificationTypes {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n PrimaryContact = 1, // eslint-disable-line no-unused-vars\r\n SecondaryContact = 2, // eslint-disable-line no-unused-vars\r\n}\r\nexport default ContactPersonClassificationTypes;\r\n","/* eslint-disable no-bitwise */\r\nimport { ConfirmationModal, Spinner, DataFeatures } from \"isuppli-react-components\";\r\nimport React, { Fragment, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport {\r\n // eslint-disable-next-line import/named\r\n getContractAgreements,\r\n submitOnboardingRequest,\r\n} from \"../../../http\";\r\n\r\nimport MTPProgress from \"../../../Sections/Marketplace/MTPProgress\";\r\nimport { setOnboardingRequestObject } from \"../../../Store/onboardingRequestActions\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../../Store/ReduxState\";\r\nimport CompanyConfigurationFeatures from \"../../../Util/Enumerators/CompanyConfigurationFeatures\";\r\nimport onboardingStatuses from \"../../../Util/Enumerators/onboardingStatuses\";\r\n\r\nimport WizzardBtns from \"../../WizzardBtns\";\r\nimport useStaticCompanyData from \"../../../Hooks/useStaticCompanyData\";\r\nimport { StaticCompanyDataTypes } from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\nconst OnboardingWizard = ({\r\n children,\r\n currentStep,\r\n lastStepCompleted,\r\n isManualSupplier,\r\n onboardingId,\r\n onClickSaveAndContinue,\r\n onClickNext,\r\n}: {\r\n children: React.ReactNode,\r\n currentStep: number,\r\n lastStepCompleted: number,\r\n isManualSupplier: boolean,\r\n onboardingId: number,\r\n onClickSaveAndContinue: () => void,\r\n onClickNext: (nextUrl: string) => Promise,\r\n}) => {\r\n const history = useHistory();\r\n const allowedCompanyFeatures = useSelector(\r\n (state: ReduxState) => (state.companyConfiguration.allowedCompanyFeatures)\r\n );\r\n const dispatch = useDispatch();\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n const [showMTOCompletedModal, setShowMTOCompletedModal] = useState(false);\r\n const [showManualSuppierModal, setShowManualSupplierModal] = useState(false);\r\n const onboardingData = useSelector((state: ReduxState) => state.onboardingRequest);\r\n\r\n const [[supplierTypes], isReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.supplierType]\r\n );\r\n const supplierTypeDataFeatures: DataFeatures = isReady\r\n ? supplierTypes\r\n .find((supplierType) => supplierType.id === onboardingData?.supplierTypeId)?.dataFeatures\r\n : DataFeatures.None;\r\n\r\n const steps = [\r\n \"COMPANY DETAILS\",\r\n ];\r\n\r\n const hasBankStep = (isReady && (supplierTypeDataFeatures & DataFeatures.BankingDetails));\r\n\r\n if (isManualSupplier) {\r\n steps.push(\"ADDRESS & CONTACT DETAILS\");\r\n steps.push(\"B-BBEE PRACTICES & CERTIFICATION\");\r\n if (hasBankStep) {\r\n steps.push(\"BANK DETAILS\");\r\n }\r\n steps.push(\"SUPPORTING DOCUMENTS & AGREEMENTS\");\r\n }\r\n\r\n if ((allowedCompanyFeatures & CompanyConfigurationFeatures.MTOProductAndSegments) > 0) {\r\n steps.push(\"PRODUCT SEGMENTS & FAMILIES\");\r\n } else\r\n if ((allowedCompanyFeatures & CompanyConfigurationFeatures.MTOCompanyProductsAndFamilies) > 0) {\r\n steps.push(\"COMPANY PRODUCTS & FAMILIES\");\r\n }\r\n\r\n if ((allowedCompanyFeatures & CompanyConfigurationFeatures.MTORestrictions) > 0) {\r\n steps.push(\"RESTRICTIONS\");\r\n }\r\n if ((allowedCompanyFeatures & CompanyConfigurationFeatures.MTOMotivation) > 0) {\r\n steps.push(\"MOTIVATION TO ONBOARD\");\r\n }\r\n const urlForStep = (stepIndex: number) => {\r\n const baseUrl = `/myoffice/onboardingrequest/${onboardingId}/${isManualSupplier ? \"m-\" : \"\"}`;\r\n return `${baseUrl}${stepIndex + 1}`;\r\n };\r\n\r\n const backUrl = currentStep === 0 ? null\r\n : urlForStep(currentStep - 1);\r\n\r\n const nextUrl = currentStep === steps.length - 1 ? \"\"\r\n : urlForStep(currentStep + 1);\r\n\r\n const isFinalStep = currentStep === steps.length - 1;\r\n const nextText = isFinalStep\r\n ? \"SUBMIT MOTIVATION TO ONBOARD AND COMPLETE\"\r\n : steps[currentStep + 1];\r\n\r\n const performSubmitOnboardingRequest = async () => {\r\n try {\r\n setLoading(true);\r\n if (!onboardingData.manualSupplier) {\r\n if (onboardingData.contractingTierId > 0) {\r\n const contractAgreements = await getContractAgreements(onboardingData.contractingTierId);\r\n onboardingData.contractTierAgreements = contractAgreements.map((c) => ({\r\n id: c.id,\r\n agreementName: c.agreementName,\r\n }));\r\n }\r\n }\r\n const submittedOnboardingRequest = await submitOnboardingRequest(onboardingData);\r\n setShowMTOCompletedModal(true);\r\n dispatch(setOnboardingRequestObject(submittedOnboardingRequest));\r\n setLoading(false);\r\n } catch (error) {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n\r\n const confirmationModalDescription = onboardingData?.onboardingStatus === onboardingStatuses.invitationPending\r\n ? \"Thank you for completing the Motivation to Onboard.\"\r\n + \"An invitation email has been sent to the company to complete the registration process.\"\r\n : \"Thank you for completing the Motivation to Onboard.\";\r\n\r\n return (\r\n \r\n {loading && }\r\n { showManualSuppierModal && (\r\n { setShowManualSupplierModal(false); }}\r\n proceedButtonText=\"OK\"\r\n description={`You are about to create a 'Manual Supplier' record.\r\n This company record will be visible only to your company users\r\n in the Directory, and the company will not have access to maintain\r\n their profile. The record will also bypass any contracting workflows\r\n which may apply. Do you wish to Proceed?`}\r\n />\r\n )}\r\n {\r\n showMTOCompletedModal && (\r\n setShowMTOCompletedModal(false)}\r\n onProceedClick={() => history.push(\"/myoffice/onboardingrequest\")}\r\n />\r\n )\r\n }\r\n {\r\n history.push(urlForStep(stepIndex));\r\n }}\r\n />\r\n {children}\r\n {\r\n if (isFinalStep) {\r\n await onClickNext(\"\");\r\n onboardingData.manualSupplier === true ? setShowManualSupplierModal(true)\r\n : performSubmitOnboardingRequest();\r\n } else {\r\n onClickNext(url);\r\n }\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default OnboardingWizard;\r\n","/* eslint no-nested-ternary: 0 */\r\nimport React, { Component, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n CheckboxInput,\r\n ConfirmationModal,\r\n SystemFeatures,\r\n WithFeature,\r\n MultiSelectDropDownInput,\r\n DropDownInput,\r\n} from \"isuppli-react-components\";\r\n\r\nimport {\r\n UncontrolledTooltip,\r\n} from \"reactstrap\";\r\nimport TextInput from \"../../Controls/TextInput/TextInput\";\r\nimport RadioSelector from \"../../Controls/RadioSelector\";\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\nimport {\r\n isValidEmail,\r\n filterOutLetters,\r\n companyNameFilter,\r\n minLength,\r\n validateVatNumber,\r\n maxLength,\r\n getRegNumberConfig,\r\n onCompanyTypeChangeHandler,\r\n} from \"../../Validation/onChangeValidations\";\r\nimport CompanyGroupingType from \"../../Util/Enumerators/CompanyGroupingType\";\r\n\r\nimport { setStaticCompanyData, showErrorDialog } from \"../../Store/actions\";\r\nimport {\r\n StaticCompanyDataTypes, // eslint-disable-line no-unused-vars\r\n} from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\nimport { getContractTiers, getContractAgreements } from \"../../http/Contracting/contractingApi\";\r\nimport StaticCompanyData from \"../../Hooks/StaticCompanyData\";\r\nimport CompanyConfigurationFeatures from \"../../Util/Enumerators/CompanyConfigurationFeatures\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n contractTiers: state.staticCompanyData[StaticCompanyDataTypes.contractTiers],\r\n supplierTypes: state.staticCompanyData[StaticCompanyDataTypes.supplierType],\r\n paymentTerms: state.staticCompanyData[StaticCompanyDataTypes.paymentTerms],\r\n allowedCompanyFeatures: state.companyConfiguration.allowedCompanyFeatures,\r\n currentUserEmail: state.loggedInUserDetails.email,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setContractTiers: (contractTiers) => {\r\n dispatch(setStaticCompanyData([{\r\n type: StaticCompanyDataTypes.contractTiers,\r\n value: contractTiers,\r\n }], true));\r\n },\r\n setPaymentTerms: (paymentTerms) => {\r\n dispatch(setStaticCompanyData([{\r\n type: StaticCompanyDataTypes.paymentTerms,\r\n value: paymentTerms,\r\n }], true));\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass CompanyDetails extends Component {\r\n resetVatNumber = (isVatRegistered) => {\r\n if (isVatRegistered) {\r\n const event = {\r\n target: {\r\n name: \"isVatRegistered\",\r\n value: \"\",\r\n },\r\n };\r\n this.props.onInputChangeCallback(event);\r\n }\r\n };\r\n\r\n // eslint-disable-next-line no-bitwise\r\n hasContractingFeature = (this.props.allowedCompanyFeatures\r\n & CompanyConfigurationFeatures.Contracting > 0);\r\n\r\n onSupplierTypeChange = () => {\r\n // reset contracting tier when supplier type is changed\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractingTierId\",\r\n value: null,\r\n },\r\n });\r\n\r\n // clear contract agreement options\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractAgreements\",\r\n value: [],\r\n },\r\n });\r\n }\r\n\r\n setContractingApplies = (selectedContractAgreements) => {\r\n if (selectedContractAgreements.length > 0) {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractingApplies\",\r\n value: true,\r\n },\r\n });\r\n } else {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractingApplies\",\r\n value: false,\r\n },\r\n });\r\n }\r\n }\r\n\r\n onContractTierChange = async (selectedContractTierId) => {\r\n // clear contract agreement options\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractAgreements\",\r\n value: [],\r\n },\r\n });\r\n\r\n // set selected contract tier\r\n const contractTier = this.props.contractTiers?.filter(\r\n (c) => c.id === selectedContractTierId\r\n )[0];\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"externalContractTierId\",\r\n value: contractTier?.externalContractTierId,\r\n },\r\n });\r\n\r\n // load and set contract agreement options\r\n try {\r\n if (!this.props.data.manualSupplier) { // contracting doesnt apply for manual supplier\r\n const contractAgreements = await this.loadContractAgreements(selectedContractTierId);\r\n\r\n // select all contracts by default\r\n const allContractAgreementsSelected = contractAgreements.map((c) => c.id);\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractAgreements\",\r\n value: allContractAgreementsSelected,\r\n },\r\n });\r\n\r\n // toggle contracting applies based on selected contract agreements\r\n this.setContractingApplies(allContractAgreementsSelected);\r\n } else {\r\n this.setContractingApplies(false);\r\n }\r\n } catch { this.props.showErrorDialog(); }\r\n }\r\n\r\n onPaymentTermsChange = (paymentTermsId) => {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"paymentTermsId\",\r\n value: paymentTermsId,\r\n },\r\n });\r\n }\r\n\r\n onContractAgreementsChange = (selectedContractAgreements) => {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractAgreements\",\r\n value: selectedContractAgreements,\r\n },\r\n });\r\n\r\n // toggle contracting applies based on selected contract agreements\r\n this.setContractingApplies(selectedContractAgreements);\r\n }\r\n\r\n loadContractAgreements = async (contractTierId) => {\r\n if (contractTierId > 0) {\r\n try {\r\n const contractAgreements = await getContractAgreements(contractTierId);\r\n const formattedContractAgreements = contractAgreements.map(\r\n (c) => ({ ...c, value: c.id, display: c.agreementName })\r\n );\r\n this.setState(({ contractAgreementsOptions: formattedContractAgreements }));\r\n return formattedContractAgreements;\r\n } catch {\r\n this.props.showErrorDialog();\r\n this.setState(({ contractAgreementsOptions: [] }));\r\n return [];\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n onCategoryManagerChange = (userId) => {\r\n if (this.props.data.categoryManagerUserId !== this.props.categoryManagerInitiator\r\n && (this.props.data.includeInitiator ?? true)) {\r\n this.onIncludeInitiatorChange(true);\r\n }\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"categoryManagerUserId\",\r\n value: userId,\r\n },\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n const loadContractTiers = async () => {\r\n // load contracting tiers\r\n if (this.props.contractTiers == null || this.props.contractTiers.length === 0) {\r\n try {\r\n const contractTiers = await getContractTiers();\r\n const formattedContractTiers = contractTiers.map(\r\n (c) => ({ ...c, value: c.id, display: c.name })\r\n );\r\n this.props.setContractTiers(formattedContractTiers);\r\n } catch {\r\n this.props.showErrorDialog();\r\n this.props.setContractTiers([]);\r\n }\r\n }\r\n };\r\n // eslint-disable-next-line no-bitwise\r\n if (this.hasContractingFeature) {\r\n loadContractTiers();\r\n }\r\n\r\n const useProps = this.props.data.lastStep === 1;\r\n\r\n let isVatRegistered = 0;\r\n if (useProps) {\r\n isVatRegistered = this.props.data.isVatRegistered;\r\n } else if (!!this.props.data.vatNumber && this.props.data.vatNumber.length > 0) {\r\n isVatRegistered = 1;\r\n }\r\n\r\n // load contract agreements if contractTier has been set/saved\r\n const loadContractAgreementList = async () => {\r\n const contractTier = this.props.data.contractingTierId;\r\n if (contractTier > 0) {\r\n await this.loadContractAgreements(contractTier);\r\n }\r\n };\r\n loadContractAgreementList();\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"isVatRegistered\",\r\n value: isVatRegistered,\r\n },\r\n });\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractingApplies\",\r\n value: this.props.data.contractingApplies,\r\n },\r\n });\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"externalContractTierId\",\r\n value: this.props.data.externalContractTierId,\r\n },\r\n });\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractAgreements\",\r\n value: this.props.data.contractAgreements,\r\n },\r\n });\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"manualSupplier\",\r\n value: this.props.data.manualSupplier || false,\r\n },\r\n });\r\n\r\n if (this.props.supplierTypes && this.props.supplierTypes.length <= 0) {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"supplierTypeId\",\r\n value: null,\r\n },\r\n });\r\n }\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"paymentTermsId\",\r\n value: this.props.data.paymentTermsId,\r\n },\r\n });\r\n }\r\n\r\n onIncludeInitiatorChange = (includeInitiator) => {\r\n if (includeInitiator) {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"categoryManagerInitiatorUserId\",\r\n value: this.props.categoryManagerInitiator,\r\n },\r\n });\r\n } else {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"categoryManagerInitiatorUserId\",\r\n value: null,\r\n },\r\n });\r\n }\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"includeInitiatorInCommunications\",\r\n value: includeInitiator,\r\n },\r\n });\r\n }\r\n\r\n onSponsorChange = (isSelected) => {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"sponsored\",\r\n value: isSelected,\r\n },\r\n });\r\n // deselect manual supplier if sponsored is selected\r\n if (isSelected === true) {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"manualSupplier\",\r\n value: false,\r\n },\r\n });\r\n }\r\n }\r\n\r\n // Handle the fundCompliance tickbox selection event:\r\n onFundComplianceChange = (isSelected) => {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"fundCompliance\",\r\n value: isSelected,\r\n },\r\n });\r\n\r\n // Deselect manual supplier if compliance funding is selected\r\n if (isSelected === true) {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"manualSupplier\",\r\n value: false,\r\n },\r\n });\r\n }\r\n }\r\n\r\n handleShowManualSupplierModal = (showModal) => {\r\n this.setState({ showManualSupplierConfirmationModal: showModal });\r\n };\r\n\r\n onManualSupplierChange = (isSelected) => {\r\n if (isSelected) {\r\n this.handleShowManualSupplierModal(true);\r\n } else {\r\n this.setManualSupplier(false);\r\n }\r\n }\r\n\r\n setManualSupplier = (isSelected) => {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"manualSupplier\",\r\n value: isSelected,\r\n },\r\n });\r\n if (isSelected) {\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"sponsored\",\r\n value: false,\r\n },\r\n });\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"fundCompliance\",\r\n value: false,\r\n },\r\n });\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"fundCompliance\",\r\n value: false,\r\n },\r\n });\r\n\r\n this.props.onInputChangeCallback({\r\n target: {\r\n name: \"contractingApplies\",\r\n value: false,\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let disableFields = false;\r\n let disableCheckbox = false;\r\n if (this.props.data.supplierCompanyId != null) {\r\n disableCheckbox = true;\r\n // disable fields if not manual supplier\r\n if (!this.props.data.manualSupplier) { disableFields = true; }\r\n }\r\n\r\n const currentCompanyType = this.props.companyTypes.filter(\r\n (c) => c.id === this.props.data.companyTypeId\r\n )[0];\r\n\r\n const selectedCompanyTypeName = currentCompanyType?.name;\r\n const isForeignCompany = currentCompanyType?.companyGroupingType === CompanyGroupingType.Foreign;\r\n const regNumberConfig = getRegNumberConfig(selectedCompanyTypeName, this.props.setStepValid);\r\n\r\n return (\r\n
    \r\n {this.state && this.state.showManualSupplierConfirmationModal\r\n && (\r\n { this.setManualSupplier(true); }}\r\n onToggleModal={() => { this.handleShowManualSupplierModal(false); }}\r\n proceedButtonText=\"OK\"\r\n description=\"You are about to create a 'Manual Supplier' record.\r\n This company record will be visible only to your company users\r\n in the Directory, and the company will not have access to maintain\r\n their profile. The record will also bypass any contracting workflows\r\n which may apply. Do you wish to Proceed?\"\r\n />\r\n )}\r\n \r\n \r\n
    \r\n
    \r\n this.onSponsorChange(selected)}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n this.onFundComplianceChange(selected)}\r\n />\r\n \r\n \r\n {\r\n this.props.data.alreadySponsored\r\n && (\r\n \r\n This supplier is already sponsored for compliance\r\n \r\n )\r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.onManualSupplierChange(selected)}\r\n />\r\n
    \r\n \r\n {\r\n this.props.data.alreadySponsored\r\n && (\r\n \r\n Cannot create as manual record because the company already exists.\r\n \r\n )\r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {\r\n this.props.onInputChangeCallback(ev);\r\n onCompanyTypeChangeHandler(\r\n ev,\r\n this.props.companyTypes,\r\n this.props.onInputChangeCallback\r\n );\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {this.props.businessUnits.length > 0\r\n ? (\r\n \r\n
    \r\n {\r\n const newEvent = {\r\n target: {\r\n name: \"businessUnitIds\",\r\n value: selectedItems,\r\n },\r\n };\r\n this.props.onInputChangeCallback(newEvent);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n )\r\n : null}\r\n {\r\n this.props.data.manualSupplier !== true && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n
    \r\n\r\n
    \r\n {\r\n this.props.supplierCategoryManagers?.length > 0 && (\r\n \r\n
    \r\n ({\r\n value: val.userId,\r\n display: val.fullName,\r\n }))}\r\n onChange={(val) => { this.onCategoryManagerChange(val); }}\r\n required\r\n />\r\n
    \r\n
    \r\n \r\n )\r\n }\r\n
    \r\n\r\n
    \r\n {\r\n ((this.props.categoryManagerInitiator ?? false)\r\n && this.props.categoryManagerInitiator !== this.props.data.categoryManagerUserId\r\n && (this.props.data.categoryManagerUserId ?? false))\r\n && (\r\n this.onIncludeInitiatorChange(selected)}\r\n />\r\n )\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n {Number(this.props.data.isVatRegistered) === 1 && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n {\r\n (this.props.supplierTypes && this.props.supplierTypes.length > 0) && (\r\n
    \r\n
    \r\n x.isHiddenFromView !== true)}\r\n additional={this.props.data.manualSupplier === true ? \"\" : this.props.additional.supplierTypeId}\r\n onChangeCallback={(ev) => {\r\n const newEvent = { ...ev };\r\n newEvent.target.value = ev.target.value < 0 ? null : ev.target.value;\r\n this.props.onInputChangeCallback(newEvent);\r\n this.onSupplierTypeChange();\r\n }}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n {\r\n (this.props.paymentTerms && this.props.paymentTerms.length > 0) && (\r\n
    \r\n
    \r\n {\r\n const newEvent = { ...ev };\r\n newEvent.target.value = ev.target.value < 0 ? null : ev.target.value;\r\n this.props.onInputChangeCallback(newEvent);\r\n this.onPaymentTermsChange(ev.target.value);\r\n }}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n {\r\n // eslint-disable-next-line no-bitwise\r\n ((this.props.allowedCompanyFeatures & this.hasContractingFeature) > 0)\r\n && (\r\n
    \r\n
    \r\n contractTier.supplierTypeId === this.props.data.supplierTypeId\r\n ).map(\r\n (contractTier) => ({ ...contractTier, display: `${contractTier.externalContractTierId} - ${contractTier.display}` })\r\n ) ?? []}\r\n additional={this.props.data.manualSupplier === true ? \"\" : this.props.additional.contractingTierId}\r\n onChangeCallback={(ev) => {\r\n const newEvent = { ...ev };\r\n newEvent.target.value = ev.target.value < 0 ? null : ev.target.value;\r\n this.props.onInputChangeCallback(newEvent);\r\n this.onContractTierChange(ev.target.value);\r\n }}\r\n disabled={\r\n this.props.data.supplierTypeId == null\r\n || this.props.data.supplierTypeId === -1\r\n }\r\n />\r\n
    \r\n {\r\n this.props.data.manualSupplier !== true && (\r\n
    \r\n {\r\n this.onContractAgreementsChange(selectedItems);\r\n }}\r\n />\r\n
    \r\n )\r\n }\r\n
    \r\n )\r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanyDetails);\r\n","const supplierStatuses = {\r\n incomplete: 0,\r\n potential: 10,\r\n\r\n busyOnboarding: 20,\r\n\r\n existing: 50,\r\n blocked: 100,\r\n\r\n toString: (value) => {\r\n switch (value) {\r\n case supplierStatuses.incomplete:\r\n return \"Incomplete\";\r\n case supplierStatuses.potential:\r\n return \"Potential\";\r\n case supplierStatuses.busyOnboarding:\r\n return \"Busy Onboarding\";\r\n case supplierStatuses.existing:\r\n return \"Existing\";\r\n case supplierStatuses.blocked:\r\n return \"Blocked\";\r\n default:\r\n return `Supplier status ${value}`;\r\n }\r\n },\r\n};\r\n\r\nexport default supplierStatuses;\r\n","import React, { Component } from \"react\";\r\nimport { ModalPopup, CheckboxInput } from \"isuppli-react-components\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport supplierStatuses from \"../../Util/Enumerators/supplierStatuses\";\r\n\r\nimport { duplicateCompanyIntoManualSupplier, resolveDuplicateRequest } from \"../../http\";\r\nimport { showErrorDialog } from \"../../Store/actions\";\r\n\r\nconst mapStateToProps = () => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass DuplicateRequestModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedDuplicate: 0,\r\n };\r\n }\r\n\r\n onInputChange = (selected, index) => {\r\n this.setState({\r\n selectedDuplicate: selected ? index : -1,\r\n });\r\n };\r\n\r\n getCheckboxInput = (supplierStatus, i) => (\r\n this.onInputChange(selected, i)}\r\n />\r\n );\r\n\r\n getDuplicatesTable = () => {\r\n const rows = this.props.duplicates.map((request, i) => (\r\n \r\n {this.getCheckboxInput(request.supplierStatus, i)}\r\n\r\n {request.registeredName}\r\n\r\n {supplierStatuses.toString(request.supplierStatus)}\r\n\r\n {request.vatNumber}\r\n\r\n {request.registrationNumber}\r\n \r\n ));\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rows}\r\n
    SelectSupplier Registered NameSupplier statusVat numberRegistration number
    \r\n );\r\n };\r\n\r\n render() {\r\n const hasPotential = this.props.duplicates.some((x) => x.supplierStatus === supplierStatuses.potential);\r\n return (\r\n -1 ? \"primary\" : \"disabled\",\r\n onClick: async () => {\r\n // send duplicate to resolve duplicate\r\n if (this.state.selectedDuplicate > -1) {\r\n const newRequest = {\r\n ...this.props.currentRequest,\r\n supplierCompanyId: this.props.duplicates[this.state.selectedDuplicate].companyId,\r\n };\r\n const result = await resolveDuplicateRequest(newRequest);\r\n this.props.onProceed(result);\r\n }\r\n },\r\n } : {\r\n key: \"duplicate\",\r\n label: \"Create Manual Duplicate\",\r\n color: \"secondary\",\r\n onClick: async () => {\r\n // create dupliacte company record\r\n try {\r\n const result = await duplicateCompanyIntoManualSupplier(this.props.currentRequest);\r\n this.props.onProceed(result);\r\n } catch {\r\n this.props.showErrorDialog();\r\n }\r\n },\r\n },\r\n ]}\r\n >\r\n {this.getDuplicatesTable()}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(DuplicateRequestModal)\r\n);\r\n","import React from \"react\";\r\n\r\nconst SuspensionMessageBanner = ({\r\n suspensionReason = \"\",\r\n}\r\n:\r\n{\r\n suspensionReason: string\r\n}) => (\r\n <>\r\n
    \r\n

    This onboarding request was suspended. Below is the reason:

    \r\n

    {suspensionReason}

    \r\n

    Please address the issues raised above and resubmit the request.

    \r\n
    \r\n \r\n);\r\n\r\nexport default SuspensionMessageBanner;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { ConfirmationModal, MTOMandatoryField, isMandatory } from \"isuppli-react-components\";\r\nimport { Alert } from \"reactstrap\";\r\nimport OnboardingWizard from \"../../Containers/Marketplace/OnboardingWizard/OnboardingWizard\";\r\nimport CompanyDetails from \"../../Containers/Marketplace/CompanyDetails\";\r\n\r\nimport { saveOnboardingRequest } from \"../../http/posts\";\r\nimport { getCompanyCategoryManagers, getDuplicateRequests } from \"../../http/gets\";\r\n\r\nimport {\r\n setStoreProperty,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showInfoPopup,\r\n hideInfoPopup,\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\nimport {\r\n setOnboardingRequestObject,\r\n onOnboardingInputChange,\r\n} from \"../../Store/onboardingRequestActions\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\n\r\nimport { loadAddOnboardingRequestOptions } from \"../../Util/optionsLoader\";\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsMTP1, requiredFieldsManualSupplierMTP1, requiredMandatoryFieldsStep1 } from \"../../Validation/validation\";\r\nimport Loading from \"../Loading\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport DuplicateRequestModal from \"./DuplicateRequestModal\";\r\n\r\nimport {\r\n onCompanyTypeChangeHandler,\r\n} from \"../../Validation/onChangeValidations\";\r\nimport {\r\n StaticCompanyDataTypes, // eslint-disable-line no-unused-vars\r\n} from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport StaticCompanyData from \"../../Hooks/StaticCompanyData\";\r\nimport CompanyConfigurationFeatures from \"../../Util/Enumerators/CompanyConfigurationFeatures\";\r\n\r\nimport SuspensionMessageBanner from \"./SuspensionMessageBanner/SuspensionMessageBanner\";\r\nimport { checkHttpStatus } from \"../../http/httpHelpers\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: state.onboardingRequest,\r\n companyTypes: state.options.companyTypes,\r\n businessUnits: (state.staticCompanyData[StaticCompanyDataTypes.businessUnit] ?? []).filter(\r\n (businessUnit) => state.loggedInUserDetails.businessUnitIds.includes(businessUnit.id)\r\n ),\r\n allowedCompanyFeatures: state.companyConfiguration.allowedCompanyFeatures,\r\n contractTiers: state.staticCompanyData[StaticCompanyDataTypes.contractTiers] ?? [],\r\n supplierTypes: state.staticCompanyData[StaticCompanyDataTypes.supplierType] ?? [],\r\n paymentTerms: state.staticCompanyData[StaticCompanyDataTypes.paymentTerms] ?? [],\r\n});\r\n\r\nconst mapDisatchToProps = (dispatch) => ({\r\n setMTPLastStep: (onboardingLastStepCompleted) => {\r\n dispatch(\r\n setStoreProperty(\r\n \"onboardingLastStepCompleted\",\r\n onboardingLastStepCompleted\r\n )\r\n );\r\n },\r\n updateOnboardingRequest: (onbordingRequest) => {\r\n dispatch(setOnboardingRequestObject(onbordingRequest));\r\n },\r\n onInputChange: (ev) => {\r\n dispatch(onOnboardingInputChange(ev));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setOption: (optionName, optionValues) => {\r\n dispatch(setOption(optionName, optionValues));\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass MTPCompanyDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: [],\r\n isStepValid: true,\r\n showConfirmMsg: false,\r\n showDuplicateModal: false,\r\n duplicates: [],\r\n categoryManagers: [],\r\n categoryManagerInitiator: false,\r\n };\r\n }\r\n\r\n performSave = async (onboardingRequest, saveOnly) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n const updatedOnboardingRequest = await saveOnboardingRequest(\r\n onboardingRequest,\r\n saveOnly\r\n );\r\n\r\n this.props.updateOnboardingRequest(updatedOnboardingRequest);\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n if (checkHttpStatus(error, 409)) {\r\n const duplicates = await getDuplicateRequests(\r\n this.props.data.companyTypeId,\r\n this.props.data.registrationNumber,\r\n this.props.data.onboardingId\r\n );\r\n this.toggleDuplicateModal(duplicates);\r\n } else {\r\n this.props.showErrorDialog();\r\n }\r\n this.props.hideLoadingScreen();\r\n throw error;\r\n }\r\n };\r\n\r\n onNextClick = async (nextUrl) => {\r\n let validation = {};\r\n const mtoMandatoryField = this.props.data.manualSupplier ? this.props.data.manualMTOMandatoryField : this.props.data.mtoMandatoryField;\r\n if (mtoMandatoryField === null) {\r\n // manual supplier MTO required fields\r\n if (this.props.data.manualSupplier === true) {\r\n validation = validateStep(this.props.data, requiredFieldsManualSupplierMTP1);\r\n } else { // required field for normal MTO\r\n validation = validateStep(this.props.data, requiredFieldsMTP1);\r\n if (this.props.supplierTypes.length > 0 && (this.props.data.supplierTypeId <= 0\r\n || this.props.data.supplierTypeId == null)) {\r\n validation.isValid = false;\r\n validation.msgs.supplierTypeId = \"Supplier type is required\";\r\n }\r\n\r\n if (\r\n this.props.data.isVatRegistered\r\n && (!this.props.data.vatNumber || this.props.data.vatNumber.length === 0)\r\n ) {\r\n validation.isValid = false;\r\n validation.msgs.vatNumber = \"Vat number required\";\r\n }\r\n\r\n // eslint-disable-next-line no-bitwise\r\n if ((this.props.allowedCompanyFeatures & CompanyConfigurationFeatures.Contracting) > 0) {\r\n if ((this.props.data.contractingTierId == null\r\n || this.props.data.contractingTierId <= 0)) {\r\n validation.isValid = false;\r\n validation.msgs.contractingTierId = \"Contracting tier is required\";\r\n }\r\n }\r\n }\r\n // required field for both manual supplier and normal MTO\r\n if (this.props.businessUnits.length > 0 && (this.props.data.businessUnitIds == null\r\n || this.props.data.businessUnitIds.length <= 0)) {\r\n validation.isValid = false;\r\n validation.msgs.businessUnitIds = \"Business unit is required\";\r\n }\r\n\r\n if (this.state.categoryManagers.length > 0\r\n && (this.props.data.categoryManagerUserId == null)) {\r\n validation.isValid = false;\r\n validation.msgs.categoryManagerUserId = \"Category manager is required\";\r\n }\r\n\r\n if (this.state.paymentTerms?.length > 0 && this.props.data.paymentTermsId == null) {\r\n validation.isValid = false;\r\n validation.msgs.paymentTermsId = \"Payment terms are required\";\r\n }\r\n } else {\r\n // Handle mandatory MTO fields\r\n\r\n // registrationNumber, registeredName, tradingName, companyType\r\n validation = validateStep(\r\n this.props.data,\r\n requiredMandatoryFieldsStep1.filter((x) => isMandatory(mtoMandatoryField, x.field))\r\n );\r\n\r\n // Vat number is required if company is vat registered\r\n if (\r\n this.props.data.isVatRegistered\r\n && (!this.props.data.vatNumber || this.props.data.vatNumber.length === 0)\r\n ) {\r\n validation.isValid = false;\r\n validation.msgs.vatNumber = \"Vat number is required\";\r\n }\r\n\r\n // manual supplier\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.ManualSupplier)\r\n && !this.props.data.manualSupplier) {\r\n validation.isValid = false;\r\n validation.msgs.manualSupplier = \"Manual supplier is required\";\r\n }\r\n\r\n // business units\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.BusinessUnit)\r\n && (this.props.businessUnits.length > 0\r\n && (this.props.data.businessUnitIds == null\r\n || this.props.data.businessUnitIds.length <= 0))) {\r\n validation.isValid = false;\r\n validation.msgs.businessUnitIds = \"Business unit is required\";\r\n }\r\n\r\n // catergory manager\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.CategoryManager)\r\n && (this.state.categoryManagers.length > 0\r\n && (this.props.data.categoryManagerUserId == null\r\n || this.props.data.categoryManagerUserId <= 0))) {\r\n validation.isValid = false;\r\n validation.msgs.categoryManagerUserId = \"Category manager is required\";\r\n }\r\n\r\n // supplier type\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.SupplierType)\r\n && this.props.supplierTypes.length > 0\r\n && (this.props.data.supplierTypeId <= 0\r\n || this.props.data.supplierTypeId == null)) {\r\n validation.isValid = false;\r\n validation.msgs.supplierTypeId = \"Supplier type is required\";\r\n }\r\n\r\n // contracting tier\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.ContractingTier)\r\n && this.props.contractTiers.length > 0\r\n && (this.props.data.contractingTierId == null\r\n || this.props.data.contractingTierId <= 0)) {\r\n validation.isValid = false;\r\n validation.msgs.contractingTierId = \"Contracting tier is required\";\r\n }\r\n\r\n // payment terms\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.PaymentTerms)\r\n && this.props.paymentTerms.length > 0\r\n && (this.props.data.paymentTermsId == null || this.props.data.paymentTermsId <= 0)) {\r\n validation.isValid = false;\r\n validation.msgs.paymentTermsId = \"Payment terms are required\";\r\n }\r\n }\r\n\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n\r\n if (validation.isValid) {\r\n if (this.state.isStepValid) {\r\n const onboardingRequest = {\r\n ...this.props.data,\r\n lastStepCompleted:\r\n this.props.stepNumber > this.props.data.lastStepCompleted\r\n ? this.props.stepNumber\r\n : this.props.data.lastStepCompleted,\r\n };\r\n\r\n await this.performSave(onboardingRequest, false);\r\n\r\n // next step\r\n if (nextUrl.length > 0) {\r\n this.props.history.push(nextUrl);\r\n }\r\n }\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevState) => ({\r\n showConfirmMsg: !prevState.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = async () => {\r\n const onboardingRequest = {\r\n ...this.props.data,\r\n };\r\n\r\n if (await this.performSave(onboardingRequest, true)) {\r\n this.props.history.length = 1;\r\n this.props.history.replace(\"/myoffice/onboardingrequest\");\r\n }\r\n };\r\n\r\n async componentDidMount() {\r\n const catmans = await getCompanyCategoryManagers();\r\n this.setState({\r\n categoryManagers: catmans.categoryManagers,\r\n categoryManagerInitiator: catmans.categoryManagerInitiator,\r\n });\r\n\r\n // auto select categoryManagerUserId (if applicable)\r\n if (this.props.data.categoryManagerUserId == null && catmans.categoryManagerInitiator != null) {\r\n const setDefaultCategoryManagerEvent = {\r\n target: {\r\n name: \"categoryManagerUserId\",\r\n value: catmans.categoryManagerInitiator,\r\n },\r\n };\r\n this.props.onInputChange(setDefaultCategoryManagerEvent);\r\n }\r\n\r\n this.props.hideInfoMsg();\r\n await loadAddOnboardingRequestOptions(\r\n this.props.companyTypes,\r\n this.props.setOption\r\n );\r\n\r\n if (this.props.data.onboardingId !== 0) {\r\n // Populate vat exempted\r\n onCompanyTypeChangeHandler({ target: { value: this.props.data.companyTypeId } },\r\n this.props.companyTypes, this.props.onInputChange, false);\r\n }\r\n }\r\n\r\n toggleDuplicateModal = (duplicates = []) => {\r\n this.setState({\r\n showDuplicateModal: duplicates.length > 0,\r\n duplicates,\r\n });\r\n };\r\n\r\n onDuplicateResolve = (result) => {\r\n this.props.updateOnboardingRequest(result);\r\n this.props.history.push(\r\n `/myoffice/onboardingrequest/${result.onboardingId}/${result.manualSupplier ? \"m-2\" : \"2\"}`\r\n );\r\n };\r\n\r\n closeDuplicateModal = () => {\r\n this.setState({\r\n showDuplicateModal: false,\r\n duplicates: [],\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n\r\n {this.state.showDuplicateModal && (\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n {this.props.data?.suspensionReason\r\n && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n

    STEP 01

    \r\n
    \r\n
    \r\n

    COMPANY INFORMATION

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n Please fill in the required fields below. All fields are\r\n mandatory unless stated otherwise.\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n this.setState({ isStepValid })}\r\n />\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDisatchToProps)(MTPCompanyDetails)\r\n);\r\n","import React, { Component } from \"react\";\r\n\r\nclass TextArea extends Component {\r\n onInputChange = (ev) => {\r\n this.props.onChangeCallback(ev);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {!!this.props.limit && (\r\n
    \r\n
    Characters left
    \r\n \r\n {\" \"}\r\n (\r\n {this.props.limit - (this.props.value || \"\").length}\r\n )\r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default TextArea;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { isMandatory, MTOMandatoryField } from \"isuppli-react-components\";\r\nimport Loading from \"../Loading\";\r\nimport OnboardingWizard from \"../../Containers/Marketplace/OnboardingWizard/OnboardingWizard\";\r\n\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\n\r\nimport TextArea from \"../../Controls/TextArea\";\r\n\r\nimport {\r\n setOnboardingRequestObject,\r\n onOnboardingInputChange,\r\n} from \"../../Store/onboardingRequestActions\";\r\nimport {\r\n setStoreProperty,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n hideInfoPopup,\r\n showInfoPopup,\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\nimport {\r\n saveOnboardingRequest,\r\n} from \"../../http/posts\";\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsMTP5 } from \"../../Validation/validation\";\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport SuspensionMessageBanner from \"./SuspensionMessageBanner/SuspensionMessageBanner\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: state.onboardingRequest,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setMTPLastStep: (onboardingLastStepCompleted) => {\r\n dispatch(\r\n setStoreProperty(\r\n \"onboardingLastStepCompleted\",\r\n onboardingLastStepCompleted\r\n )\r\n );\r\n },\r\n onOnboardingInputChange: (ev) => {\r\n dispatch(onOnboardingInputChange(ev));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n updateOnboardingRequest: (onbordingRequest) => {\r\n dispatch(setOnboardingRequestObject(onbordingRequest));\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass MTPRestrictions extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: [],\r\n showConfirmMsg: false,\r\n };\r\n }\r\n\r\n performSave = async (onboardingRequest, saveOnly) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n const savedOnboardingRequest = await saveOnboardingRequest(\r\n onboardingRequest,\r\n saveOnly\r\n );\r\n this.props.updateOnboardingRequest(savedOnboardingRequest);\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n throw error;\r\n }\r\n };\r\n\r\n onNextClick = async (nextUrl) => {\r\n const validation = validateStep(this.props.data, requiredFieldsMTP5);\r\n\r\n // Overrides validation if not mandatory\r\n const mtoMandatoryField = this.props.data.manualSupplier ? this.props.data.manualMTOMandatoryField : this.props.data.mtoMandatoryField;\r\n if (!isMandatory(mtoMandatoryField, MTOMandatoryField.Restrictions)) {\r\n validation.isValid = true;\r\n validation.msgs = [];\r\n }\r\n\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n if (validation.isValid) {\r\n const onboardingRequest = {\r\n ...this.props.data,\r\n lastStepCompleted:\r\n this.props.stepNumber > this.props.data.lastStepCompleted\r\n ? this.props.stepNumber\r\n : this.props.data.lastStepCompleted,\r\n };\r\n await this.performSave(onboardingRequest, true);\r\n // next step\r\n if (nextUrl.length > 0) {\r\n this.props.history.push(nextUrl);\r\n }\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevState) => ({\r\n showConfirmMsg: !prevState.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = async () => {\r\n await this.performSave(this.props.data, true);\r\n this.props.history.length = 1;\r\n this.props.history.replace(\"/myoffice/onboardingrequest\");\r\n };\r\n\r\n componentDidMount() {\r\n this.props.hideInfoMsg();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n\r\n
    \r\n {this.props.data.suspensionReason\r\n && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n

    {`STEP 0${this.props.stepNumber}`}

    \r\n
    \r\n
    \r\n

    RESTRICTIONS

    \r\n
    \r\n
    \r\n\r\n

    \r\n {isMandatory(this.props.data.mtoMandatoryField, MTOMandatoryField.Restrictions) && \"*required\"}\r\n

    \r\n\r\n \r\n

    \r\n Kaap Agri has business operations in both South Africa and Namibia.\r\n Please provide details of any legislative or contractual restrictions impacting\r\n the distribution and/or sale of the products in any such territories.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(MTPRestrictions)\r\n);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport Loading from \"../Loading\";\r\nimport OnboardingWizard from \"../../Containers/Marketplace/OnboardingWizard/OnboardingWizard\";\r\n\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\n\r\nimport TextArea from \"../../Controls/TextArea\";\r\n\r\nimport {\r\n setOnboardingRequestObject,\r\n onOnboardingInputChange,\r\n} from \"../../Store/onboardingRequestActions\";\r\nimport {\r\n setStoreProperty,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n hideInfoPopup,\r\n showInfoPopup,\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\nimport {\r\n saveOnboardingRequest,\r\n} from \"../../http/posts\";\r\nimport SaveAndContinueConfirm from \"../../Containers/Supplier/SaveAndContinueConfirm\";\r\nimport SuspensionMessageBanner from \"./SuspensionMessageBanner/SuspensionMessageBanner\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: state.onboardingRequest,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setMTPLastStep: (onboardingLastStepCompleted) => {\r\n dispatch(\r\n setStoreProperty(\r\n \"onboardingLastStepCompleted\",\r\n onboardingLastStepCompleted\r\n )\r\n );\r\n },\r\n onOnboardingInputChange: (ev) => {\r\n dispatch(onOnboardingInputChange(ev));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n updateOnboardingRequest: (onbordingRequest) => {\r\n dispatch(setOnboardingRequestObject(onbordingRequest));\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass MTPMotivation extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showConfirmMsg: false,\r\n };\r\n }\r\n\r\n performSave = async (onboardingRequest, saveOnly) => {\r\n try {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n const savedOnboardingRequest = await saveOnboardingRequest(\r\n onboardingRequest,\r\n saveOnly\r\n );\r\n this.props.updateOnboardingRequest(savedOnboardingRequest);\r\n\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n throw error;\r\n }\r\n };\r\n\r\n onNextClick = async (nextUrl) => {\r\n const onboardingRequest = {\r\n ...this.props.data,\r\n lastStepCompleted:\r\n this.props.stepNumber > this.props.data.lastStepCompleted\r\n ? this.props.stepNumber\r\n : this.props.data.lastStepCompleted,\r\n };\r\n await this.performSave(onboardingRequest, true);\r\n if (nextUrl.length > 0) {\r\n this.props.history.push(nextUrl);\r\n }\r\n };\r\n\r\n toggleConfirmSaveAndContinue = () => {\r\n this.setState((prevState) => ({\r\n showConfirmMsg: !prevState.showConfirmMsg,\r\n }));\r\n };\r\n\r\n saveAndContinueLater = async () => {\r\n await this.performSave(this.props.data, true);\r\n this.props.history.length = 1;\r\n this.props.history.replace(\"/myoffice/onboardingrequest\");\r\n };\r\n\r\n toggleMTPConfirmation = () => {\r\n this.setState((prevState) => ({\r\n showMTPConfirmation: !prevState.showMTPConfirmation,\r\n }));\r\n };\r\n\r\n toggleManualSupplierConfirmation = () => {\r\n this.setState((prevState) => ({\r\n showManualSupplierConfirmationModal: !prevState.showManualSupplierConfirmationModal,\r\n }));\r\n };\r\n\r\n componentDidMount() {\r\n this.props.hideInfoMsg();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.state.showConfirmMsg && (\r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n\r\n
    \r\n {this.props.onboardingRequest?.suspensionReason\r\n && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n

    {`STEP 0${this.props.stepNumber}`}

    \r\n
    \r\n
    \r\n

    MOTIVATION TO ONBOARD:

    \r\n
    \r\n
    \r\n\r\n \r\n

    \r\n What is your motivation for onboarding this supplier company?\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(MTPMotivation)\r\n);\r\n","import React, { Fragment, useState, useEffect } from \"react\";\r\nimport {\r\n CheckboxInput, ModalPopup, Spinner, FilterInput,\r\n} from \"isuppli-react-components\";\r\n\r\nimport StaticCompanyData from \"../../../Hooks/StaticCompanyData\";\r\nimport staticCompanyDataTypes, {\r\n StaticCompanyDataTypes,\r\n} from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport useStaticCompanyData from \"../../../Hooks/useStaticCompanyData\";\r\n\r\nconst OfferingSelector = ({\r\n selection,\r\n setSelection,\r\n onCloseCallback,\r\n}: {\r\n selection: number[];\r\n setSelection: (value: number[]) => void;\r\n onCloseCallback: () => void;\r\n}) => {\r\n const [internalSelection, setInternalSelection] = useState([]);\r\n\r\n useEffect(() => {\r\n setInternalSelection(selection);\r\n }, [selection]);\r\n\r\n const [[supplierCategories], isReady] = useStaticCompanyData([\r\n StaticCompanyDataTypes.supplierCategory,\r\n ]);\r\n\r\n const [filterTerm, setFilterTerm] = useState(\"\");\r\n\r\n const removeSupplierCategory = (item: number) => {\r\n setInternalSelection((prevState) => prevState.filter((sel) => sel !== item));\r\n };\r\n\r\n const addSupplierCategory = (item: number) => {\r\n setInternalSelection((prevState) => [...prevState, item]);\r\n };\r\n\r\n const toggleItem = (item: number, isSelected: boolean) => {\r\n if (isSelected) {\r\n removeSupplierCategory(item);\r\n } else {\r\n addSupplierCategory(item);\r\n }\r\n };\r\n\r\n const buildSelection = () => {\r\n const optionsToShow = supplierCategories.map((cat, i) => {\r\n const optionRows: JSX.Element[][] = [];\r\n let index = -1;\r\n cat.supplierSubCategories\r\n .filter((subCat: any) => (filterTerm.length === 0\r\n ? true\r\n : cat.display\r\n .toLocaleLowerCase()\r\n .includes(filterTerm.toLocaleLowerCase())\r\n || subCat.display\r\n .toLowerCase()\r\n .includes(filterTerm.toLocaleLowerCase())))\r\n .forEach((subCat: any, j: number) => {\r\n if (j % 3 === 0) {\r\n index += 1;\r\n optionRows.push([]);\r\n }\r\n const isSelected = !!internalSelection.find(\r\n (s) => s === subCat.value\r\n );\r\n optionRows[index].push(\r\n
    \r\n {\r\n toggleItem(subCat.value, isSelected);\r\n }}\r\n />\r\n
    \r\n );\r\n });\r\n const options = optionRows.map((row, k) => (\r\n
    \r\n {row}\r\n
    \r\n ));\r\n return options.length > 0 ? (\r\n
    \r\n \r\n

    {cat.display}

    \r\n
    \r\n
    {options}
    \r\n \r\n ) : null;\r\n });\r\n return optionsToShow;\r\n };\r\n\r\n const onApplyClick = () => {\r\n setSelection(internalSelection);\r\n onCloseCallback();\r\n };\r\n\r\n const onFilter = (term: string) => {\r\n setFilterTerm(term);\r\n };\r\n\r\n const onFilterChange = (ev: React.FormEvent) => {\r\n setFilterTerm(ev.currentTarget.value);\r\n };\r\n\r\n return (\r\n \r\n \r\n onCloseCallback()}\r\n hasCancel\r\n heading=\"SELECT PRODUCT / SERVICE CATEGORIES\"\r\n subheading=\"Please indicate your primary product and/or service offering only.\r\n Keep in mind that buyers may be wary of a supplier who claims to do everything.\"\r\n size=\"large\"\r\n buttons={[\r\n {\r\n key: \"ok\",\r\n label: \"Save\",\r\n onClick: () => {\r\n onApplyClick();\r\n },\r\n color: \"primary\",\r\n },\r\n ]}\r\n >\r\n

    \r\n B1LINK is authorized to adopt The United Nations Standard Products and\r\n Services Code (UNSPSC).\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isReady ? buildSelection() : }\r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default OfferingSelector;\r\n","import React from \"react\";\r\nimport { ProductsAndServicesSummary } from \"isuppli-react-components\";\r\nimport { createProductServiceSummary } from \"../../Util/dataTransform\";\r\nimport { StaticCompanyDataTypes } from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport useStaticCompanyData from \"../../Hooks/useStaticCompanyData\";\r\n\r\nconst ProductsAndServicesList = (\r\n { selectedSupplierSubCategoryIds }\r\n :\r\n {selectedSupplierSubCategoryIds : number[]}\r\n) => {\r\n const [[supplierCategories], isReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.supplierCategory]\r\n );\r\n\r\n const itemSummary: Array<{ heading : string, items : string[]}> = isReady\r\n ? createProductServiceSummary(\r\n selectedSupplierSubCategoryIds,\r\n supplierCategories ?? []\r\n )\r\n : [];\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ProductsAndServicesList;\r\n","/* eslint-disable space-before-blocks */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport {\r\n ConfirmationModal, isMandatory, MTOMandatoryField, Spinner, UtilButton,\r\n} from \"isuppli-react-components\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { Alert } from \"reactstrap\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport OnboardingWizard from \"../../Containers/Marketplace/OnboardingWizard/OnboardingWizard\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../Store/ReduxState\";\r\nimport OfferingSelector from \"../../Containers/Supplier/OfferingSelector/OfferingSelector\";\r\nimport ProductsAndServicesList from \"../../Containers/Supplier/ProductsAndServicesList\";\r\nimport { hideInfoPopup, showInfoPopup } from \"../../Store/actions\";\r\nimport { onOnboardingInputChange, setOnboardingRequestObject } from \"../../Store/onboardingRequestActions\";\r\nimport useStaticCompanyData from \"../../Hooks/useStaticCompanyData\";\r\nimport { StaticCompanyDataTypes } from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport { saveOnboardingRequest } from \"../../http\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport CompanyConfigurationFeatures from \"../../Util/Enumerators/CompanyConfigurationFeatures\";\r\nimport SuspensionMessageBanner from \"./SuspensionMessageBanner/SuspensionMessageBanner\";\r\n\r\nconst MTPCategories = ({ stepNumber } : {stepNumber: number}) => {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const showError = useShowError();\r\n const [isReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.supplierCategory]\r\n );\r\n const [showConfirm, setShowConfirm] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [showSelectionModal, setShowSelectionModal] = useState(false);\r\n\r\n const data = useSelector((state: ReduxState) => state.onboardingRequest);\r\n const allowedCompanyFeatures = useSelector(\r\n (state: ReduxState) => (state.companyConfiguration.allowedCompanyFeatures)\r\n );\r\n\r\n const setSelection = (newSelection: number[]) => {\r\n dispatch(onOnboardingInputChange(\r\n {\r\n target: {\r\n name: \"supplierSubCategoryIds\",\r\n value: newSelection,\r\n },\r\n }\r\n ));\r\n };\r\n\r\n useEffect(() => {\r\n dispatch(hideInfoPopup());\r\n }, [dispatch]);\r\n\r\n const performSave = async (saveOnly: boolean) : Promise => {\r\n setLoading(true);\r\n try {\r\n const onboardingRequest = data;\r\n if (!saveOnly) {\r\n onboardingRequest.lastStepCompleted = stepNumber > data.lastStepCompleted\r\n ? stepNumber\r\n : data.lastStepCompleted;\r\n }\r\n const updatedOnboardingRequest = await saveOnboardingRequest(\r\n onboardingRequest,\r\n saveOnly\r\n );\r\n dispatch(setOnboardingRequestObject(updatedOnboardingRequest));\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n const saveAndContinueLaterHandler = async () => {\r\n await performSave(true);\r\n history.push(\"../../\");\r\n };\r\n\r\n const onNextClick = async (nextUrl: string) : Promise => {\r\n if (!isReady) {\r\n return;\r\n }\r\n let isValid = true;\r\n const msgs : {[key: string]: string} = {};\r\n if (data.supplierSubCategoryIds.length === 0\r\n && (data.mtoMandatoryField === null || isMandatory(data.mtoMandatoryField, MTOMandatoryField.ProductSegmentAndFamilies))\r\n && (data.manualMTOMandatoryField === null || isMandatory(data.mtoMandatoryField, MTOMandatoryField.ProductSegmentAndFamilies))) {\r\n isValid = false;\r\n msgs.selection = \"Please make at least one selection\";\r\n }\r\n\r\n if (isValid) {\r\n await performSave(true);\r\n // next step\r\n if (nextUrl.length > 0) {\r\n history.push(nextUrl);\r\n }\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n dispatch(showInfoPopup(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(msgs).map((key) => msgs[key])\r\n ));\r\n }\r\n };\r\n // eslint-disable-next-line no-bitwise\r\n const titleHeading = ((allowedCompanyFeatures & CompanyConfigurationFeatures.MTOProductAndSegments) > 0) // eslint-disable-line max-len\r\n ? \"PRODUCT SEGMENTS & FAMILIES\"\r\n : \"COMPANY PRODUCTS & FAMILIES\";\r\n return (\r\n
    \r\n {showConfirm && (\r\n setShowConfirm(false)}\r\n />\r\n )}\r\n\r\n {loading && }\r\n\r\n \r\n\r\n { setShowConfirm(true); }}\r\n onClickNext={onNextClick}\r\n onboardingId={data.onboardingId}\r\n >\r\n\r\n
    \r\n {data?.suspensionReason\r\n && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n

    {`STEP 0${stepNumber}`}

    \r\n
    \r\n
    \r\n

    \r\n {titleHeading}\r\n

    \r\n
    \r\n
    \r\n
    \r\n\r\n

    \r\n {isMandatory(data.mtoMandatoryField, MTOMandatoryField.ProductSegmentAndFamilies) && \"*required\"}\r\n

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n Please add your most relevant products and/or services.\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n {showSelectionModal && (\r\n setSelection(newSelection)}\r\n selection={data.supplierSubCategoryIds}\r\n onCloseCallback={() => { setShowSelectionModal(false); }}\r\n />\r\n )}\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n setShowSelectionModal(true)}\r\n >\r\n SELECT PRODUCTS AND/OR SERVICES\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default MTPCategories;\r\n","import axios from \"axios\";\r\nimport { makeRequestAsync } from \"../util\";\r\nimport { DocumentSummaryMessage } from \"./Messages/DocumentSummaryMessage\";// eslint-disable-line no-unused-vars\r\nimport {\r\n AddressContactsMessage, // eslint-disable-line no-unused-vars\r\n BeeRatingMessage, // eslint-disable-line no-unused-vars\r\n} from \"./Messages/Messages\";\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const saveAddressContactsInfo = async (message: AddressContactsMessage) => {\r\n const url = \"api/manualSupplier/addresscontactinfo\";\r\n return makeRequestAsync(() => axios\r\n .post(url, message)) as Promise;\r\n};\r\n\r\nexport const saveSupplierDocuments = async (message: DocumentSummaryMessage) => {\r\n const url = \"/api/manualSupplier/documents\";\r\n return makeRequestAsync(() => axios.post(url, message)) as Promise;\r\n};\r\n\r\nexport const getSupplierCategories = async (companyId: number) => {\r\n const url = `/api/manualSupplier/${companyId}/offerings`;\r\n return makeRequestAsync(() => axios.get(url)) as Promise>;\r\n};\r\n\r\nexport const saveSupplierCategories = async (companyId: number, categories: Array) => {\r\n const url = `/api/manualSupplier/${companyId}/offerings`;\r\n return makeRequestAsync(() => axios.post(url, categories)) as Promise;\r\n};\r\n\r\nexport const getBeeRating = async (companyId: number) => {\r\n const url = `/api/manualSupplier/${companyId}/beeratings`;\r\n return makeRequestAsync(() => axios.get(url)) as Promise;\r\n};\r\n\r\nexport const saveBeeRating = async (companyId: number, categories: BeeRatingMessage) => {\r\n const url = `/api/manualSupplier/${companyId}/beeratings`;\r\n return makeRequestAsync(() => axios.post(url, categories)) as Promise;\r\n};\r\n","enum BeeCertificateType {\r\n /* eslint-disable no-unused-vars */\r\n None = 0,\r\n Affidavit = 1,\r\n Certificate = 2,\r\n BasedOnBlackOwnership = 3\r\n /* eslint-enable no-unused-vars */\r\n}\r\n\r\nexport default BeeCertificateType;\r\n","import React, {\r\n // eslint-disable-next-line no-unused-vars\r\n useState, useEffect, useImperativeHandle, ForwardRefRenderFunction, forwardRef, Fragment,\r\n} from \"react\";\r\nimport { isMandatory, MTOMandatoryField, Spinner } from \"isuppli-react-components\";\r\nimport AddressInfo from \"../../Supplier/AddressInfo\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { loadAddressDataAsync } from \"../../../Util/dataLoader\";\r\nimport useStaticData from \"../../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../../Util/Enumerators/staticDataTypes\";\r\nimport KeyContactStaff from \"../../Supplier/KeyContactStaff\";\r\nimport { getSupplierKeyContactDetailsAsync } from \"../../../http\";\r\n\r\nimport {\r\n ContactPerson, // eslint-disable-line no-unused-vars\r\n CompanyAddress, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/ManualSupplier/Models/Models\";\r\nimport {\r\n CompanyContactsMessage, // eslint-disable-line no-unused-vars\r\n CompanyAddressesMessage, // eslint-disable-line no-unused-vars\r\n AddressContactsMessage, // eslint-disable-line no-unused-vars\r\n AddressMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/ManualSupplier/Messages/Messages\";\r\nimport { saveAddressContactsInfo } from \"../../../http/ManualSupplier/manualSupplierApi\";\r\nimport addressTypes from \"../../../Util/Enumerators/addressTypes\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ValidationModel } from \"../../../Sections/Marketplace/MTPManualSupplierStep/MTPManualSupplierStep\";\r\nimport ContactPersonClassificationTypes from \"../../../Util/Enumerators/ContactPersonClassificationTypes\";\r\nimport { requiredFieldsStep2, requiredMandatoryFieldsStep2 } from \"../../../Validation/validation\";\r\nimport validateStep from \"../../../Validation/onSubmitValidations\";\r\n\r\ninterface Addresses {\r\n physicalAddress: CompanyAddress,\r\n postalAddress: CompanyAddress\r\n}\r\n\r\nexport interface AddressDetailsModuleRef {\r\n save: () => Promise;\r\n validateStep: () => ValidationModel;\r\n}\r\n\r\nexport interface AddressDetailsModuleProps {\r\n companyId: number,\r\n containerClass?: string,\r\n manualSupplier?: boolean,\r\n readOnly?: boolean,\r\n mtoMandatoryField?: number,\r\n}\r\n\r\nconst AddressDetailsModule:\r\n ForwardRefRenderFunction = (\r\n {\r\n companyId = 0, containerClass = \"\", manualSupplier = true, readOnly = false, mtoMandatoryField = 0,\r\n }: AddressDetailsModuleProps, ref\r\n ) => {\r\n // == states & hooks\r\n const showError = useShowError();\r\n const [[provinces, countries, municipalities, contactPersonTypes], staticDataReady] = useStaticData(\r\n [StaticDataTypes.Province, StaticDataTypes.Country, StaticDataTypes.Municipality, StaticDataTypes.ContactPerson]\r\n );\r\n const [addressData, setAddressData] = useState({} as Addresses);\r\n const [keyContactsDetailData, setKeyContactDetailsData] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // == functions\r\n const onAddressInputChange = (\r\n category: \"physicalAddress\" | \"postalAddress\", ev: any\r\n ) => {\r\n setAddressData((prevState) => ({\r\n ...prevState,\r\n [category]: {\r\n ...prevState[category],\r\n [ev.target.name]: ev.target.value,\r\n type: category === \"physicalAddress\" ? addressTypes.Physical : addressTypes.Postal,\r\n },\r\n }));\r\n };\r\n\r\n // when \"same postal address as physical address\" checkbox is checked\r\n const onSamePostalAddressAsPhysicalChange = (address: any) => {\r\n setAddressData((prevState) => ({\r\n ...prevState,\r\n postalAddress: {\r\n ...prevState.postalAddress, ...address,\r\n },\r\n }));\r\n };\r\n\r\n const onContactDetailsInputChange = (\r\n contactPerson: any\r\n ) => {\r\n const type = contactPerson.contactPersonTypeId;\r\n const indexOfItemToChange = keyContactsDetailData.findIndex(\r\n (c) => c.contactPersonTypeId === type\r\n );\r\n\r\n const newContactPersons = [...keyContactsDetailData];\r\n newContactPersons[indexOfItemToChange] = { ...contactPerson };\r\n setKeyContactDetailsData(newContactPersons);\r\n };\r\n\r\n // save changes\r\n const stepValidation = () => {\r\n const result: ValidationModel = {\r\n isStepValid: true,\r\n msgs: {},\r\n };\r\n\r\n if (mtoMandatoryField === null) {\r\n // validate addresses\r\n const addressValidation = validateStep(addressData, requiredFieldsStep2);\r\n result.isStepValid = addressValidation.isValid;\r\n result.msgs = { ...addressValidation.msgs };\r\n\r\n // if country is selected and unselect\r\n if (addressData.physicalAddress.country <= 0) {\r\n result.isStepValid = false;\r\n result.msgs.physicalAddressCountry = \"Physical address: country is required\";\r\n }\r\n\r\n if (addressData.postalAddress.country <= 0) {\r\n result.isStepValid = false;\r\n result.msgs.postalAddressCountry = \"Postal address: country is required\";\r\n }\r\n\r\n // validate provices\r\n const physicalAddressCountryHasProvinces = provinces.filter(\r\n (prov) => prov.countryId === addressData.physicalAddress.country\r\n ).length > 0;\r\n\r\n if (physicalAddressCountryHasProvinces\r\n && (addressData.physicalAddress.province <= 0\r\n || addressData.physicalAddress.province === undefined)) {\r\n result.isStepValid = false;\r\n result.msgs.physicalAddressProvince = \"Physical address: province is required\";\r\n }\r\n\r\n const postalAddressCountryHasProvinces = provinces.filter(\r\n (prov) => prov.countryId === addressData.postalAddress.country\r\n ).length > 0;\r\n\r\n if (postalAddressCountryHasProvinces\r\n && (addressData.postalAddress.province <= 0\r\n || addressData.postalAddress.province === undefined)) {\r\n result.isStepValid = false;\r\n result.msgs.postalAddressProvince = \"Postal address: province is required\";\r\n }\r\n\r\n // validate contact persons\r\n if (manualSupplier === true) {\r\n const primaryContactPerson = keyContactsDetailData.find(\r\n (c) => (c.contactPersonClassification) === ContactPersonClassificationTypes.PrimaryContact\r\n );\r\n const contactPersonType = contactPersonTypes.find(\r\n (c) => c.id === primaryContactPerson?.contactPersonTypeId\r\n );\r\n // ensure that the required contacts details (primaryContactPerson) are completed\r\n if ((!(primaryContactPerson?.contactNumber?.trim())\r\n || !(primaryContactPerson.email?.trim())\r\n || !(primaryContactPerson.fullName?.trim()))\r\n ) {\r\n result.msgs[`contactPersonType${contactPersonType?.value}`] = `${contactPersonType?.display} Person details are required`;\r\n result.isStepValid = false;\r\n }\r\n }\r\n } else {\r\n // validate addresses\r\n const addressValidation = validateStep(\r\n addressData,\r\n requiredMandatoryFieldsStep2.filter((x) => isMandatory(mtoMandatoryField, x.field))\r\n );\r\n result.isStepValid = addressValidation.isValid;\r\n result.msgs = { ...addressValidation.msgs };\r\n // mandatory physical address\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.PhysicalAddress)) {\r\n // country\r\n if (addressData.physicalAddress.country <= 0) {\r\n result.isStepValid = false;\r\n result.msgs.physicalAddressCountry = \"Physical address: country is required\";\r\n }\r\n // provices\r\n const physicalAddressCountryHasProvinces = provinces.filter(\r\n (prov) => prov.countryId === addressData.physicalAddress.country\r\n ).length > 0;\r\n if (physicalAddressCountryHasProvinces\r\n && (addressData.physicalAddress.province <= 0\r\n || addressData.physicalAddress.province === undefined)) {\r\n result.isStepValid = false;\r\n result.msgs.physicalAddressProvince = \"Physical address: province is required\";\r\n }\r\n }\r\n // mandatory postal address\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.PostalAddress)) {\r\n if (addressData.postalAddress.country <= 0) {\r\n result.isStepValid = false;\r\n result.msgs.postalAddressCountry = \"Postal address: country is required\";\r\n }\r\n const postalAddressCountryHasProvinces = provinces.filter(\r\n (prov) => prov.countryId === addressData.postalAddress.country\r\n ).length > 0;\r\n\r\n if (postalAddressCountryHasProvinces\r\n && (addressData.postalAddress.province <= 0\r\n || addressData.postalAddress.province === undefined)) {\r\n result.isStepValid = false;\r\n result.msgs.postalAddressProvince = \"Postal address: province is required\";\r\n }\r\n }\r\n // primary contact\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.PrimaryContactPerson)) {\r\n const primaryContactPerson = keyContactsDetailData.find(\r\n (c) => (c.contactPersonClassification) === ContactPersonClassificationTypes.PrimaryContact\r\n );\r\n const contactPersonType = contactPersonTypes.find(\r\n (c) => c.id === primaryContactPerson?.contactPersonTypeId\r\n );\r\n\r\n if ((!(primaryContactPerson?.contactNumber?.trim())\r\n || !(primaryContactPerson.email?.trim())\r\n || !(primaryContactPerson.fullName?.trim()))\r\n ) {\r\n result.msgs[`contactPersonType${contactPersonType?.value}`] = `${contactPersonType?.display} Person details are required`;\r\n result.isStepValid = false;\r\n }\r\n }\r\n // all contacts\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.AllContactPersons)) {\r\n keyContactsDetailData.forEach((contactPerson) => {\r\n const contactPersonType = contactPersonTypes.find(\r\n (c) => c.id === contactPerson?.contactPersonTypeId\r\n );\r\n if ((!(contactPerson?.contactNumber?.trim())\r\n || !(contactPerson.email?.trim())\r\n || !(contactPerson.fullName?.trim()))\r\n ) {\r\n result.msgs[`contactPersonType${contactPersonType?.value}`] = `${contactPersonType?.display} Person details are required`;\r\n result.isStepValid = false;\r\n }\r\n });\r\n }\r\n }\r\n return result;\r\n };\r\n const onSaveAddressAndContactDetails = async () => {\r\n const contactPersonsMessage: CompanyContactsMessage = {\r\n CompanyId: companyId,\r\n ContactPersons: keyContactsDetailData,\r\n };\r\n\r\n const physicalAdd: AddressMessage = {\r\n addressId: addressData.physicalAddress?.addressId ?? 0,\r\n isPrimary: true,\r\n line1: addressData.physicalAddress?.streetAddressL1,\r\n unitNumber: \"\",\r\n line2: addressData.physicalAddress?.streetAddressL2,\r\n city: addressData.physicalAddress?.city,\r\n countryId: addressData.physicalAddress?.country,\r\n provinceId: addressData.physicalAddress?.province,\r\n municipalityId: addressData.physicalAddress?.municipality,\r\n type: addressData.physicalAddress?.type,\r\n postalCode: addressData.physicalAddress?.postalCode,\r\n };\r\n\r\n const postalAdd: AddressMessage = {\r\n addressId: addressData.postalAddress?.addressId ?? 0,\r\n isPrimary: true,\r\n line1: addressData.postalAddress?.streetAddressL1,\r\n unitNumber: \"\",\r\n line2: addressData.postalAddress?.streetAddressL2,\r\n city: addressData.postalAddress?.city,\r\n countryId: addressData.postalAddress?.country,\r\n provinceId: addressData.postalAddress?.province,\r\n municipalityId: addressData.postalAddress?.municipality,\r\n type: addressData.postalAddress?.type,\r\n postalCode: addressData.postalAddress?.postalCode,\r\n };\r\n\r\n const addressesMessage: CompanyAddressesMessage = {\r\n CompanyId: companyId,\r\n Addresses: [physicalAdd, postalAdd],\r\n };\r\n\r\n const addressContactInfo: AddressContactsMessage = {\r\n CompanyAddressesMessage: addressesMessage,\r\n CompanyContactsMessage: contactPersonsMessage,\r\n };\r\n try {\r\n setLoading(true);\r\n await saveAddressContactsInfo(addressContactInfo);\r\n setLoading(false);\r\n return true;\r\n } catch {\r\n setLoading(false);\r\n return false;\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: onSaveAddressAndContactDetails,\r\n validateStep: stepValidation,\r\n }));\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n try {\r\n setLoading(true);\r\n const addressInfo = await loadAddressDataAsync(companyId);\r\n setAddressData(addressInfo as Addresses);\r\n\r\n const keyContactDetails = await getSupplierKeyContactDetailsAsync(companyId);\r\n setKeyContactDetailsData(keyContactDetails as ContactPerson[]);\r\n setLoading(false);\r\n } catch (error) {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n loader();\r\n }, [companyId, showError, staticDataReady, countries, provinces, municipalities]);\r\n\r\n return (\r\n \r\n
    \r\n {loading && }\r\n \r\n
    \r\n

    KEY CONTACT DETAILS

    \r\n
    \r\n\r\n
    \r\n
    \r\n Please capture the information for the following key contacts within your company.\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\nexport default forwardRef(AddressDetailsModule);\r\n","enum pendingVendorDetailChangeType {\r\n /* eslint-disable no-unused-vars */\r\n CompanyData,\r\n VendorDetails,\r\n BankAccounts,\r\n ContactDetails,\r\n General,\r\n}\r\n\r\nexport const pendingVendorDetailToString = (\r\n value: pendingVendorDetailChangeType\r\n): string => {\r\n switch (value) {\r\n case pendingVendorDetailChangeType.CompanyData:\r\n return \"Company Data\";\r\n case pendingVendorDetailChangeType.VendorDetails:\r\n return \"Vendor Details\";\r\n case pendingVendorDetailChangeType.BankAccounts:\r\n return \"Banking Account Details\";\r\n case pendingVendorDetailChangeType.ContactDetails:\r\n return \"Contact Details\";\r\n case pendingVendorDetailChangeType.General:\r\n return \"General\";\r\n default:\r\n return \"unknown\";\r\n }\r\n};\r\n\r\nexport default pendingVendorDetailChangeType;\r\n","import { isMandatory, MTOMandatoryField, Spinner } from \"isuppli-react-components\";\r\nimport React, {\r\n forwardRef,\r\n // eslint-disable-next-line no-unused-vars\r\n ForwardRefRenderFunction, Fragment, useEffect, useImperativeHandle, useState,\r\n} from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport useStaticData from \"../../../Hooks/useStaticData\";\r\nimport { getDocumentsAsync } from \"../../../http\";\r\nimport BeeCertificateType from \"../../../Util/Enumerators/BeeCertificateType\";\r\n\r\nimport DocumentClassification from \"../../../Util/Enumerators/DocumentClassification\";\r\nimport { StaticDataTypes } from \"../../../Util/Enumerators/staticDataTypes\";\r\nimport BeeCertification from \"../../Supplier/BeeCertification\";\r\nimport BeeStatus from \"../../Supplier/BeeStatus\";\r\nimport BlackOwnership from \"../../Supplier/BlackOwnership\";\r\nimport DocumentUploader from \"../../Supplier/DocumentUploader\";\r\nimport SectorTurnoverInfo from \"../../Supplier/SectorTurnoverInfo\";\r\nimport { getBeeRating, saveBeeRating, saveSupplierDocuments } from \"../../../http/ManualSupplier/manualSupplierApi\";\r\nimport { BeeRatingMessage } from \"../../../http/ManualSupplier/Messages/Messages\";// eslint-disable-line no-unused-vars\r\nimport { Document } from \"../../../http/ManualSupplier/Models/Models\"; // eslint-disable-line no-unused-vars\r\nimport { DocumentSummaryMessage } from \"../../../http/ManualSupplier/Messages/DocumentSummaryMessage\"; // eslint-disable-line no-unused-vars\r\nimport CompanyGroupingType from \"../../../Util/Enumerators/CompanyGroupingType\";\r\nimport { ValidationModel } from \"../../../Sections/Marketplace/MTPManualSupplierStep/MTPManualSupplierStep\"; // eslint-disable-line no-unused-vars\r\n\r\nexport interface BeeDetailsModuleRef{\r\n save: () => Promise;\r\n}\r\n\r\nexport interface BeeDetailsModuleProps{\r\n companyId: number\r\n containerClass?:string\r\n readOnly?:boolean,\r\n mtoMandatoryField?:number,\r\n}\r\n\r\nconst BeeDetailsModule:\r\n ForwardRefRenderFunction = (\r\n {\r\n companyId = 0, containerClass = \"\", readOnly = false, mtoMandatoryField = 0,\r\n }: BeeDetailsModuleProps, ref\r\n ) => {\r\n // == states and hooks\r\n const showError = useShowError();\r\n const [[beeStatuses, sectorTurnoverBands, sectorTurnoverBandStatuses, documentTypes],\r\n staticDataReady] = useStaticData([StaticDataTypes.BeeStatus,\r\n StaticDataTypes.SectorTurnoverBand,\r\n StaticDataTypes.SectorTurnoverBandStatus,\r\n StaticDataTypes.DocumentTypes]);\r\n const [beeData, setBeeData] = useState({} as BeeRatingMessage);\r\n const [beeDocuments, setBeeDocuments] = useState >([] as Array);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const onInputChangeHandler = (ev : any) => {\r\n setBeeData((prevState) => ({\r\n ...prevState,\r\n [ev.target.name]: ev.target.value,\r\n }));\r\n };\r\n\r\n function updateDocuments(documents: Array) {\r\n // add back any missing documents\r\n const consolidatedDocuments = beeDocuments\r\n .map((c) => documents\r\n .find((d) => d.documentTypeId === c.documentTypeId)\r\n ?? c);\r\n setBeeDocuments(consolidatedDocuments);\r\n }\r\n\r\n // functions section\r\n const filterDocumentsBasedOnBee = (documents : Array) => {\r\n const sectorTurnoverBand = sectorTurnoverBands?.find(\r\n (entry) => entry.sectorId === beeData.sector\r\n && entry.turnoverBandId === beeData.turnoverBand);\r\n\r\n if (sectorTurnoverBand == null) {\r\n return [];\r\n }\r\n\r\n let certificateType : BeeCertificateType;\r\n if (sectorTurnoverBand.beeCertificateType === BeeCertificateType.Affidavit) {\r\n certificateType = BeeCertificateType.Affidavit;\r\n } else if (sectorTurnoverBand.beeCertificateType === BeeCertificateType.Certificate) {\r\n certificateType = BeeCertificateType.Certificate;\r\n } else {\r\n certificateType = (beeData.boPercentage >= 51)\r\n ? BeeCertificateType.Certificate\r\n : BeeCertificateType.Affidavit;\r\n }\r\n\r\n return documents\r\n .filter((document : any) => {\r\n const documentClassification = documentTypes\r\n .find((d) => d.id === document.documentTypeId)\r\n ?.documentClassification;\r\n\r\n switch (certificateType) {\r\n case BeeCertificateType.Affidavit:\r\n if (documentClassification === DocumentClassification.BeeAffidavit) {\r\n return true;\r\n }\r\n return false;\r\n case BeeCertificateType.Certificate:\r\n if (documentClassification === DocumentClassification.BeeCertificate) {\r\n return true;\r\n }\r\n return false;\r\n default:\r\n return false;\r\n }\r\n });\r\n };\r\n\r\n const onSaveBeeInfo = async () => {\r\n try {\r\n setLoading(true);\r\n const boPercentage = Number(beeData.boPercentage);\r\n const bwoPercentage = Number(beeData.bwoPercentage);\r\n const saveInfo = { ...beeData, boPercentage, bwoPercentage };\r\n\r\n await saveBeeRating(companyId, saveInfo);\r\n\r\n // save document\r\n const documentSummary : DocumentSummaryMessage = {\r\n companyId,\r\n companyDocuments: beeDocuments.filter((doc) => doc.filename != null),\r\n };\r\n await saveSupplierDocuments(documentSummary);\r\n setLoading(false);\r\n return true;\r\n } catch {\r\n setLoading(false);\r\n return false;\r\n }\r\n };\r\n\r\n // save changes\r\n const stepValidation = () => {\r\n const result: ValidationModel = {\r\n isStepValid: true,\r\n msgs: {},\r\n };\r\n\r\n if (mtoMandatoryField !== null) {\r\n if (!beeData.hasBeeCertificate && isMandatory(mtoMandatoryField, MTOMandatoryField.BEE)) {\r\n result.isStepValid = false;\r\n result.msgs.bee = \"BEE is required\";\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: onSaveBeeInfo,\r\n validateStep: stepValidation,\r\n }));\r\n // end of functions section\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n try {\r\n setLoading(true);\r\n\r\n const beePracticeData = await getBeeRating(companyId);\r\n const expiryDateString = beePracticeData.certificateExpiryDate as any as string;\r\n const date = expiryDateString === \"0001-01-01T00:00:00+00:00\"\r\n ? null\r\n : new Date(expiryDateString);\r\n\r\n beePracticeData.certificateExpiryDate = date;\r\n\r\n setBeeData({\r\n ...beePracticeData,\r\n companyId,\r\n hasBeeCertificate: beePracticeData.companyGroupingType === CompanyGroupingType.Foreign\r\n ? 0\r\n : beePracticeData.hasBeeCertificate,\r\n });\r\n\r\n const beeDocs = await getDocumentsAsync(companyId, false);\r\n setBeeDocuments(beeDocs.companyDocuments as Array);\r\n setLoading(false);\r\n } catch (error) {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n loader();\r\n }, [companyId, showError, staticDataReady, beeStatuses]);\r\n\r\n return (\r\n \r\n {loading && }\r\n
    \r\n {}}\r\n readOnly={readOnly}\r\n companyGroupingType={beeData.companyGroupingType}\r\n />\r\n {\r\n beeData.hasBeeCertificate === 1 && (\r\n
    \r\n
    \r\n
    \r\n {}}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n );\r\n };\r\n\r\nexport default forwardRef(BeeDetailsModule);\r\n","import {\r\n isMandatory,\r\n MTOMandatoryField,\r\n Spinner,\r\n useToast,\r\n} from \"isuppli-react-components\";\r\nimport React, {\r\n // eslint-disable-next-line no-unused-vars\r\n forwardRef, ForwardRefRenderFunction, Fragment, useEffect, useImperativeHandle, useState,\r\n} from \"react\";\r\nimport { Alert } from \"reactstrap\";\r\nimport BankingDetails from \"../../../Containers/Supplier/BankingDetails\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getBankingDetails, saveBankingDetailsAsync } from \"../../../http\";\r\nimport { BankAccountDetails } from \"../../../http/CompanyDetails/BankAccountDetails\";// eslint-disable-line no-unused-vars\r\nimport { BankDetailsMessage } from \"../../../http/ManualSupplier/Messages/Messages\";// eslint-disable-line no-unused-vars\r\nimport { ValidationModel } from \"../../../Sections/Marketplace/MTPManualSupplierStep/MTPManualSupplierStep\";// eslint-disable-line no-unused-vars\r\n\r\nexport interface BankDetailsModuleRef{\r\n save: () => Promise ;\r\n}\r\n\r\nexport interface BankDetailsModuleProps{\r\n companyId: number\r\n containerClass?: string\r\n hideTitle?:boolean,\r\n readOnly?:boolean,\r\n mtoMandatoryField?:number\r\n}\r\n\r\nconst BankDetailsModule:\r\nForwardRefRenderFunction = (\r\n {\r\n companyId = 0, containerClass = \"\", hideTitle = false, readOnly = false, mtoMandatoryField = 0,\r\n }: BankDetailsModuleProps, ref\r\n) => {\r\n const [loading, setLoading] = useState(false);\r\n const [bankDetails, setBankingDetails] = useState([]);\r\n const [customFieldsApply, setCustomFieldsApply] = useState(false);\r\n const showToast = useToast();\r\n const showError = useShowError();\r\n\r\n const saveBankDetails = async () => {\r\n const saveData : BankDetailsMessage = {\r\n companyId,\r\n useCustomFields: customFieldsApply,\r\n bankAccounts: bankDetails,\r\n };\r\n\r\n setLoading(true);\r\n try {\r\n const result = await saveBankingDetailsAsync(saveData);\r\n setLoading(false);\r\n setBankingDetails(result.bankAccounts);\r\n showToast(\"Banking information saved\");\r\n return true;\r\n } catch (error) {\r\n setLoading(false);\r\n return false;\r\n }\r\n };\r\n\r\n // save changes\r\n const stepValidation = () => {\r\n const result: ValidationModel = {\r\n isStepValid: true,\r\n msgs: {},\r\n };\r\n\r\n if (mtoMandatoryField !== null) {\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.Banking)) {\r\n if (bankDetails.length === 0) {\r\n result.isStepValid = false;\r\n result.msgs.banking = \"Banking details are required\";\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: saveBankDetails,\r\n validateStep: stepValidation,\r\n }));\r\n\r\n useEffect(() => {\r\n const loader = () => {\r\n setLoading(true);\r\n try {\r\n setLoading(false);\r\n getBankingDetails(companyId, (res: BankDetailsMessage) => {\r\n setBankingDetails(res.bankAccounts);\r\n setCustomFieldsApply(res.useCustomFields);\r\n });\r\n } catch {\r\n showError();\r\n setLoading(false);\r\n }\r\n };\r\n loader();\r\n }, [companyId, showError]);\r\n\r\n return (\r\n \r\n {loading && }\r\n
    \r\n {hideTitle === false &&

    BANK DETAILS

    }\r\n {isMandatory(mtoMandatoryField, MTOMandatoryField.SupportingDocument) && \"*required\"}\r\n
    \r\n
    \r\n
    \r\n \r\n Your banking information will only be visible to the relevant users\r\n within the companies you have been onboarded to via B1LINK. These users\r\n cannot edit your information in any way. If you would like further\r\n information regarding the security of your banking information,\r\n please contact\r\n {\" \"}\r\n support@b1link.co.za\r\n {\" \"}\r\n or contact 011 455 0033\r\n \r\n
    \r\n
    \r\n
    \r\n { setBankingDetails(ev.target.value); }}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default forwardRef(BankDetailsModule);\r\n","import React, {\r\n // eslint-disable-next-line no-unused-vars\r\n forwardRef, ForwardRefRenderFunction, Fragment, useCallback, useEffect, useImperativeHandle, useState,\r\n} from \"react\";\r\nimport {\r\n getStaticValue, isMandatory, MTOMandatoryField, Spinner, useToast,\r\n} from \"isuppli-react-components\";\r\nimport useStaticData from \"../../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../../Util/Enumerators/staticDataTypes\";\r\nimport { getDocumentsAsync } from \"../../../http\";\r\nimport DocumentUploader from \"../../Supplier/DocumentUploader\";\r\nimport { Document } from \"../../../http/ManualSupplier/Models/Document\";// eslint-disable-line no-unused-vars\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { DocumentSummaryMessage } from \"../../../http/ManualSupplier/Messages/DocumentSummaryMessage\";// eslint-disable-line no-unused-vars\r\nimport { saveSupplierDocuments } from \"../../../http/ManualSupplier/manualSupplierApi\";\r\nimport { ValidationModel } from \"../../../Sections/Marketplace/MTPManualSupplierStep/MTPManualSupplierStep\";// eslint-disable-line no-unused-vars\r\n\r\nexport interface SupportingDocumentsModuleRef{\r\n save: () => Promise;\r\n refreshDocuments: () => void;\r\n}\r\n\r\nexport interface SupportingDocumentsModuleProps{\r\n companyId: number\r\n containerClass?:string,\r\n readOnly?: boolean,\r\n mtoMandatoryField?: number,\r\n // triggers a refersh of the required supporting documents based\r\n}\r\nconst SupportingDocumentsModule:\r\n\r\nForwardRefRenderFunction = (\r\n {\r\n companyId = 0, containerClass = \"\", readOnly = false, mtoMandatoryField = 0,\r\n }:\r\n SupportingDocumentsModuleProps, ref\r\n) => {\r\n const [[documentTypes], isReady] = useStaticData([StaticDataTypes.DocumentTypes]);\r\n const [documents, setDocuments] = useState>([] as Array);\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n const showToast = useToast();\r\n\r\n const loadSupportingDocuments = useCallback(\r\n async () => {\r\n const res = await getDocumentsAsync(companyId, true);\r\n setDocuments(res.companyDocuments as Array);\r\n },\r\n [companyId]\r\n );\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n await loadSupportingDocuments();\r\n };\r\n\r\n try {\r\n setLoading(true);\r\n loader();\r\n setLoading(false);\r\n } catch {\r\n showError();\r\n setLoading(false);\r\n }\r\n }, [companyId, documentTypes, showError, loadSupportingDocuments]);\r\n\r\n const updateDocuments = (docs : Array) => {\r\n setDocuments(docs);\r\n };\r\n\r\n const onSaveDocuments = async () => {\r\n setLoading(true);\r\n const documentSummary : DocumentSummaryMessage = {\r\n companyId,\r\n companyDocuments: documents.filter((doc) => doc.filename != null),\r\n };\r\n try {\r\n await saveSupplierDocuments(documentSummary);\r\n setLoading(false);\r\n showToast(\"Supporting documents saved\");\r\n return true;\r\n } catch {\r\n setLoading(false);\r\n return false;\r\n }\r\n };\r\n\r\n // save changes\r\n const stepValidation = () => {\r\n const result: ValidationModel = {\r\n isStepValid: true,\r\n msgs: {},\r\n };\r\n if (mtoMandatoryField !== null) {\r\n if (isMandatory(mtoMandatoryField, MTOMandatoryField.SupportingDocument)) {\r\n documents.forEach((document) => {\r\n if (document.filename === null && !document.optional) {\r\n result.isStepValid = false;\r\n result.msgs[`documentType${document?.documentTypeId}`] = `${getStaticValue(document.documentTypeId, documentTypes, document.filename)} document is required`;\r\n }\r\n });\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: onSaveDocuments,\r\n refreshDocuments: loadSupportingDocuments,\r\n validateStep: stepValidation,\r\n }));\r\n\r\n return (\r\n\r\n \r\n {loading && }\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default forwardRef(SupportingDocumentsModule);\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { ConfirmationModal, DataFeatures } from \"isuppli-react-components\";\r\nimport OnboardingWizard from \"../../../Containers/Marketplace/OnboardingWizard/OnboardingWizard\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../../Store/ReduxState\";\r\nimport {\r\n onOnboardingInputChange,\r\n} from \"../../../Store/onboardingRequestActions\";\r\nimport AddressDetailsModule, { AddressDetailsModuleRef } from \"../../../Containers/ManualSupplier/EditManualSupplier/AddressDetailsModule\";// eslint-disable-line no-unused-vars\r\nimport BeeDetailsModule, { BeeDetailsModuleRef } from \"../../../Containers/ManualSupplier/EditManualSupplier/BeeDetailsModule\";// eslint-disable-line no-unused-vars\r\nimport BankDetailsModule, { BankDetailsModuleRef } from \"../../../Containers/ManualSupplier/EditManualSupplier/BankDetailsModule\";// eslint-disable-line no-unused-vars\r\nimport SupportingDocumentsModule, { SupportingDocumentsModuleRef } from \"../../../Containers/ManualSupplier/EditManualSupplier/SupportingDocumentsModule\";// eslint-disable-line no-unused-vars\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { hideInfoPopup, showInfoPopup } from \"../../../Store/actions\";\r\nimport InfoPopup from \"../../../Containers/InfoPopup\";\r\nimport useStaticCompanyData from \"../../../Hooks/useStaticCompanyData\";\r\nimport { StaticCompanyDataTypes } from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\ntype Dict = { [key: string]: string };\r\n\r\nexport type ValidationModel = {\r\n isStepValid: boolean,\r\n msgs: Dict\r\n};\r\n\r\ninterface StepComponentRef{\r\n save: () => Promise\r\n validateStep?: () => ValidationModel\r\n}\r\n\r\nconst MTPManualSupplierStep = (\r\n {\r\n stepNumber,\r\n companyId,\r\n } : {\r\n stepNumber: number,\r\n companyId: number}\r\n) => {\r\n const onboardingData = useSelector((state: ReduxState) => state.onboardingRequest);\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const [showConfirmationModal, setShowConfirmationModal] = useState(false);\r\n const showError = useShowError();\r\n\r\n const [[supplierTypes], isReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.supplierType]\r\n );\r\n\r\n const supplierTypeDataFeatures: DataFeatures = isReady\r\n ? supplierTypes\r\n .find((supplierType) => supplierType.id === onboardingData?.supplierTypeId)?.dataFeatures\r\n : DataFeatures.None;\r\n\r\n // eslint-disable-next-line no-bitwise\r\n const hasBankStep = (isReady && (supplierTypeDataFeatures & DataFeatures.BankingDetails));\r\n\r\n const mtoMandatoryField = onboardingData.manualSupplier ? onboardingData.manualMTOMandatoryField : onboardingData.mtoMandatoryField;\r\n\r\n useEffect(() => {\r\n dispatch(hideInfoPopup());\r\n }, [stepNumber, dispatch]);\r\n\r\n // tab references\r\n const addressDetailModuleRef = useRef(null);\r\n const beeDetailsModuleRef = useRef(null);\r\n const bankDetailsModuleRef = useRef(null);\r\n const supportingDocumentsRef = useRef(null);\r\n\r\n // tab controls\r\n let currentStepRef : React.RefObject | null = null;\r\n\r\n const steps = [\r\n {\r\n heading: \"ADDRESS & CONTACT DETAILS\",\r\n children: (\r\n \r\n ),\r\n currentStepRef: addressDetailModuleRef,\r\n },\r\n {\r\n heading: \"B-BBEE PRACTICES & CERTIFICATION\",\r\n children: (\r\n \r\n ),\r\n currentStepRef: beeDetailsModuleRef,\r\n },\r\n ];\r\n\r\n if (hasBankStep) {\r\n steps.push(\r\n {\r\n heading: \"BANK DETAILS\",\r\n children: (\r\n \r\n ),\r\n currentStepRef: bankDetailsModuleRef,\r\n }\r\n );\r\n }\r\n\r\n steps.push({\r\n heading: \"SUPPORTING DOCUMENTS & AGREEMENTS\",\r\n children: (\r\n \r\n ),\r\n currentStepRef: supportingDocumentsRef,\r\n });\r\n\r\n let heading = \"\";\r\n let children: React.ReactNode = null;\r\n\r\n const stepIndex = stepNumber - 2;\r\n\r\n heading = steps[stepIndex]?.heading;\r\n children = steps[stepIndex]?.children;\r\n currentStepRef = steps[stepIndex]?.currentStepRef;\r\n\r\n // save details\r\n const onSaveClick = () => {\r\n setShowConfirmationModal(true);\r\n };\r\n\r\n const isCurrentStepValid = () => {\r\n const stepValidation = currentStepRef?.current?.validateStep != null\r\n ? currentStepRef?.current?.validateStep() : null;\r\n\r\n // Check that validation is passed\r\n if (stepValidation?.isStepValid === false) {\r\n window.scrollTo({ top: 0 });\r\n dispatch(showInfoPopup(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(stepValidation.msgs).map((key) => stepValidation.msgs[key])\r\n ));\r\n }\r\n return stepValidation?.isStepValid ?? true;\r\n };\r\n\r\n const saveAndContinueLater = async () => {\r\n dispatch(hideInfoPopup());\r\n const savedSuccessfully = await currentStepRef?.current?.save();\r\n if (savedSuccessfully) {\r\n history.length = 1;\r\n history.replace(\"/myoffice/onboardingrequest\");\r\n } else {\r\n showError();\r\n }\r\n };\r\n\r\n const onClickNextHandler = async (nextUrl:string) => {\r\n if (isCurrentStepValid()) {\r\n dispatch(hideInfoPopup());\r\n // Save step details\r\n const savedSuccessfully = await currentStepRef?.current?.save();\r\n if (savedSuccessfully) {\r\n dispatch(onOnboardingInputChange({\r\n target: {\r\n name: \"lastStepCompleted\",\r\n value: onboardingData.lastStepCompleted + 1,\r\n },\r\n }));\r\n history.push(nextUrl);\r\n } else { showError(); }\r\n }\r\n };\r\n\r\n return (\r\n { onSaveClick(); }}\r\n onboardingId={onboardingData.onboardingId}\r\n >\r\n \r\n {showConfirmationModal && (\r\n { setShowConfirmationModal((prevState) => !prevState); }}\r\n />\r\n )}\r\n
    \r\n {onboardingData?.suspensionReason\r\n && (\r\n
    \r\n

    This onboarding request was suspended. Below is the reason:

    \r\n

    {onboardingData?.suspensionReason}

    \r\n

    Please address the issues raised above and resubmit the request.

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n

    {`STEP 0${stepNumber}`}

    \r\n
    \r\n
    \r\n

    {heading}

    \r\n
    \r\n
    \r\n
    \r\n {children}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default MTPManualSupplierStep;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { DataFeatures } from \"isuppli-react-components\";\r\n\r\nimport { newOnboardingRequest, getOnboardingRequest } from \"../../http/index\";\r\n\r\nimport {\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\nimport { setOnboardingRequestObject } from \"../../Store/onboardingRequestActions\";\r\n\r\nimport MTPCompanyDetails from \"./MTPCompanyDetails\";\r\nimport MTPRestrictions from \"./MTPRestrictions\";\r\nimport MTPMotivation from \"./MTPMotivation\";\r\nimport Loading from \"../Loading\";\r\nimport MTPCategories from \"./MTPCategories\";\r\nimport MTPManualSupplierStep from \"./MTPManualSupplierStep/MTPManualSupplierStep\";\r\nimport CompanyConfigurationFeatures from \"../../Util/Enumerators/CompanyConfigurationFeatures\";\r\nimport { StaticCompanyDataTypes } from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n onboardingRequest: state.onboardingRequest,\r\n companyId: state.companyId,\r\n allowedCompanyFeatures: state.companyConfiguration.allowedCompanyFeatures,\r\n supplierTypes: state.staticCompanyData[StaticCompanyDataTypes.supplierType],\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setOnboardingRequestObject: (onbordingRequest) => {\r\n dispatch(setOnboardingRequestObject(onbordingRequest));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass OnboardingRequestEdit extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n loading: true,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const { id, step } = this.props.match.params;\r\n\r\n try {\r\n this.props.showLoadingScreen();\r\n\r\n // load onboarding request\r\n if (id === \"new\") {\r\n const newRequest = await newOnboardingRequest();\r\n this.props.setOnboardingRequestObject(newRequest);\r\n } else {\r\n const onboardingRequest = await getOnboardingRequest(id);\r\n this.props.setOnboardingRequestObject({\r\n ...onboardingRequest,\r\n isVatRegistered:\r\n !!onboardingRequest.vatNumber\r\n && onboardingRequest.vatNumber.length > 0\r\n ? 1\r\n : 0,\r\n });\r\n }\r\n this.props.hideLoadingScreen();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n throw error;\r\n }\r\n\r\n if (this.state.loading) {\r\n this.setState({ loading: false });\r\n }\r\n\r\n if (step !== \"1\") {\r\n // we are reloading and we are not at the first step, force the browser to the fist step\r\n this.props.history.replace(`/myoffice/onboardingrequest/${id}/1`);\r\n }\r\n }\r\n\r\n render() {\r\n const supplierCompanyId = this.props.onboardingRequest.supplierCompanyId;\r\n\r\n const supplierTypeDataFeatures = this.props.supplierTypes\r\n ? this.props.supplierTypes\r\n .find((supplierType) => supplierType.id === this.props.onboardingRequest?.supplierTypeId)\r\n ?.dataFeatures\r\n : DataFeatures.None;\r\n\r\n // eslint-disable-next-line no-bitwise\r\n const hasBankStep = (supplierTypeDataFeatures & DataFeatures.BankingDetails);\r\n\r\n // Array of MTP Steps\r\n const MTPSteps = [];\r\n MTPSteps.push();\r\n\r\n if ((\r\n // eslint-disable-next-line no-bitwise\r\n this.props.allowedCompanyFeatures & CompanyConfigurationFeatures.MTOProductAndSegments\r\n ) > 0) {\r\n MTPSteps.push();\r\n }\r\n\r\n // eslint-disable-next-line no-bitwise\r\n if ((this.props.allowedCompanyFeatures & CompanyConfigurationFeatures.MTORestrictions) > 0) {\r\n MTPSteps.push();\r\n }\r\n\r\n // eslint-disable-next-line no-bitwise\r\n if ((this.props.allowedCompanyFeatures & CompanyConfigurationFeatures.MTOMotivation) > 0) {\r\n MTPSteps.push();\r\n }\r\n\r\n // Generate manual some supplier steps from MTPSteps\r\n const ManualMTPSteps = MTPSteps.map((component, index) => ({\r\n ...component,\r\n props: {\r\n // adjust the step number\r\n stepNumber: hasBankStep ? index + 5 : index + 4,\r\n },\r\n }));\r\n\r\n const getComponentForStep = (step) => {\r\n switch (step) {\r\n case \"m-1\":\r\n case \"1\":\r\n return MTPSteps[0];\r\n case \"2\":\r\n return MTPSteps[1];\r\n case \"3\":\r\n return MTPSteps[2];\r\n case \"4\":\r\n return MTPSteps[3];\r\n case \"m-2\":\r\n return ;\r\n case \"m-3\":\r\n return ;\r\n case \"m-4\":\r\n return ;\r\n case \"m-5\":\r\n if (hasBankStep) {\r\n return ;\r\n }\r\n return ManualMTPSteps[1];\r\n case \"m-6\":\r\n if (hasBankStep) {\r\n return ManualMTPSteps[1];\r\n }\r\n return ManualMTPSteps[2];\r\n case \"m-7\":\r\n if (hasBankStep) {\r\n return ManualMTPSteps[2];\r\n }\r\n return ManualMTPSteps[3];\r\n case \"m-8\":\r\n if (hasBankStep) {\r\n return ManualMTPSteps[3];\r\n }\r\n return null;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n return (\r\n
    \r\n {getComponentForStep(this.props.match.params.step)}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(OnboardingRequestEdit)\r\n);\r\n","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport {\r\n Table,\r\n // eslint-disable-next-line no-unused-vars\r\n TableConfig,\r\n // eslint-disable-next-line no-unused-vars\r\n TableData,\r\n PageHeading,\r\n useRouteState,\r\n UtilButton,\r\n SearchInput,\r\n} from \"isuppli-react-components\";\r\n\r\nimport { useHistory } from \"react-router\";\r\n\r\nimport navMenuItems from \"../../../Util/menuItems\";\r\nimport ComplianceStatus, {\r\n complianceStatusToString,\r\n getComplianceStatusTextClass,\r\n} from \"../../../Util/Enumerators/ComplianceStatus\";\r\n\r\nimport { StaticCompanyDataTypes } from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\nimport { sendComplianceCheckSearch } from \"../../../http/index\";\r\n\r\nimport { formatDate } from \"../../../Util/valueFormatter\";\r\nimport useStaticCompanyData from \"../../../Hooks/useStaticCompanyData\";\r\nimport SupplierCheckModal from \"../../../Containers/Marketplace/SupplierChecksModal/SupplierCheckModal\";\r\n\r\ninterface SupplierCheckTableItem {\r\n id: number;\r\n dateModified: string;\r\n registeredName: string;\r\n supplierCategories: string;\r\n checkStatus: JSX.Element;\r\n vendorNumber: string;\r\n}\r\n\r\ninterface SupplierCheckResultItem {\r\n companyId: number;\r\n dateModified: Date;\r\n registeredName: string;\r\n supplierCategories: number[];\r\n complianceStatus: ComplianceStatus;\r\n vendorNumber: string,\r\n}\r\n\r\ninterface SearchResultMessage {\r\n totalItems: number;\r\n items: SupplierCheckResultItem[];\r\n}\r\n\r\ninterface SupplierCheckSearchCriteria {\r\n limit: number;\r\n offset: number;\r\n registeredName?: string;\r\n sortingDesc: boolean;\r\n statusFilter: ComplianceStatus;\r\n}\r\n\r\nconst SupplierChecks = () => {\r\n const [\r\n [supplierCategories],\r\n staticDataReady,\r\n ] = useStaticCompanyData([StaticCompanyDataTypes.supplierCategory]);\r\n\r\n const [searchTerm, setSearchTerm] = useRouteState(\"q\", \"\");\r\n const [currentSearchTerm, setCurrentSearchTerm] = useState(searchTerm);\r\n const [pageInfo, setPageInfo] = useRouteState(\"p\", { l: 20, o: 0 });\r\n const [sortOption, setSortOption] = useRouteState(\"s\", 0);\r\n const [filterOption, setFilterOption] = useRouteState(\r\n \"f\",\r\n ComplianceStatus.None\r\n );\r\n\r\n const [searchResults, setSearchResults] = useState<{\r\n totalItems: number,\r\n items: SupplierCheckTableItem[]\r\n } | null>(null);\r\n const [loading, setLoading] = useState(true);\r\n const [showCheckDetailsModal, setShowCheckDetailsModal] = useState(false);\r\n const [selectedCompany, setSelectedCompany] = useState();\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n setCurrentSearchTerm(searchTerm);\r\n }, [searchTerm]);\r\n\r\n const loadData = useCallback(async (searchInfo: {\r\n sortOption: number;\r\n filterOption: ComplianceStatus;\r\n searchTerm: string;\r\n pageInfo: { l: number; o: number };\r\n }) => {\r\n setLoading(true);\r\n const searchCriteria: SupplierCheckSearchCriteria = {\r\n sortingDesc: searchInfo.sortOption === 0,\r\n statusFilter: searchInfo.filterOption,\r\n registeredName: searchInfo.searchTerm,\r\n limit: searchInfo.pageInfo.l,\r\n offset: searchInfo.pageInfo.o,\r\n };\r\n const results: SearchResultMessage = await sendComplianceCheckSearch(searchCriteria);\r\n\r\n const getClassFromStatus = (status: ComplianceStatus) => {\r\n const classes = [\"font-weight-bold\"];\r\n classes.push(getComplianceStatusTextClass(status));\r\n return classes.join(\" \");\r\n };\r\n\r\n // format results\r\n const formattedItems = results.items.map((c) => ({\r\n id: c.companyId,\r\n checkStatus: (\r\n \r\n {complianceStatusToString(c.complianceStatus)}\r\n ),\r\n dateModified: formatDate(c.dateModified),\r\n supplierCategories: c.supplierCategories\r\n .map((categoryId) => supplierCategories\r\n .find((category) => category.value === categoryId)?.display)\r\n .join(\", \"),\r\n registeredName: c.registeredName,\r\n vendorNumber: c.vendorNumber,\r\n } as SupplierCheckTableItem));\r\n\r\n setSearchResults({\r\n totalItems: results.totalItems,\r\n items: formattedItems,\r\n });\r\n\r\n setLoading(false);\r\n }, [setLoading, supplierCategories]);\r\n\r\n useEffect(() => {\r\n if (!staticDataReady) {\r\n return;\r\n }\r\n\r\n loadData({\r\n sortOption,\r\n filterOption,\r\n searchTerm,\r\n pageInfo,\r\n });\r\n },\r\n [searchTerm, sortOption, filterOption, pageInfo, staticDataReady, loadData, history.location]);\r\n\r\n const onSearchHandler = () => {\r\n setPageInfo({ l: pageInfo.l, o: 0 });\r\n setSearchTerm(currentSearchTerm);\r\n };\r\n\r\n const tableConfig: TableConfig = {\r\n columns: [\r\n {\r\n key: \"dateModified\",\r\n heading: \"Date Checked\",\r\n propName: \"dateModified\",\r\n size: \"auto\",\r\n align: \"left\",\r\n },\r\n {\r\n key: \"supName\",\r\n heading: \"Supplier Name\",\r\n size: \"auto\",\r\n fullSize: true,\r\n align: \"left\",\r\n valueTemplate: (row) => (\r\n {\r\n setSelectedCompany(row);\r\n setShowCheckDetailsModal(true);\r\n }}\r\n >\r\n {row.registeredName}\r\n \r\n ),\r\n },\r\n {\r\n key: \"checkStatus\",\r\n heading: \"Check Status\",\r\n propName: \"checkStatus\",\r\n size: \"auto\",\r\n align: \"left\",\r\n },\r\n ],\r\n moreButtonText: \"View Supplier Checks\",\r\n sortOptions: {\r\n selectedSortOption: sortOption,\r\n options: [\r\n { value: 0, display: \"Newest first\" },\r\n { value: 1, display: \"Oldest first\" },\r\n ],\r\n },\r\n statusFilterOptions: {\r\n selectedStatusFilterOption: filterOption,\r\n options: [\r\n {\r\n value: ComplianceStatus.None,\r\n display: \"All\",\r\n },\r\n {\r\n value: ComplianceStatus.Complete,\r\n display: complianceStatusToString(ComplianceStatus.Complete),\r\n },\r\n {\r\n value: ComplianceStatus.AwaitingResults,\r\n display: complianceStatusToString(ComplianceStatus.AwaitingResults),\r\n },\r\n {\r\n value: ComplianceStatus.Error,\r\n display: complianceStatusToString(ComplianceStatus.Error),\r\n },\r\n ],\r\n },\r\n };\r\n\r\n const tableData: TableData = {\r\n limit: pageInfo.l,\r\n offset: pageInfo.o,\r\n totalItems: searchResults?.totalItems ?? 0,\r\n items: searchResults?.items ?? [],\r\n };\r\n\r\n return (\r\n
    \r\n {showCheckDetailsModal\r\n && (\r\n setShowCheckDetailsModal(false)}\r\n company={{\r\n id: selectedCompany?.id ?? 0,\r\n name: selectedCompany?.registeredName ?? \"\",\r\n vendorNumber: selectedCompany?.vendorNumber ?? \"\",\r\n }}\r\n />\r\n )}\r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n Search\r\n \r\n\r\n
    \r\n setPageInfo({ l, o })}\r\n tableStyle=\"basic\"\r\n onSortOptionChange={(newValue: number) => {\r\n setSortOption(newValue);\r\n setSearchTerm(currentSearchTerm);\r\n }}\r\n onStatusFilterChange={(newValue: ComplianceStatus) => {\r\n setPageInfo({ l: pageInfo.l, o: 0 });\r\n setFilterOption(newValue);\r\n setSearchTerm(currentSearchTerm);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierChecks;\r\n","import React from \"react\";\r\n\r\nconst PPReport = () => (\r\n \r\n);\r\n\r\nexport default PPReport;\r\n","import axios from \"axios\";\r\n\r\nimport {\r\n PendingVendorEventsMessage, // eslint-disable-line no-unused-vars\r\n SupplierUpdatesSearchCriteria, // eslint-disable-line no-unused-vars\r\n PendingEventDetailMessage, // eslint-disable-line no-unused-vars\r\n ApprovedEventItemMessage, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\n\r\nimport { makeRequestAsync } from \"../../util\";\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport async function getPendingEvents(searchCriteria: SupplierUpdatesSearchCriteria) {\r\n const urlParameters = [];\r\n if (searchCriteria.limit != null) {\r\n urlParameters.push(`limit=${searchCriteria.limit}`);\r\n }\r\n if (searchCriteria.offset != null) {\r\n urlParameters.push(`offset=${searchCriteria.offset}`);\r\n }\r\n if (searchCriteria.searchTerm != null) {\r\n urlParameters.push(`searchTerm=${searchCriteria.searchTerm}`);\r\n }\r\n if (searchCriteria.newestFirst != null) {\r\n urlParameters.push(`newestFirst=${searchCriteria.newestFirst}`);\r\n }\r\n if (searchCriteria.supplierCategoryManagerCodes != null) {\r\n searchCriteria.supplierCategoryManagerCodes.forEach((supplierCategoryManagerCode) => {\r\n urlParameters.push(`supplierCategoryManagerCodes=${supplierCategoryManagerCode}`);\r\n });\r\n }\r\n if (searchCriteria.supplierCategories != null) {\r\n searchCriteria.supplierCategories.forEach((supplierCategory) => {\r\n urlParameters.push(`supplierCategories=${supplierCategory}`);\r\n });\r\n }\r\n if (searchCriteria.supplierSubcategories != null) {\r\n searchCriteria.supplierSubcategories.forEach((supplierSubcategory) => {\r\n urlParameters.push(`supplierSubcategories=${supplierSubcategory}`);\r\n });\r\n }\r\n\r\n const url = `/api/erp/events?${urlParameters.join(\"&\")}`;\r\n\r\n const pendingEventsMessage = makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise;\r\n return pendingEventsMessage;\r\n}\r\n\r\nexport async function getPendingEventDetails(eventId: number) {\r\n const url = `/api/erp/events/${eventId}`;\r\n return makeRequestAsync(\r\n () => axios.get(url)\r\n ) as Promise>;\r\n}\r\n\r\nexport async function releaseEvent(eventId: number,\r\n releaseEventDetailItemMessages: Array) {\r\n const url = `/api/erp/events/${eventId}/release`;\r\n return makeRequestAsync(\r\n () => axios.put(url, releaseEventDetailItemMessages)\r\n ) as Promise;\r\n}\r\n","/* eslint-disable guard-for-in */\r\n/* eslint-disable consistent-return */\r\nimport React, {\r\n Dispatch, // eslint-disable-line no-unused-vars\r\n Fragment,\r\n SetStateAction, // eslint-disable-line no-unused-vars\r\n useEffect, useState,\r\n} from \"react\";\r\nimport {\r\n BasicTable, CheckboxInput,\r\n // eslint-disable-next-line no-unused-vars\r\n} from \"isuppli-react-components\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport useShowError from \"../../../../Hooks/useShowError\";\r\nimport { PendingEventDetailMessage, ApprovedEventItemMessage } from \"../../../../http/MyOffice/SupplierUpdates/Models/Models\"; // eslint-disable-line no-unused-vars\r\nimport { getPendingEventDetails } from \"../../../../http/MyOffice/SupplierUpdates/supplierUpdatesApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport pendingVendorDetailChangeType, { pendingVendorDetailToString } from \"../../../../Util/Enumerators/pendingVendorDetailChangeType\";\r\n\r\nconst PendingEventDetailTable = ({\r\n deleteEvent,\r\n eventId,\r\n approvedChangeEvents,\r\n setApprovedChangeEvent,\r\n}: {\r\n deleteEvent: boolean,\r\n eventId: number,\r\n approvedChangeEvents: Array,\r\n setApprovedChangeEvent: Dispatch>>\r\n}) => {\r\n const showError = useShowError();\r\n const [loadingTable, setLoadingTable] = useState(true);\r\n const [eventDetails, setEventDetails] = useState>([]);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoadingTable(true);\r\n\r\n try {\r\n if (eventId > 0) {\r\n const details = await getPendingEventDetails(eventId);\r\n setEventDetails(details);\r\n // by default all event detail are approved\r\n setApprovedChangeEvent(\r\n details.map((event) => (\r\n {\r\n detailChangeType: event.detailChangeType,\r\n primaryKey: event.uniqueIdentifier,\r\n propertyName: event.propertyName,\r\n } as ApprovedEventItemMessage\r\n ))\r\n );\r\n }\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoadingTable(false);\r\n };\r\n\r\n loader();\r\n }, [eventId, showError, setApprovedChangeEvent]);\r\n\r\n const formatJsonString = (jsonString: string) => {\r\n const jsonObj = JSON.parse(jsonString);\r\n const outputString = jsonObj != null ? Object.entries(jsonObj).map((entry, index) => (\r\n
    \r\n \r\n {`${entry[0]}:`}\r\n {\" \"}\r\n {`${entry[1] !== null && entry[1] !== \"\" ? entry[1] : null}`}\r\n
    \r\n
    \r\n
    \r\n )) : \"\";\r\n return (\r\n \r\n
    \r\n {outputString}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n const toggleApprovedItem = (eventDetailItem: PendingEventDetailMessage) => {\r\n const itemIsApproved = approvedChangeEvents.find(\r\n (x) => x.detailChangeType\r\n === eventDetailItem.detailChangeType\r\n && x.primaryKey === eventDetailItem.uniqueIdentifier\r\n && x.propertyName === eventDetailItem.propertyName\r\n ) != null;\r\n\r\n if (itemIsApproved) {\r\n // remove item\r\n setApprovedChangeEvent((prev) => prev.filter((x) => !(\r\n x.detailChangeType === eventDetailItem.detailChangeType\r\n && x.primaryKey === eventDetailItem.uniqueIdentifier\r\n && x.propertyName === eventDetailItem.propertyName)));\r\n } else {\r\n // add item\r\n setApprovedChangeEvent((prev) => prev.concat({\r\n detailChangeType: eventDetailItem.detailChangeType,\r\n primaryKey: eventDetailItem.uniqueIdentifier,\r\n propertyName: eventDetailItem.propertyName,\r\n }));\r\n }\r\n };\r\n\r\n const displayResults = Object.values(pendingVendorDetailChangeType).map((changeType, index) => {\r\n const groupedDetails = eventDetails.filter((data) => data.detailChangeType === changeType);\r\n const displayDetailChangeType = pendingVendorDetailToString(\r\n changeType as pendingVendorDetailChangeType\r\n );\r\n if (typeof (changeType) === \"string\") { return null; }\r\n\r\n if (changeType !== pendingVendorDetailChangeType.BankAccounts\r\n && changeType !== pendingVendorDetailChangeType.ContactDetails) {\r\n return (\r\n
    \r\n

    \r\n Changes: \r\n {displayDetailChangeType}\r\n

    \r\n deleteEvent\r\n ? [{\r\n key: \"propName\",\r\n value: row.displayPropertyName,\r\n },\r\n {\r\n key: \"currentVal\",\r\n value: row.currentValue,\r\n },\r\n {\r\n key: \"newVal\",\r\n value: row.newValue,\r\n }]\r\n : [\r\n {\r\n key: \"propName\",\r\n value: row.displayPropertyName,\r\n },\r\n {\r\n key: \"currentVal\",\r\n value: row.currentValue,\r\n },\r\n {\r\n key: \"newVal\",\r\n value: row.newValue,\r\n },\r\n {\r\n key: \"approveChange\",\r\n align: \"center\",\r\n // eslint-disable-next-line react/button-has-type\r\n value: x.detailChangeType === row.detailChangeType\r\n && x.propertyName === row.propertyName) != null}\r\n onChange={() => toggleApprovedItem(row)}\r\n />,\r\n },\r\n ])}\r\n />\r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n Changes: \r\n {displayDetailChangeType}\r\n

    \r\n deleteEvent\r\n ? [\r\n {\r\n key: \"propName\",\r\n value: row.displayPropertyName,\r\n },\r\n {\r\n key: \"currentVal\",\r\n value: formatJsonString(row.currentValue ?? \"\"),\r\n },\r\n {\r\n key: \"newVal\",\r\n value: formatJsonString(row.newValue ?? \"\"),\r\n }]\r\n : [\r\n {\r\n key: \"propName\",\r\n value: row.displayPropertyName,\r\n },\r\n {\r\n key: \"currentVal\",\r\n value: formatJsonString(row.currentValue ?? \"\"),\r\n },\r\n {\r\n key: \"newVal\",\r\n value: formatJsonString(row.newValue ?? \"\"),\r\n },\r\n {\r\n key: \"approveChange\",\r\n align: \"center\",\r\n // eslint-disable-next-line react/button-has-type\r\n value: x.detailChangeType === row.detailChangeType\r\n && x.primaryKey === row.uniqueIdentifier) != null}\r\n onChange={() => toggleApprovedItem(row)}\r\n />,\r\n },\r\n ])}\r\n />\r\n
    \r\n );\r\n });\r\n\r\n return (\r\n \r\n {!loadingTable && displayResults}\r\n \r\n );\r\n};\r\n\r\nexport default PendingEventDetailTable;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport { ConfirmationModal, ModalPopup, Spinner } from \"isuppli-react-components\";\r\nimport PendingEventDetailTable from \"../PendingEventDetailTable/PendingEventDetailTable\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ApprovedEventItemMessage } from \"../../../../http/MyOffice/SupplierUpdates/Models/ApprovedEventItemMessage\";\r\nimport useShowError from \"../../../../Hooks/useShowError\";\r\nimport { releaseEvent } from \"../../../../http/MyOffice/SupplierUpdates/supplierUpdatesApi\";\r\nimport Styles from \"./PendingEventDetailModal.module.scss\";\r\n\r\nconst PendingEventDetailModal = (\r\n {\r\n deleteEvent,\r\n eventId,\r\n onClose,\r\n registeredName,\r\n tradingName,\r\n removeReleasedEventFromResult,\r\n }\r\n :\r\n {\r\n deleteEvent: boolean,\r\n eventId: number,\r\n onClose: () => void,\r\n registeredName?: string,\r\n tradingName?: string,\r\n removeReleasedEventFromResult: (eventId: number) => void,\r\n }\r\n) => {\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n const [approvedChangeEvents, setApprovedChangeEvent] = useState<\r\n Array>([]);\r\n const [showReleaseEventModal, setShowReleaseEventModal] = useState(false);\r\n const [showDeleteEventModal, setShowDeleteEventModal] = useState(false);\r\n const [showSuccessModal, setSuccessModal] = useState(false);\r\n\r\n const releaseEventHandler = async () => {\r\n setLoading(true);\r\n // api call\r\n try {\r\n await releaseEvent(eventId, approvedChangeEvents);\r\n removeReleasedEventFromResult(eventId);\r\n setSuccessModal(true);\r\n } catch {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const deleteEventHandler = async () => {\r\n setLoading(true);\r\n // api call\r\n try {\r\n await releaseEvent(eventId, []);\r\n removeReleasedEventFromResult(eventId);\r\n onClose();\r\n } catch {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n return (\r\n \r\n { loading && }\r\n {showReleaseEventModal && (\r\n
    \r\n setShowReleaseEventModal(false)}\r\n onProceedClick={async () => { await releaseEventHandler(); }}\r\n />\r\n
    \r\n )}\r\n {showDeleteEventModal && (\r\n
    \r\n setShowDeleteEventModal(false)}\r\n onProceedClick={async () => { await deleteEventHandler(); }}\r\n />\r\n
    \r\n )}\r\n {showSuccessModal && (\r\n
    \r\n {}}\r\n onToggleModal={() => {\r\n setSuccessModal(false);\r\n onClose();\r\n }}\r\n />\r\n
    \r\n )}\r\n\r\n deleteEvent ? setShowDeleteEventModal(true) : setShowReleaseEventModal(true),\r\n },\r\n ]}\r\n >\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default PendingEventDetailModal;\r\n","import React, { useState, useCallback, useEffect } from \"react\";\r\nimport {\r\n PageHeading,\r\n SearchInput,\r\n useRouteState,\r\n Table,\r\n TableConfig, // eslint-disable-line no-unused-vars\r\n TableData, // eslint-disable-line no-unused-vars\r\n TableActionsItem,\r\n SearchFiltersContainer,\r\n FilterInfo, // eslint-disable-line no-unused-vars\r\n FilterTypes,\r\n FilterValue, // eslint-disable-line no-unused-vars\r\n FilterOption, // eslint-disable-line no-unused-vars\r\n} from \"isuppli-react-components\";\r\nimport { useHistory } from \"react-router\";\r\nimport navMenuItems from \"../../../Util/menuItems\";\r\nimport { formatDate } from \"../../../Util/valueFormatter\";\r\n\r\nimport {\r\n getPendingEvents,\r\n} from \"../../../http/MyOffice/SupplierUpdates/supplierUpdatesApi\";\r\n\r\nimport {\r\n PendingVendorEventsMessage, // eslint-disable-line no-unused-vars\r\n PendingVendorEventMessage, // eslint-disable-line no-unused-vars\r\n SupplierUpdatesSearchCriteria, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/MyOffice/SupplierUpdates/Models/Models\";\r\nimport useStaticCompanyData from \"../../../Hooks/useStaticCompanyData\";\r\nimport { StaticCompanyDataTypes } from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport SupplierDetailsModal from \"../../SupplierDetailsModal\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport PendingEventDetailModal from \"./PendingEventDetailModal/PendingEventDetailModal\";\r\nimport { getCompanyCategoryManagers, getUserBasicDetails } from \"../../../http/gets\";\r\n\r\ninterface SupplierUpdateTableItem extends PendingVendorEventMessage {\r\n formattedDate: string\r\n}\r\n\r\ninterface Company {\r\n companyId?: number,\r\n registeredName?: string\r\n}\r\n\r\ninterface SupplierCategoryManager{\r\n value: string,\r\n display: string\r\n}\r\n\r\nconst SupplierUpdates = () => {\r\n const [\r\n [supplierCategories],\r\n staticDataReady,\r\n ] = useStaticCompanyData([\r\n StaticCompanyDataTypes.supplierCategory,\r\n ]);\r\n const [userDetails, setUserDetails] = useState({});\r\n const [searchTerm, setSearchTerm] = useRouteState(\"q\", \"\");\r\n const [currentSearchTerm, setCurrentSearchTerm] = useState(searchTerm);\r\n const [pageInfo, setPageInfo] = useRouteState(\"p\", { l: 20, o: 0 });\r\n const [loading, setLoading] = useState(true);\r\n const [sortOption, setSortOption] = useRouteState(\"s\", 0);\r\n const [routeFilterValues, setRouteFilterValues] = useRouteState(\"fv\", []);\r\n const [filterValues, setFilterValues] = useState(routeFilterValues);\r\n const history = useHistory();\r\n\r\n const [searchResults, setSearchResults] = useState<{\r\n totalItems: number,\r\n items: SupplierUpdateTableItem[]\r\n } | null>(null);\r\n\r\n const [currentEventId, setCurrentEventId] = useState(0);\r\n const [categoryManagers, setCategoryManagers] = useState();\r\n const [showEventChangesModal, setShowEventChangesModal] = useState(false);\r\n const [showSupplierDetailsModal, setShowSupplierDetailsModal] = useState(false);\r\n const [supplierDetailsCompany, setSupplierDetailsCompany] = useState();\r\n\r\n const showError = useShowError();\r\n\r\n const loadData = useCallback(async (searchInfo: {\r\n sortOption: number;\r\n searchTerm: string;\r\n pageInfo: { l: number; o: number };\r\n filterValues: FilterValue[];\r\n }) => {\r\n try {\r\n setLoading(true);\r\n\r\n const details = await getUserBasicDetails();\r\n setUserDetails(details);\r\n\r\n const searchCriteria: SupplierUpdatesSearchCriteria = {\r\n newestFirst: searchInfo.sortOption === 0,\r\n searchTerm: searchInfo.searchTerm,\r\n limit: searchInfo.pageInfo.l,\r\n offset: searchInfo.pageInfo.o,\r\n supplierCategoryManagerCodes: searchInfo.filterValues[0] as string[],\r\n supplierCategories: searchInfo.filterValues[1] as number[],\r\n supplierSubcategories: searchInfo.filterValues[2] as number[],\r\n };\r\n\r\n // api call\r\n const results: PendingVendorEventsMessage = await getPendingEvents(searchCriteria);\r\n\r\n // format date\r\n const formattedItems = results.items.map((item) => ({\r\n ...item,\r\n formattedDate: formatDate(item.dateLastUpdated),\r\n } as SupplierUpdateTableItem));\r\n\r\n setSearchResults({\r\n totalItems: results.totalItems,\r\n items: formattedItems,\r\n });\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n }, [setLoading, showError]);\r\n\r\n useEffect(() => {\r\n setFilterValues(routeFilterValues);\r\n\r\n if (!staticDataReady) {\r\n return;\r\n }\r\n\r\n loadData({\r\n sortOption,\r\n searchTerm,\r\n pageInfo,\r\n filterValues: routeFilterValues,\r\n });\r\n }, [searchTerm,\r\n sortOption,\r\n pageInfo,\r\n routeFilterValues,\r\n staticDataReady,\r\n loadData,\r\n history.location,\r\n ]);\r\n\r\n useEffect(() => {\r\n const dataLoader = async () => {\r\n const categoryManagersMessage = await getCompanyCategoryManagers();\r\n setCategoryManagers(categoryManagersMessage.categoryManagers.map((manager: any) => ({\r\n value: manager.code,\r\n display: manager.fullName,\r\n })));\r\n };\r\n dataLoader();\r\n }, []);\r\n\r\n const onSearchHandler = () => {\r\n setPageInfo({ l: pageInfo.l, o: 0 });\r\n setSearchTerm(currentSearchTerm);\r\n setRouteFilterValues(filterValues ?? []);\r\n };\r\n\r\n const clearSearch = () => {\r\n setCurrentSearchTerm(\"\");\r\n setSearchTerm(\"\");\r\n setRouteFilterValues([]);\r\n setFilterValues([]);\r\n };\r\n\r\n const onFilterValuesChangeHandler = (values: FilterValue[]) => {\r\n setFilterValues(values);\r\n };\r\n\r\n const supplierDetailsHandler = (eventId: number) => {\r\n const rowItem = searchResults?.items.find((item) => item.id === eventId);\r\n setSupplierDetailsCompany({\r\n companyId: rowItem?.companyId,\r\n registeredName: rowItem?.registeredName,\r\n });\r\n setShowSupplierDetailsModal(true);\r\n };\r\n\r\n const tableConfig: TableConfig = {\r\n columns: [\r\n {\r\n key: \"supName\",\r\n heading: \"Supplier Name\",\r\n propName: \"registeredName\",\r\n size: \"1fr\",\r\n },\r\n {\r\n key: \"tradingName\",\r\n heading: \"Trading Name\",\r\n propName: \"tradingName\",\r\n size: \"1fr\",\r\n },\r\n {\r\n key: \"vendorNumber\",\r\n heading: \"Vendor Number\",\r\n propName: \"vendorNumber\",\r\n size: \"1fr\",\r\n },\r\n {\r\n key: \"dateLastUpdated\",\r\n heading: \"Date Last Updated\",\r\n propName: \"formattedDate\",\r\n size: \"1fr\",\r\n },\r\n ],\r\n sortOptions: {\r\n selectedSortOption: sortOption,\r\n options: [\r\n { value: 0, display: \"Newest first\" },\r\n { value: 1, display: \"Oldest first\" },\r\n ],\r\n },\r\n actionOptions: [\r\n supplierDetailsHandler(items[0])}\r\n >\r\n View supplier details\r\n ,\r\n {\r\n setCurrentEventId(items[0]);\r\n setShowEventChangesModal(true);\r\n }}\r\n >\r\n Show pending changes\r\n ],\r\n };\r\n\r\n const tableData: TableData = {\r\n limit: pageInfo.l,\r\n offset: pageInfo.o,\r\n totalItems: searchResults?.totalItems ?? 0,\r\n items: searchResults?.items ?? [],\r\n };\r\n\r\n const selectedCategories = filterValues[1] as number[] ?? [];\r\n let selectedCategory = 0;\r\n if (selectedCategories.length === 1) {\r\n selectedCategory = selectedCategories[0];\r\n }\r\n\r\n const filters: FilterInfo[] = [\r\n {\r\n filterName: \"Supplier Category Managers\",\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n options: categoryManagers as Array,\r\n },\r\n {\r\n filterName: \"Company Product Segment\",\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n options: supplierCategories as Array,\r\n },\r\n {\r\n filterName: \"Company Product Family\",\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n options: (supplierCategories\r\n ?.find((c) => c.value === selectedCategory)\r\n ?.supplierSubCategories) as Array,\r\n },\r\n ];\r\n\r\n const removeReleasedEventFromResults = (eventId:number) => {\r\n if (searchResults != null) {\r\n setSearchResults({\r\n ...searchResults,\r\n items: searchResults.items.filter((x) => x.id !== eventId),\r\n });\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n\r\n {showEventChangesModal && (\r\n setShowEventChangesModal(false)}\r\n registeredName={searchResults?.items\r\n .find((item) => item.id === currentEventId)?.registeredName}\r\n tradingName={searchResults?.items\r\n .find((item) => item.id === currentEventId)?.tradingName}\r\n />\r\n )}\r\n\r\n {showSupplierDetailsModal && (\r\n setShowSupplierDetailsModal(false)}\r\n isPotentialSupplier={false}\r\n isSupplierSearch\r\n company={supplierDetailsCompany}\r\n onboardSupplierCallback={() => { }}\r\n />\r\n )}\r\n\r\n \r\n \r\n\r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n setPageInfo({ l, o })}\r\n tableStyle=\"compact\"\r\n onSortOptionChange={(newValue: number) => {\r\n setSortOption(newValue);\r\n setSearchTerm(currentSearchTerm);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierUpdates;\r\n","import React from \"react\";\r\nimport { SystemFeatures, FeatureRoute } from \"isuppli-react-components\";\r\nimport { Route, Switch, Redirect } from \"react-router-dom\";\r\n\r\nimport OnboardingRequest from \"../Sections/Marketplace/OnboardingRequest\";\r\nimport OnboardingRequestEdit from \"../Sections/Marketplace/OnboardingRequestEdit\";\r\nimport SupplierChecks from \"../Sections/Marketplace/SupplierChecks/SupplierChecks\";\r\nimport PPReport from \"../Sections/MyOffice/PPReport/PPReport\";\r\nimport SupplierUpdates from \"../Sections/MyOffice/SupplierUpdates/SupplierUpdates\";\r\n\r\nfunction MyOfficeView() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default MyOfficeView;\r\n","/* eslint-disable import/prefer-default-export */\r\nimport axios from \"axios\";\r\nimport { makeRequestAsync } from \"../util\";\r\nimport {\r\n InitiateOpportunityMessage, // eslint-disable-line no-unused-vars\r\n ExportCSVMessage, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\n\r\nexport async function initiateOpportunity(companyIds: Array) {\r\n const url = \"api/opportunities/opportunities/initiate\";\r\n const message: InitiateOpportunityMessage = {\r\n companyIds,\r\n };\r\n return makeRequestAsync(() => axios\r\n .post(url, message)) as Promise;\r\n}\r\n\r\nexport async function exportCSV(companyIds: Array) {\r\n const url = \"api/reporting/exportCSV\";\r\n const message = {\r\n companyIds,\r\n } as ExportCSVMessage;\r\n return makeRequestAsync(() => axios\r\n .post(url, message)) as Promise;\r\n}\r\n","const searchSupplierSortingFields = {\r\n none: -1,\r\n relevance: 0,\r\n registeredName: 1,\r\n dateModified: 2,\r\n supplierRating: 3,\r\n};\r\n\r\nexport default searchSupplierSortingFields;\r\n","const SupplierExportStatus = {\r\n None: 0,\r\n Complete: 10,\r\n Pending: 20,\r\n Failed: 30,\r\n};\r\n\r\nexport default SupplierExportStatus;\r\n","import React from \"react\";\r\n\r\nimport { PageHeading, SearchInput } from \"isuppli-react-components\";\r\nimport navMenuItems from \"../../Util/menuItems\";\r\n\r\nfunction MarketplaceSearch(props) {\r\n return (\r\n
    \r\n \r\n\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default MarketplaceSearch;\r\n","/* eslint-disable no-unused-vars */\r\nenum BeeStateFilter {\r\n None = 0,\r\n Valid = 1,\r\n Invalid = 2,\r\n Expired = 3,\r\n PendingValidation = 4,\r\n Outstanding = 5,\r\n Exclusion = 6,\r\n ValidForClient = 7,\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport const beeStateFilterToString = (value: BeeStateFilter) => {\r\n switch (value) {\r\n case BeeStateFilter.None:\r\n return \"None\";\r\n case BeeStateFilter.Valid:\r\n return \"Valid\";\r\n case BeeStateFilter.Invalid:\r\n return \"Invalid\";\r\n case BeeStateFilter.Expired:\r\n return \"Expired\";\r\n case BeeStateFilter.PendingValidation:\r\n return \"Pending Validation\";\r\n case BeeStateFilter.Outstanding:\r\n return \"Outstanding\";\r\n case BeeStateFilter.Exclusion:\r\n return \"Exclusion\";\r\n case BeeStateFilter.ValidForClient:\r\n return \"Valid For Client\";\r\n default:\r\n return \"Unknown\";\r\n }\r\n};\r\n\r\nexport default BeeStateFilter;\r\n","/* eslint-disable keyword-spacing */\r\nimport React, {\r\n useState, Fragment,\r\n} from \"react\";\r\n\r\nimport {\r\n Spinner,\r\n ConfirmationModal,\r\n} from \"isuppli-react-components\";\r\nimport {\r\n addNewSupplierOnboarding,\r\n} from \"../../../http/posts\";\r\nimport { unlinkSupplierOnboarding } from \"../../../http/deletes\";\r\n\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n\r\nconst AddSupplierModal = ({\r\n onClose,\r\n onRefresh,\r\n supplierId,\r\n isEditing,\r\n registeredCompanyName,\r\n}: {\r\n onRefresh: () => void;\r\n onClose: () => void;\r\n supplierId: number;\r\n isEditing: boolean;\r\n currentVendorNumber: string;\r\n registeredCompanyName: string;\r\n}) => {\r\n const [loading, setLoading] = useState(false);\r\n\r\n const showError = useShowError();\r\n\r\n const onSaveHandler = async () => {\r\n setLoading(true);\r\n try {\r\n await addNewSupplierOnboarding({\r\n supplierCompanyId: supplierId,\r\n });\r\n onRefresh();\r\n onClose();\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const unlinkHandler = async () => {\r\n setLoading(true);\r\n // unlink\r\n try {\r\n await unlinkSupplierOnboarding(supplierId);\r\n onRefresh();\r\n onClose();\r\n } catch (error) {\r\n showError();\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {loading && }\r\n \r\n );\r\n};\r\n\r\nexport default AddSupplierModal;\r\n","const searchBeeStatuses = {\r\n none: -1,\r\n lt30: 0,\r\n lt51: 1,\r\n lte100: 2,\r\n eq100: 3,\r\n};\r\n\r\nexport default searchBeeStatuses;\r\n","enum BeeOwnership {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n Flowthrough = 1, // eslint-disable-line no-unused-vars\r\n Modified = 2, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const beeOwnershipToString = (\r\n value: BeeOwnership\r\n) => {\r\n switch (value) {\r\n case BeeOwnership.None:\r\n return \"None\";\r\n case BeeOwnership.Flowthrough:\r\n return \"Flowthrough\";\r\n case BeeOwnership.Modified:\r\n return \"Modified\";\r\n default:\r\n return \"Others\";\r\n }\r\n};\r\n\r\nexport default BeeOwnership;\r\n","import React, { useState, useRef } from \"react\";\r\nimport {\r\n ModalPopup, TextInput, Spinner, Form, FormRef, // eslint-disable-line no-unused-vars\r\n} from \"isuppli-react-components\";\r\nimport { addSubAccount, editSubAccount } from \"../../http/posts\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\n\r\nexport enum SubAccountOperation {\r\n Add = 0, // eslint-disable-line no-unused-vars\r\n Update = 1, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nconst SubAccount = (\r\n {\r\n operation,\r\n companyId,\r\n originalTradingName = \"\",\r\n setNewTradingName,\r\n onClose,\r\n }:\r\n {\r\n operation: SubAccountOperation,\r\n companyId?: number,\r\n originalTradingName?: string,\r\n setNewTradingName: (newVal: string) => void,\r\n onClose: () => void,\r\n }\r\n) => {\r\n const formRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [tradingName, setTradingName] = useState(originalTradingName ?? \"\");\r\n const showError = useShowError();\r\n\r\n const addSubAccountHandler = async () => {\r\n if (!(formRef.current?.isValid() ?? false)) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n try {\r\n // build message\r\n const message = {\r\n parentCompanyId: companyId,\r\n tradingName,\r\n };\r\n\r\n // api call\r\n await addSubAccount(message);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n onClose();\r\n };\r\n\r\n const editSubAccountHandler = async () => {\r\n if (!(formRef.current?.isValid() ?? false)) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n try {\r\n // build message\r\n const message = {\r\n tradingName,\r\n };\r\n\r\n // api call\r\n await editSubAccount(companyId, message);\r\n } catch (error) {\r\n showError();\r\n }\r\n // update trading name in search results\r\n setNewTradingName(tradingName);\r\n setLoading(false);\r\n onClose();\r\n };\r\n\r\n return (\r\n {\r\n operation === SubAccountOperation.Update\r\n ? editSubAccountHandler()\r\n : addSubAccountHandler();\r\n },\r\n color: \"primary\",\r\n }]}\r\n >\r\n
    \r\n {loading && }\r\n
    \r\n setTradingName(value)}\r\n required\r\n minLength={1}\r\n validationMessage=\"Please enter a valid trading name\"\r\n />\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SubAccount;\r\n","import React, { useState } from \"react\";\r\nimport { Tooltip } from \"reactstrap\";\r\nimport Styles from \"./SupplierSearch.module.scss\";\r\n\r\nconst SupplierSearchToolTip = (props) => {\r\n const [tooltipOpen, setTooltipOpen] = useState(false);\r\n\r\n const toggle = () => setTooltipOpen(!tooltipOpen);\r\n\r\n const tradeDescription = props.rowData.tradeDescription ?? \"None\";\r\n\r\n return (\r\n
    \r\n \r\n {props.rowData.registeredName}\r\n \r\n \r\n Services:\r\n
    \r\n {`${tradeDescription}`}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierSearchToolTip;\r\n","import React from \"react\";\r\nimport {\r\n FilterTypes,\r\n AdvancedFilterTypes,\r\n hasFeature,\r\n SystemFeatures,\r\n} from \"isuppli-react-components\";\r\nimport { Badge } from \"reactstrap\";\r\n\r\nimport StarRatingInput from \"../../Controls/StarRatingInput/StarRatingInput\";\r\nimport searchBeeStatuses from \"../../Util/Enumerators/searchBeeStatusCriteria\";\r\nimport supplierStatuses from \"../../Util/Enumerators/supplierStatuses\";\r\nimport onboardingStatuses from \"../../Util/Enumerators/onboardingStatuses\";\r\nimport supplierFilterOptions from \"../../Util/Enumerators/supplierFilterOptions\";\r\nimport {\r\n getComplianceStatusTextClass,\r\n complianceStatusToString,\r\n} from \"../../Util/Enumerators/ComplianceStatus\";\r\nimport {\r\n ComplianceCheckType,\r\n ComplianceCheckStatus,\r\n complianceCheckTypeToString,\r\n complianceCheckStatusToString,\r\n} from \"../../Util/Enumerators/ComplianceCheck\";\r\nimport BeeValidationStatus from \"../../Util/Enumerators/beeValidationStatus\";\r\nimport BeeStateFilter, {\r\n beeStateFilterToString,\r\n} from \"../../Util/Enumerators/beeStateFilter\";\r\n\r\nimport BeeOwnership, {\r\n beeOwnershipToString,\r\n} from \"../../Util/Enumerators/beeOwnership\";\r\n\r\nimport SupplierSearchToolTip from \"./SupplierSearchToolTip\";\r\n\r\nconst getBeeTextColorClass = (row, allowedFeatures) => {\r\n // use empty string instead of null so that isBeeExpired is false if no date provided\r\n const isBeeExpired = new Date(row.certificateExpiryDate ?? \"\") < new Date();\r\n if (!hasFeature(allowedFeatures, SystemFeatures.ColourIndicators)) {\r\n return \"\";\r\n }\r\n if (isBeeExpired) {\r\n return \"text-danger font-weight-bold\";\r\n }\r\n switch (row.beeValidationStatus) {\r\n case BeeValidationStatus.Validated:\r\n return \"text-success font-weight-bold\";\r\n case BeeValidationStatus.Revoked:\r\n return \"text-danger font-weight-bold\";\r\n default:\r\n return \"\";\r\n }\r\n};\r\n\r\nexport const sortingValues = {\r\n relevance: 0,\r\n newestFirst: 1,\r\n oldestFirst: 2,\r\n registeredName: 3,\r\n rating: 4,\r\n};\r\n\r\nexport const getTableConfig = (\r\n actionOptions, editVendorNumber, allowedFeatures, transactionStatuses\r\n) => ({\r\n columns: [\r\n {\r\n key: \"name\",\r\n heading: \"Registered Name\",\r\n size: \"1fr\",\r\n valueTemplate: (row) => (\r\n \r\n ),\r\n },\r\n {\r\n key: \"tradingName\",\r\n heading: \"Trading Name\",\r\n size: \"1fr\",\r\n propName: \"tradingName\",\r\n },\r\n {\r\n key: \"regNo\",\r\n heading: \"Reg No.\",\r\n size: \"1fr\",\r\n propName: \"registrationNumber\",\r\n },\r\n {\r\n key: \"erpNo\",\r\n heading: \"ERP No.\",\r\n size: \"1fr\",\r\n valueTemplate: (row) => (\r\n editVendorNumber(row.id, row.vendorNumber, row.registeredName)}\r\n >\r\n {row.vendorNumber}\r\n \r\n ),\r\n },\r\n {\r\n key: \"bee\",\r\n heading: \"B-BBEE\",\r\n size: \"0.8fr\",\r\n valueTemplate: (row) => (\r\n \r\n {row.beeClassification}\r\n \r\n ),\r\n },\r\n {\r\n key: \"bo\",\r\n heading: \"BO\",\r\n size: \"0.8fr\",\r\n valueTemplate: (row) => (\r\n {row.boPercentage}\r\n ),\r\n },\r\n {\r\n key: \"bwo\",\r\n heading: \"BWO\",\r\n size: \"0.8fr\",\r\n valueTemplate: (row) => (\r\n {row.bwoPercentage}\r\n ),\r\n },\r\n {\r\n key: \"beerating\",\r\n heading: \"B-BBEE RATING\",\r\n size: \"0.8fr\",\r\n valueTemplate: (row) => (\r\n {row.beeStatus}\r\n ),\r\n },\r\n ],\r\n footerItems: [\r\n {\r\n key: \"manualSupplier\",\r\n label: null,\r\n valueTemplate: (row) => (row.manualSupplier ? (\r\n
    \r\n Manual Supplier\r\n
    \r\n ) : null),\r\n },\r\n {\r\n key: \"supplierRating\",\r\n label: \"Supplier Rating\",\r\n valueTemplate: (row) => (\r\n \r\n ),\r\n },\r\n {\r\n key: \"status\",\r\n label: \"Supplier Status\",\r\n valueTemplate: (row) => `${supplierStatuses.toString(row.supplierStatus)}\r\n ${row.supplierStatus === supplierStatuses.busyOnboarding\r\n ? ` - ${onboardingStatuses.toString(row.onboardingStatus)}`\r\n : \"\"\r\n }`,\r\n },\r\n ...(transactionStatuses ? [\r\n {\r\n key: \"transactionStatus\",\r\n label: \"Transactional Status\",\r\n valueTemplate: (row) => (\r\n `${(transactionStatuses && row.supplierTransactionStatusValue)\r\n ? transactionStatuses.find((status) => row.supplierTransactionStatusValue === status.uniqueUiValue)?.name\r\n : \"N/A\"\r\n }`\r\n ),\r\n }] : []),\r\n ...(transactionStatuses ? [\r\n {\r\n key: \"orderType\",\r\n label: \"Order Type\",\r\n valueTemplate: (row) => (\r\n `${row.orderType ? \"Yes\" : \"No\"}`\r\n ),\r\n }] : []),\r\n {\r\n key: \"supplierType\",\r\n label: \"Supplier Type\",\r\n propName: \"supplierType\",\r\n },\r\n {\r\n key: \"checks\",\r\n label: \"Compliance Management\",\r\n valueTemplate: (row) => (\r\n \r\n {complianceStatusToString(row.complianceStatus)}\r\n \r\n ),\r\n },\r\n {\r\n key: \"email\",\r\n label: \"Email\",\r\n propName: \"generalEmail\",\r\n },\r\n {\r\n key: \"telephone\",\r\n label: \"Telephone Number\",\r\n propName: \"generalPhone\",\r\n },\r\n ],\r\n actionOptions,\r\n\r\n sortOptions: {\r\n selectedSortOption: 0,\r\n options:\r\n [{\r\n display: \"Relevance\",\r\n value: sortingValues.relevance,\r\n },\r\n {\r\n display: \"Newest first\",\r\n value: sortingValues.newestFirst,\r\n },\r\n {\r\n display: \"Oldest first\",\r\n value: sortingValues.oldestFirst,\r\n },\r\n {\r\n display: \"Registered name\",\r\n value: sortingValues.registeredName,\r\n },\r\n {\r\n display: \"Highest rated\",\r\n value: sortingValues.rating,\r\n },\r\n ],\r\n },\r\n\r\n statusFilterOptions: {\r\n selectedStatusFilterOption: 0,\r\n options: [\r\n {\r\n display: supplierFilterOptions.toString(supplierFilterOptions.All), // all suppliers\r\n value: supplierFilterOptions.All,\r\n },\r\n {\r\n display: supplierFilterOptions\r\n .toString(supplierFilterOptions.Existing), // existing suppliers\r\n value: supplierFilterOptions.Existing,\r\n },\r\n {\r\n display: supplierFilterOptions.toString(\r\n supplierFilterOptions.Potential\r\n ), // potential suppliers\r\n value: supplierFilterOptions.Potential,\r\n },\r\n ],\r\n },\r\n\r\n // Set up the additional status filter options (transaction statuses)\r\n // but make sure it's conditionally rendered\r\n ...(transactionStatuses ? {\r\n additionalStatusFilterOptions: {\r\n selectedStatusFilterOption: 0,\r\n options: transactionStatuses.map((status) => (\r\n {\r\n display: status.name,\r\n value: status.uniqueUiValue,\r\n })),\r\n },\r\n } : {}),\r\n});\r\n\r\nconst ownershipOptions = [\r\n {\r\n display: \"0% - 29%\",\r\n value: searchBeeStatuses.lt30,\r\n },\r\n {\r\n display: \"30% - 50%\",\r\n value: searchBeeStatuses.lt51,\r\n },\r\n {\r\n display: \"51% - 100%\",\r\n value: searchBeeStatuses.lte100,\r\n },\r\n {\r\n display: \"100%\",\r\n value: searchBeeStatuses.eq100,\r\n },\r\n];\r\n\r\nexport const getFilterProps = ({\r\n provinces,\r\n supplierCategories,\r\n unspscSegments,\r\n beeLevels,\r\n selectedOption,\r\n prioritiseClientOfferings,\r\n}) => {\r\n const filters = [\r\n {\r\n filterName: \"Province(s)\",\r\n options: provinces,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n ];\r\n\r\n if (prioritiseClientOfferings === true && supplierCategories.length > 0) {\r\n filters.push(\r\n {\r\n filterName: \"Company Product Segment\",\r\n options: supplierCategories,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n {\r\n filterName: \"Company Product Family\",\r\n options: supplierCategories?.find((c) => c.value === selectedOption)\r\n ?.supplierSubCategories,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n }\r\n );\r\n } else if (prioritiseClientOfferings === false && unspscSegments.length > 0) {\r\n filters.push(\r\n {\r\n filterName: \"Global Product Segment\",\r\n options: unspscSegments,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n {\r\n filterName: \"Global Product Family\",\r\n options: unspscSegments?.find((c) => c.value === selectedOption)\r\n ?.families,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n }\r\n );\r\n }\r\n\r\n filters.push(\r\n {\r\n filterName: \"B-BBEE Level\",\r\n options: beeLevels,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n {\r\n filterName: \"Black Ownership\",\r\n options: ownershipOptions,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n {\r\n filterName: \"Black Women Ownership\",\r\n options: ownershipOptions,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n }\r\n );\r\n\r\n return filters;\r\n};\r\n\r\nconst beeStateFilterOptions = [\r\n {\r\n value: BeeStateFilter.None,\r\n display: beeStateFilterToString(BeeStateFilter.None),\r\n },\r\n {\r\n value: BeeStateFilter.Valid,\r\n display: beeStateFilterToString(BeeStateFilter.Valid),\r\n },\r\n {\r\n value: BeeStateFilter.Invalid,\r\n display: beeStateFilterToString(BeeStateFilter.Invalid),\r\n },\r\n {\r\n value: BeeStateFilter.Expired,\r\n display: beeStateFilterToString(BeeStateFilter.Expired),\r\n },\r\n {\r\n value: BeeStateFilter.PendingValidation,\r\n display: beeStateFilterToString(BeeStateFilter.PendingValidation),\r\n },\r\n {\r\n value: BeeStateFilter.Outstanding,\r\n display: beeStateFilterToString(BeeStateFilter.Outstanding),\r\n },\r\n {\r\n value: BeeStateFilter.Exclusion,\r\n display: beeStateFilterToString(BeeStateFilter.Exclusion),\r\n },\r\n {\r\n value: BeeStateFilter.ValidForClient,\r\n display: beeStateFilterToString(BeeStateFilter.ValidForClient),\r\n },\r\n];\r\n\r\nconst complianceCheckTypeOptions = [\r\n {\r\n value: ComplianceCheckType.None,\r\n display: complianceCheckTypeToString(\r\n ComplianceCheckType.None\r\n ),\r\n },\r\n {\r\n value: ComplianceCheckType.CIPC,\r\n display: complianceCheckTypeToString(\r\n ComplianceCheckType.CIPC\r\n ),\r\n },\r\n {\r\n value: ComplianceCheckType.SARS,\r\n display: complianceCheckTypeToString(\r\n ComplianceCheckType.SARS\r\n ),\r\n },\r\n];\r\n\r\nconst complianceCheckStatusOptions = [\r\n {\r\n value: ComplianceCheckStatus.None,\r\n display: complianceCheckStatusToString(\r\n ComplianceCheckStatus.None\r\n ),\r\n },\r\n {\r\n value: ComplianceCheckStatus.Valid,\r\n display: complianceCheckStatusToString(\r\n ComplianceCheckStatus.Valid\r\n ),\r\n },\r\n {\r\n value: ComplianceCheckStatus.Invalid,\r\n display: complianceCheckStatusToString(\r\n ComplianceCheckStatus.Invalid\r\n ),\r\n },\r\n {\r\n value: ComplianceCheckStatus.Pending,\r\n display: complianceCheckStatusToString(\r\n ComplianceCheckStatus.Pending\r\n ),\r\n },\r\n {\r\n value: ComplianceCheckStatus.NA,\r\n display: complianceCheckStatusToString(\r\n ComplianceCheckStatus.NA\r\n ),\r\n },\r\n];\r\n\r\nconst designatedOwnerOptions = [\r\n {\r\n value: true,\r\n display: \"Yes\",\r\n },\r\n {\r\n value: false,\r\n display: \"No\",\r\n },\r\n];\r\n\r\nconst beeOwnershipOptions = [\r\n {\r\n value: BeeOwnership.Flowthrough,\r\n display: beeOwnershipToString(BeeOwnership.Flowthrough),\r\n },\r\n {\r\n value: BeeOwnership.Modified,\r\n display: beeOwnershipToString(BeeOwnership.Modified),\r\n },\r\n];\r\n\r\nexport const getAdvancedFilterProps = ({\r\n beeClassifications,\r\n supplierCategories,\r\n unspscSegments,\r\n selectedOption,\r\n prioritiseClientOfferings,\r\n supplierTypes,\r\n subscriptionTiers,\r\n companyStatuses,\r\n supportingDocuments,\r\n allowedFeatures,\r\n}) => {\r\n const advancedFilters = [\r\n {\r\n filterName: \"Registration No\",\r\n placeholder: \"enter registration number\",\r\n filterType: AdvancedFilterTypes.Text,\r\n },\r\n {\r\n filterName: \"VAT Number\",\r\n placeholder: \"enter VAT number\",\r\n filterType: AdvancedFilterTypes.Text,\r\n },\r\n {\r\n filterName: \"Vendor Number\",\r\n placeholder: \"enter vendor number\",\r\n filterType: AdvancedFilterTypes.Text,\r\n },\r\n {\r\n filterName: \"Contact Person\",\r\n placeholder: \"enter contact person name\",\r\n filterType: AdvancedFilterTypes.Text,\r\n },\r\n {\r\n filterName: \"Email Address\",\r\n placeholder: \"enter contact person email address\",\r\n filterType: AdvancedFilterTypes.Text,\r\n },\r\n {\r\n filterName: \"Added after\",\r\n filterType: AdvancedFilterTypes.Date,\r\n },\r\n {\r\n filterName: \"Supplier Type\",\r\n options: supplierTypes,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n },\r\n {\r\n filterName: \"BBBEE Classification\",\r\n options: beeClassifications.map((bc) => ({\r\n display: bc.display,\r\n value: bc.value,\r\n })),\r\n filterType: AdvancedFilterTypes.DropDown,\r\n },\r\n {\r\n filterName: \"BBBEE Status\",\r\n options: beeStateFilterOptions,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n },\r\n {\r\n filterName: \"Compliance Check Type\",\r\n options: complianceCheckTypeOptions,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n },\r\n {\r\n filterName: \"Compliance Check Status\",\r\n options: complianceCheckStatusOptions,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n },\r\n {\r\n filterName: \"BBBEE Ownership\",\r\n options: beeOwnershipOptions,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n },\r\n {\r\n filterName: \"Designated Owner\",\r\n options: designatedOwnerOptions,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n },\r\n ];\r\n\r\n if (prioritiseClientOfferings === false && supplierCategories.length > 0) {\r\n advancedFilters.push(\r\n {\r\n filterName: \"Company Product Segment\",\r\n options: supplierCategories,\r\n filterType: AdvancedFilterTypes.MultiSelectDropdown,\r\n },\r\n {\r\n filterName: \"Company Product Family\",\r\n options: supplierCategories?.find((c) => c.value === selectedOption)\r\n ?.supplierSubCategories,\r\n filterType: AdvancedFilterTypes.MultiSelectDropdown,\r\n }\r\n );\r\n } else if (prioritiseClientOfferings === true && unspscSegments.length > 0) {\r\n advancedFilters.push(\r\n {\r\n filterName: \"Global Product Segment\",\r\n options: unspscSegments,\r\n filterType: AdvancedFilterTypes.MultiSelectDropdown,\r\n },\r\n {\r\n filterName: \"Global Product Family\",\r\n options: unspscSegments?.find((c) => c.value === selectedOption)\r\n ?.families,\r\n filterType: AdvancedFilterTypes.MultiSelectDropdown,\r\n }\r\n );\r\n }\r\n\r\n // added after to not mess with the ordering\r\n advancedFilters.push({\r\n filterName: \"Subscription Tier\",\r\n options: subscriptionTiers,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n });\r\n advancedFilters.push({\r\n filterName: \"Supplier Status\",\r\n options: companyStatuses,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n });\r\n advancedFilters.push({\r\n filterName: \"Supporting Documents\",\r\n options: supportingDocuments,\r\n filterType: AdvancedFilterTypes.DropDown,\r\n });\r\n\r\n if (hasFeature(allowedFeatures, SystemFeatures.AdvancedMySuppliersFilter)) {\r\n advancedFilters.push(\r\n {\r\n filterName: \"My Suppliers\",\r\n options: [\r\n {\r\n value: supplierFilterOptions.Existing,\r\n display: supplierFilterOptions.toString(supplierFilterOptions.Existing),\r\n },\r\n {\r\n value: supplierFilterOptions.Potential,\r\n display: supplierFilterOptions.toString(supplierFilterOptions.Potential),\r\n },\r\n ],\r\n filterType: AdvancedFilterTypes.MultiSelectDropdown,\r\n }\r\n );\r\n }\r\n return advancedFilters;\r\n};\r\n","import { Spinner, useToast, UtilButton } from \"isuppli-react-components\";\r\nimport React, {\r\n // eslint-disable-next-line no-unused-vars\r\n forwardRef, ForwardRefRenderFunction, Fragment, useEffect, useImperativeHandle, useState,\r\n} from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Alert } from \"reactstrap\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getSupplierCategories, saveSupplierCategories } from \"../../../http/ManualSupplier/manualSupplierApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../../Store/ReduxState\";\r\nimport CompanyConfigurationFeatures from \"../../../Util/Enumerators/CompanyConfigurationFeatures\";\r\nimport OfferingSelector from \"../../Supplier/OfferingSelector/OfferingSelector\";\r\nimport ProductsAndServicesList from \"../../Supplier/ProductsAndServicesList\";\r\n\r\nexport interface ProductSegmentsModuleRef{\r\n save: () => Promise;\r\n }\r\n\r\nexport interface ProductSegmentsModuleProps{\r\n companyId: number,\r\n readOnly?: boolean,\r\n }\r\n\r\nconst ProductSegmentsModule:\r\nForwardRefRenderFunction = (\r\n { companyId = 0, readOnly = false }:ProductSegmentsModuleProps, ref\r\n) => {\r\n const [showSelectionModal, setShowSelectionModal] = useState(false);\r\n const [supplierSubCategoryIds, setSupplierCategoryIds] = useState>([]);\r\n const [loading, setLoading] = useState(false);\r\n const showToast = useToast();\r\n const showError = useShowError();\r\n\r\n const allowedCompanyFeatures = useSelector(\r\n (state: ReduxState) => (state.companyConfiguration.allowedCompanyFeatures)\r\n );\r\n\r\n const saveProductSegmentDetails = async () => {\r\n setLoading(true);\r\n try {\r\n await saveSupplierCategories(companyId, supplierSubCategoryIds);\r\n setLoading(false);\r\n showToast(\"Product and services saved\");\r\n return true;\r\n } catch {\r\n setLoading(false);\r\n return false;\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: saveProductSegmentDetails,\r\n }));\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n\r\n try {\r\n const supplierOffering = await getSupplierCategories(companyId);\r\n setSupplierCategoryIds(supplierOffering);\r\n setLoading(false);\r\n } catch {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n loader();\r\n }, [companyId, showError]);\r\n\r\n // eslint-disable-next-line no-bitwise\r\n const titleHeading = ((allowedCompanyFeatures & CompanyConfigurationFeatures.MTOCompanyProductsAndFamilies) > 0 // eslint-disable-line max-len\r\n ) ? \"PRODUCT SEGMENTS & FAMILIES\" : \"COMPANY PRODUCTS & FAMILIES\";\r\n\r\n return (\r\n \r\n {loading && }\r\n
    \r\n
    \r\n
    \r\n

    {titleHeading}

    \r\n
    \r\n \r\n Please add your most relevant products and/or services.\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n {showSelectionModal && (\r\n ) => { setSupplierCategoryIds(selection); }}\r\n selection={supplierSubCategoryIds}\r\n onCloseCallback={() => { setShowSelectionModal(false); }}\r\n />\r\n )}\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n setShowSelectionModal(true)}\r\n >\r\n SELECT PRODUCTS AND/OR SERVICES\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default forwardRef(ProductSegmentsModule);\r\n","import { Spinner, useToast } from \"isuppli-react-components\";\r\nimport React, {\r\n forwardRef,\r\n ForwardRefRenderFunction, // eslint-disable-line no-unused-vars\r\n Fragment,\r\n useEffect,\r\n useImperativeHandle,\r\n useState,\r\n} from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport useStaticData from \"../../../Hooks/useStaticData\";\r\nimport { getSupplierInfo, saveSupplierInfoAsync } from \"../../../http\";\r\nimport { StaticDataTypes } from \"../../../Util/Enumerators/staticDataTypes\";\r\nimport { WrappedRegistrationCompanyInfo as RegistrationCompanyInfo } from \"../../Supplier/RegistrationCompanyInfo\";\r\n\r\nexport interface CompanyDetailsModuleRef{\r\n save: () => Promise;\r\n }\r\n\r\nexport interface CompanyDetailsModuleProps{\r\n companyId: number,\r\n readOnly?:boolean,\r\n isSubAccount?:boolean,\r\n }\r\n\r\nconst CompanyDetailsModule:\r\nForwardRefRenderFunction = (\r\n { companyId = 0, readOnly = false, isSubAccount = false }: CompanyDetailsModuleProps, ref\r\n) => {\r\n const [companyData, setCompanyData] = useState({});\r\n const [loading, setLoading] = useState(false);\r\n const [[companyTypes], isReady] = useStaticData([StaticDataTypes.CompanyType]);\r\n const showError = useShowError();\r\n const showToast = useToast();\r\n\r\n const onChangeInputHandler = (ev : any) => {\r\n setCompanyData((prevState: any) => ({\r\n ...prevState,\r\n [ev.target.name]: ev.target.value,\r\n }));\r\n };\r\n\r\n const saveCompanyDetails = async () => {\r\n setLoading(true);\r\n try {\r\n await saveSupplierInfoAsync({ ...companyData });\r\n setLoading(false);\r\n showToast(\"Company information saved\");\r\n return true;\r\n } catch {\r\n setLoading(false);\r\n return false;\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: saveCompanyDetails,\r\n }));\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n\r\n // api call\r\n try {\r\n getSupplierInfo(companyId, (res:any) => {\r\n setCompanyData(res);\r\n });\r\n setLoading(false);\r\n } catch {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n loader();\r\n }, [companyId, showError]);\r\n return (\r\n \r\n { loading && }\r\n
    \r\n {}}\r\n disableEditRegistrationName={companyData.disableEditRegistrationName}\r\n regNumberReadOnly={companyData.disableEditRegistrationInfo}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default forwardRef(CompanyDetailsModule);\r\n","import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n ButtonInfo, ConfirmationModal, ModalPopup,\r\n} from \"isuppli-react-components\";\r\n\r\nimport {\r\n TabContent, TabPane, Nav, NavItem, NavLink,\r\n} from \"reactstrap\";\r\nimport classnames from \"classnames\";\r\nimport AddressDetailsModule, { AddressDetailsModuleRef } from \"./AddressDetailsModule\"; // eslint-disable-line no-unused-vars\r\nimport BankDetailsModule, { BankDetailsModuleRef } from \"./BankDetailsModule\";// eslint-disable-line no-unused-vars\r\nimport BeeDetailsModule, { BeeDetailsModuleRef } from \"./BeeDetailsModule\";// eslint-disable-line no-unused-vars\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport SupportingDocumentsModule, { SupportingDocumentsModuleRef } from \"./SupportingDocumentsModule\";// eslint-disable-line no-unused-vars\r\nimport ProductSegmentsModule, { ProductSegmentsModuleRef } from \"./ProductSegmentsModule\"; // eslint-disable-line no-unused-vars\r\nimport CompanyDetailsModule, { CompanyDetailsModuleRef } from \"./CompanyDetailsModule\"; // eslint-disable-line no-unused-vars\r\nimport { getSupplierInfoAsync } from \"../../../http\";\r\n\r\ninterface TabConfig {\r\n tabIndex :number,\r\n tabTitle :string,\r\n tabRef?: React.RefObject,\r\n children?: React.ReactNode\r\n}\r\n\r\ninterface TabComponentRef{\r\n save: () => Promise\r\n}\r\n\r\nconst EditManualSupplier = (\r\n {\r\n companyId = 0,\r\n onCloseCallBack,\r\n }\r\n :\r\n {\r\n companyId : number,\r\n onCloseCallBack : () => {},\r\n }\r\n) => {\r\n // hooks & states\r\n const showError = useShowError();\r\n const [showConfirmationModal, setShowConfirmationModal] = useState(false);\r\n const [isSubAccount, setIsSubAccount] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n const supplierDetails = await getSupplierInfoAsync(companyId);\r\n setIsSubAccount(supplierDetails.parentAccountId != null);\r\n };\r\n loader();\r\n }, [companyId]);\r\n\r\n // tab references\r\n const companyDetailsModuleRef = useRef(null);\r\n const addressDetailModuleRef = useRef(null);\r\n const beeDetailsModuleRef = useRef(null);\r\n const bankDetailsModuleRef = useRef(null);\r\n const supportingDocumentsRef = useRef(null);\r\n const productSegmentsRef = useRef(null);\r\n const tabsConfig : Array = [\r\n {\r\n tabIndex: 1,\r\n tabTitle: \"COMPANY INFORMATION\",\r\n tabRef: companyDetailsModuleRef,\r\n children: ,\r\n },\r\n {\r\n tabIndex: 2,\r\n tabTitle: \"ADDRESS & CONTACT DETAILS\",\r\n tabRef: addressDetailModuleRef,\r\n children: ,\r\n },\r\n {\r\n tabIndex: 3,\r\n tabTitle: \"B-BBEEE PRACTICES & CERTIFICATION\",\r\n tabRef: beeDetailsModuleRef,\r\n children: ,\r\n },\r\n {\r\n tabIndex: 4,\r\n tabTitle: \"BANK DETAILS\",\r\n tabRef: bankDetailsModuleRef,\r\n children: ,\r\n },\r\n {\r\n tabIndex: 5,\r\n tabTitle: \"SUPPORTING DOCUMENTS & AGREEMENTS\",\r\n tabRef: supportingDocumentsRef,\r\n children: ,\r\n },\r\n {\r\n tabIndex: 6,\r\n tabTitle: \"PRODUCTS SEGMENTS & FAMILIES\",\r\n tabRef: productSegmentsRef,\r\n children: ,\r\n },\r\n ];\r\n\r\n // tab controls\r\n const [activeTab, setActiveTab] = useState(1);\r\n const tabRefInit = tabsConfig[0].tabRef as React.RefObject;\r\n const [currentTabRef, setCurrentTabRef] = useState>(tabRefInit);\r\n\r\n const toggle = (tab : number) => {\r\n if (activeTab !== tab) {\r\n const selectedTabRef = tabsConfig.find((t) => t.tabIndex === tab)?.tabRef;\r\n setActiveTab(tab);\r\n if (selectedTabRef != null) {\r\n setCurrentTabRef(selectedTabRef);\r\n } else {\r\n showError(); // if tab has no reference\r\n }\r\n }\r\n };\r\n\r\n const onPeformSave = async () => {\r\n const savedSuccessfully = await currentTabRef?.current?.save();\r\n supportingDocumentsRef.current?.refreshDocuments();\r\n if (!savedSuccessfully) { showError(); }\r\n };\r\n\r\n const onSaveButtonClick = {\r\n key: \"save\",\r\n label: \"Save\",\r\n color: \"primary\",\r\n onClick: () => { setShowConfirmationModal(true); },\r\n } as ButtonInfo;\r\n\r\n return (\r\n \r\n {showConfirmationModal && (\r\n { setShowConfirmationModal((prevState) => !prevState); }}\r\n />\r\n )}\r\n \r\n \r\n {\r\n tabsConfig.map((c, index) => (\r\n \r\n {c.children}\r\n \r\n ))\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditManualSupplier;\r\n","import React, { useState, useCallback, useEffect } from \"react\";\r\nimport { ModalPopup, Spinner } from \"isuppli-react-components\";\r\nimport StarRatingInput from \"../../Controls/StarRatingInput/StarRatingInput\";\r\nimport { getCompanyRating, saveCompanyRating } from \"../../http/MyCompany/myCompanyAPI\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport { CompanyEditRatingMessage, CompanyTotalRatingMessage } from \"../../http/MyCompany/Models/Models\"; // eslint-disable-line no-unused-vars\r\nimport Styles from \"./RateCompanyModal.module.scss\";\r\n\r\nconst RateCompanyModal = (\r\n {\r\n onClose,\r\n onRate,\r\n companyName,\r\n companyId,\r\n }\r\n :\r\n {\r\n onClose: () => void,\r\n onRate: (newRating: CompanyTotalRatingMessage) => void,\r\n companyName?: string,\r\n companyId: number,\r\n }\r\n) => {\r\n const [rating, setRating] = useState(0);\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n\r\n const loadData = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n const result = await getCompanyRating(companyId);\r\n setRating(result?.rating ?? 0);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n }, [companyId, showError]);\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, [loadData]);\r\n\r\n const onSaveHandler = async () => {\r\n setLoading(true);\r\n try {\r\n const message: CompanyEditRatingMessage = {\r\n companyId,\r\n newRating: rating,\r\n };\r\n const result = await saveCompanyRating(message);\r\n onRate(result);\r\n onClose();\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const descriptionText = [\r\n \"Very Poor\",\r\n \"Poor\",\r\n \"Average\",\r\n \"Good\",\r\n \"Excellent\",\r\n ];\r\n\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n

    {descriptionText[rating - 1] ?? \"No rating\"}

    \r\n
    \r\n
    \r\n {loading && }\r\n \r\n );\r\n};\r\nexport default RateCompanyModal;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Button } from \"reactstrap\";\r\nimport {\r\n Table,\r\n TableActionsItem,\r\n SystemFeatures,\r\n SearchFiltersContainer,\r\n ConfirmationModal,\r\n hasFeature,\r\n withToast,\r\n ListEmptyState,\r\n} from \"isuppli-react-components\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\nimport { setOnboardingRequestObject } from \"../../Store/onboardingRequestActions\";\r\n\r\nimport {\r\n sendCompanySearch,\r\n createOnboardingRequestsForSuppliers,\r\n addBusinessUnitsForExistingSupplier,\r\n submitSupplierExportRequest,\r\n sendLargeCompanySearch,\r\n getSupplierExportStatus,\r\n} from \"../../http/index\";\r\n\r\nimport {\r\n initiateOpportunity,\r\n exportCSV,\r\n} from \"../../http/SupplierSearch/supplierSearchApi\";\r\n\r\nimport { getStaticValue, formatPercentage } from \"../../Util/valueFormatter\";\r\nimport searchSupplierSortingFields from \"../../Util/Enumerators/searchSupplierSortingFields\";\r\nimport supplierStatuses from \"../../Util/Enumerators/supplierStatuses\";\r\nimport SupplierExportStatus from \"../../Util/Enumerators/SupplierExportStatus\";\r\n\r\nimport Loading from \"../Loading\";\r\nimport SupplierDetailsModal from \"../SupplierDetailsModal\";\r\n\r\nimport MarketplaceSearch from \"../../Containers/Marketplace/MarketplaceSearch\";\r\nimport ComposeMessageModal from \"../../Containers/SupplierSearch/CompseMessageModal/ComposeMessageModal\";\r\nimport AddSupplierModal from \"../Marketplace/AddSupplierModal/AddSupplierModal\";\r\n\r\nimport {\r\n getTableConfig,\r\n sortingValues,\r\n getFilterProps,\r\n getAdvancedFilterProps,\r\n} from \"./SupplierSearchConfiguration\";\r\n\r\nimport staticCompanyDataTypes from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport StaticCompanyData from \"../../Hooks/StaticCompanyData\";\r\n\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport StaticData from \"../../Hooks/StaticData\";\r\n\r\nimport EditManualSupplier from \"../../Containers/ManualSupplier/EditManualSupplier/EditManualSupplier\";\r\nimport SubAccount, { SubAccountOperation } from \"../../Containers/SubAccount/SubAccount\";\r\nimport RateCompanyModal from \"../../Containers/RateCompanyModal/RateCompanyModal\";\r\nimport { getUnspscInfo } from \"../../Util/dataTransform\";\r\nimport OfferingSelector from \"../../Containers/Supplier/OfferingSelector/OfferingSelector\";\r\nimport { getSupplierCategoriesSelectionAsBuyer, saveClientSpecificProductCategories } from \"../../http/SupplierCategory/supplierCategoryAPI\";\r\nimport supplierFilterOptions from \"../../Util/Enumerators/supplierFilterOptions\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n companyId: state.currentCompanyId,\r\n provinces: state.staticData[StaticDataTypes.Province] ?? [],\r\n beeLevels: state.staticData[StaticDataTypes.BeeStatus] ?? [],\r\n supplierCategories:\r\n state.staticCompanyData[staticCompanyDataTypes.supplierCategory] ?? [],\r\n businessUnits: (\r\n state.staticCompanyData[staticCompanyDataTypes.businessUnit] ?? []\r\n ).filter((businessUnit) => state.loggedInUserDetails.businessUnitIds.includes(businessUnit.id)),\r\n beeSectors: state.staticData[StaticDataTypes.BeeClassification] ?? [],\r\n unspscSegments: state.staticData[StaticDataTypes.UnspscSegment] ?? [],\r\n unspscFamilies: state.staticData[StaticDataTypes.UnspscFamily] ?? [],\r\n subscriptionTiers: state.staticData[StaticDataTypes.SubscriptionTier] ?? [],\r\n companyConfiguration: state.companyConfiguration,\r\n searchLimit: state.loggedInUserDetails.searchLimit,\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n supplierTypes: state.staticCompanyData[staticCompanyDataTypes.supplierType] ?? [],\r\n supplierTransactionStatuses: state.staticCompanyData[staticCompanyDataTypes.supplierTransactionStatuses] ?? [],\r\n companyStatuses: state.staticData[StaticDataTypes.CompanyStatus] ?? [],\r\n supportingDocuments: state.staticCompanyData[staticCompanyDataTypes.supportingDocuments] ?? [],\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setOption: (optionName, optionValues) => {\r\n dispatch(setOption(optionName, optionValues));\r\n },\r\n setOnboardingRequestObject: (onboardingRequest) => {\r\n dispatch(setOnboardingRequestObject(onboardingRequest));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nconst buildSearchString = ({\r\n limit,\r\n offset,\r\n searchTerm,\r\n filters,\r\n sortOption,\r\n statusFilterOption,\r\n additionalStatusFilterOption,\r\n}) => {\r\n const searchTermQueryPart = searchTerm == null || searchTerm === \"\" ? \"\" : `&q=${searchTerm}`;\r\n\r\n const filtersQueryPart = filters == null || filters.length === 0\r\n ? \"\"\r\n : `&f=${JSON.stringify(filters)}`;\r\n\r\n const sortQueryPart = sortOption == null ? \"\" : `&s=${sortOption}`;\r\n const mySupplierFilter = filters?.length >= 24 && filters[24].length > 0 && (\r\n // eslint-disable-next-line no-nested-ternary\r\n filters[24].length > 1 ? supplierFilterOptions.All\r\n : filters[24].length === 1 ? filters[24][0]\r\n : null\r\n );\r\n const statusFilterPart = sortOption == null ? \"\" : `&sf=${mySupplierFilter ?? statusFilterOption}`;\r\n const additionalStatusFilterPart = sortOption === null ? \"\" : `&asf=${additionalStatusFilterOption}`;\r\n return `?limit=${limit}&offset=${offset}${searchTermQueryPart}${filtersQueryPart}${sortQueryPart}${statusFilterPart}${additionalStatusFilterPart}`;\r\n};\r\n\r\nconst getCompanyModalDetails = (props) => {\r\n const params = new URLSearchParams(props.location.search);\r\n const companyId = parseInt(params.get(\"companyId\"), 10);\r\n const registeredName = params.get(\"registeredName\");\r\n\r\n if (companyId == null || Number.isNaN(companyId) || registeredName == null) {\r\n return null;\r\n }\r\n return {\r\n companyId,\r\n registeredName,\r\n };\r\n};\r\n\r\nconst getEditManualSupplierId = (props) => {\r\n const params = new URLSearchParams(props.location.search);\r\n const manualSupplierId = parseInt(params.get(\"manualSupplierId\"), 10);\r\n\r\n if (manualSupplierId == null || Number.isNaN(manualSupplierId)) {\r\n return null;\r\n }\r\n return manualSupplierId;\r\n};\r\n\r\nconst readSearchString = (props) => {\r\n const params = new URLSearchParams(props.location.search);\r\n let limit = parseInt(params.get(\"limit\"), 10);\r\n if (limit == null || Number.isNaN(limit)) {\r\n limit = 20;\r\n }\r\n\r\n let offset = parseInt(params.get(\"offset\"), 10);\r\n if (offset == null || Number.isNaN(offset)) {\r\n offset = 0;\r\n }\r\n\r\n let searchTerm = params.get(\"q\");\r\n if (searchTerm == null) {\r\n searchTerm = \"\";\r\n }\r\n\r\n let filters = JSON.parse(params.get(\"f\"));\r\n if (filters == null) {\r\n filters = [];\r\n }\r\n\r\n let sortOption = parseInt(params.get(\"s\"), 10);\r\n if (sortOption == null || Number.isNaN(sortOption)) {\r\n sortOption = sortingValues.relevance;\r\n }\r\n\r\n let statusFilterOption = parseInt(params.get(\"sf\"), 10);\r\n if (statusFilterOption == null || Number.isNaN(statusFilterOption)) {\r\n statusFilterOption = 0;\r\n }\r\n\r\n let additionalStatusFilterOption = parseInt(params.get(\"asf\"), 10);\r\n if (additionalStatusFilterOption == null || Number.isNaN(additionalStatusFilterOption)) {\r\n additionalStatusFilterOption = 0;\r\n }\r\n\r\n return {\r\n limit,\r\n offset,\r\n searchTerm,\r\n filters,\r\n sortOption,\r\n statusFilterOption,\r\n additionalStatusFilterOption,\r\n };\r\n};\r\n\r\nclass SupplierSearch extends Component {\r\n async componentDidMount() {\r\n const hasOnboardSupplierFeature = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.OnboardingAddSupplier\r\n );\r\n const hasOnboardingCreateRequestFeature = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.OnboardingCreateRequest\r\n );\r\n const hasSupplierExportFeature = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.SupplierExport\r\n );\r\n if (hasOnboardSupplierFeature) {\r\n this.setState({\r\n canAddSupplierOnboarding: true,\r\n });\r\n }\r\n\r\n if (hasOnboardingCreateRequestFeature) {\r\n this.setState({\r\n canAddOnboardingRequest: true,\r\n canAddSupplierOnboarding: false,\r\n });\r\n }\r\n if (hasSupplierExportFeature) {\r\n this.setState({\r\n canRequestSupplierExport: true,\r\n });\r\n }\r\n\r\n const exportStatus = await getSupplierExportStatus();\r\n this.setState({ supplierExportStatus: exportStatus });\r\n\r\n await this.performSearch();\r\n }\r\n\r\n showUnlinkVendorModal = (\r\n supplierId,\r\n registeredCompanyName\r\n ) => {\r\n if (this.state.canAddSupplierOnboarding) {\r\n this.setState({\r\n showAddSupplierModal: true,\r\n companyIdToPerformAction: supplierId,\r\n isEditing: true,\r\n registeredCompanyName,\r\n });\r\n }\r\n };\r\n\r\n createTableConfig = () => getTableConfig(\r\n [\r\n this.state.canAddOnboardingRequest\r\n && item.supplierStatus === supplierStatuses.potential}\r\n onClick={(items, allSelected) => {\r\n this.checkOnBoardSupplierDuplicates(items, allSelected);\r\n }}\r\n >\r\n Onboard Company\r\n ,\r\n this.state.canAddSupplierOnboarding\r\n && item.supplierStatus === supplierStatuses.potential}\r\n onClick={(items) => {\r\n this.setState((prevState) => {\r\n const companyName = prevState.searchResults.items.find(\r\n (x) => x.id === items[0]\r\n ).registeredName;\r\n return {\r\n showAddSupplierModal: true,\r\n companyIdToPerformAction: items[0],\r\n isEditing: false,\r\n registeredCompanyName: companyName,\r\n };\r\n });\r\n }}\r\n >\r\n Onboard Company\r\n ,\r\n this.state.canAddSupplierOnboarding\r\n && item.supplierStatus === supplierStatuses.existing}\r\n onClick={(items) => {\r\n const companyName = this.state.searchResults.items.find(\r\n (x) => x.id === items[0]\r\n ).registeredName;\r\n this.showUnlinkVendorModal(items[0], companyName);\r\n }}\r\n >\r\n Unlink supplier\r\n ,\r\n item.supplierStatus === supplierStatuses.existing\r\n && item.parentAccountId == null}\r\n onClick={(items) => {\r\n this.checkAddBusinessUnits(items);\r\n }}\r\n >\r\n Add business unit for supplier\r\n ,\r\n !item.manualSupplier}\r\n onClick={(items, allSelected) => {\r\n this.broadcastSupplierMessages(items, allSelected);\r\n }}\r\n >\r\n Message company\r\n ,\r\n item.supplierStatus === supplierStatuses.existing\r\n && item.parentAccountId == null && !item.manualSupplier}\r\n onClick={(items) => {\r\n this.setState({\r\n companyIdToPerformAction: items[0],\r\n subAccountOperation: SubAccountOperation.Add,\r\n });\r\n this.toggleShowSubAccountModal();\r\n }}\r\n >\r\n Add Sub-Account\r\n ,\r\n item.parentAccountId != null}\r\n onClick={(items) => {\r\n this.setState((prevState) => ({\r\n companyIdToPerformAction: items[0],\r\n subAccountOperation: SubAccountOperation.Update,\r\n subAccountTradingName: prevState.searchResults.items\r\n .find((c) => c.id === items[0]).tradingName,\r\n }));\r\n this.toggleShowSubAccountModal();\r\n }}\r\n >\r\n Edit Trading Name\r\n ,\r\n item.supplierStatus === supplierStatuses.existing\r\n && item.parentAccountId == null}\r\n onClick={(item) => {\r\n this.toggleShowEditProductOfferingModal(item[0]);\r\n }}\r\n >\r\n Edit Company Product Offerings\r\n ,\r\n item.manualSupplier && item.parentAccountId == null}\r\n onClick={(items) => {\r\n this.toggleEditManualSupplierModal(items[0]);\r\n }}\r\n >\r\n Edit Manual Supplier\r\n ,\r\n item.parentAccountId == null}\r\n onClick={(items, allSelected, itemObjects) => {\r\n this.initiateOpportunityConfirmationHandler(items, allSelected, itemObjects);\r\n }}\r\n >\r\n Create eRFX Opportunity\r\n ,\r\n item.isBuyer === true\r\n || item.supplierStatus === supplierStatuses.existing}\r\n onClick={(items) => {\r\n this.setState((prevState) => {\r\n const companyName = prevState.searchResults.items.find(\r\n (x) => x.id === items[0]\r\n ).registeredName;\r\n return {\r\n showRateCompanyModal: true,\r\n companyIdToPerformAction: items[0],\r\n registeredCompanyName: companyName,\r\n };\r\n });\r\n }}\r\n >\r\n Rate Company\r\n ,\r\n false}\r\n onClick={this.exportCSVHandler}\r\n >\r\n Export CSV\r\n ,\r\n ],\r\n this.showUnlinkVendorModal,\r\n this.props.allowedFeatures,\r\n this.props.supplierTransactionStatuses\r\n );\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n searchResults: {},\r\n loading: false,\r\n previousSearchString: \"\",\r\n currentSearchTerm: \"\",\r\n showDuplicateOnboardingConfirmModal: false,\r\n showAddBusinessUnitsConfirmModal: false,\r\n showAddedBusinessUnitsModal: false,\r\n showAllBusinessUnitsAlreadyAddedModal: false,\r\n showInitiateOpportunityConfirmationModal: false,\r\n showCsvExportWarningModal: false,\r\n showSupplierExportModal: false,\r\n showSubAccountModal: false,\r\n showRateCompanyModal: false,\r\n showAddSupplierModal: false,\r\n showEditProductOffering: false,\r\n supplierStatus: 0,\r\n isEditing: false,\r\n registeredCompanyName: \"\",\r\n canAddSupplierOnboarding: false,\r\n canAddOnboardingRequest: false,\r\n canRequestSupplierExport: false,\r\n onboardingIds: [],\r\n showMessageComposeModal: false,\r\n messageRecipients: { recipients: [], sendToAll: false },\r\n filters: [],\r\n availableBusinessUnits: [],\r\n companyIdToPerformAction: 0,\r\n subAccountOperation: SubAccountOperation.Add,\r\n initiateOpportunityCompanyIds: [],\r\n initiateOpportunityModalDescription: \"\",\r\n disableSupplierExportRequest: false,\r\n currentSupplierCategoriesList: [],\r\n csvExportLimit: 0,\r\n showSearchLimitModal: false,\r\n supplierExportStatus: 0,\r\n };\r\n }\r\n\r\n checkOnBoardSupplierDuplicates = (supplierIds, allSelected) => {\r\n if (allSelected) {\r\n return;\r\n }\r\n if (supplierIds.length > 1) {\r\n // multiple suppliers selected\r\n const potentialSupplierIds = this.state.searchResults.items\r\n .filter(\r\n (c) => supplierIds.includes(c.id)\r\n && c.supplierStatus === supplierStatuses.potential\r\n )\r\n .map((c) => c.id);\r\n\r\n if (potentialSupplierIds.length !== supplierIds.length) {\r\n // show warning\r\n this.setState({\r\n onboardingIds: potentialSupplierIds,\r\n });\r\n this.toggleDuplicateOnboardingConfirmModal();\r\n return;\r\n }\r\n }\r\n\r\n this.onBoardSuppliers(supplierIds);\r\n };\r\n\r\n checkAddBusinessUnits = (items) => {\r\n // check business units\r\n const supplierId = items[0];\r\n const businessUnitIds = this.state.searchResults.items.find(\r\n (c) => c.id === supplierId\r\n ).businessUnitIds;\r\n\r\n const unselectedBusinessUnits = this.props.businessUnits.filter(\r\n (businessUnit) => !businessUnitIds.includes(businessUnit.id)\r\n );\r\n\r\n if (unselectedBusinessUnits.length > 0) {\r\n this.setState({\r\n companyIdToPerformAction: supplierId,\r\n availableBusinessUnits: unselectedBusinessUnits,\r\n });\r\n this.toggleAddBusinessUnitsConfirmModal();\r\n } else {\r\n this.toggleAllBusinessUnitsAlreadyAddedModal();\r\n }\r\n };\r\n\r\n onBoardSuppliers = async (supplierIds) => {\r\n this.props.showLoadingScreen();\r\n\r\n try {\r\n const createdRequestIds = await createOnboardingRequestsForSuppliers(\r\n supplierIds\r\n );\r\n if (createdRequestIds.length === 1) {\r\n this.props.history.push(\r\n `/myoffice/onboardingrequest/${createdRequestIds[0]}`\r\n );\r\n } else {\r\n this.props.history.push(\"/myoffice/onboardingrequest/\");\r\n }\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n }\r\n\r\n this.props.hideLoadingScreen();\r\n };\r\n\r\n broadcastSupplierMessages = (selectedIds, allSelected) => {\r\n this.setState((prevState) => ({\r\n messageRecipients: {\r\n recipients: allSelected\r\n ? []\r\n : prevState.searchResults?.items\r\n ?.filter((c) => selectedIds.includes(c.id))\r\n ?.map((c) => ({\r\n name: c.registeredName,\r\n id: c.id,\r\n })),\r\n sendToAll: allSelected,\r\n },\r\n showMessageComposeModal: true,\r\n }));\r\n };\r\n\r\n toggleViewMoreModal = (company) => {\r\n const searchParams = new URLSearchParams(this.props.location.search);\r\n\r\n if (company == null) {\r\n searchParams.delete(\"companyId\");\r\n searchParams.delete(\"registeredName\");\r\n } else {\r\n searchParams.set(\"companyId\", company.companyId);\r\n searchParams.set(\"registeredName\", company.registeredName);\r\n }\r\n this.props.history.push({\r\n pathname: this.props.location.pathname,\r\n search: searchParams.toString(),\r\n });\r\n };\r\n\r\n toggleEditManualSupplierModal = (companyId) => {\r\n const searchParams = new URLSearchParams(this.props.location.search);\r\n\r\n if (companyId == null) {\r\n searchParams.delete(\"manualSupplierId\");\r\n } else {\r\n searchParams.set(\"manualSupplierId\", companyId);\r\n }\r\n this.props.history.push({\r\n pathname: this.props.location.pathname,\r\n search: searchParams.toString(),\r\n });\r\n };\r\n\r\n continueOnboardingMultiple() {\r\n this.onBoardSuppliers(this.state.onboardingIds);\r\n }\r\n\r\n async addBusinessUnits(newValue) {\r\n const businessUnitMessage = {\r\n supplierCompanyId: this.state.companyIdToPerformAction,\r\n businessUnitIds: newValue,\r\n };\r\n\r\n try {\r\n // api call\r\n await addBusinessUnitsForExistingSupplier(businessUnitMessage);\r\n\r\n // add newly added business unit(s) to search item in state\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n searchResults: {\r\n ...prevState.searchResults,\r\n items: prevState.searchResults.items.map((item) => ({\r\n ...item,\r\n businessUnitIds:\r\n item.id === prevState.companyIdToPerformAction\r\n ? [...item.businessUnitIds, ...newValue]\r\n : [...item.businessUnitIds],\r\n })),\r\n },\r\n }));\r\n\r\n this.toggleAddedBusinessUnitsModal();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n }\r\n }\r\n\r\n changeSearchRoute({\r\n limit,\r\n offset,\r\n searchTerm,\r\n filters,\r\n sortOption,\r\n statusFilterOption,\r\n additionalStatusFilterOption,\r\n }) {\r\n const currentSearchProps = readSearchString(this.props);\r\n\r\n const newSearchProps = { ...currentSearchProps };\r\n if (limit != null) {\r\n newSearchProps.limit = limit;\r\n }\r\n\r\n if (offset != null) {\r\n newSearchProps.offset = offset;\r\n }\r\n if (searchTerm != null) {\r\n newSearchProps.searchTerm = encodeURIComponent(searchTerm);\r\n }\r\n\r\n if (filters != null) {\r\n newSearchProps.filters = filters;\r\n }\r\n\r\n if (sortOption != null) {\r\n newSearchProps.sortOption = sortOption;\r\n }\r\n\r\n if (statusFilterOption != null) {\r\n newSearchProps.statusFilterOption = statusFilterOption;\r\n }\r\n\r\n if (additionalStatusFilterOption !== null) {\r\n newSearchProps.additionalStatusFilterOption = additionalStatusFilterOption;\r\n }\r\n\r\n // only change route if the search is different\r\n const searchString = buildSearchString(newSearchProps);\r\n\r\n this.props.history.push({\r\n pathname: this.props.location.pathname,\r\n search: searchString,\r\n });\r\n }\r\n\r\n onSearchHandler = () => {\r\n // Force searching again, even if the value did not change\r\n this.setState({\r\n previousSearchString: \"\",\r\n });\r\n this.changeSearchRoute({\r\n searchTerm: this.state.currentSearchTerm,\r\n offset: 0,\r\n });\r\n };\r\n\r\n onSearchTermChangeHander(searchTerm) {\r\n this.setState({\r\n currentSearchTerm: searchTerm,\r\n });\r\n }\r\n\r\n onPerformSearch() {\r\n // Force searching again, even if the value did not change\r\n this.setState({\r\n previousSearchString: \"\",\r\n searchResults: {}, // Clear search results\r\n });\r\n this.changeSearchRoute({\r\n filters: this.state.filters,\r\n searchTerm: this.state.currentSearchTerm,\r\n offset: 0,\r\n });\r\n }\r\n\r\n onFiltersClearHandler() {\r\n // clear search values\r\n this.setState({\r\n currentSearchTerm: \"\",\r\n filters: [],\r\n });\r\n\r\n // go back to initial route\r\n this.props.history.push({\r\n pathname: this.props.location.pathname,\r\n });\r\n }\r\n\r\n onPageChangeHandler(newLimit, newOffset) {\r\n this.changeSearchRoute({\r\n limit: newLimit,\r\n offset: newOffset,\r\n });\r\n }\r\n\r\n onSortChangeHandler(sortOption) {\r\n this.changeSearchRoute({\r\n sortOption,\r\n });\r\n }\r\n\r\n onStatusFilterChangeHandler(statusFilterOption) {\r\n this.changeSearchRoute({\r\n statusFilterOption,\r\n offset: 0,\r\n });\r\n }\r\n\r\n onAdditionalStatusFilterChangeHandler(additionalStatusFilterOption) {\r\n this.changeSearchRoute({\r\n additionalStatusFilterOption,\r\n offset: 0,\r\n });\r\n }\r\n\r\n initiateOpportunityConfirmationHandler = (companyIds, isAllSelected, companyObjects) => {\r\n // Added this variable due to eslint getting upset about no-param-reassign.\r\n let companyObjectsToProcess = companyObjects;\r\n\r\n if (!companyObjectsToProcess) {\r\n companyObjectsToProcess = this.state.searchResults.items.filter((io) => io.id === companyIds[0]);\r\n }\r\n\r\n // check companyIds for invalid suppliers\r\n let invalidSupplierFound = false;\r\n const invalidSuppliers = [];\r\n\r\n companyIds.forEach((companyId) => {\r\n const company = companyObjectsToProcess.find(\r\n (c) => c.id === companyId\r\n );\r\n\r\n if (company.parentAccountId !== null) {\r\n invalidSupplierFound = true;\r\n invalidSuppliers.push(company.id);\r\n }\r\n });\r\n\r\n const suppliersToSend = companyIds.filter((i) => !invalidSuppliers.includes(i));\r\n\r\n let modalDescription = \"Would you like to initiate opportunity for these suppliers?\";\r\n if (invalidSupplierFound) {\r\n modalDescription = `Invalid suppliers detected in the supplier selection.\r\n ${invalidSuppliers.length} supplier/s flagged as sub-accounts were removed.\r\n Sub-accounts are not eligible to be sent eRFx opportunities.`;\r\n }\r\n\r\n // save companyIds and modal description in state\r\n this.setState({\r\n initiateOpportunityCompanyIds: suppliersToSend,\r\n initiateOpportunityModalDescription: modalDescription,\r\n });\r\n\r\n this.toggleInitiateOpportunityConfirmationModal();\r\n }\r\n\r\n initiateOpportunityHandler = async () => {\r\n // Guard statement to prevent sending eRFx empty requests.\r\n if (this.state.initiateOpportunityCompanyIds <= 0) return;\r\n\r\n this.props.showLoadingScreen();\r\n const erfxWindow = window.open(`${window.location.origin}/redirect/LoadingERfx`);\r\n let url = \"\";\r\n try {\r\n // api call\r\n url = await initiateOpportunity(this.state.initiateOpportunityCompanyIds);\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n }\r\n this.props.hideLoadingScreen();\r\n erfxWindow.location.href = url;\r\n };\r\n\r\n exportCSVHandler = async (items) => {\r\n if (items === null || items <= 0) return;\r\n\r\n if (this.state.csvExportLimit === null || Number.isNaN(this.state.csvExportLimit)) {\r\n this.setState({\r\n csvExportLimit: 3500, // Setting to the value as per the User Story 659.\r\n });\r\n }\r\n\r\n if (items.length > this.state.csvExportLimit) {\r\n this.toggleCsvExportWarningModal();\r\n return;\r\n }\r\n\r\n this.props.showLoadingScreen();\r\n try {\r\n // api call\r\n const content = await exportCSV(items);\r\n // setup and download csv file\r\n const csvContent = `data:text/csv;charset=utf-8,${content}`;\r\n const encodedUri = encodeURI(csvContent);\r\n // create hyperlink\r\n const link = document.createElement(\"a\");\r\n link.setAttribute(\"href\", encodedUri);\r\n link.setAttribute(\"download\", \"supplier_export.csv\");\r\n document.body.appendChild(link); // Required for FF\r\n // force click to download file\r\n link.click();\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n }\r\n this.props.hideLoadingScreen();\r\n };\r\n\r\n setNewTradingNameHandler(newTradingName) {\r\n this.setState((prevState) => {\r\n const newItems = prevState.searchResults.items.map((item) => {\r\n if (item.id === prevState.companyIdToPerformAction) {\r\n return {\r\n ...item,\r\n tradingName: newTradingName,\r\n };\r\n }\r\n return { ...item };\r\n });\r\n return {\r\n searchResults: {\r\n ...prevState.searchResults,\r\n items: newItems,\r\n },\r\n };\r\n });\r\n }\r\n\r\n formatValues(searchResults) {\r\n return {\r\n ...searchResults,\r\n items:\r\n searchResults.items == null\r\n ? []\r\n : searchResults.items.map((company) => ({\r\n ...company,\r\n beeClassification:\r\n company.beeClassification !== 0\r\n ? getStaticValue(\r\n company.beeClassification,\r\n this.props.beeSectors\r\n )\r\n : \"n/a\",\r\n\r\n beeStatus: company.beeStatus\r\n ? getStaticValue(company.beeStatus, this.props.beeLevels)\r\n : \"n/a\",\r\n boPercentage: company.boPercentage != null && company.boPercentage >= 0\r\n ? formatPercentage(company.boPercentage)\r\n : \"n/a\",\r\n bwoPercentage: company.bwoPercentage != null && company.bwoPercentage >= 0\r\n ? formatPercentage(company.bwoPercentage)\r\n : \"n/a\",\r\n })),\r\n };\r\n }\r\n\r\n buildSearchQueryModel = ({\r\n limit,\r\n offset,\r\n searchTerm,\r\n filters,\r\n sortOption,\r\n statusFilterOption,\r\n additionalStatusFilterOption,\r\n }) => {\r\n // advanced search\r\n const registrationNumber = filters[6];\r\n const vatNumber = filters[7];\r\n const vendorNumber = filters[8];\r\n const contactPerson = filters[9];\r\n const emailAddress = filters[10];\r\n const dateAdded = filters[11] === null ? undefined : filters[11];\r\n const supplierType = filters[12] === null ? undefined : filters[12];\r\n const beeClassification = filters[13] === null ? undefined : filters[13];\r\n const beeStateFilter = filters[14] || 0;\r\n const complianceFilter = filters[15] || 0;\r\n const complianceStatus = filters[16] || 0;\r\n const beeOwnership = filters[17] || 0;\r\n const designatedGroup = filters[18] || null;\r\n const companyUnspscSegments = this.props.companyConfiguration\r\n .prioritiseClientOfferings\r\n ? filters[19]\r\n : filters[1];\r\n const companyUnspscFamilies = this.props.companyConfiguration\r\n .prioritiseClientOfferings\r\n ? filters[20]\r\n : filters[2];\r\n const subscriptionTier = filters[21] || null;\r\n const companyStatus = filters[22] || null;\r\n const supportingDocument = filters[23] || null;\r\n const mySuppliersFilter = filters[24] || null;\r\n const contractAgreement = filters[25] || null;\r\n const contractAgreementApproved = filters[26] || null;\r\n const onboardingStatusSummary = filters[27] || null;\r\n\r\n // sorting\r\n let sortField;\r\n let sortDescending;\r\n switch (sortOption) {\r\n case sortingValues.relevance:\r\n sortField = searchSupplierSortingFields.relevance;\r\n sortDescending = false;\r\n break;\r\n case sortingValues.newestFirst:\r\n sortField = searchSupplierSortingFields.dateModified;\r\n sortDescending = true;\r\n break;\r\n case sortingValues.oldestFirst:\r\n sortField = searchSupplierSortingFields.dateModified;\r\n sortDescending = false;\r\n break;\r\n case sortingValues.registeredName:\r\n sortField = searchSupplierSortingFields.registeredName;\r\n sortDescending = false;\r\n break;\r\n case sortingValues.rating:\r\n sortField = searchSupplierSortingFields.supplierRating;\r\n sortDescending = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return {\r\n // page\r\n limit,\r\n offset,\r\n // filters\r\n searchText: searchTerm,\r\n provinceIDs: filters[0],\r\n supplierCategories: this.props.companyConfiguration\r\n .prioritiseClientOfferings\r\n ? filters[1]\r\n : filters[18],\r\n supplierSubCategories: this.props.companyConfiguration\r\n .prioritiseClientOfferings\r\n ? filters[2]\r\n : filters[19],\r\n beeStatusIDs: filters[3],\r\n boPercentages: filters[4],\r\n bwoPercentages: filters[5],\r\n // advanced search\r\n RegistrationNumber: registrationNumber,\r\n VatNumber: vatNumber,\r\n VendorNumber: vendorNumber,\r\n ContactPerson: contactPerson,\r\n EmailAddress: emailAddress,\r\n DateAdded: dateAdded,\r\n BeeClassification: beeClassification,\r\n BeeStateFilter: beeStateFilter,\r\n ComplianceFilter: complianceFilter,\r\n ComplianceStatus: complianceStatus,\r\n DesignatedGroup: designatedGroup,\r\n BeeOwnership: beeOwnership,\r\n CompanyUnspscSegments: companyUnspscSegments,\r\n CompanyUnspscFamilies: companyUnspscFamilies,\r\n SupplierType: supplierType,\r\n SubscriptionTier: subscriptionTier,\r\n SupportingDocument: supportingDocument,\r\n CompanyStatus: companyStatus,\r\n ContractAgreement: contractAgreement,\r\n ContractAgreementApproved: contractAgreementApproved,\r\n MySuppliersFilter: mySuppliersFilter,\r\n // sorting\r\n sortingField: sortField,\r\n sortingDesc: sortDescending,\r\n supplierSearchFilter: mySuppliersFilter?.length === 1 ? mySuppliersFilter[0] : statusFilterOption,\r\n additionalStatusSearchFilter: additionalStatusFilterOption,\r\n OnboardingStatusSummary: onboardingStatusSummary,\r\n };\r\n }\r\n\r\n getSearchQueryModel({\r\n limit,\r\n offset,\r\n searchTerm,\r\n filters,\r\n sortOption,\r\n statusFilterOption,\r\n additionalStatusFilterOption,\r\n }) {\r\n return this.buildSearchQueryModel({\r\n limit,\r\n offset,\r\n searchTerm,\r\n filters,\r\n sortOption,\r\n statusFilterOption,\r\n additionalStatusFilterOption,\r\n });\r\n }\r\n\r\n async getSearchResults(searchQueryModel) {\r\n try {\r\n const results = await sendCompanySearch(searchQueryModel);\r\n\r\n return this.formatValues(results);\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n return null;\r\n }\r\n }\r\n\r\n async getSearchResultsForLargeVolumeQuery(searchQueryModel) {\r\n try {\r\n const results = await sendLargeCompanySearch(searchQueryModel);\r\n return results;\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n return null;\r\n }\r\n }\r\n\r\n async performSearch() {\r\n const searchQueries = this.props.location.search;\r\n if (this.props.location.search === \"\") {\r\n // reset the state if required\r\n if (this.state.searchResults.items != null) {\r\n this.setState({\r\n searchResults: {},\r\n filters: [],\r\n previousSearchString: this.props.location.search,\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (this.props.location.search === this.state.previousSearchString) {\r\n // search has already been executed for this query string\r\n return;\r\n }\r\n\r\n if (this.props.location.search !== this.state.previousSearchString) {\r\n const prevSearchParams = new URLSearchParams(\r\n this.state.previousSearchString\r\n );\r\n\r\n this.setState({\r\n previousSearchString: this.props.location.search,\r\n });\r\n const prevSearchCompanyId = parseInt(\r\n prevSearchParams.get(\"companyId\"),\r\n 10\r\n );\r\n const prevSearchRegisteredName = prevSearchParams.get(\"registeredName\");\r\n\r\n const searchParams = new URLSearchParams(this.props.location.search);\r\n const searchCompanyId = parseInt(searchParams.get(\"companyId\"), 10);\r\n const searchRegisteredName = searchParams.get(\"registeredName\");\r\n\r\n if (\r\n !Number.isNaN(prevSearchCompanyId)\r\n && prevSearchRegisteredName != null\r\n && Number.isNaN(searchCompanyId)\r\n && searchRegisteredName == null\r\n ) {\r\n // ViewMoreDetails modal is closed\r\n return;\r\n }\r\n\r\n if (\r\n !Number.isNaN(searchCompanyId)\r\n && searchRegisteredName != null\r\n && Number.isNaN(prevSearchCompanyId)\r\n && prevSearchRegisteredName == null\r\n && this.state.searchResults.items != null\r\n ) {\r\n // ViewMoreDetails modal is opened, but will still perform search if\r\n // reloading page with modal open\r\n return;\r\n }\r\n }\r\n\r\n const searchProps = readSearchString(this.props);\r\n const searchFilterIsEmpty = searchProps.filters == null || searchProps.length === 0\r\n || searchProps.filters.every((x) => x == null || x.length === 0);\r\n if (!searchFilterIsEmpty || searchProps.searchTerm.length >= 3) {\r\n // execute the search\r\n this.setState({\r\n loading: true,\r\n filters: searchProps.filters,\r\n previousSearchString: this.props.location.search,\r\n });\r\n\r\n const searchResults = await this.getSearchResults(this.getSearchQueryModel(searchProps));\r\n if (searchResults == null) {\r\n return;\r\n }\r\n\r\n if (searchQueries !== this.props.location.search) {\r\n // The results is not for the current location, discard them\r\n return;\r\n }\r\n\r\n this.setState({\r\n loading: false,\r\n searchResults,\r\n currentSearchTerm: searchProps.searchTerm,\r\n csvExportLimit: searchResults.csvExportLimit,\r\n });\r\n } else {\r\n this.setState({\r\n showSearchLimitModal: true,\r\n });\r\n }\r\n }\r\n\r\n // This function runs the \"Select All {x} Items\" logic on the front-end.\r\n selectAllReturnedSearchResults = async () => {\r\n const searchQueries = this.props.location.search;\r\n const searchProps = readSearchString(this.props);\r\n\r\n // execute the search\r\n this.setState({\r\n loading: true,\r\n filters: searchProps.filters,\r\n previousSearchString: this.props.location.search,\r\n });\r\n\r\n const searchResults = await this.getSearchResultsForLargeVolumeQuery(this.getSearchQueryModel(searchProps));\r\n\r\n if (searchResults === null) {\r\n return {};\r\n }\r\n\r\n if (searchQueries !== this.props.location.search) {\r\n // The results is not for the current location, discard them\r\n return {};\r\n }\r\n\r\n // Hide the spinner once the search is done and dusted.\r\n this.setState({\r\n loading: false,\r\n });\r\n\r\n this.setState({\r\n csvExportLimit: searchResults.csvExportLimit,\r\n });\r\n\r\n // Return the array of items retrieved from the database.\r\n return searchResults.items;\r\n }\r\n\r\n async submitSupplierExportRequest() {\r\n this.setState({\r\n disableSupplierExportRequest: true,\r\n });\r\n\r\n // api call\r\n await submitSupplierExportRequest();\r\n }\r\n\r\n async componentDidUpdate() {\r\n await this.performSearch();\r\n }\r\n\r\n toggleDuplicateOnboardingConfirmModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showDuplicateOnboardingConfirmModal: !prevState.showDuplicateOnboardingConfirmModal,\r\n }));\r\n }\r\n\r\n toggleAddBusinessUnitsConfirmModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showAddBusinessUnitsConfirmModal: !prevState.showAddBusinessUnitsConfirmModal,\r\n }));\r\n }\r\n\r\n toggleAddedBusinessUnitsModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showAddedBusinessUnitsModal: !prevState.showAddedBusinessUnitsModal,\r\n }));\r\n }\r\n\r\n toggleAllBusinessUnitsAlreadyAddedModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showAllBusinessUnitsAlreadyAddedModal: !prevState.showAllBusinessUnitsAlreadyAddedModal,\r\n }));\r\n }\r\n\r\n toggleMessageComposeModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showMessageComposeModal: !prevState.showMessageComposeModal,\r\n }));\r\n }\r\n\r\n toggleShowSubAccountModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showSubAccountModal: !prevState.showSubAccountModal,\r\n }));\r\n }\r\n\r\n toggleShowRateCompanyModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showRateCompanyModal: !prevState.showRateCompanyModal,\r\n }));\r\n }\r\n\r\n toggleInitiateOpportunityConfirmationModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showInitiateOpportunityConfirmationModal: !prevState.showInitiateOpportunityConfirmationModal,\r\n }));\r\n }\r\n\r\n toggleShowEditProductOfferingModal(companyId) {\r\n const loadSupplierCategories = async () => {\r\n const currentSupplierCategoriesList = await getSupplierCategoriesSelectionAsBuyer(companyId);\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showEditProductOffering: !prevState.showEditProductOffering,\r\n currentSupplierCategoriesList,\r\n companyIdToPerformAction: companyId,\r\n }));\r\n };\r\n\r\n if (companyId > 0) {\r\n loadSupplierCategories();\r\n } else {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showEditProductOffering: !prevState.showEditProductOffering,\r\n }));\r\n }\r\n }\r\n\r\n toggleCsvExportWarningModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showCsvExportWarningModal: !prevState.showCsvExportWarningModal,\r\n }));\r\n }\r\n\r\n toggleSupplierExportModal() {\r\n this.setState((prevState) => ({\r\n ...prevState,\r\n showSupplierExportModal: !prevState.showSupplierExportModal,\r\n }));\r\n }\r\n\r\n saveSupplierProductCategorySelection = (productCategorySelectionIdList) => {\r\n const saveSupplierSubCategories = async () => {\r\n this.setState({ loading: true });\r\n try {\r\n // save updates\r\n await saveClientSpecificProductCategories({\r\n selectedSubCategoryIdList: productCategorySelectionIdList,\r\n supplierCompanyId: this.state.companyIdToPerformAction,\r\n });\r\n this.setState({ loading: false });\r\n this.props.showToast(\"Updated suppplier products segments!\");\r\n } catch (error) {\r\n this.setState({ loading: false });\r\n this.props.showErrorDialog();\r\n }\r\n };\r\n\r\n saveSupplierSubCategories();\r\n }\r\n\r\n updateRating = (newRating, companyId) => {\r\n this.setState((prevState) => ({\r\n searchResults: {\r\n ...prevState.searchResults,\r\n items: prevState.searchResults.items.map((item) => ({\r\n ...item,\r\n companyRating: companyId === item.id ? newRating.companyRating : item.companyRating,\r\n totalCompanyRatings: companyId === item.id\r\n ? newRating.totalCompanyRatings\r\n : item.totalCompanyRatings,\r\n })),\r\n },\r\n }));\r\n }\r\n\r\n render() {\r\n const {\r\n limit,\r\n offset,\r\n sortOption,\r\n statusFilterOption,\r\n additionalStatusFilterOption,\r\n } = readSearchString(\r\n this.props\r\n );\r\n\r\n const preventMultipleSupplierSelection = !hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.MultipleSupplierSelect\r\n );\r\n\r\n const canViewMoreDetails = () => (\r\n !hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.ViewMoreSupplierDetails\r\n )\r\n );\r\n\r\n const viewMoreModalDetails = getCompanyModalDetails(this.props);\r\n const editManualSupplierId = getEditManualSupplierId(this.props);\r\n const tableConfig = this.createTableConfig();\r\n tableConfig.sortOptions.selectedSortOption = sortOption;\r\n tableConfig.searchLimit = this.props.searchLimit;\r\n tableConfig.statusFilterOptions.selectedStatusFilterOption = statusFilterOption;\r\n tableConfig.preventMultipleItemSelect = preventMultipleSupplierSelection;\r\n tableConfig.additionalStatusFilterOptions.selectedStatusFilterOption = additionalStatusFilterOption;\r\n\r\n const unspscInfo = getUnspscInfo(\r\n this.props.unspscSegments,\r\n this.props.unspscFamilies\r\n );\r\n\r\n const selectedOptionsAdvanced = this.state.filters[18] ?? [];\r\n let selectedOptionAdvanced = null;\r\n if (selectedOptionsAdvanced.length === 1) {\r\n selectedOptionAdvanced = selectedOptionsAdvanced[0];\r\n }\r\n\r\n const advancedFilterPropsConfig = getAdvancedFilterProps({\r\n beeClassifications: this.props.beeSectors,\r\n supplierCategories: this.props.supplierCategories,\r\n unspscSegments: unspscInfo,\r\n prioritiseClientOfferings: this.props.companyConfiguration\r\n .prioritiseClientOfferings,\r\n selectedOption: selectedOptionAdvanced,\r\n supplierTypes: this.props.supplierTypes,\r\n subscriptionTiers: this.props.subscriptionTiers,\r\n companyStatuses: this.props.companyStatuses,\r\n supportingDocuments: this.props.supportingDocuments,\r\n allowedFeatures: this.props.allowedFeatures,\r\n });\r\n\r\n const data = this.state.searchResults;\r\n data.limit = limit;\r\n data.offset = offset;\r\n\r\n const selectedOptions = this.state.filters[1] ?? [];\r\n let selectedOption = null;\r\n if (selectedOptions.length === 1) {\r\n selectedOption = selectedOptions[0];\r\n }\r\n\r\n const filterProps = getFilterProps({\r\n provinces: this.props.provinces,\r\n supplierCategories: this.props.supplierCategories,\r\n unspscSegments: unspscInfo,\r\n beeLevels: this.props.beeLevels,\r\n prioritiseClientOfferings: this.props.companyConfiguration\r\n .prioritiseClientOfferings,\r\n selectedOption,\r\n });\r\n\r\n const hasSearchResults = data.items != null;\r\n\r\n let composeMessageModalSendTo = \"multiple\";\r\n if (this.state.messageRecipients.sendToAll) {\r\n composeMessageModalSendTo = \"searchQuery\";\r\n } else if (this.state.messageRecipients.recipients.length === 1) {\r\n composeMessageModalSendTo = \"single\";\r\n }\r\n\r\n const composeMessageModal = this.state.showMessageComposeModal && (\r\n this.toggleMessageComposeModal()}\r\n />\r\n );\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n\r\n {this.state.showDuplicateOnboardingConfirmModal && (\r\n this.toggleDuplicateOnboardingConfirmModal()}\r\n onProceedClick={() => this.continueOnboardingMultiple()}\r\n />\r\n )}\r\n\r\n {this.state.showAddSupplierModal && (\r\n {\r\n this.onPerformSearch();\r\n }}\r\n onClose={() => {\r\n this.setState({\r\n showAddSupplierModal: false,\r\n });\r\n }}\r\n />\r\n )}\r\n\r\n {this.state.showAddBusinessUnitsConfirmModal && (\r\n this.toggleAddBusinessUnitsConfirmModal()}\r\n onProceedClick={(newValue) => {\r\n this.addBusinessUnits(newValue);\r\n }}\r\n />\r\n )}\r\n\r\n {this.state.showAddedBusinessUnitsModal && (\r\n {}}\r\n onProceedClick={() => {\r\n this.toggleAddedBusinessUnitsModal();\r\n }}\r\n />\r\n )}\r\n\r\n {editManualSupplierId && (\r\n {\r\n this.toggleEditManualSupplierModal();\r\n }}\r\n />\r\n )}\r\n\r\n {this.state.showAllBusinessUnitsAlreadyAddedModal && (\r\n {}}\r\n onProceedClick={() => this.toggleAllBusinessUnitsAlreadyAddedModal()}\r\n />\r\n )}\r\n\r\n {this.state.showInitiateOpportunityConfirmationModal && (\r\n this.toggleInitiateOpportunityConfirmationModal()}\r\n onProceedClick={() => this.initiateOpportunityHandler()}\r\n />\r\n )}\r\n\r\n {this.state.showCsvExportWarningModal && (\r\n {}}\r\n onProceedClick={() => this.toggleCsvExportWarningModal()}\r\n />\r\n )}\r\n\r\n {\r\n this.state.showSupplierExportModal && (\r\n { }}\r\n onProceedClick={() => this.toggleSupplierExportModal()}\r\n proceedButtonText=\"OK\"\r\n />\r\n )\r\n }\r\n\r\n {\r\n this.state.showSearchLimitModal && (\r\n { }}\r\n onProceedClick={() => this.setState({ showSearchLimitModal: false })}\r\n proceedButtonText=\"OK\"\r\n />\r\n )\r\n }\r\n\r\n {composeMessageModal}\r\n\r\n {viewMoreModalDetails && (\r\n this.toggleViewMoreModal()}\r\n isPotentialSupplier={this.state.searchResults?.items?.find(\r\n (c) => c.id === viewMoreModalDetails.companyId\r\n )?.supplierStatus === supplierStatuses.potential}\r\n isSupplierSearch\r\n company={viewMoreModalDetails}\r\n onboardSupplierCallback={() => this.checkOnBoardSupplierDuplicates([\r\n viewMoreModalDetails.companyId,\r\n ])}\r\n />\r\n )}\r\n\r\n {this.state.showSubAccountModal && (\r\n this.setNewTradingNameHandler(newTradingName)}\r\n onClose={() => this.toggleShowSubAccountModal()}\r\n />\r\n )}\r\n\r\n {this.state.showRateCompanyModal && (\r\n this.toggleShowRateCompanyModal()}\r\n onRate={(newRating) => this.updateRating(\r\n newRating,\r\n this.state.companyIdToPerformAction\r\n )}\r\n companyName={this.state.registeredCompanyName}\r\n companyId={this.state.companyIdToPerformAction}\r\n />\r\n )}\r\n\r\n {this.state.showEditProductOffering && (\r\n this.saveSupplierProductCategorySelection(selectionIdList)}\r\n onCloseCallback={() => this.toggleShowEditProductOfferingModal()}\r\n />\r\n )}\r\n\r\n
    \r\n
    \r\n this.onSearchHandler()}\r\n onSearchChangeCallback={(searchTerm) => this.onSearchTermChangeHander(searchTerm)}\r\n />\r\n
    \r\n\r\n this.onFiltersClearHandler(),\r\n color: \"secondary\",\r\n },\r\n {\r\n key: \"search\",\r\n label: \"Search\",\r\n onClick: () => this.onPerformSearch(),\r\n color: \"primary\",\r\n },\r\n ]}\r\n onChange={(f) => this.setState({ filters: f })}\r\n filters={filterProps}\r\n advancedFilters={advancedFilterPropsConfig}\r\n advancedFiltersSystemFeature={SystemFeatures.UseAdvancedSearchFilters}\r\n />\r\n\r\n {this.state.canRequestSupplierExport\r\n ? (\r\n {\r\n this.submitSupplierExportRequest();\r\n this.toggleSupplierExportModal();\r\n }}\r\n disabled={this.state.supplierExportStatus === SupplierExportStatus.Failed}\r\n >\r\n Export Supplier List\r\n \r\n )\r\n : null}\r\n\r\n {this.state.supplierExportStatus === SupplierExportStatus.Failed\r\n ?

    Supplier export request submitted, export will be emailed to you when complete

    \r\n : \"\"}\r\n
    \r\n\r\n {hasSearchResults || this.state.loading ? (\r\n {\r\n this.toggleViewMoreModal({\r\n ...company,\r\n companyId: company.id,\r\n });\r\n }}\r\n onViewMoreDisabled={canViewMoreDetails}\r\n tableConfig={tableConfig}\r\n data={data}\r\n onPageChange={(l, o) => this.onPageChangeHandler(l, o)}\r\n onSortOptionChange={(newSortOption) => this.onSortChangeHandler(newSortOption)}\r\n onStatusFilterChange={\r\n (newStatusFilterOption) => this.onStatusFilterChangeHandler(newStatusFilterOption)\r\n }\r\n onAdditionalStatusFilterChange={\r\n (newAdditionalStatusFilterOption) => this.onAdditionalStatusFilterChangeHandler(newAdditionalStatusFilterOption)\r\n }\r\n additionalStatusFilterName={(\r\n this.props.supplierTransactionStatuses.length > 0 ? \"Supplier Transaction Statuses\" : null\r\n )}\r\n additionalStatusCondRenderExclusions={[supplierFilterOptions.Potential]}\r\n requiredMutipleItemSelectFeature={SystemFeatures.MultipleSupplierSelect}\r\n requiredViewMoreFeature={SystemFeatures.ViewMoreSupplierDetails}\r\n onSelectAllResultsCallback={this.selectAllReturnedSearchResults}\r\n />\r\n ) : null}\r\n\r\n {!hasSearchResults && !this.state.loading ? (\r\n \r\n
    Please enter a minimum of 3 characters in the search bar or select a filter to apply to your search
    \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(withToast(\r\n connect(mapStateToProps, mapDispatchToProps)(SupplierSearch)\r\n));\r\n","import React, {\r\n useRef, useEffect, useState, useCallback, Fragment,\r\n} from \"react\";\r\nimport Spinner from \"../../Containers/Spinner/Spinner\";\r\nimport Styles from \"./InfiniteScroll.module.scss\";\r\n\r\nexport interface LoadOptions {\r\n loadNext: boolean;\r\n loadPrevious: boolean;\r\n}\r\n\r\nconst InfiniteScroll = (\r\n {\r\n hasMore,\r\n hasMoreBefore = false,\r\n loadMore,\r\n children,\r\n }\r\n :\r\n {\r\n hasMore: boolean,\r\n hasMoreBefore?: boolean,\r\n // promise with a return true if the loading is done\r\n loadMore: (loadOptions: LoadOptions) => Promise,\r\n children: Array,\r\n }\r\n) => {\r\n const [loading, setLoading] = useState(false);\r\n\r\n const container = useRef(null);\r\n const beforeLoader = useRef(null);\r\n const scrollFiller = useRef(null);\r\n\r\n const lastScrollTop = useRef(0);\r\n\r\n // whether loading is in progress\r\n const loadMoreBusy = useRef(false);\r\n\r\n // indicates that child change was detected and that\r\n // the next page should be loaded when possible\r\n const childrenChangedPending = useRef(false);\r\n\r\n const latestLoadMore = useRef<(loadOptions: LoadOptions) => Promise>(loadMore);\r\n useEffect(() => {\r\n latestLoadMore.current = loadMore;\r\n }, [loadMore]);\r\n\r\n const latestHasMore = useRef(hasMore);\r\n useEffect(() => {\r\n latestHasMore.current = hasMore;\r\n }, [hasMore]);\r\n\r\n const onScrollHandler = useCallback(async (parent: HTMLElement | null) => {\r\n const parentHeight = parent?.clientHeight ?? 0;\r\n const scrollTop = parent?.scrollTop ?? 0;\r\n const contentHeight = container.current?.clientHeight ?? 0;\r\n\r\n const loadBeforeHeight = beforeLoader.current?.clientHeight ?? 0;\r\n\r\n if (!hasMore && !hasMoreBefore) {\r\n return;\r\n }\r\n\r\n const distanceFromBottom = contentHeight - parentHeight - scrollTop;\r\n\r\n if (hasMore && distanceFromBottom < 100) {\r\n if (loadMoreBusy.current) {\r\n return;\r\n }\r\n loadMoreBusy.current = true;\r\n setLoading(true);\r\n\r\n const success = await latestLoadMore.current({\r\n loadNext: true,\r\n loadPrevious: false,\r\n });\r\n\r\n if (success) {\r\n setLoading(false);\r\n }\r\n\r\n loadMoreBusy.current = false;\r\n\r\n if (childrenChangedPending.current) {\r\n childrenChangedPending.current = false;\r\n if (success && latestHasMore.current) {\r\n onScrollHandler(container.current?.parentElement ?? null);\r\n }\r\n }\r\n } else if (hasMoreBefore && loadBeforeHeight > 0\r\n && scrollTop < loadBeforeHeight / 2) {\r\n // load before\r\n if (loadMoreBusy.current) {\r\n return;\r\n }\r\n loadMoreBusy.current = true;\r\n\r\n await latestLoadMore.current({\r\n loadNext: false,\r\n loadPrevious: true,\r\n });\r\n\r\n loadMoreBusy.current = false;\r\n }\r\n }, [setLoading, hasMore, hasMoreBefore]);\r\n\r\n useEffect(() => {\r\n // children changed, assume loading is done or need to be reloaded\r\n if (loadMoreBusy.current) {\r\n // already loading\r\n childrenChangedPending.current = true;\r\n } else {\r\n onScrollHandler(container.current?.parentElement ?? null);\r\n }\r\n }, [children, onScrollHandler]);\r\n\r\n const eventHandler = useRef<(ev: Event) => void>();\r\n\r\n // register scroll event listener\r\n useEffect(() => {\r\n onScrollHandler(null);\r\n\r\n // add event listener\r\n const parent = container.current?.parentElement;\r\n if (parent != null) {\r\n if (eventHandler.current != null) {\r\n parent.removeEventListener(\"scroll\", eventHandler.current);\r\n }\r\n\r\n eventHandler.current = (ev: Event) => {\r\n lastScrollTop.current = (ev.target as HTMLElement).scrollTop ?? 0;\r\n onScrollHandler(ev.target as HTMLElement);\r\n };\r\n parent.addEventListener(\"scroll\", eventHandler.current);\r\n }\r\n }, [container, onScrollHandler]);\r\n\r\n const beforeLoaderHeight = useRef(0);\r\n const previousScrollFillerHeight = useRef(0);\r\n // set scroll top position so that before loader is out of the scroll\r\n useEffect(() => {\r\n beforeLoaderHeight.current = beforeLoader.current?.clientHeight ?? beforeLoaderHeight.current;\r\n\r\n if (hasMoreBefore\r\n && container.current?.parentElement != null\r\n && beforeLoader.current != null) {\r\n const parentScrollTop = container.current.parentElement.scrollTop;\r\n const parentHeight = container.current.parentElement.clientHeight;\r\n const contentHeight = container.current.clientHeight;\r\n\r\n const minContentHeight = parentHeight + beforeLoaderHeight.current;\r\n\r\n if (scrollFiller.current != null) {\r\n scrollFiller.current.style.height = `${\r\n minContentHeight > contentHeight\r\n ? minContentHeight - contentHeight\r\n : 0\r\n }px`;\r\n\r\n if (minContentHeight > contentHeight) {\r\n previousScrollFillerHeight.current = minContentHeight - contentHeight;\r\n }\r\n }\r\n\r\n if (parentScrollTop < beforeLoaderHeight.current) {\r\n container.current.parentElement.scrollTo({ top: beforeLoaderHeight.current });\r\n }\r\n }\r\n }, [hasMoreBefore, children, loading]);\r\n\r\n const previousChildren = useRef(children);\r\n const previousContentHeight = useRef(0);\r\n // set the scroll position after a page was loaded at the start\r\n useEffect(() => {\r\n const contentHeight = (container.current?.scrollHeight ?? 0);\r\n\r\n // when loading more children above, keep scroll position\r\n if (children.length > 0 && previousChildren.current.length > 0) {\r\n const firstChild = previousChildren.current[0];\r\n const firstItemIndexInNewList = children.findIndex((c) => c.key === firstChild.key);\r\n if (firstItemIndexInNewList > 0 && previousChildren.current.length < children.length) {\r\n // content was added at the top\r\n // keep current scroll position\r\n const parent = container.current?.parentElement;\r\n if (parent == null) {\r\n return;\r\n }\r\n\r\n const newScrollTop = contentHeight\r\n - previousContentHeight.current\r\n - beforeLoaderHeight.current\r\n + lastScrollTop.current;\r\n parent.scrollTo({ top: newScrollTop });\r\n }\r\n }\r\n\r\n previousChildren.current = children;\r\n previousContentHeight.current = contentHeight;\r\n }, [children]);\r\n\r\n return (\r\n \r\n
    \r\n {\r\n hasMoreBefore && !loading\r\n && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n {children}\r\n {loading && }\r\n
    \r\n {\r\n !hasMore && !loading\r\n && (\r\n
    \r\n )\r\n }\r\n \r\n\r\n );\r\n};\r\n\r\nexport default InfiniteScroll;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M18.9 3.294a10.953 10.953 0 0 0-15.66 0c-4.32 4.392-4.32 11.53 0 15.922a10.953 10.953 0 0 0 15.66 0c4.32-4.392 4.32-11.53 0-15.922zm-.756 15.153c-3.888 3.953-10.206 3.953-14.148 0-3.888-3.953-3.888-10.376 0-14.384C7.884.11 14.202.11 18.144 4.063c3.888 3.953 3.888 10.431 0 14.384zm2.376 1.867l-1.08 1.098L25.92 28 27 26.902l-6.48-6.588z\"\n});\n\nvar SvgMagnifyingGlass = function SvgMagnifyingGlass(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 28,\n viewBox: \"0 0 27 28\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgMagnifyingGlass, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/magnifying-glass.6bf6c057.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.229 10.971h-8.143c-.315-1.457-1.629-2.542-3.172-2.542-1.543 0-2.857 1.085-3.171 2.542H.8c-.4 0-.714.315-.714.715 0 .4.314.714.714.714h7.943c.314 1.457 1.628 2.543 3.171 2.543s2.857-1.086 3.172-2.543h8.143c.4 0 .714-.314.714-.714 0-.372-.343-.715-.714-.715zm-11.315 2.543c-1 0-1.828-.828-1.828-1.828s.828-1.829 1.828-1.829 1.829.829 1.829 1.829-.829 1.828-1.829 1.828zM3.371 6.686c1.543 0 2.858-1.086 3.172-2.543H23.2c.4 0 .714-.314.714-.714 0-.4-.314-.715-.714-.715H6.543C6.229 1.257 4.914.171 3.37.171 1.571.171.114 1.657.114 3.43c0 1.771 1.457 3.257 3.257 3.257zm0-5.086c1 0 1.829.829 1.829 1.829s-.829 1.828-1.829 1.828S1.543 4.43 1.543 3.43 2.37 1.6 3.37 1.6zM20.657 16.743c-1.543 0-2.828 1.086-3.171 2.514H.8c-.4 0-.714.314-.714.714 0 .4.314.715.714.715h16.686c.314 1.457 1.628 2.571 3.171 2.571 1.8 0 3.257-1.457 3.257-3.257s-1.485-3.257-3.257-3.257zm0 5.057c-1 0-1.828-.829-1.828-1.829s.828-1.828 1.828-1.828 1.829.828 1.829 1.828-.829 1.829-1.829 1.829z\"\n}));\n\nvar SvgNounFilters = function SvgNounFilters(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgNounFilters, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/noun-filters.fa1cbdee.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from \"react\";\r\nimport {\r\n Dropdown, DropdownToggle, DropdownMenu, DropdownItem,\r\n} from \"reactstrap\";\r\nimport Styles from \"./SecondarySearchInput.module.scss\";\r\nimport { ReactComponent as MagnifyingGlassSvg } from \"../../Images/magnifying-glass.svg\";\r\nimport { ReactComponent as FiltersSvg } from \"./noun-filters.svg\";\r\n\r\nfunction SecondarySearchInput({\r\n value,\r\n onChange,\r\n placeholder = \"Search...\",\r\n hideFilter = false,\r\n onFilterChange,\r\n filterOptions,\r\n selectedFilterValue,\r\n}:{\r\n value:string,\r\n onChange: (newValue: string) => void,\r\n placeholder?:string,\r\n hideFilter?: boolean,\r\n onFilterChange?: (filterValue: number) => void,\r\n filterOptions?: Array<{displayValue: string, value: number}>,\r\n selectedFilterValue?: number\r\n}) {\r\n const [isOptionsOpen, setIsOptionsOption] = useState(false);\r\n\r\n const changeFilterValue = (newFilterValue: number) => {\r\n if (onFilterChange) {\r\n onFilterChange(newFilterValue);\r\n if (value !== \"\") {\r\n onChange(value);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n onChange(ev.target.value)}\r\n />\r\n {hideFilter === true ? null\r\n : (\r\n setIsOptionsOption((previousValue) => !previousValue)}\r\n >\r\n \r\n \r\n \r\n \r\n {filterOptions?.map((option) => (\r\n changeFilterValue(option.value)}\r\n active={selectedFilterValue === option.value}\r\n >\r\n {option.displayValue}\r\n \r\n ))}\r\n \r\n\r\n \r\n \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default SecondarySearchInput;\r\n","import React, {\r\n useState, Fragment, useRef, useCallback, useEffect,\r\n} from \"react\";\r\nimport axios, {\r\n // eslint-disable-next-line no-unused-vars\r\n CancelTokenSource,\r\n} from \"axios\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { ModalPopup, useDebounce, ListEmptyState } from \"isuppli-react-components\";\r\nimport InfiniteScroll from \"../../../Controls/InfiniteScroll/InfiniteScroll\";\r\n\r\nimport MessageComposer from \"../../../Sections/Messaging/MessageComposer/MessageComposer\";\r\nimport Styles from \"./NewMessageModal.module.scss\";\r\nimport SecondarySearchInput from \"../../../Controls/SecondarySearchInput/SecondarySearchInput\";\r\nimport ChatChannelCard from \"../ChatChannelCard/ChatChannelCard\";\r\nimport {\r\n getChannelList,\r\n sendMessage,\r\n Message, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/Messaging/messagesApi\";\r\n\r\n// delay before executing search on input change\r\nconst inputDebounce = 500;\r\n\r\ntype Recipient = {\r\n name: string,\r\n channelId: number,\r\n}\r\n\r\nconst NewMessageModal = (\r\n {\r\n onClose,\r\n onMessageSent,\r\n }\r\n : {\r\n onClose: () => void\r\n onMessageSent: (message: Message, channelId: number) => void\r\n }\r\n) => {\r\n const history = useHistory();\r\n\r\n const [channel, setChannel] = useState();\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [draftMessageId, setDraftMessageId] = useState();\r\n const [channelSearchResult, setChannelSearchResult] = useState([]);\r\n const [hasMoreSearch, setHasMoreSearch] = useState(true);\r\n const [forceUpdate, setForceUpdate] = useState<() => Promise>();\r\n const [sending, setSending] = useState(false);\r\n const debouncing = useRef(false);\r\n const httpCancelToken = useRef();\r\n\r\n // cancel request when disposing\r\n useEffect(() => () => {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n }, []);\r\n\r\n const loadSearchResults = async () => {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n if (debouncing.current) {\r\n return false;\r\n }\r\n\r\n try {\r\n const limit = 20;\r\n httpCancelToken.current = axios.CancelToken.source();\r\n const newItems = await getChannelList({\r\n pageId: channelSearchResult[channelSearchResult.length - 1]?.channelId,\r\n limit,\r\n nameFilter: searchTerm,\r\n config: {\r\n cancelToken: httpCancelToken.current.token,\r\n },\r\n });\r\n httpCancelToken.current = undefined;\r\n\r\n if (newItems.length < limit) {\r\n setHasMoreSearch(false);\r\n }\r\n\r\n setChannelSearchResult((prevResults) => [\r\n ...prevResults,\r\n ...newItems.map((c) => ({ name: c.name, channelId: c.id })),\r\n ]);\r\n return true;\r\n } catch (error) {\r\n httpCancelToken.current = undefined;\r\n if (axios.isCancel(error)) {\r\n return false;\r\n }\r\n throw error;\r\n }\r\n };\r\n\r\n const [\r\n queSearchDebounce,\r\n ] = useDebounce(async () => {\r\n debouncing.current = false;\r\n\r\n // trigger infinite scroll to load\r\n setHasMoreSearch(false);\r\n setHasMoreSearch(true);\r\n },\r\n inputDebounce);\r\n\r\n const onSearchTermChangeHandler = (newSearchTerm: string) => {\r\n setSearchTerm(newSearchTerm);\r\n queSearchDebounce();\r\n // set list into loading state\r\n setHasMoreSearch(true);\r\n setChannelSearchResult([]);\r\n debouncing.current = true;\r\n };\r\n\r\n const onChannelClickHandler = async (selectedChannel: Recipient) => {\r\n setChannel(selectedChannel);\r\n };\r\n\r\n const onSendHandler = async () => {\r\n if (channel == null || draftMessageId == null) {\r\n onClose();\r\n return;\r\n }\r\n setSending(true);\r\n\r\n if (forceUpdate != null) {\r\n await forceUpdate();\r\n }\r\n\r\n const sentMessage = await sendMessage(channel.channelId, draftMessageId ?? -1);\r\n onMessageSent(sentMessage, channel.channelId);\r\n onClose();\r\n };\r\n\r\n const getForceUpdateHandler = useCallback((handler: () => Promise) => {\r\n setForceUpdate(() => handler);\r\n }, [setForceUpdate]);\r\n\r\n return (\r\n {\r\n onSendHandler();\r\n },\r\n disabled: sending,\r\n }]}\r\n heading=\"New Message\"\r\n subheading={channel == null ? \"Select a recipient.\" : `Sending a message to ${channel.name}`}\r\n onClose={onClose}\r\n hasCancel\r\n >\r\n
    \r\n
    \r\n {\r\n channel == null\r\n ? (\r\n \r\n
    \r\n \r\n
    \r\n \r\n {\r\n channelSearchResult\r\n .map((chanelResultItem) => (\r\n onChannelClickHandler(chanelResultItem)}\r\n />\r\n ))\r\n }\r\n \r\n {channelSearchResult.length === 0 && !hasMoreSearch\r\n ? (\r\n history.push(`/marketplace/search?limit=20&offset=0&q=${searchTerm}&s=0&sf=0`),\r\n }\r\n }\r\n >\r\n No recipients were found for existing conversations.\r\n Search the supplier database by clicking the button below to\r\n start a new conversation with a company.\r\n \r\n )\r\n : null}\r\n
    \r\n )\r\n : (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default NewMessageModal;\r\n","import React, { useState } from \"react\";\r\nimport { PageHeading, UtilButton } from \"isuppli-react-components\";\r\nimport Styles from \"./MessengerHeader.module.scss\";\r\n\r\nimport NewMessageModal from \"../NewMessageModal/NewMessageModal\";\r\nimport navMenuItems from \"../../../Util/menuItems\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n Message,\r\n} from \"../../../http/Messaging/messagesApi\";\r\n\r\nexport default function MessengerHeader(\r\n { onMessageSent } : {onMessageSent : (message:Message, channelId:number) => void}\r\n) {\r\n const [showComposeModal, setShowComposeModal] = useState(false);\r\n const composeMessageButton = (\r\n setShowComposeModal(true)}\r\n >\r\n COMPOSE NEW\r\n \r\n );\r\n return (\r\n
    \r\n {showComposeModal && (\r\n setShowComposeModal(false)}\r\n onMessageSent={onMessageSent}\r\n />\r\n )}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {composeMessageButton}\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport Styles from \"./ChatMessageHeader.module.scss\";\r\n\r\nexport default function ChatMessageHeader(\r\n {\r\n companyName = \"\",\r\n } :\r\n {\r\n companyName:string;\r\n }\r\n) {\r\n return (\r\n
    \r\n
    \r\n
    {companyName}
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { MessageAttachment } from \"isuppli-react-components\";\r\nimport Styles from \"./MessageItem.module.scss\";\r\nimport { dateTimeLabelFormat } from \"../../../Util/valueFormatter\";\r\n\r\nfunction MessageItem({\r\n messageId,\r\n userDisplayName,\r\n userDisplayEmail,\r\n groupName,\r\n files,\r\n messageText,\r\n createdDate,\r\n}:\r\n{\r\n messageId: number,\r\n userDisplayName: string,\r\n userDisplayEmail:string,\r\n groupName:string,\r\n files?: {filename:string, link:string}[],\r\n messageText: string,\r\n createdDate: Date,\r\n}) {\r\n // date time label formatting\r\n const datetimeFormat = dateTimeLabelFormat(createdDate);\r\n\r\n const fileList = files?.map((file, index) => {\r\n if (file !== undefined) {\r\n const url = `api/messaging${file.link}`;\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n
    \r\n );\r\n });\r\n\r\n const attachments = fileList?.length ? (\r\n
    \r\n Attachments:\r\n
    \r\n {fileList}\r\n
    \r\n
    \r\n ) : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    {datetimeFormat}
    \r\n
    \r\n {userDisplayName}\r\n
    \r\n
    \r\n {`${userDisplayEmail} ( ${groupName} )`}\r\n
    \r\n {messageText && (\r\n
    \r\n {messageText}\r\n
    \r\n )}\r\n {attachments}\r\n
    \r\n
    \r\n );\r\n}\r\nexport default MessageItem;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport axios, {\r\n CancelTokenSource, // eslint-disable-line no-unused-vars\r\n} from \"axios\";\r\nimport { Line } from \"isuppli-react-components\";\r\nimport InfiniteScroll, {\r\n LoadOptions, // eslint-disable-line no-unused-vars\r\n} from \"../../../Controls/InfiniteScroll/InfiniteScroll\";\r\nimport Styles from \"./ChatMessageContent.module.scss\";\r\nimport MessageItem from \"../../Messaging/MessageItem/MessageItem\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { Message, PageTypes } from \"../../../http/Messaging/Models/Models\";\r\nimport {\r\n getChannelMessages, readMessage,\r\n}\r\n from \"../../../http/Messaging/messagesApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport MessageComposer from \"../MessageComposer/MessageComposer\";\r\nimport useSignalR, {\r\n SignalRNotifications,\r\n NewMessageNotification, // eslint-disable-line no-unused-vars\r\n} from \"../../../Hooks/useSignalR\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n\r\nfunction ChatMessageContent({\r\n selected,\r\n onMessageSent,\r\n}:{\r\n selected: {\r\n channelId:number;\r\n // the messageId to start at. If not specified, will start at the latest message\r\n messageId?: number;\r\n }\r\n onMessageSent: (lastMessage:string) => void;\r\n}) {\r\n // -- use state messages\r\n const [messagesList, setMessageList] = useState([]);\r\n const [hasMore, setHasMore] = useState(false);\r\n const [hasMoreBefore, setHasMoreBefore] = useState(false);\r\n const [initialLoadDone, setInitialLoadDone] = useState(false);\r\n const scrollRef = useRef(null);\r\n const [sentMessageId, setSentMessageId] = useState();\r\n\r\n const httpCancelToken = useRef();\r\n const showError = useShowError();\r\n\r\n const updateReadMessage = async (messageId : number) => {\r\n await readMessage(selected.channelId, messageId);\r\n };\r\n\r\n const disconnect = useSignalR(\r\n SignalRNotifications.ChannelUpdates,\r\n (data) => {\r\n if (data.channelId === selected.channelId && !hasMoreBefore) {\r\n setMessageList((prevList) => [data.newMessage, ...prevList]);\r\n updateReadMessage(data.newMessage.id);\r\n }\r\n }\r\n );\r\n\r\n // cleanup when component is removed\r\n useEffect(() => () => {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n disconnect();\r\n }, [disconnect]);\r\n\r\n // infinite scroll loading\r\n const loadMoreFunction = async (loadOptions: LoadOptions) => {\r\n try {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n\r\n const pageOptions : {\r\n pageId? : number,\r\n pageType? : PageTypes,\r\n } = {\r\n pageType: PageTypes.After,\r\n pageId: undefined,\r\n };\r\n\r\n if (messagesList.length > 0) {\r\n if (loadOptions.loadNext) {\r\n pageOptions.pageId = messagesList.length > 0\r\n ? messagesList[messagesList.length - 1].id\r\n : undefined;\r\n\r\n pageOptions.pageType = PageTypes.After;\r\n } else {\r\n pageOptions.pageId = messagesList.length > 0\r\n ? messagesList[0].id\r\n : undefined;\r\n\r\n pageOptions.pageType = PageTypes.Before;\r\n }\r\n } else if (selected.messageId != null) {\r\n // start loading at the selected message\r\n setHasMoreBefore(true);\r\n pageOptions.pageId = selected.messageId;\r\n pageOptions.pageType = PageTypes.From;\r\n }\r\n\r\n const limit = 20;\r\n httpCancelToken.current = axios.CancelToken.source();\r\n const moreMessages = await getChannelMessages(\r\n {\r\n ...pageOptions,\r\n channelId: selected.channelId,\r\n limit,\r\n config: {\r\n cancelToken: httpCancelToken.current.token,\r\n },\r\n }\r\n );\r\n\r\n // updating messages state\r\n switch (pageOptions.pageType) {\r\n case PageTypes.After:\r\n case PageTypes.From:\r\n if (moreMessages.messages.length < limit) {\r\n setHasMore(false);\r\n }\r\n\r\n setMessageList((prevState) => [...prevState, ...moreMessages.messages]);\r\n break;\r\n case PageTypes.Before:\r\n if (moreMessages.messages.length < limit) {\r\n setHasMoreBefore(false);\r\n }\r\n\r\n setMessageList((prevState) => [...moreMessages.messages, ...prevState]);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n setInitialLoadDone(true);\r\n return true;\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n showError();\r\n }\r\n return false;\r\n }\r\n };\r\n\r\n // refreshing page on channel change\r\n useEffect(() => {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n // did it change\r\n setMessageList([]);\r\n setHasMore(true);\r\n setHasMoreBefore(false);\r\n }, [selected]);\r\n\r\n // scrolling to top of messages list\r\n const scrollToRef = () => {\r\n if (scrollRef.current != null) {\r\n scrollRef.current.scrollIntoView({ block: \"start\" });\r\n }\r\n setSentMessageId(0);\r\n };\r\n\r\n const onMessageSentHandler = (newMessage: Message) => {\r\n setMessageList([newMessage, ...messagesList]);\r\n setSentMessageId(newMessage.id);\r\n setTimeout(() => { // this timeout is set in order to allow for scrollToRef to complete\r\n onMessageSent(newMessage.content);\r\n }, 200);\r\n scrollToRef();\r\n };\r\n\r\n // mapping messageList (Object) to messageItems components\r\n const messageItems = messagesList.map((message) => {\r\n const fileList = message.attachments?.map((file) => (\r\n {\r\n filename: file.filename,\r\n link: file.fileUrl,\r\n }\r\n ));\r\n\r\n const sentMessageRef = sentMessageId === message.id ? scrollRef : null;\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n });\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {messageItems}\r\n \r\n
    \r\n \r\n {initialLoadDone && (\r\n \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default ChatMessageContent;\r\n","import React, {\r\n useState, useEffect, useRef,\r\n} from \"react\";\r\nimport axios, {\r\n CancelTokenSource, // eslint-disable-line no-unused-vars\r\n} from \"axios\";\r\nimport { useHistory } from \"react-router\";\r\nimport { ListEmptyState, useDebounce } from \"isuppli-react-components\";\r\nimport InfiniteScroll from \"../../Controls/InfiniteScroll/InfiniteScroll\";\r\nimport MessengerHeader from \"./MessengerHeader/MessengerHeader\";\r\nimport ChatMessageHeader from \"./ChatMessageHeader/ChatMessageHeader\";\r\nimport ChatChannelCard from \"./ChatChannelCard/ChatChannelCard\";\r\nimport Styles from \"./Messaging.module.scss\";\r\nimport SecondarySearchInput from \"../../Controls/SecondarySearchInput/SecondarySearchInput\";\r\nimport MessageContent from \"../Messaging/ChatMessageContent/ChatMessageContent\";\r\nimport { getChannelList, searchMessages } from \"../../http/Messaging/messagesApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ChannelMessage, SearchItemMessage } from \"../../http/Messaging/Models/Models\";\r\nimport { dateTimeDayMonthLabelFormat } from \"../../Util/valueFormatter\";\r\nimport useSignalR, {\r\n SignalRNotifications,\r\n // eslint-disable-next-line no-unused-vars\r\n NewMessageNotification,\r\n} from \"../../Hooks/useSignalR\";\r\nimport PageTypes from \"../../http/Messaging/Models/PageTypes\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport ChatChannelListSection from \"./ChatChannelListSection/ChatChannelListSection\";\r\n\r\nexport default function Messaging() {\r\n const history = useHistory();\r\n // initalizing states\r\n const [hasMore, setHasMore] = useState(true);\r\n const [cardList, setCardList] = useState>([]);\r\n const [selectedContent, setSelectedContent] = useState<{\r\n channelId: number,\r\n messageId?: number\r\n }>();\r\n const [activeChannelInfo, setActiveChannelInfo] = useState();\r\n const [showMessenger, setShowMessenger] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [searchHasMore, setSearchHasMore] = useState(true);\r\n const [searchResults, setSearchResults] = useState>([]);\r\n const [unreadFilter, setUnreadFilter] = useState(false);\r\n const [sentMessageChannelId, setSentMessageChannelId] = useState();\r\n const showError = useShowError();\r\n const scrollRef = useRef(null);\r\n const httpCancelToken = useRef();\r\n\r\n const rearrangeItems = (items: Array, moveFromIndex: number, moveToIndex: number) => {\r\n const movingItem = items[moveFromIndex];\r\n items.splice(moveFromIndex, 1);\r\n items.splice(moveToIndex, 0, movingItem);\r\n return items;\r\n };\r\n\r\n const scrollToRef = () => {\r\n if (scrollRef.current != null) {\r\n scrollRef.current.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n }\r\n setSentMessageChannelId(0);\r\n };\r\n\r\n const updateLastMessage = (lastMessage:string, channelId:number) => {\r\n const channelSlice = cardList.slice();\r\n const indexOfChannel = channelSlice.findIndex(\r\n (channel: { id: number; }) => channel.id === channelId\r\n );\r\n const oldMessage = channelSlice[indexOfChannel].lastMessage;\r\n channelSlice[indexOfChannel].lastMessage = oldMessage === undefined ? oldMessage\r\n : { ...oldMessage, content: lastMessage };\r\n channelSlice[indexOfChannel].updatedDate = (new Date()).toString();\r\n\r\n // Only update unreadMessageCount if not currently selected channel:\r\n if (channelId !== selectedContent?.channelId) {\r\n channelSlice[indexOfChannel].unreadMessageCount += 1;\r\n }\r\n\r\n const output = rearrangeItems(channelSlice, indexOfChannel, 0);\r\n setSentMessageChannelId(channelId);\r\n setCardList(output);\r\n scrollToRef();\r\n };\r\n\r\n const onMessageSentHandler = (lastMessage: string, channelId: number) => {\r\n // Clear search term\r\n setSearchTerm(\"\");\r\n\r\n setSelectedContent({\r\n channelId,\r\n });\r\n updateLastMessage(lastMessage, channelId);\r\n };\r\n\r\n const clearUnreadMessageCounter = (id:number) => {\r\n setCardList((prevList) => {\r\n const channelSlice = [...prevList];\r\n const indexOfChannel = channelSlice.findIndex(\r\n (channel: { id: number; }) => channel.id === id\r\n );\r\n channelSlice[indexOfChannel].unreadMessageCount = 0;\r\n return channelSlice;\r\n });\r\n };\r\n\r\n // setup SignalR connection\r\n const disconnect = useSignalR(\r\n SignalRNotifications.ChannelUpdates,\r\n async (data) => {\r\n // check if the channel is in the current list\r\n if (cardList.some((c) => c.id === data.channelId)) {\r\n updateLastMessage(data.newMessage.content, data.channelId);\r\n return;\r\n }\r\n\r\n // ignore changes to current selected channel\r\n if (selectedContent?.channelId !== data.channelId) {\r\n // channel is not in the list\r\n // get channel info\r\n const channelInfo = await getChannelList({\r\n limit: 1,\r\n pageId: data.channelId,\r\n pageType: PageTypes.From,\r\n unreadFilter,\r\n });\r\n setCardList((prevList) => [...channelInfo, ...prevList]);\r\n }\r\n }\r\n );\r\n\r\n // cleanup when component is removed\r\n useEffect(() => () => {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n disconnect();\r\n }, [disconnect]);\r\n\r\n const loadMoreHandler = async () => {\r\n try {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n httpCancelToken.current = axios.CancelToken.source();\r\n\r\n const limit = 20;\r\n const lastId = cardList.length > 0\r\n ? cardList[cardList.length - 1].id\r\n : undefined;\r\n\r\n const moreChannels = await getChannelList({\r\n limit,\r\n pageId: lastId,\r\n unreadFilter,\r\n config: {\r\n cancelToken: httpCancelToken.current.token,\r\n },\r\n });\r\n if (moreChannels.length < limit) {\r\n setHasMore(false);\r\n }\r\n\r\n setCardList((prevState) => [...prevState, ...moreChannels]);\r\n\r\n return true;\r\n } catch (error) {\r\n httpCancelToken.current = undefined;\r\n if (!axios.isCancel(error)) {\r\n showError();\r\n }\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n // select the first card by default\r\n if (selectedContent?.channelId == null && cardList.length > 0) {\r\n setSelectedContent({\r\n channelId: cardList[0].id,\r\n });\r\n clearUnreadMessageCounter(cardList[0].id);\r\n\r\n setActiveChannelInfo(cardList[0]);\r\n return;\r\n }\r\n\r\n setActiveChannelInfo(cardList.find((c) => c.id === selectedContent?.channelId));\r\n }, [selectedContent, cardList]);\r\n\r\n const onCardClickHandler = (id: number) => {\r\n setSelectedContent({\r\n channelId: id,\r\n });\r\n setShowMessenger(true);\r\n clearUnreadMessageCounter(id);\r\n };\r\n\r\n const onSearchCardClickHandler = (messageId: number, channelId: number) => {\r\n setSelectedContent({\r\n channelId,\r\n messageId,\r\n });\r\n };\r\n\r\n const channelCardItems = ChatChannelListSection(\r\n {\r\n messageCardList: cardList,\r\n selectedContent,\r\n onCardClickHandler,\r\n sentMessageChannelId,\r\n scrollRef,\r\n }\r\n );\r\n\r\n const searchCardItems = searchResults.map((searchItem, index) => (\r\n
    \r\n onSearchCardClickHandler(searchItem.messageId, searchItem.channelId)}\r\n messageDate={dateTimeDayMonthLabelFormat(searchItem.sentDate)}\r\n className={Styles.ChatChannelCard}\r\n />\r\n
    \r\n ));\r\n\r\n const showMessengerContent = showMessenger ? Styles.ShowMessenger : Styles.ShowChannel;\r\n\r\n const debouncing = useRef(false);\r\n\r\n const [queSearch] = useDebounce(() => {\r\n debouncing.current = false;\r\n\r\n setSearchHasMore(false);\r\n setSearchHasMore(true);\r\n }, 500);\r\n\r\n const onSearchChangeHandler = (newValue: string) => {\r\n setSearchTerm(newValue);\r\n queSearch();\r\n // set list into loading state\r\n setSearchHasMore(true);\r\n setSearchResults([]);\r\n debouncing.current = true;\r\n\r\n if (newValue.length === 0 && cardList.length > 0 && selectedContent?.messageId != null) {\r\n setSelectedContent({\r\n channelId: cardList[0].id,\r\n });\r\n }\r\n };\r\n\r\n const loadMoreSearchHandler = async () => {\r\n if (httpCancelToken.current != null) {\r\n httpCancelToken.current.cancel();\r\n }\r\n if (debouncing.current) {\r\n return false;\r\n }\r\n\r\n try {\r\n httpCancelToken.current = axios.CancelToken.source();\r\n\r\n const limit = 20;\r\n\r\n const searchAfter = searchResults.length > 0\r\n ? searchResults[searchResults.length - 1].messageId\r\n : undefined;\r\n const searchMoreResults = await searchMessages(searchTerm, limit, {\r\n cancelToken: httpCancelToken.current.token,\r\n }, searchAfter, unreadFilter);\r\n httpCancelToken.current = undefined;\r\n if (searchMoreResults.searchItems.length < limit) {\r\n setSearchHasMore(false);\r\n }\r\n\r\n setSearchResults((prevState) => [...prevState, ...searchMoreResults.searchItems]);\r\n\r\n return true;\r\n } catch (error) {\r\n httpCancelToken.current = undefined;\r\n if (!axios.isCancel(error)) {\r\n showError();\r\n }\r\n return false;\r\n }\r\n };\r\n\r\n const onFilterChangeHandler = (readOnly : boolean) => {\r\n setUnreadFilter(readOnly);\r\n };\r\n\r\n useEffect(() => {\r\n setCardList([]);\r\n setHasMore(true);\r\n }, [unreadFilter]);\r\n\r\n const emptySearchList = !searchHasMore && searchCardItems.length === 0;\r\n const emptyChannelList = !hasMore && cardList.length === 0;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n if (selectedContent?.channelId !== channel) {\r\n setSelectedContent({\r\n channelId: channel,\r\n });\r\n }\r\n updateLastMessage(message.content, channel);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n onFilterChangeHandler(selectedValue === 1)}\r\n selectedFilterValue={unreadFilter ? 1 : 0}\r\n filterOptions={[{ displayValue: \"All Messages\", value: 0 }, { displayValue: \"Unread Messages\", value: 1 }]}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {searchTerm.length === 0\r\n && (\r\n \r\n {channelCardItems}\r\n \r\n )}\r\n {\r\n searchTerm.length > 0 && !emptySearchList\r\n && (\r\n \r\n {searchCardItems}\r\n \r\n )\r\n }\r\n {searchTerm.length > 0 && emptySearchList\r\n && (\r\n
    \r\n \r\n

    \r\n Your search did not match any results...\r\n

    \r\n

    \r\n Suggestions:\r\n

    \r\n
      \r\n
    1. Make sure that all words are spelled correctly
    2. \r\n
    3. Try different keywords
    4. \r\n
    5. Try fewer keywords
    6. \r\n
    \r\n\r\n \r\n
    \r\n )}\r\n {unreadFilter && emptyChannelList && searchTerm.length === 0\r\n && (\r\n
    \r\n \r\n

    \r\n Your search did not match any results...\r\n

    \r\n

    \r\n No unread messages found\r\n

    \r\n \r\n
    \r\n )}\r\n {!unreadFilter && emptyChannelList && searchTerm.length === 0\r\n && (\r\n
    \r\n history.push(\"/marketplace/search\"),\r\n }\r\n }\r\n >\r\n You can engage with suppliers directly\r\n from the supplier search page...\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {activeChannelInfo && selectedContent\r\n && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n onMessageSentHandler(\r\n newMessage,\r\n activeChannelInfo.id\r\n )\r\n }\r\n />\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Switch } from \"react-router-dom\";\r\nimport { SystemFeatures, FeatureRoute } from \"isuppli-react-components\";\r\n\r\nimport SupplierSearch from \"../Sections/SupplierSearch/SupplierSearch\";\r\nimport Messaging from \"../Sections/Messaging/Messaging.tsx\";\r\n\r\nfunction MarketPlaceView() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default MarketPlaceView;\r\n","import React, { Component } from \"react\";\r\nimport { Badge } from \"reactstrap\";\r\nimport { connect } from \"react-redux\";\r\nimport { UtilButton, withDataFeatureCheck, DataFeatures } from \"isuppli-react-components\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { setStoreProperty, hideInfoPopup } from \"../../Store/actions\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n currentCompanyTab: state.currentCompanyTab,\r\n companyOutstandingInfo: state.companyOutstandingInfo,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setCurrentCompanyTab: (currentCompanyTab) => {\r\n dispatch(setStoreProperty(\"currentCompanyTab\", currentCompanyTab));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n});\r\n\r\nconst badge = Outstanding;\r\n\r\nclass NavTabs extends Component {\r\n onTabClick = (i, arg) => {\r\n this.props.history.push(arg);\r\n this.props.setCurrentCompanyTab({ index: i, path: arg });\r\n this.props.hideInfoMsg();\r\n };\r\n\r\n async componentDidMount() {\r\n const tabs = this.buildTabs();\r\n const currentPath = window.location.pathname;\r\n // check tabs\r\n for (let i = 0; i < tabs.length; i += 1) {\r\n if (currentPath.toUpperCase() === tabs[i].path.toUpperCase()) {\r\n this.props.setCurrentCompanyTab({ index: i, path: tabs[i].path });\r\n }\r\n }\r\n }\r\n\r\n buildTabs = () => ([\r\n {\r\n path: \"/mycompany/profile/supplier\",\r\n display: \"COMPANY INFORMATION\",\r\n badge: this.props.companyOutstandingInfo?.companyInformation\r\n ? badge\r\n : null,\r\n },\r\n {\r\n path: \"/mycompany/profile/contact\",\r\n display: \"ADDRESS & CONTACT DETAILS\",\r\n // The only contact details which will ever be\r\n // outstanding are the client specific contact details because the mandatory\r\n // (Primary and Secondary are required during registration)\r\n badge: this.props.companyOutstandingInfo?.addressInformation\r\n ? badge\r\n : null,\r\n },\r\n {\r\n path: \"/mycompany/profile/bee\",\r\n display: \"B-BBEE\",\r\n },\r\n {\r\n path: \"/mycompany/profile/agreement\",\r\n display: \"SUPPORTING DOCUMENTS & AGREEMENTS\",\r\n badge: this.props.companyOutstandingInfo?.supportingDocuments\r\n ? badge\r\n : null,\r\n },\r\n {\r\n path: \"/mycompany/profile/products\",\r\n display: \"PRODUCTS & SERVICES\",\r\n },\r\n {\r\n path: \"/mycompany/profile/bank\",\r\n display: \"BANK DETAILS\",\r\n badge: this.props.companyOutstandingInfo?.bankInformation\r\n ? badge\r\n : null,\r\n },\r\n {\r\n path: \"/mycompany/profile/clients\",\r\n display: \"MY CLIENTS\",\r\n badge:\r\n this.props.companyOutstandingInfo?.agreements\r\n || this.props.companyOutstandingInfo?.contactPersons\r\n ? badge\r\n : null,\r\n },\r\n ])\r\n\r\n render() {\r\n let tabs = this.buildTabs();\r\n\r\n if (!this.props.dataFeatureCheck(DataFeatures.BankingDetails)) {\r\n tabs = tabs.filter((c) => c.path !== \"/mycompany/profile/bank\");\r\n }\r\n\r\n const buttons = tabs.map((tab, i) => (\r\n
    \r\n this.onTabClick(i, tab.path)}\r\n size=\"extra-small\"\r\n >\r\n {tab.display}\r\n {tab.badge}\r\n \r\n
    \r\n ));\r\n return (\r\n
    \r\n
    {buttons}
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withDataFeatureCheck(\r\n withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(NavTabs)\r\n )\r\n);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n PageHeading, SystemFeatures, hasFeature, withToast,\r\n UtilButton, Line, DataFeatures,\r\n} from \"isuppli-react-components\";\r\nimport NavTabs from \"./NavTabs\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport AddressInfo from \"../../Containers/Supplier/AddressInfo\";\r\nimport KeyContactStaff from \"../../Containers/Supplier/KeyContactStaff\";\r\n\r\nimport { loadAddressContactData } from \"../../Util/dataLoader\";\r\n\r\nimport {\r\n onAddressInfoChange,\r\n onStaffContactInfoChange,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showInfoPopup,\r\n hideInfoPopup,\r\n setStoreProperty,\r\n showErrorDialog,\r\n setCompanyOutstandingInfo,\r\n} from \"../../Store/actions\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport { setRegistrationObject, setPostalAddress } from \"../../Store/registrationActions\";\r\n\r\nimport { saveAddressInfo, saveKeyStaffContactDetails } from \"../../http/posts\";\r\n\r\nimport addressTypes from \"../../Util/Enumerators/addressTypes\";\r\n\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsStep2 } from \"../../Validation/validation\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport StaticData from \"../../Hooks/StaticData\";\r\nimport {\r\n getCompanyDataFeatures,\r\n // eslint-disable-next-line import/named\r\n getCompanyOutstandingInformation,\r\n} from \"../../http\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.addressInfo,\r\n companyId: state.currentCompanyId,\r\n },\r\n provinceOptions: state.staticData[StaticDataTypes.Province] ?? [],\r\n countryOptions: state.staticData[StaticDataTypes.Country] ?? [],\r\n municipalityOptions: state.staticData[StaticDataTypes.Municipality] ?? [],\r\n contactPersonTypes: state.staticData[StaticDataTypes.ContactPerson],\r\n isStepValid: state.isValidStep2,\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setPostalAddress: (physicalAddress) => {\r\n dispatch(setPostalAddress(physicalAddress));\r\n },\r\n onAddressInputChange: (category, ev) => {\r\n dispatch(onAddressInfoChange(category, ev));\r\n },\r\n setOption: (optionName, optionValues) => {\r\n dispatch(setOption(optionName, optionValues));\r\n },\r\n setAddressInfo: (addressInfo) => {\r\n dispatch(setRegistrationObject(\"addressInfo\", addressInfo));\r\n },\r\n onStaffContactInfoChange: (newEntry) => {\r\n dispatch(onStaffContactInfoChange(newEntry));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n setStepValid: (stepName) => (isValid) => {\r\n dispatch(setStoreProperty(stepName, isValid));\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n updateOutstandingInformation: (outstatndingInformation) => {\r\n dispatch(setCompanyOutstandingInfo(outstatndingInformation));\r\n },\r\n});\r\n\r\nclass AddressContactInfo extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: {},\r\n };\r\n }\r\n\r\n extractKeyContactStaffDetails = () => {\r\n const contactPersons = this.props.data.contactPersons.map((\r\n person\r\n ) => (person == null || (!person.fullName || !person.email || !person.contactNumber)\r\n ? null\r\n : person));\r\n\r\n return contactPersons;\r\n };\r\n\r\n performSave() {\r\n const physical = {\r\n ...this.props.data.physicalAddress,\r\n type: addressTypes.Physical,\r\n };\r\n const postal = {\r\n ...this.props.data.postalAddress,\r\n type: addressTypes.Postal,\r\n };\r\n\r\n const content = {\r\n companyId: this.props.data.companyId,\r\n addresses: [physical, postal],\r\n };\r\n this.props.showLoadingScreen(\"saving data...\");\r\n saveAddressInfo(\r\n {\r\n ...content,\r\n registrationStepCompleted: this.props.data.registrationStepCompleted,\r\n },\r\n () => {\r\n const keyContactStaff = this.extractKeyContactStaffDetails().filter(\r\n (i) => !!i\r\n );\r\n\r\n saveKeyStaffContactDetails(\r\n {\r\n companyId: this.props.data.companyId,\r\n contactPersons: keyContactStaff,\r\n registrationStepCompleted: this.props.data.registrationStepCompleted,\r\n },\r\n async () => {\r\n this.props.hideLoadingScreen();\r\n this.props.showToast(\"Address information saved\");\r\n const outstatndingInformation = await getCompanyOutstandingInformation();\r\n this.props.updateOutstandingInformation(outstatndingInformation);\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.showErrorDialog();\r\n }\r\n );\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.showErrorDialog();\r\n }\r\n );\r\n }\r\n\r\n onClickSave = async () => {\r\n const dataFeatures = await getCompanyDataFeatures();\r\n const validation = validateStep(this.props.data, requiredFieldsStep2);\r\n const physAdd = this.props.data.physicalAddress;\r\n const postAdd = this.props.data.postalAddress;\r\n const hasMunicipalities = this.props?.municipalityOptions.filter((prov) => prov.provinceId === (physAdd?.province ?? -1)).length > 0;\r\n\r\n if (physAdd !== undefined && physAdd.country <= 0) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressCountry: \"Physical address: country is required\",\r\n };\r\n }\r\n\r\n if (physAdd !== undefined\r\n && physAdd.hasProvinces === true\r\n && (physAdd.province === undefined || physAdd.province <= 0)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressProvince: \"Physical address: province is required\",\r\n };\r\n }\r\n\r\n if (physAdd !== undefined\r\n && hasMunicipalities\r\n && hasFeature(dataFeatures.dataFeatures, DataFeatures.MandatoryMunicipality)\r\n && (physAdd.municipality === undefined || physAdd.municipality <= 0)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n physicalAddressMunicipality: \"Physical address: municipality is required\",\r\n };\r\n }\r\n\r\n if (postAdd !== undefined && postAdd.country <= 0) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n postalAddressProvince: \"Postal address: country is required\",\r\n };\r\n }\r\n\r\n if (postAdd !== undefined\r\n && postAdd.hasProvinces === true\r\n && (postAdd.province === undefined || postAdd.province <= 0)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n postalAddressCountry: \"Postal address: province is required\",\r\n };\r\n }\r\n\r\n if (\r\n this.extractKeyContactStaffDetails().length\r\n !== this.extractKeyContactStaffDetails().filter((i) => !!i).length\r\n ) {\r\n validation.msgs.keycontactstaffdetails = \"Key contact staff details is required\";\r\n validation.isValid = false;\r\n }\r\n\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n\r\n if (validation.isValid && this.props.isStepValid) {\r\n this.props.hideInfoMsg();\r\n this.performSave();\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n loadAddressContactData(this.props);\r\n }\r\n\r\n render() {\r\n const canEdit = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.CompanyProfileEdit\r\n );\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    KEY CONTACT DETAILS

    \r\n
    \r\n\r\n
    \r\n
    \r\n Please capture the information for the following key contacts within your company.\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n {canEdit\r\n && (\r\n \r\n SAVE\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withToast(connect(mapStateToProps, mapDispatchToProps)(AddressContactInfo));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n PageHeading, SystemFeatures, hasFeature, withToast,\r\n UtilButton, Line, DataFeatures,\r\n} from \"isuppli-react-components\";\r\n\r\nimport GeneralBusinessInformation from \"../../Containers/Supplier/GeneralBusinessInformation\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\n\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\n\r\nimport { getSupplierInfo, refreshToken, getCompanyDataFeatures } from \"../../http/gets\";\r\n\r\nimport { loadSupplierInfoOptions } from \"../../Util/optionsLoader\";\r\n\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsStep1, isEmailInvalid, validIdNumber } from \"../../Validation/validation\";\r\n\r\nimport RegistrationCompanyInfo from \"../../Containers/Supplier/RegistrationCompanyInfo\";\r\nimport NavTabs from \"./NavTabs\";\r\n\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n} from \"../../Store/registrationActions\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showInfoPopup,\r\n hideInfoPopup,\r\n setStoreProperty,\r\n showErrorDialog,\r\n setCompanyOutstandingInfo,\r\n} from \"../../Store/actions\";\r\nimport { saveSupplierInfo } from \"../../http/posts\";\r\nimport {\r\n getCurrentCompanyCompliance,\r\n} from \"../../http/Compliance/complianceApi\";\r\n\r\nimport Loading from \"../Loading\";\r\n\r\nimport { onCompanyTypeChangeHandler } from \"../../Validation/onChangeValidations\";\r\n\r\nimport ComplianceStatus from \"../../Util/Enumerators/ComplianceStatus\";\r\n\r\nimport {\r\n getFormattedComplianceDetails,\r\n} from \"../../Util/complianceFormatter\";\r\nimport { getCompanyOutstandingInformation } from \"../../http/MyCompany/myCompanyAPI\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.supplierInfo,\r\n companyId: state.currentCompanyId,\r\n },\r\n isStepValid: state.isValidStep1,\r\n isVATNumberValid: state.isVATNumberValid,\r\n companyTypes: state.options.companyTypes,\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n companyOutstandingInfo: state.companyOutstandingInfo,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setSupplierInfo: (supplierInfo) => {\r\n dispatch(setRegistrationObject(\"supplierInfo\", supplierInfo));\r\n },\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"supplierInfo\", ev));\r\n },\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setStepValid: (stepName) => (isValid) => {\r\n dispatch(setStoreProperty(stepName, isValid));\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n updateOutstandingInformation: (outstandingInformation) => {\r\n dispatch(setCompanyOutstandingInfo(outstandingInformation));\r\n },\r\n});\r\n\r\nclass SupplierInfo extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: {},\r\n complianceStatus: ComplianceStatus.None,\r\n };\r\n }\r\n\r\n onClickSave = async () => {\r\n const companyDataFeatures = await getCompanyDataFeatures();\r\n let validation = validateStep(this.props.data, requiredFieldsStep1);\r\n\r\n if (this.props.data.vatExempted !== true) {\r\n // vat number\r\n if (this.props.data.hasVatNumber != null) {\r\n if (Number(this.props.data.hasVatNumber) === 1) {\r\n if (!this.props.data.vatNumber) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n vatNumber: \"VAT number is required\",\r\n };\r\n } else if (!this.props.isVATNumberValid) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n vatNumber: \"VAT number is invalid\",\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (hasFeature(companyDataFeatures.dataFeatures, DataFeatures.AdditionalCompanyData)) {\r\n // royalbafokeng\r\n const royalbafokeng = this.props.data.additionalCompanyData?.royalBafokengNationalResident ?? null;\r\n\r\n if (royalbafokeng == null) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n royalBafokengNationalResident: \"Please indicate whether the company is a resident of the Royal Bafokeng Nation.\",\r\n numberOfEmployees: \"Please indicate the Number of employees\",\r\n };\r\n }\r\n }\r\n\r\n if (hasFeature(companyDataFeatures.dataFeatures, DataFeatures.BusinessRegions)) {\r\n const validBusinessRegions = this.props.data.businessRegionProvinceIds?.length > 0;\r\n if (!validBusinessRegions) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n businessRegions: \"Please indicate the Geographical Region(s) for conducting your primary business\",\r\n };\r\n }\r\n }\r\n\r\n if (isEmailInvalid(this.props.data.generalEmail)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n generalEmail: \"General business email address is invalid\",\r\n };\r\n }\r\n\r\n if (this.props.data.requiredIdNumValidation != null\r\n && this.props.data.requiredIdNumValidation === true\r\n && !validIdNumber(this.props.data.registrationNumber)) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n registrationNumber: \"South African ID Number is invalid\",\r\n };\r\n }\r\n\r\n if (this.props.data.companyType <= 0) {\r\n validation = {\r\n isValid: false,\r\n msgs: {\r\n ...validation.msgs,\r\n companyType: \"Company type is required\",\r\n },\r\n };\r\n }\r\n\r\n if (hasFeature(companyDataFeatures.dataFeatures, DataFeatures.MandatoryTaxClearancePinNumber)) {\r\n if (this.props.data.taxClearanceNumber === null) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n taxClearanceNumber: \"Tax Clearance Number is required\",\r\n };\r\n }\r\n if (this.props.data.taxClearanceNumberExpiryDate === null) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n taxClearanceNumberExpiryDate: \"Tax Clearance Expiry Date is required\",\r\n };\r\n }\r\n }\r\n\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n\r\n if (validation.isValid && this.props.isStepValid) {\r\n this.props.hideInfoMsg();\r\n this.props.showLoadingScreen();\r\n saveSupplierInfo(\r\n this.props.data,\r\n async () => {\r\n const outstandingInfo = await getCompanyOutstandingInformation();\r\n this.props.updateOutstandingInformation({\r\n ...outstandingInfo,\r\n companyInformation: false,\r\n });\r\n\r\n this.props.showToast(\"Company information saved\");\r\n await refreshToken();\r\n this.props.hideLoadingScreen();\r\n },\r\n () => {\r\n this.props.showErrorDialog();\r\n this.props.hideLoadingScreen();\r\n }\r\n );\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n async componentDidMount() {\r\n try {\r\n await loadSupplierInfoOptions(this.props, this.props.setOption);\r\n\r\n if (this.props.data.companyId !== 0) {\r\n getSupplierInfo(this.props.data.companyId, (res) => {\r\n this.props.setSupplierInfo(res);\r\n\r\n // Populate vat exempted\r\n onCompanyTypeChangeHandler({ target: { value: res.companyType } },\r\n this.props.companyTypes, this.props.onInputChange, false);\r\n });\r\n }\r\n\r\n // load compliance status after supplier info so if an error occurs\r\n // the supplier data is still loaded\r\n const hasCompliance = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.OngoingCompliance\r\n );\r\n\r\n if (hasCompliance) {\r\n const result = await getCurrentCompanyCompliance();\r\n\r\n const formattedDetails = getFormattedComplianceDetails(result, \"\");\r\n this.setState({ complianceStatus: formattedDetails.status });\r\n }\r\n } catch (error) {\r\n this.props.showErrorDialog();\r\n }\r\n }\r\n\r\n render() {\r\n const canEdit = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.CompanyProfileEdit\r\n );\r\n\r\n return (\r\n
    \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n\r\n {canEdit\r\n && (\r\n \r\n SAVE\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withToast(connect(mapStateToProps, mapDispatchToProps)(SupplierInfo));\r\n","import React from \"react\";\r\nimport { PageHeading } from \"isuppli-react-components\";\r\nimport { connect } from \"react-redux\";\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport SupplierCheckDetails from \"../../Containers/Supplier/SupplierCheckDetails/SupplierCheckDetails\";\r\n\r\nconst mapStateToProps = (state: any) => ({\r\n data: {\r\n ...state.registration.prdInfo,\r\n companyId: state.currentCompanyId,\r\n },\r\n});\r\n\r\nconst Compliance = (props: any) => (\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default connect(mapStateToProps, null)(Compliance);\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport {\r\n PageHeading, SystemFeatures, hasFeature, ModalPopup, withToast,\r\n UtilButton, Line,\r\n} from \"isuppli-react-components\";\r\nimport NavTabs from \"./NavTabs\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\n\r\nimport BeeStatus from \"../../Containers/Supplier/BeeStatus\";\r\nimport BeeCertification from \"../../Containers/Supplier/BeeCertification\";\r\nimport DocumentUploader from \"../../Containers/Supplier/DocumentUploader\";\r\nimport BlackOwnership from \"../../Containers/Supplier/BlackOwnership\";\r\nimport SectorTurnoverInfo from \"../../Containers/Supplier/SectorTurnoverInfo\";\r\n\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\n\r\nimport {\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n showInfoPopup,\r\n hideInfoPopup,\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n} from \"../../Store/registrationActions\";\r\n\r\nimport { loadBeePracticeOptions } from \"../../Util/optionsLoader\";\r\nimport { loadBeePracticeData, loadDocuments } from \"../../Util/dataLoader\";\r\nimport { saveBeeCertificationInfo, saveDocumentsInfo } from \"../../http/posts\";\r\nimport { addDays, isBefore } from \"../../Util/dateArith\";\r\n\r\nimport BeeValidationStatus from \"../../Util/Enumerators/beeValidationStatus\";\r\nimport DocumentClassification from \"../../Util/Enumerators/DocumentClassification\";\r\nimport BeeCertificateType from \"../../Util/Enumerators/BeeCertificateType\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.beeInfo,\r\n documents: state.registration.documents,\r\n companyId: state.currentCompanyId,\r\n },\r\n documents: state.registration.documents,\r\n turnoverband: state.options.turnoverBands.find(\r\n (tob) => tob.id === state.registration.supplierInfo.turnoverBand\r\n ),\r\n beeCerificateData: {\r\n ...state.registration.beeInfo,\r\n companyId: state.currentCompanyId,\r\n },\r\n beeLvls: state.options.beeLvls,\r\n beeSectors: state.options.beeSectors,\r\n documentTypes: state.options.documentTypes,\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n sectors: state.options.sectors,\r\n turnoverBands: state.options.turnoverBands,\r\n sectorTurnoverBands: state.options.sectorTurnoverBands,\r\n sectorTurnoverBandStatuses: state.options.sectorTurnoverBandStatuses,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"beeInfo\", ev));\r\n },\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n setBeeInfo: (beeInfo) => {\r\n dispatch(setRegistrationObject(\"beeInfo\", beeInfo));\r\n },\r\n setDocuments: (documents) => {\r\n dispatch(setRegistrationObject(\"documents\", documents));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass BeePractice extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: {},\r\n originalData: null,\r\n originalDocuments: null,\r\n showTurnoverModal: false,\r\n isVatExempted: true,\r\n };\r\n }\r\n\r\n filterDocumentsBasedOnBee = (documents) => {\r\n const sectorTurnoverBand = this.props.sectorTurnoverBands\r\n .find((entry) => entry.sectorId === this.props.data.sector\r\n && entry.turnoverBandId === this.props.data.turnoverBand);\r\n\r\n if (sectorTurnoverBand == null) {\r\n return [];\r\n }\r\n\r\n let certificateType;\r\n if (sectorTurnoverBand.beeCertificateType === BeeCertificateType.Affidavit) {\r\n certificateType = BeeCertificateType.Affidavit;\r\n } else if (sectorTurnoverBand.beeCertificateType === BeeCertificateType.Certificate) {\r\n certificateType = BeeCertificateType.Certificate;\r\n } else {\r\n certificateType = (this.props.data.boPercentage >= 51)\r\n ? BeeCertificateType.Affidavit\r\n : BeeCertificateType.Certificate;\r\n }\r\n\r\n return documents\r\n .filter((document) => {\r\n const documentClassification = this.props.documentTypes\r\n .find((d) => d.id === document.documentTypeId)\r\n ?.documentClassification;\r\n\r\n switch (certificateType) {\r\n case BeeCertificateType.Affidavit:\r\n if (documentClassification === DocumentClassification.BeeAffidavit) {\r\n return true;\r\n }\r\n return false;\r\n case BeeCertificateType.Certificate:\r\n if (documentClassification === DocumentClassification.BeeCertificate) {\r\n return true;\r\n }\r\n return false;\r\n default:\r\n return false;\r\n }\r\n });\r\n };\r\n\r\n updateDocuments = (documents) => {\r\n // add back any missing documents\r\n const consolidatedDocuments = this.props.documents\r\n .map((c) => documents\r\n .find((d) => d.documentTypeId === c.documentTypeId)\r\n ?? c);\r\n this.props.setDocuments(consolidatedDocuments);\r\n }\r\n\r\n performSave = () => {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n const documentsShown = this.filterDocumentsBasedOnBee(this.props.data.documents);\r\n const newData = {\r\n ...this.props.data,\r\n boPercentage: Number(this.props.data.boPercentage),\r\n bwoPercentage: Number(this.props.data.bwoPercentage),\r\n registrationStepCompleted: this.props.data.registrationStepCompleted,\r\n beeDocumentId: documentsShown[0]?.documentId ?? null,\r\n };\r\n\r\n saveBeeCertificationInfo(\r\n newData,\r\n (newValidationStatus) => {\r\n this.props.onInputChange({\r\n target: {\r\n name: \"validationStatus\",\r\n value: newValidationStatus,\r\n },\r\n });\r\n const documentSummary = {\r\n companyId: this.props.data.companyId,\r\n companyDocuments: documentsShown,\r\n registrationStepCompleted: this.props.data.registrationStepCompleted,\r\n };\r\n saveDocumentsInfo(\r\n documentSummary,\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.hideInfoMsg();\r\n this.setState({\r\n originalData: newData,\r\n originalDocuments: this.props.documents,\r\n });\r\n this.props.showToast(\"B-BBEE information saved\");\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.showErrorDialog();\r\n }\r\n );\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.showErrorDialog();\r\n }\r\n );\r\n this.setState({\r\n msgs: [],\r\n });\r\n }\r\n\r\n setTurnoverModal = (newValue) => {\r\n this.setState(() => ({\r\n showTurnoverModal: newValue,\r\n }));\r\n }\r\n\r\n saveAndContinueToStep = (step) => {\r\n this.performSave();\r\n this.props.history.push(step);\r\n }\r\n\r\n onClickSave = () => {\r\n const boPercentage = Number(this.props.data.boPercentage);\r\n const bwoPercentage = Number(this.props.data.bwoPercentage);\r\n const newDate = addDays(365, new Date());\r\n const isBOValid = boPercentage >= bwoPercentage;\r\n\r\n const isBeeStatusSelected = this.props.data.beeStatusId !== null\r\n && this.props.data.beeStatusId > 0;\r\n const expiryDate = new Date(this.props.data.certificateExpiryDate);\r\n const isCertificateValid = this.props.data.certificateExpiryDate\r\n && isBefore(expiryDate, newDate);\r\n\r\n const isSectorSelected = this.props.data.sector !== null && this.props.data.sector > 0;\r\n\r\n // only validate turnover if sector selected\r\n let isTurnoverSelected = true;\r\n if (isSectorSelected) {\r\n isTurnoverSelected = this.props.data.turnoverBand !== null\r\n && this.props.data.turnoverBand > 0;\r\n }\r\n\r\n // check if all documents were added\r\n let allDocumentsAdded = true;\r\n const documentsShown = this.filterDocumentsBasedOnBee(this.props.data.documents);\r\n for (let i = 0; i < documentsShown.length; i += 1) {\r\n if (!documentsShown[i].filename && !documentsShown[i].optional) {\r\n allDocumentsAdded = false;\r\n }\r\n }\r\n\r\n // check if new document is required\r\n const beeDataChanged = // eslint-disable-line operator-linebreak\r\n this.state.originalData.hasBeeCertificate !== this.props.data.hasBeeCertificate\r\n || this.state.originalData.boPercentage !== Number(this.props.data.boPercentage)\r\n || this.state.originalData.bwoPercentage !== Number(this.props.data.bwoPercentage)\r\n || this.state.originalData.beeStatusId !== this.props.data.beeStatusId\r\n || this.state.originalData.certificateExpiryDate !== this.props.data.certificateExpiryDate\r\n || this.state.originalData.sector !== this.props.data.sector\r\n || this.state.originalData.turnoverBand !== this.props.data.turnoverBand;\r\n\r\n const newDocumentRequired = beeDataChanged\r\n && this.props.data.validationStatus === BeeValidationStatus.Validated\r\n && this.filterDocumentsBasedOnBee(this.state.originalDocuments).some((originalDocument) => {\r\n const currentDocument = this.props.data.documents\r\n .find((c) => c.documentTypeId === originalDocument.documentTypeId);\r\n\r\n const documentHasChanged = currentDocument != null\r\n && originalDocument.filename !== currentDocument.filename;\r\n\r\n const documentClassification = this.props.documentTypes\r\n .find((d) => d.id === originalDocument.documentTypeId)\r\n ?.documentClassification;\r\n\r\n const isBeeDocument = // eslint-disable-line operator-linebreak\r\n documentClassification === DocumentClassification.BeeCertificate\r\n || documentClassification === DocumentClassification.BeeAffidavit;\r\n\r\n return isBeeDocument && !documentHasChanged && !originalDocument.optional;\r\n });\r\n\r\n if (\r\n (this.props.data.hasBeeCertificate === 0)\r\n || (\r\n isBOValid\r\n && isCertificateValid\r\n && isBeeStatusSelected\r\n && isSectorSelected\r\n && isTurnoverSelected\r\n && allDocumentsAdded\r\n && !newDocumentRequired\r\n )\r\n ) {\r\n // check hasVatNumber if selected turnover band is not vat exempted\r\n if (!this.props.data.hasVatNumber && !this.state.isVatExempted) {\r\n // show modal\r\n this.setTurnoverModal(true);\r\n } else {\r\n this.performSave();\r\n }\r\n } else {\r\n const boMsgs = !isBOValid\r\n ? {\r\n boPercentage:\r\n \"Black ownership should be higher than black woman ownership\",\r\n bwoPercentage:\r\n \"Black woman ownership should be lower than black ownership\",\r\n }\r\n : {};\r\n const certMsgs = !isCertificateValid\r\n ? {\r\n certificateExpiryDate: \"Certificate expiry date is invalid\",\r\n }\r\n : {};\r\n\r\n const beeStatusMsgs = !isBeeStatusSelected\r\n ? {\r\n beeStatusId: \"Bee level is required\",\r\n }\r\n : {};\r\n\r\n const sectorMsgs = !isSectorSelected\r\n ? {\r\n sector: \"Sector is required\",\r\n }\r\n : {};\r\n\r\n const turnoverMsgs = !isTurnoverSelected\r\n ? {\r\n turnoverBand: \"Turnover band is required\",\r\n }\r\n : {};\r\n\r\n let documentMessage = {};\r\n if (!allDocumentsAdded) {\r\n documentMessage = {\r\n beeDocuments: \"Please ensure all required documents are uploaded\",\r\n };\r\n } else if (newDocumentRequired) {\r\n documentMessage = {\r\n beeDocuments: \"Upload new BEE documentation to support the changes made to your bee certification.\",\r\n };\r\n }\r\n\r\n this.setState(\r\n {\r\n msgs: {\r\n ...boMsgs,\r\n ...certMsgs,\r\n ...beeStatusMsgs,\r\n ...sectorMsgs,\r\n ...turnoverMsgs,\r\n ...documentMessage,\r\n },\r\n },\r\n () => {\r\n this.props.showInfoMsg(\r\n \"There are invalid fields on this form\",\r\n \"please correct them accordingly\",\r\n Object.keys(this.state.msgs).map((key) => this.state.msgs[key])\r\n );\r\n window.scrollTo({ top: 0 });\r\n }\r\n );\r\n }\r\n };\r\n\r\n onHasBeeCertificateChangeHandler = (newVal) => {\r\n if (newVal === 0) {\r\n this.setState(() => ({\r\n isVatExempted: true,\r\n }));\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n loadBeePracticeOptions(this.props);\r\n const data = await Promise.all([\r\n loadDocuments(this.props),\r\n loadBeePracticeData(this.props),\r\n ]);\r\n const originalDocuments = data[0];\r\n const originalData = data[1];\r\n this.setState({\r\n originalData,\r\n originalDocuments,\r\n });\r\n }\r\n\r\n render() {\r\n const canEdit = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.CompanyProfileEdit\r\n );\r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n {\r\n this.state.showTurnoverModal\r\n && (\r\n {\r\n this.setTurnoverModal(false);\r\n }\r\n }\r\n buttons={[\r\n {\r\n key: \"proceed\",\r\n label: \"Save and return to company information\",\r\n onClick: () => { this.saveAndContinueToStep(\"/mycompany/profile/supplier\"); },\r\n color: \"attention\",\r\n }]}\r\n />\r\n )\r\n }\r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n {this.props.data.hasBeeCertificate === 1 && (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.setState({\r\n isVatExempted: newValue,\r\n })}\r\n />\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n {this.props.data.hasBeeCertificate === 1 && (\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n this.updateDocuments(newDocuments)}\r\n />\r\n
    \r\n
    \r\n )}\r\n \r\n
    \r\n \r\n {canEdit\r\n && (\r\n \r\n SAVE\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withToast(withRouter(connect(mapStateToProps, mapDispatchToProps)(BeePractice)));\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useState,\r\n useRef,\r\n} from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport {\r\n ModalPopup,\r\n SystemFeatures,\r\n useSystemFeatureCheck,\r\n Spinner,\r\n useToast,\r\n WithDataFeature,\r\n DataFeatures,\r\n hasDataFeature,\r\n} from \"isuppli-react-components\";\r\nimport { getCompanyOptionsAsync, getKeyContactDetailsAsync } from \"../../http/gets\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ContactPersonMessage, CompanyContactsMessage } from \"../../http/MyCompany/Models/Models\";\r\nimport { saveKeyStaffContactDetails } from \"../../http/posts\";\r\nimport AgreementsTable from \"../AgreementsTable/AgreementsTable\";\r\nimport KeyContactStaff from \"./KeyContactStaff\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\n\r\nimport ClientOfferingSummary from \"./ClientOfferingSummary/ClientOfferingSummary\";\r\nimport { getSupplierTypeShareholdersConfigStatus as getBuyersSupplierTypeShareholdersConfigStatus, saveShareholders } from \"../../http/Shareholders/ShareholderApi\";\r\nimport ShareholderTable from \"../ShareholdersTable/ShareholderTable\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../Store/ReduxState\";\r\nimport InfoPopup from \"../InfoPopup\";\r\nimport { hideInfoPopup, showInfoPopup } from \"../../Store/actions\";\r\nimport DropdownInput from \"../../Controls/DropdownInput\";\r\nimport staticCompanyDataTypes from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport { objectToDisplayObject } from \"../../Hooks/useStaticCompanyData\";\r\nimport { getClientSpecificInfoAsTheSupplierAsync, saveClientSpecificInfoAsTheSupplierAsync } from \"../../http/Client/ClientApi\";\r\n\r\nconst SupplierClientDetailsModal = (\r\n {\r\n onClose,\r\n selectedCompanyId,\r\n }\r\n :\r\n {\r\n onClose: () => void,\r\n selectedCompanyId: number\r\n }\r\n) => {\r\n const featureCheck = useSystemFeatureCheck();\r\n const canEdit = featureCheck(SystemFeatures.CompanyProfileEdit);\r\n\r\n const topRef = useRef(null);\r\n const scrollIntoView = () => topRef.current?.scrollIntoView();\r\n const [loading, setLoading] = useState(false);\r\n const [showShareHoldersTable, setShowShareHoldersTable] = useState(false);\r\n const [businessTypeOptions, setBusinessTypeOtions] = useState>();\r\n const [businessType, setBusinessType] = useState(-1);\r\n const [hasBusinessType, setHasBusinessType] = useState(false); // [TODO] remove this, Business Type bug\r\n const showError = useShowError();\r\n const showToast = useToast();\r\n const dispatch = useDispatch();\r\n\r\n const [keyContactDetails, setKeyContactDetails] = useState({\r\n registrationStepCompleted: 0,\r\n contactPersons: [],\r\n hasTelephoneValidation: false,\r\n });\r\n\r\n const loadData = useCallback(async () => {\r\n const result = await getKeyContactDetailsAsync(selectedCompanyId);\r\n\r\n setKeyContactDetails({\r\n registrationStepCompleted: result.registrationStepCompleted,\r\n contactPersons: result.contactPersons,\r\n hasTelephoneValidation: result.hasTelephoneValidation,\r\n });\r\n\r\n const isShareholdersRequirementConfigured = await getBuyersSupplierTypeShareholdersConfigStatus(selectedCompanyId);\r\n setShowShareHoldersTable(isShareholdersRequirementConfigured);\r\n\r\n const buyerOptions = await getCompanyOptionsAsync(\r\n [\r\n staticCompanyDataTypes.businessTypes,\r\n ],\r\n selectedCompanyId\r\n );\r\n setBusinessTypeOtions(buyerOptions.businessTypes.map((item : any) => ({ ...objectToDisplayObject(item) })));\r\n const clientSpecificData = await getClientSpecificInfoAsTheSupplierAsync(selectedCompanyId);\r\n setBusinessType(clientSpecificData?.businessType?.id ?? -1);\r\n setHasBusinessType(hasDataFeature(clientSpecificData?.supplierType?.dataFeatures, DataFeatures.BusinessTypes));\r\n }, [selectedCompanyId]);\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, [loadData]);\r\n\r\n const shareholdersData = useSelector((state: ReduxState) => (state.registration.supplierInfo.shareholders?.shareholderDetails || []));\r\n\r\n const onClickSave = async () => {\r\n const validation : {\r\n isValid: boolean,\r\n msgs: { [key: string]: string },\r\n } = { isValid: true, msgs: {} };\r\n\r\n // validate business type\r\n if (businessTypeOptions != null\r\n && businessTypeOptions.length > 0\r\n && businessType <= 0\r\n && hasBusinessType) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n shareholders: \"Please select a valid Business Type\",\r\n };\r\n }\r\n\r\n // validate shareholder data\r\n if (shareholdersData.length > 0) {\r\n let totalSharePercentageCount = 0;\r\n shareholdersData.forEach((sh) => {\r\n totalSharePercentageCount += sh.sharePercentage ?? 0;\r\n });\r\n\r\n let allShareholdersHaveDocs = false;\r\n allShareholdersHaveDocs = shareholdersData.every((shm) => shm.shareholderIdentityDocumentMessage\r\n && shm.shareholderIdentityDocumentMessage.filename !== null);\r\n\r\n if (totalSharePercentageCount !== 100) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n shareholders: \"Shareholders' cumulative shares % must equal 100\",\r\n };\r\n }\r\n\r\n if (allShareholdersHaveDocs === false) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n shareholders: \"All shareholders require Identity/Registration documents\",\r\n };\r\n }\r\n } else {\r\n // shareholder details are manadtory\r\n if (showShareHoldersTable) {\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n shareholders: \"Please include a shareholder\",\r\n };\r\n }\r\n }\r\n\r\n if (validation.isValid) {\r\n setLoading(true);\r\n await saveClientSpecificInfoAsTheSupplierAsync(\r\n {\r\n buyerCompanyId: selectedCompanyId,\r\n businessTypeId: businessType,\r\n }\r\n );\r\n\r\n if (shareholdersData.length > 0) {\r\n await saveShareholders(shareholdersData);\r\n }\r\n\r\n saveKeyStaffContactDetails(\r\n keyContactDetails,\r\n () => {\r\n setLoading(false);\r\n showToast(\"My Clients information saved\");\r\n dispatch(hideInfoPopup());\r\n onClose();\r\n }, () => {\r\n setLoading(false);\r\n showError();\r\n }\r\n );\r\n } else {\r\n scrollIntoView();\r\n dispatch(showInfoPopup(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n ));\r\n }\r\n };\r\n\r\n return (\r\n onClickSave(),\r\n color: \"primary\",\r\n }]}\r\n >\r\n \r\n
    \r\n {\r\n businessTypeOptions\r\n && (\r\n \r\n
    \r\n

    CLIENT SPECIFIC COMPANY INFORMATION

    \r\n
    \r\n setBusinessType(ev.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n {\r\n showShareHoldersTable && (\r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n
    \r\n

    KEY CONTACT DETAILS

    \r\n {\r\n const newContactPersons = keyContactDetails\r\n ?.contactPersons.map((contactPerson: ContactPersonMessage) => {\r\n if (contactPerson.contactPersonTypeId === newEntry.contactPersonTypeId) {\r\n return newEntry;\r\n }\r\n return contactPerson;\r\n });\r\n\r\n const newKeyContactDetails = {\r\n ...keyContactDetails,\r\n contactPersons: newContactPersons ?? [],\r\n };\r\n\r\n setKeyContactDetails(newKeyContactDetails);\r\n }}\r\n />\r\n

    AGREEMENTS

    \r\n \r\n\r\n

    CLIENT PRODUCT OFFERINGS

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {loading && }\r\n \r\n );\r\n};\r\n\r\nexport default SupplierClientDetailsModal;\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../Store/ReduxState\";\r\nimport {\r\n setCompanyOutstandingInfo,\r\n} from \"../Store/actions\";\r\nimport {\r\n getCompanyOutstandingInformation,\r\n} from \"../http/MyCompany/myCompanyAPI\";\r\n\r\nconst useOutstandingInformationLoader = () => {\r\n const dispatch = useDispatch();\r\n\r\n const accountSuspended = useSelector(\r\n (state: ReduxState) => state.loggedInUserDetails.accountSuspended\r\n );\r\n\r\n return async () => {\r\n if (!accountSuspended) {\r\n const companyOutstandingInfo = await getCompanyOutstandingInformation();\r\n dispatch(setCompanyOutstandingInfo(companyOutstandingInfo));\r\n }\r\n };\r\n};\r\n\r\nexport default useOutstandingInformationLoader;\r\n","import {\r\n PageHeading,\r\n Table,\r\n SearchInput,\r\n UtilButton,\r\n useRouteState,\r\n // eslint-disable-next-line no-unused-vars\r\n TableConfig,\r\n // eslint-disable-next-line no-unused-vars\r\n TableData,\r\n} from \"isuppli-react-components\";\r\nimport React, {\r\n // eslint-disable-next-line no-unused-vars\r\n useCallback,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Badge } from \"reactstrap\";\r\nimport { sendMyClientsSearch } from \"../../http/posts\";\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport NavTabs from \"./NavTabs\";\r\nimport SupplierClientDetailsModal from \"../../Containers/Supplier/SupplierClientDetailsModal\";\r\nimport useOutstandingInformationLoader from \"../../Hooks/useOutstandingInformationLoader\";\r\n\r\ninterface MyClientsTableItem {\r\n id: number;\r\n registeredName: string;\r\n vendorNumber: string;\r\n}\r\n\r\ninterface MyClientsSearchCriteria {\r\n limit: number;\r\n offset: number;\r\n registeredName?: string;\r\n sortingDesc: boolean;\r\n}\r\n\r\ninterface MyClientsResultItem {\r\n companyId: number;\r\n registeredName: string;\r\n vendorNumber: string;\r\n}\r\n\r\ninterface SearchResultMessage {\r\n totalItems: number;\r\n items: MyClientsResultItem[];\r\n}\r\n\r\nconst MyClients = () => {\r\n const [showSupplierDetailsModal, setShowSupplierDetailsModal] = useState(false);\r\n const [selectedCompany, setSelectedCompany] = useState();\r\n const [searchTerm, setSearchTerm] = useRouteState(\"q\", \"\");\r\n const [currentSearchTerm, setCurrentSearchTerm] = useState(searchTerm);\r\n const [loading, setLoading] = useState(true);\r\n const [pageInfo, setPageInfo] = useRouteState(\"p\", { l: 20, o: 0 });\r\n const [sortOption, setSortOption] = useRouteState(\"s\", 0);\r\n const history = useHistory();\r\n const companyOutstandingInfo = useSelector((state: any) => (state.companyOutstandingInfo));\r\n\r\n const [searchResults, setSearchResults] = useState<{\r\n totalItems: number;\r\n items: MyClientsTableItem[];\r\n } | null>(null);\r\n\r\n useEffect(() => {\r\n setCurrentSearchTerm(searchTerm);\r\n }, [searchTerm]);\r\n\r\n const loadData = useCallback(\r\n async (searchInfo: {\r\n sortOption: number;\r\n searchTerm: string;\r\n pageInfo: { l: number; o: number };\r\n }) => {\r\n setLoading(true);\r\n const searchCriteria: MyClientsSearchCriteria = {\r\n sortingDesc: searchInfo.sortOption === 0,\r\n registeredName: searchInfo.searchTerm,\r\n limit: searchInfo.pageInfo.l,\r\n offset: searchInfo.pageInfo.o,\r\n };\r\n\r\n const results: SearchResultMessage = await sendMyClientsSearch(\r\n searchCriteria\r\n );\r\n\r\n // format results\r\n const formattedItems = results.items.map(\r\n (c) => ({\r\n id: c.companyId,\r\n registeredName: c.registeredName,\r\n vendorNumber: c.vendorNumber,\r\n } as MyClientsTableItem)\r\n );\r\n\r\n setSearchResults({\r\n totalItems: results.totalItems,\r\n items: formattedItems,\r\n });\r\n\r\n setLoading(false);\r\n },\r\n [setLoading]\r\n );\r\n\r\n useEffect(() => {\r\n loadData({\r\n sortOption,\r\n searchTerm,\r\n pageInfo,\r\n });\r\n }, [searchTerm, sortOption, pageInfo, loadData, history.location]);\r\n\r\n const reloadOutstandingInfo = useOutstandingInformationLoader();\r\n\r\n const toggleSupplierDetailsModal = () => {\r\n if (showSupplierDetailsModal) {\r\n reloadOutstandingInfo();\r\n }\r\n setShowSupplierDetailsModal(!showSupplierDetailsModal);\r\n };\r\n\r\n const tableConfig: TableConfig = {\r\n columns: [\r\n {\r\n key: \"name\",\r\n heading: \"Registered Name\",\r\n size: \"1fr\",\r\n valueTemplate: (row) => (\r\n

    \r\n {row.registeredName}\r\n {\r\n companyOutstandingInfo.outstandingBuyerIds.includes(row.id)\r\n ? Outstanding\r\n : null\r\n }\r\n

    \r\n ),\r\n },\r\n {\r\n key: \"vendorNumber\",\r\n heading: \"Vendor Number\",\r\n size: \"1fr\",\r\n valueTemplate: (row) => {row.vendorNumber},\r\n },\r\n {\r\n key: \"supDetails\",\r\n heading: \"Action\",\r\n size: \"auto\",\r\n fullSize: true,\r\n align: \"left\",\r\n valueTemplate: (row) => (\r\n {\r\n setSelectedCompany(row);\r\n toggleSupplierDetailsModal();\r\n }}\r\n >\r\n Edit details\r\n \r\n ),\r\n },\r\n ],\r\n sortOptions: {\r\n selectedSortOption: sortOption,\r\n options: [\r\n { value: 0, display: \"Newest first\" },\r\n { value: 1, display: \"Oldest first\" },\r\n ],\r\n },\r\n };\r\n\r\n const onSearchHandler = () => {\r\n setPageInfo({ l: pageInfo.l, o: 0 });\r\n setSearchTerm(currentSearchTerm);\r\n };\r\n\r\n const tableData: TableData = {\r\n limit: pageInfo.l,\r\n offset: pageInfo.o,\r\n totalItems: searchResults?.totalItems ?? 0,\r\n items: searchResults?.items ?? [],\r\n };\r\n\r\n return (\r\n
    \r\n {showSupplierDetailsModal ? (\r\n \r\n ) : null}\r\n\r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n \r\n
    \r\n \r\n Search\r\n \r\n
    \r\n setPageInfo({ l, o })}\r\n onSortOptionChange={(newValue: number) => {\r\n setSortOption(newValue);\r\n setSearchTerm(currentSearchTerm);\r\n }}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MyClients;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n PageHeading,\r\n SystemFeatures,\r\n hasFeature,\r\n withToast,\r\n UtilButton,\r\n Line,\r\n GlobalOfferingSelector,\r\n GlobalProductsAndServicesList,\r\n} from \"isuppli-react-components\";\r\nimport NavTabs from \"./NavTabs\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport OfferingSelectionSummary from \"../../Containers/Supplier/OfferingSelectionSummary\";\r\n\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { requiredFieldsStep4 } from \"../../Validation/validation\";\r\n\r\nimport { loadProductServiceOptions } from \"../../Util/optionsLoader\";\r\n\r\nimport { setOption } from \"../../Store/optionActions\";\r\nimport {\r\n setRegistrationObject,\r\n onRegistrationInputChange,\r\n setSupplierCategories,\r\n setUnspscFamilies,\r\n} from \"../../Store/registrationActions\";\r\nimport {\r\n hideLoadingScreen,\r\n showLoadingScreen,\r\n showInfoPopup,\r\n hideInfoPopup,\r\n showErrorDialog,\r\n} from \"../../Store/actions\";\r\nimport { saveProductServiceOffering } from \"../../http/posts\";\r\n\r\nimport staticCompanyDataTypes from \"../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport StaticCompanyData from \"../../Hooks/StaticCompanyData\";\r\n\r\nimport { SearchUsnpscFamilies } from \"../../http/Search/searchApi\";\r\nimport useStaticDataCustom from \"../../Hooks/useStaticDataCustom\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: { ...state.registration.prdInfo, companyId: state.currentCompanyId },\r\n supplierCategories: state.staticCompanyData[staticCompanyDataTypes.supplierCategory] ?? [],\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n invitationBuyerCompanyId: state.registration.supplierInfo.invitationBuyerCompanyId,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n setPrdInfo: (prdInfo) => {\r\n dispatch(setRegistrationObject(\"prdInfo\", prdInfo));\r\n },\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"prdInfo\", ev));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n setSelection: (newSelection) => {\r\n dispatch(setSupplierCategories(newSelection));\r\n },\r\n setGlobalSelection: (newSelection) => {\r\n dispatch(setUnspscFamilies(newSelection));\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass ProductService extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showGlobalProductsModal: false,\r\n };\r\n this.maxSelection = 3;\r\n }\r\n\r\n toggleGlobalProductsModal = () => {\r\n this.setState((prevState) => ({\r\n showGlobalProductsModal: !prevState.showGlobalProductsModal,\r\n }));\r\n };\r\n\r\n onClickSave = () => {\r\n const validation = validateStep(this.props.data, requiredFieldsStep4);\r\n\r\n if (validation.isValid) {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n\r\n const productServiceOffering = {\r\n tradeDescription: this.props.data.tradeDescription,\r\n selectedUnspscFamilyIds: this.props.data.selectedUnspscFamilyIds,\r\n registrationStepCompleted: this.props.data.registrationStepCompleted,\r\n notifyNewOpportunities: this.props.data.notifyNewOpportunities,\r\n };\r\n saveProductServiceOffering(\r\n productServiceOffering,\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.hideInfoMsg();\r\n this.props.showToast(\"Product and services saved\");\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.showErrorDialog();\r\n }\r\n );\r\n } else {\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n loadProductServiceOptions(this.props);\r\n }\r\n\r\n render() {\r\n const canEdit = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.CompanyProfileEdit\r\n );\r\n\r\n return (\r\n
    \r\n\r\n {this.state.showGlobalProductsModal && (\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n

    GLOBAL PRODUCT OFFERINGS

    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n this.toggleGlobalProductsModal()}\r\n >\r\n SELECT PRODUCTS AND/OR SERVICES\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n\r\n {canEdit && (\r\n \r\n SAVE\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withToast(connect(mapStateToProps, mapDispatchToProps)(ProductService));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n PageHeading, SystemFeatures, hasFeature, withToast,\r\n UtilButton, Line,\r\n} from \"isuppli-react-components\";\r\nimport { Alert } from \"reactstrap\";\r\nimport NavTabs from \"./NavTabs\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport BankingDetails from \"../../Containers/Supplier/BankingDetails\";\r\n\r\nimport {\r\n onRegistrationInputChange,\r\n setRegistrationObject,\r\n} from \"../../Store/registrationActions\";\r\nimport { setOption } from \"../../Store/optionActions\";\r\n\r\nimport { loadBankingDetailOptions } from \"../../Util/optionsLoader\";\r\nimport { loadBankingDetailsData } from \"../../Util/dataLoader\";\r\n\r\nimport { saveBankingDetails } from \"../../http/posts\";\r\n\r\nimport {\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n hideInfoPopup,\r\n showInfoPopup,\r\n showErrorDialog,\r\n setCompanyOutstandingInfo,\r\n} from \"../../Store/actions\";\r\n\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport { requiredFieldsStep5, getRequiredBankAccountFields } from \"../../Validation/validation\";\r\nimport validateStep from \"../../Validation/onSubmitValidations\";\r\nimport { getCompanyOutstandingInformation } from \"../../http/MyCompany/myCompanyAPI\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n data: {\r\n ...state.registration.bankDetails,\r\n companyId: state.currentCompanyId,\r\n },\r\n bankAccountTypes: state.options.bankAccountTypes,\r\n banks: state.options.banks,\r\n allowedFeatures: state.loggedInUserDetails.allowedFeatures,\r\n companyOutstandingInfo: state.companyOutstandingInfo,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onInputChange: (ev) => {\r\n dispatch(onRegistrationInputChange(\"bankDetails\", ev));\r\n },\r\n setBankingDetails: (bankDetails) => {\r\n dispatch(setRegistrationObject(\"bankDetails\", bankDetails));\r\n },\r\n setCompanyOutstandingInfo: (companyOutstandingInfo) => {\r\n dispatch(setCompanyOutstandingInfo(companyOutstandingInfo));\r\n },\r\n setOption: (optionName, optionValue) => {\r\n dispatch(setOption(optionName, optionValue));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n showInfoMsg: (heading, subheading, msgs) => {\r\n dispatch(showInfoPopup(heading, subheading, msgs));\r\n },\r\n hideInfoMsg: () => {\r\n dispatch(hideInfoPopup());\r\n },\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n});\r\n\r\nclass BankInfo extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n msgs: [],\r\n };\r\n }\r\n\r\n performSave = async () => {\r\n this.props.showLoadingScreen(\"saving data...\");\r\n saveBankingDetails(\r\n this.props.data,\r\n async (res) => {\r\n this.props.setBankingDetails(res);\r\n const outstandingInfo = await getCompanyOutstandingInformation();\r\n this.props.setCompanyOutstandingInfo({\r\n ...outstandingInfo,\r\n bankInformation: false,\r\n });\r\n this.props.hideLoadingScreen();\r\n this.props.showToast(\"Banking information saved\");\r\n },\r\n () => {\r\n this.props.hideLoadingScreen();\r\n this.props.showErrorDialog();\r\n }\r\n );\r\n };\r\n\r\n onClickSave = () => {\r\n const validation = validateStep(this.props.data, requiredFieldsStep5);\r\n if (validation.isValid) {\r\n this.props.data.bankAccounts.forEach((account, index) => {\r\n const requiredFields = getRequiredBankAccountFields(account.useCustomFields\r\n ?? this.props.data.useCustomFields, index);\r\n const validate = validateStep(account, requiredFields);\r\n if (!validate.isValid) {\r\n const messages = {};\r\n // make each message unique for the specific bank account\r\n Object.keys(validate.msgs)\r\n .forEach((a) => {\r\n messages[`${a}${index}`] = validate.msgs[a];\r\n });\r\n\r\n validation.isValid = false;\r\n validation.msgs = {\r\n ...validation.msgs,\r\n ...messages,\r\n };\r\n }\r\n });\r\n }\r\n this.setState({\r\n msgs: validation.msgs,\r\n });\r\n if (validation.isValid) {\r\n this.props.hideInfoMsg();\r\n this.performSave();\r\n } else {\r\n window.scrollTo({ top: 0 });\r\n this.props.showInfoMsg(\r\n \"This page contains missing information.\",\r\n \"To continue please amend/complete the following:\",\r\n Object.keys(validation.msgs).map((key) => validation.msgs[key])\r\n );\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n loadBankingDetailOptions(this.props);\r\n loadBankingDetailsData(this.props);\r\n }\r\n\r\n render() {\r\n const canEdit = hasFeature(\r\n this.props.allowedFeatures,\r\n SystemFeatures.CompanyProfileEdit\r\n );\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n

    BANK DETAILS

    \r\n
    \r\n
    \r\n
    \r\n \r\n Your banking information will only be visible to the relevant users\r\n within the companies you have been onboarded to via B1LINK. These users\r\n cannot edit your information in any way. If you would like further\r\n information regarding the security of your banking information,\r\n please contact\r\n {\" \"}\r\n support@b1link.co.za\r\n {\" \"}\r\n or contact 011 455 0033\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n {canEdit\r\n && (\r\n \r\n SAVE\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withToast(connect(mapStateToProps, mapDispatchToProps)(BankInfo));\r\n","import React from \"react\";\r\n\r\nimport { ProgressIndicator, PageHeading } from \"isuppli-react-components\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\n\r\nfunction EnterpriseConfigProgress({ currentStep }) {\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {}}\r\n currentStep={currentStep}\r\n steps={[\r\n \"GENERAL SETTINGS\",\r\n \"SUPPLIER CATEGORIES\",\r\n \"TERMS & CONDITIONS\",\r\n \"SUPPORTING DOCUMENTS\",\r\n ]}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default EnterpriseConfigProgress;\r\n","import React, { Component, Fragment } from \"react\";\r\n\r\nimport axios from \"axios\";\r\n\r\nclass FileUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hasUploaded: false,\r\n fileName: \"\",\r\n };\r\n }\r\n\r\n onInputChange = (ev) => {\r\n const formData = new FormData();\r\n const file = ev.target.files[0];\r\n formData.append(file.name, file);\r\n axios\r\n .post(this.props.uploadUrl, formData, {\r\n onUploadProgress: (progEv) => {\r\n const progress = (() => {\r\n const val = Math.round((progEv.loaded / file.size) * 100);\r\n return val <= 100 ? val : 100;\r\n })();\r\n this.props.onFileUploadingCallback(this.props.index, progress);\r\n },\r\n })\r\n .then((res) => {\r\n this.setState({\r\n hasUploaded: true,\r\n fileName: file.name,\r\n });\r\n this.props.onFileUploadedCallback(this.props.doc, res, null);\r\n })\r\n .catch((err) => {\r\n this.props.onFileUploadedCallback(null, err);\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n {this.state.hasUploaded && {this.state.fileName}}\r\n {!this.state.hasUploaded && {this.props.labelText}}\r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default FileUploader;\r\n","import React, { Component } from \"react\";\r\n\r\nimport FileUploader from \"../../Controls/FileUploader\";\r\n\r\nclass LogoUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fileName: \"\",\r\n };\r\n }\r\n\r\n onDocumentUploading = () => {};\r\n\r\n onDocumentUploaded = () => {};\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    COMPANY LOGO

    \r\n {this.state.fileName.length === 0 && (\r\n
    \r\n No Image\r\n\r\n \r\n \r\n \r\n
    \r\n )}\r\n {this.state.fileName.length !== 0 &&
    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default LogoUploader;\r\n","import React, { useState, useEffect, Fragment } from \"react\";\r\nimport { BasicTable } from \"isuppli-react-components\";\r\n\r\nimport { Button, Alert } from \"reactstrap\";\r\nimport {\r\n getNewKey,\r\n getKeys,\r\n deleteKey,\r\n NewIntegrationKeyMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/EnterpriseConfiguration/enterpriseConfiguration\";\r\n\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n\r\nconst ERPIntegration = () => {\r\n const [loading, setLoading] = useState(true);\r\n const [generatingKey, setGeneratingKey] = useState(false);\r\n const [keysBeingDeleted, setKeysBeingDeleted] = useState>([]);\r\n const [keys, setKeys] = useState>([]);\r\n\r\n const showError = useShowError();\r\n useEffect(() => {\r\n const loader = async () => {\r\n try {\r\n const keysFromApi = await getKeys();\r\n setKeys(keysFromApi.keys.map((c) => ({ ...c, clientSecret: \"\" })));\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [setKeys, setLoading, showError]);\r\n\r\n const onNewKeyHandler = async () => {\r\n setGeneratingKey(true);\r\n try {\r\n const newKey = await getNewKey();\r\n setKeys((prevKeys) => [...prevKeys, newKey]);\r\n } catch (error) {\r\n showError();\r\n }\r\n setGeneratingKey(false);\r\n };\r\n\r\n const onDeleteKeyHandler = async (clientId: string) => {\r\n setKeysBeingDeleted((prev) => [...prev, clientId]);\r\n try {\r\n await deleteKey(clientId);\r\n setKeys((prevKeys) => [...prevKeys.filter((c) => c.clientId !== clientId)]);\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setKeysBeingDeleted((prev) => prev.filter((c) => c !== clientId));\r\n };\r\n\r\n return (\r\n
    \r\n

    ERP Integration Keys

    \r\n {loading\r\n ?

    Loading...

    \r\n : (\r\n \r\n ([\r\n {\r\n key: `${c.clientId}_id`,\r\n valueTemplate: () => (\r\n
    \r\n {c.clientId}\r\n {c.clientSecret.length > 0\r\n ? (\r\n \r\n

    {c.clientSecret}

    \r\n

    \r\n Note: Please copy this secret now. You will not be able to retrieve it later.\r\n

    \r\n
    \r\n )\r\n : null}\r\n
    \r\n ),\r\n },\r\n {\r\n key: `${c.clientId}_button`,\r\n align: \"center\",\r\n valueTemplate: () => (\r\n onDeleteKeyHandler(c.clientId)}\r\n disabled={keysBeingDeleted.some((d) => d === c.clientId)}\r\n >\r\n {keysBeingDeleted.some((d) => d === c.clientId) ? \"Deleting...\" : \"Delete\"}\r\n \r\n ),\r\n },\r\n ]))}\r\n emptyMessage=\"No active integration keys\"\r\n loading={loading}\r\n />\r\n \r\n
    \r\n ) }\r\n\r\n
    \r\n );\r\n};\r\n\r\nexport default ERPIntegration;\r\n","import React from \"react\";\r\n\r\nfunction InfoIcon(props) {\r\n return (\r\n
    \r\n \"\"\r\n
    \r\n );\r\n}\r\n\r\nexport default InfoIcon;\r\n","import React, { Component } from \"react\";\r\n\r\nimport InfoIcon from \"../../Controls/InfoIcon\";\r\n\r\nclass ExistingVendorImport extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isActive: false,\r\n };\r\n }\r\n\r\n toggleIsActive = () => {\r\n this.setState((prevState) => ({\r\n isActive: !prevState.isActive,\r\n }));\r\n };\r\n\r\n render() {\r\n const imageName = this.state.isActive\r\n ? \"/svg/checked.svg\"\r\n : \"/svg/unchecked.svg\";\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n

    IMPORTING EXISTING VENDOR?

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n \r\n Download Import Template\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    TemplateOptions
    \r\n Please complete and upload the importing template with your\r\n list of vendores\r\n \r\n \"\"\r\n \r\n Upload Vendor List\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ExistingVendorImport;\r\n","import React from \"react\";\r\n\r\nfunction UtilButton({\r\n disabled = false,\r\n background,\r\n size = null,\r\n location,\r\n className = \"\",\r\n text,\r\n actionArg = null,\r\n actionCallback,\r\n}) {\r\n const isEnabled = !disabled;\r\n const backgroundToUse = isEnabled ? background : \"greyed\";\r\n const sizeClassName = size ? `btn-util-${size}` : \"\";\r\n const bgClass = `clickable justify-center btn-util${\r\n location ? `-${location}` : \"\"\r\n } btn-util bg-${backgroundToUse} ${backgroundToUse}-text border-${backgroundToUse} align-center ${className} ${sizeClassName}`;\r\n return (\r\n {\r\n if (isEnabled) {\r\n actionCallback(actionArg);\r\n }\r\n }}\r\n >\r\n {text}\r\n
    \r\n );\r\n}\r\n\r\nexport default UtilButton;\r\n","import React, { Component } from \"react\";\r\nimport { CheckboxInput } from \"isuppli-react-components\";\r\n\r\nclass WorkFlows extends Component {\r\n onInputChange = () => {\r\n\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    WORKFLOWS

    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default WorkFlows;\r\n","import React, { Component } from \"react\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport EnterpriseConfigProgress from \"./EnterpriseConfigProgress\";\r\n\r\nimport LogoUploader from \"../../Containers/EnterpriseConfig/LogoUploader\";\r\nimport ERPIntegration from \"../../Containers/EnterpriseConfig/ERPIntegration/ERPIntegration\";\r\nimport ExistingVendorImport from \"../../Containers/EnterpriseConfig/ExistingVendorImport\";\r\n\r\nimport UtilButton from \"../../Controls/UtilButton\";\r\nimport WorkFlows from \"../../Containers/EnterpriseConfig/WorkFlows\";\r\n\r\nclass EnterpriseConfigStep01 extends Component {\r\n onNextClick = (arg) => {\r\n this.props.history.replace(arg);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 01

    \r\n
    \r\n
    \r\n

    GENERAL SETTINGS

    \r\n
    \r\n
    \r\n\r\n
    \r\n Information blurp about why they need to provide information for\r\n “general settings”.\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Please fill in the required fields below. All fields are mandatory\r\n unless stated otherwise.\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n {}}\r\n />\r\n\r\n
    \r\n\r\n \r\n\r\n
     
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n this.props.history.replace(arg)}\r\n />\r\n
    \r\n\r\n
    \r\n {}}\r\n />\r\n\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(EnterpriseConfigStep01);\r\n","import React, { Component } from \"react\";\r\n\r\nclass CategoryCreator extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n categories: [\r\n {\r\n title: \"Animal feeds\",\r\n subCategories: [{ title: \"Balance feeds\" }, { title: \"Concentrates\" }],\r\n },\r\n {\r\n title: \"some caytegory\",\r\n subCategories: [],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n render() {\r\n const addSubcategory = (\r\n {}}\r\n >\r\n + Add New Sub-Category\r\n
    \r\n );\r\n const rows = [];\r\n this.state.categories.forEach((cat, i) => {\r\n rows.push(\r\n \r\n {cat.title}\r\n \r\n {cat.subCategories.length === 0\r\n ? addSubcategory\r\n : cat.subCategories[0].title}\r\n \r\n \r\n );\r\n cat.subCategories.forEach((subCat, j) => {\r\n if (j === 0) {\r\n return;\r\n }\r\n rows.push(\r\n \r\n \r\n {subCat.title}\r\n \r\n );\r\n });\r\n if (cat.subCategories.length !== 0) {\r\n rows.push(\r\n \r\n \r\n {addSubcategory}\r\n \r\n );\r\n }\r\n });\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rows}\r\n \r\n \r\n \r\n \r\n
    CategorySub-Category
    \r\n {}}\r\n >\r\n + Add New Category\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default CategoryCreator;\r\n","import React, { Component } from \"react\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport EnterpriseConfigProgress from \"./EnterpriseConfigProgress\";\r\n\r\nimport CategoryCreator from \"../../Containers/EnterpriseConfig/CategoryCreator\";\r\n\r\nimport UtilButton from \"../../Controls/UtilButton\";\r\n\r\nclass EnterpriseConfigStep02 extends Component {\r\n onNextClick = (arg) => {\r\n this.props.history.replace(arg);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 02

    \r\n
    \r\n
    \r\n

    SUPPLY CATEGORIES SETUP

    \r\n
    \r\n
    \r\n\r\n
    \r\n Information blurp about why they need to provide information for\r\n “general settings”.\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Please fill in the required fileds below. All fields are mandatory\r\n unless stated otherwise.\r\n \r\n
    \r\n\r\n \r\n\r\n
     
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n this.props.history.replace(arg)}\r\n />\r\n
    \r\n\r\n
    \r\n {}}\r\n />\r\n\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(EnterpriseConfigStep02);\r\n","import React, { Component } from \"react\";\r\n\r\n// import FileUploader from '../../Controls/FileUploader';\r\n\r\nclass TermsAndConditionsUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.termsAndConditions = [\"Consignment agreement\"];\r\n }\r\n\r\n render() {\r\n const rows = [];\r\n this.termsAndConditions.forEach((tnc, i) => {\r\n rows.push(\r\n \r\n {tnc}\r\n Actions view, delete\r\n \r\n );\r\n });\r\n rows.push(\r\n \r\n \r\n \r\n + Add New Terms & Conditions\r\n \r\n \r\n \r\n );\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rows}\r\n
    Terms & ConditionsActions
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default TermsAndConditionsUploader;\r\n","import React, { Component } from \"react\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { Alert } from \"reactstrap\";\r\nimport EnterpriseConfigProgress from \"./EnterpriseConfigProgress\";\r\n\r\nimport TermsAndConditionsUploader from \"../../Containers/EnterpriseConfig/TermsAndConditionsUploader\";\r\n\r\nimport UtilButton from \"../../Controls/UtilButton\";\r\n\r\nclass EnterpriseConfigStep03 extends Component {\r\n onNextClick = (arg) => {\r\n this.props.history.replace(arg);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 03

    \r\n
    \r\n
    \r\n

    TERMS & CONDITIONS

    \r\n
    \r\n
    \r\n\r\n
    \r\n Information blurp about why they need to provide information for\r\n “terms and conditions”.\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Please fill in the required fields below. All fields are mandatory\r\n unless stated otherwise.\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n this.props.history.replace(arg)}\r\n />\r\n
    \r\n\r\n
    \r\n {}}\r\n />\r\n\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(EnterpriseConfigStep03);\r\n","import React, { Component } from \"react\";\r\n\r\nimport FileUploader from \"../../Controls/FileUploader\";\r\n\r\nclass TableActions extends Component {\r\n onDocumentUploading = () => {};\r\n\r\n onDocumentUploaded = () => {};\r\n\r\n render() {\r\n const btns = [];\r\n if (this.props.onViewCallback) {\r\n btns.push(\r\n {}}\r\n >\r\n \"\"\r\n view\r\n \r\n );\r\n }\r\n if (this.props.onDeleteCallback) {\r\n btns.push(\r\n {}}\r\n >\r\n \"\"\r\n delete\r\n \r\n );\r\n }\r\n if (this.props.onUploadCallback) {\r\n btns.push(\r\n \r\n \"\"\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return
    {btns}
    ;\r\n }\r\n}\r\n\r\nexport default TableActions;\r\n","import React, { Component } from \"react\";\r\n\r\nimport TableActions from \"./TableActions\";\r\n\r\nclass SupportingDocumentsConfig extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n supportingDocs: [{ name: \"Cash flow statements\", isMandatory: true }],\r\n };\r\n }\r\n\r\n toggleIsMandatory = (index) => {\r\n this.setState((prevState) => {\r\n const newDocument = {\r\n ...this.state.supportingDocs[index],\r\n isMandatory: !prevState.supportingDocs[index].isMandatory,\r\n };\r\n const newSupportingDocs = prevState.supportingDocs; // .filter((doc, i) => i !== index);\r\n newSupportingDocs[index] = newDocument;\r\n\r\n return {\r\n supportingDocs: newSupportingDocs,\r\n };\r\n });\r\n };\r\n\r\n render() {\r\n const rows = this.state.supportingDocs.map((document, i) => {\r\n const imageName = document.isMandatory\r\n ? \"/svg/checked.svg\"\r\n : \"/svg/unchecked.svg\";\r\n return (\r\n \r\n {document.name}\r\n\r\n \r\n this.toggleIsMandatory(i)}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n });\r\n rows.push(\r\n \r\n \r\n \r\n + Add New Required Supporting Document\r\n \r\n \r\n \r\n );\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rows}\r\n
    Supporting DocumentMandatortyActions
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default SupportingDocumentsConfig;\r\n","import React, { Component } from \"react\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { ModalBackground } from \"isuppli-react-components\";\r\nimport { Alert } from \"reactstrap\";\r\nimport EnterpriseConfigProgress from \"./EnterpriseConfigProgress\";\r\n\r\nimport SupportingDocumentsConfig from \"../../Containers/EnterpriseConfig/SupportingDocumentsConfig\";\r\n\r\nimport UtilButton from \"../../Controls/UtilButton\";\r\n\r\nclass EnterpriseConfigStep04 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showCompletionModal: true,\r\n };\r\n }\r\n\r\n onNextClick = (arg) => {\r\n this.props.history.replace(arg);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n\r\n {this.state.showCompletionModal && (\r\n \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n\r\n
     
    \r\n\r\n

    \r\n ENTERPRISE CONFIGURATION\r\n {\" \"}\r\n COMPLETE!\r\n

    \r\n\r\n
     
    \r\n\r\n

    You are all set

    \r\n\r\n
     
    \r\n
    \r\n\r\n

    \r\n Thank you for filling in your business details. The\r\n information you entered has been sent. Suppliers and buyers\r\n will be in touch if and when they become interested in your\r\n products or services.\r\n

    \r\n\r\n

    \r\n You can always come back to your Buyer Profile, to update your\r\n information if it changes.\r\n

    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n this.setState({ showCompletionModal: false })}\r\n />\r\n
    \r\n\r\n
     
    \r\n
    \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    STEP 04

    \r\n
    \r\n
    \r\n

    SUPPORTING DOCUMENTS

    \r\n
    \r\n
    \r\n\r\n
    \r\n Information blurp about why they need to provide information for\r\n “supporting documents”.\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Please fill in the required fileds below. All fields are mandatory\r\n unless stated otherwise.\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n this.props.history.replace(arg)}\r\n />\r\n
    \r\n\r\n
    \r\n {}}\r\n />\r\n\r\n
    \r\n\r\n this.setState({ showCompletionModal: true })}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(EnterpriseConfigStep04);\r\n","import React from \"react\";\r\n\r\nimport { Route, Switch, Redirect } from \"react-router-dom\";\r\n\r\nimport EnterpriseConfigStep01 from \"../Sections/EnterpriseConfig/EnterpriseConfigStep01\";\r\nimport EnterpriseConfigStep02 from \"../Sections/EnterpriseConfig/EnterpriseConfigStep02\";\r\nimport EnterpriseConfigStep03 from \"../Sections/EnterpriseConfig/EnterpriseConfigStep03\";\r\nimport EnterpriseConfigStep04 from \"../Sections/EnterpriseConfig/EnterpriseConfigStep04\";\r\n\r\nfunction EnterpriseConfigView() {\r\n return (\r\n
    \r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default EnterpriseConfigView;\r\n","enum UserStatus {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n Active = 1, // eslint-disable-line no-unused-vars\r\n Deactivated = 2, // eslint-disable-line no-unused-vars\r\n InvitePending = 3, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const userStatusToString = (value: UserStatus) => {\r\n switch (value) {\r\n case UserStatus.None:\r\n return \"None\";\r\n case UserStatus.Active:\r\n return \"Active\";\r\n case UserStatus.Deactivated:\r\n return \"Deactivated\";\r\n case UserStatus.InvitePending:\r\n return \"Invite Pending\";\r\n default:\r\n return \"Unknown Status\";\r\n }\r\n};\r\n\r\nexport default UserStatus;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport {\r\n PageHeading, hasFeature, SystemFeatures, useToast,\r\n UtilButton, Line,\r\n} from \"isuppli-react-components\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport NavTabs from \"./NavTabs\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../Store/ReduxState\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport { getDocumentsAsync, saveDocumentsInfo } from \"../../http\";\r\nimport { setRegistrationObject } from \"../../Store/registrationActions\";\r\nimport {\r\n setLastStepCompleted,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n hideInfoPopup,\r\n showErrorDialog,\r\n showInfoPopup,\r\n setCompanyOutstandingInfo,\r\n} from \"../../Store/actions\";\r\nimport DocumentUploader from \"../../Containers/Supplier/DocumentUploader\";\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\n\r\nconst Agreements = () => {\r\n const [[documentTypes], isReady] = useStaticData([StaticDataTypes.DocumentTypes]);\r\n\r\n const dispatch = useDispatch();\r\n const showToast = useToast();\r\n const data = useSelector((state: any) => (\r\n {\r\n ...state.registration.beeInfo,\r\n documents: state.registration.documents,\r\n companyId: state.currentCompanyId,\r\n }));\r\n\r\n const companyOutstandingInfo = useSelector((state: any) => (state.companyOutstandingInfo));\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n const res = await getDocumentsAsync(data.companyId, true);\r\n dispatch(setRegistrationObject(\"documents\", res.companyDocuments));\r\n dispatch(setLastStepCompleted(res.registrationStepCompleted));\r\n };\r\n\r\n loader();\r\n }, [data.companyId, dispatch]);\r\n\r\n const setDocuments = (newDocuments: any) => {\r\n dispatch(setRegistrationObject(\"documents\", newDocuments));\r\n };\r\n\r\n const allowedFeatures = useSelector(\r\n (state: ReduxState) => state.loggedInUserDetails.allowedFeatures\r\n );\r\n const canEdit = hasFeature(\r\n allowedFeatures,\r\n SystemFeatures.CompanyProfileEdit\r\n );\r\n\r\n const onClickSave = () => {\r\n // check if all documents were added\r\n let allDocumentsAdded = true;\r\n\r\n for (let i = 0; i < data.documents.length; i += 1) {\r\n if (!data.documents[i].filename && !data.documents[i].optional) {\r\n allDocumentsAdded = false;\r\n }\r\n }\r\n\r\n if (allDocumentsAdded) {\r\n dispatch(showLoadingScreen());\r\n\r\n const documentSummary = {\r\n companyId: data.companyId,\r\n companyDocuments: data.documents,\r\n registrationStepCompleted: data.registrationStepCompleted,\r\n };\r\n saveDocumentsInfo(\r\n documentSummary,\r\n () => {\r\n dispatch(setCompanyOutstandingInfo({\r\n ...companyOutstandingInfo,\r\n supportingDocuments: false,\r\n }));\r\n dispatch(hideLoadingScreen());\r\n dispatch(hideInfoPopup());\r\n showToast(\"Supporting documents saved\");\r\n },\r\n () => {\r\n dispatch(hideLoadingScreen());\r\n dispatch(showErrorDialog(true));\r\n }\r\n );\r\n } else {\r\n const messages = [];\r\n if (!allDocumentsAdded) {\r\n messages.push(\"Please ensure all required documents are uploaded\");\r\n }\r\n\r\n dispatch(showInfoPopup(\r\n \"There are invalid fields on this form\",\r\n \"please correct them accordingly\",\r\n messages\r\n ));\r\n window.scrollTo({ top: 0 });\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n setDocuments(newDocuments)}\r\n readOnly={!canEdit}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n {canEdit\r\n && (\r\n \r\n SAVE\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Agreements;\r\n","enum UserSortOption {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n Name = 1, // eslint-disable-line no-unused-vars\r\n Email = 2, // eslint-disable-line no-unused-vars\r\n Date = 3, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const userSortOptionToString = (value: UserSortOption) => {\r\n switch (value) {\r\n case UserSortOption.None:\r\n return \"None\";\r\n case UserSortOption.Name:\r\n return \"Full Name\";\r\n case UserSortOption.Email:\r\n return \"Email Address\";\r\n case UserSortOption.Date:\r\n return \"Last Login Date\";\r\n default:\r\n return \"Unknown Sort Option\";\r\n }\r\n};\r\n\r\nexport default UserSortOption;\r\n","enum CloseAccountReasons {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n NoBusinessValue = 1, // eslint-disable-line no-unused-vars\r\n ManagingProfileFrustrating = 2, // eslint-disable-line no-unused-vars\r\n BusinessNoLongerTrading = 4, // eslint-disable-line no-unused-vars\r\n FoundBetterSolution = 8, // eslint-disable-line no-unused-vars\r\n Other = 16 // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport const closeAccountReasonToString = (value: CloseAccountReasons) => {\r\n switch (value) {\r\n case CloseAccountReasons.NoBusinessValue:\r\n return \"I received little or no business value from the platform.\";\r\n case CloseAccountReasons.ManagingProfileFrustrating:\r\n return \"Managing my profile was frustrating and not worth the effort.\";\r\n case CloseAccountReasons.BusinessNoLongerTrading:\r\n return \"Sadly, my business will no longer be trading.\";\r\n case CloseAccountReasons.FoundBetterSolution:\r\n return \"I have found a better solution for my needs.\";\r\n case CloseAccountReasons.Other:\r\n return \"Other\";\r\n default:\r\n return \"\";\r\n }\r\n};\r\n\r\nexport default CloseAccountReasons;\r\n","import React from \"react\";\r\nimport {\r\n Table,\r\n TableConfig, // eslint-disable-line no-unused-vars\r\n TableData, // eslint-disable-line no-unused-vars\r\n ActionsDropDown,\r\n ActionsDropDownItem, // eslint-disable-line no-unused-vars\r\n} from \"isuppli-react-components\";\r\n\r\nimport {\r\n UsersMessage, // eslint-disable-line no-unused-vars\r\n UserMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../../../http/UserManagement/userManagementApi\";\r\nimport useStaticCompanyData from \"../../../../Hooks/useStaticCompanyData\";\r\nimport { getStaticValue } from \"../../../../Util/valueFormatter\";\r\nimport { StaticCompanyDataTypes } from \"../../../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\nimport Styles from \"./UserSearchResults.module.scss\";\r\nimport UserStatus, { userStatusToString } from \"../../../../Util/Enumerators/userStatus\";\r\nimport UserSortOption, { userSortOptionToString } from \"../../../../Util/Enumerators/userSortOption\";\r\n\r\nconst UserSearchResults = (\r\n {\r\n searchResults,\r\n limit,\r\n offset,\r\n onPageChange,\r\n onItemSelected,\r\n loading,\r\n onDeactivate,\r\n onActivate,\r\n onDelete,\r\n sortOption,\r\n setSortOption,\r\n filterOption,\r\n setFilterOption,\r\n }\r\n :\r\n {\r\n searchResults?: UsersMessage,\r\n limit: number,\r\n offset: number,\r\n onPageChange: (limit: number, offset: number) => void,\r\n onItemSelected: (item: UserMessage) => void,\r\n loading: boolean,\r\n onDeactivate: (userId: string) => void,\r\n onActivate: (userId: string) => void,\r\n onDelete: (userId: string) => void,\r\n sortOption: UserSortOption,\r\n setSortOption: (sortOption: UserSortOption) => void,\r\n filterOption: UserStatus,\r\n setFilterOption: (status: UserStatus) => void,\r\n }\r\n) => {\r\n const tableData: TableData = {\r\n limit,\r\n offset,\r\n totalItems: searchResults?.totalItems ?? 0,\r\n items: searchResults?.items ?? [],\r\n };\r\n const [[roles], isCompanyStaticDataReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.roles]\r\n );\r\n\r\n const tableConfig: TableConfig = {\r\n columns: [\r\n {\r\n key: \"name\",\r\n heading: \"Full Name\",\r\n size: \"auto\",\r\n align: \"left\",\r\n valueTemplate: (row) => (\r\n {\r\n onItemSelected(row);\r\n }}\r\n >\r\n {row.fullName}\r\n \r\n ),\r\n },\r\n {\r\n key: \"email\",\r\n heading: \"Email Address\",\r\n size: \"1fr\",\r\n propName: \"email\",\r\n },\r\n {\r\n key: \"role\",\r\n heading: \"Role\",\r\n size: \"1fr\",\r\n valueTemplate: (row) => (\r\n \r\n {isCompanyStaticDataReady\r\n ? row.roles.map((roleId) => getStaticValue(roleId, roles)).join(\", \")\r\n : \"...\" }\r\n \r\n ),\r\n },\r\n {\r\n key: \"invite\",\r\n heading: \"User Status\",\r\n size: \"1fr\",\r\n valueTemplate: (row) => {\r\n let message = \"Active\";\r\n if (!row.emailConfirmed) {\r\n message = \"Invite Pending\";\r\n }\r\n if (row.isDeactivated) {\r\n message = \"Deactivated\";\r\n }\r\n return (\r\n \r\n {message}\r\n \r\n );\r\n },\r\n },\r\n {\r\n key: \"actions\",\r\n heading: \"User Actions\",\r\n size: \"1fr\",\r\n valueTemplate: (row) => (\r\n \r\n {row.isDeactivated\r\n ? (\r\n {\r\n onActivate(row.id);\r\n }}\r\n >\r\n Activate user\r\n \r\n )\r\n : (\r\n {\r\n onDeactivate(row.id);\r\n }}\r\n >\r\n Deactivate user\r\n \r\n )}\r\n {\r\n onDelete(row.id);\r\n }}\r\n >\r\n Delete user\r\n \r\n \r\n ),\r\n },\r\n ],\r\n sortOptions: {\r\n selectedSortOption: sortOption,\r\n options: [\r\n {\r\n value: UserSortOption.Name,\r\n display: userSortOptionToString(UserSortOption.Name),\r\n },\r\n {\r\n value: UserSortOption.Email,\r\n display: userSortOptionToString(UserSortOption.Email),\r\n },\r\n {\r\n value: UserSortOption.Date,\r\n display: userSortOptionToString(UserSortOption.Date),\r\n },\r\n ],\r\n },\r\n statusFilterOptions: {\r\n selectedStatusFilterOption: filterOption,\r\n options: [\r\n {\r\n display: \"All\",\r\n value: UserStatus.None,\r\n },\r\n {\r\n display: userStatusToString(UserStatus.Active),\r\n value: UserStatus.Active,\r\n },\r\n {\r\n display: userStatusToString(UserStatus.Deactivated),\r\n value: UserStatus.Deactivated,\r\n },\r\n {\r\n display: userStatusToString(UserStatus.InvitePending),\r\n value: UserStatus.InvitePending,\r\n },\r\n ],\r\n },\r\n };\r\n return (\r\n \r\n onPageChange={onPageChange}\r\n tableConfig={tableConfig}\r\n tableStyle=\"basic\"\r\n data={tableData}\r\n loading={loading}\r\n onStatusFilterChange={(newValue: UserStatus) => {\r\n setFilterOption(newValue);\r\n }}\r\n onSortOptionChange={(newValue: UserSortOption) => {\r\n setSortOption(newValue);\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default UserSearchResults;\r\n","/* eslint-disable keyword-spacing */\r\nimport React, {\r\n useState, useRef, useEffect, Fragment,\r\n} from \"react\";\r\n\r\nimport {\r\n ModalPopup,\r\n Form,\r\n TextInput,\r\n FormRef, // eslint-disable-line no-unused-vars\r\n MultiSelectDropDownInput,\r\n Spinner,\r\n // eslint-disable-next-line no-unused-vars\r\n ButtonInfo,\r\n} from \"isuppli-react-components\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { useSelector } from \"react-redux\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n UserMessage,\r\n addUser, editUser,\r\n resendInvite,\r\n} from \"../../../../http/UserManagement/userManagementApi\";\r\n\r\nimport useStaticCompanyData, {\r\n TypedStaticOption, // eslint-disable-line no-unused-vars\r\n} from \"../../../../Hooks/useStaticCompanyData\";\r\nimport { StaticCompanyDataTypes } from \"../../../../Util/Enumerators/staticCompanyDataTypes\";\r\n\r\nimport Styles from \"./AddUserModal.module.scss\";\r\nimport useShowError from \"../../../../Hooks/useShowError\";\r\nimport { checkHttpStatus } from \"../../../../http/httpHelpers\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../../../Store/ReduxState\";\r\n\r\nconst AddUserModal = (\r\n {\r\n onClose,\r\n onRefresh,\r\n user,\r\n }\r\n :\r\n {\r\n onClose: () => void,\r\n onRefresh: () => void,\r\n user?: UserMessage,\r\n }\r\n) => {\r\n const [name, setName] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n const [businessUnits, setBusinessUnits] = useState([]);\r\n const [selectedRoles, setSelectedRoles] = useState();\r\n\r\n const [duplicateEmail, setDuplicateEmail] = useState(false);\r\n const currentUserEmailAddress = useSelector(\r\n (state: ReduxState) => state.loggedInUserDetails.emailAddress\r\n );\r\n\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n\r\n const [[rolesTemp, businessUnitStaticDataTemp], isCompanyStaticDataReady] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.roles, StaticCompanyDataTypes.businessUnit]\r\n );\r\n\r\n const businessUnitStaticData = businessUnitStaticDataTemp as Array>;\r\n const roles = rolesTemp as Array>;\r\n\r\n useEffect(() => {\r\n setName(user?.fullName ?? \"\");\r\n setEmail(user?.email ?? \"\");\r\n\r\n if(isCompanyStaticDataReady) {\r\n // filter down to valid business units\r\n const selectedBusinessUnits = user?.businessUnits ?? [];\r\n\r\n setBusinessUnits(selectedBusinessUnits.filter(\r\n (b) => businessUnitStaticData.some((c) => c.value === b)\r\n ));\r\n }\r\n\r\n setSelectedRoles(user?.roles ?? undefined);\r\n }, [user, isCompanyStaticDataReady, businessUnitStaticData]);\r\n\r\n const formRef = useRef(null);\r\n\r\n const onSaveHandler = async () => {\r\n if (!formRef.current?.isValid()) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n\r\n if(user == null) {\r\n // add\r\n try {\r\n await addUser({\r\n businessUnits,\r\n email,\r\n fullName: name,\r\n roles: selectedRoles ?? [],\r\n });\r\n\r\n onRefresh();\r\n onClose();\r\n } catch (error) {\r\n if(checkHttpStatus(error, 409)) {\r\n setDuplicateEmail(true);\r\n formRef.current?.showValidation();\r\n } else {\r\n showError();\r\n }\r\n }\r\n } else{\r\n try {\r\n // edit\r\n await editUser(user.id, {\r\n businessUnits,\r\n fullName: name,\r\n roles: selectedRoles ?? [],\r\n });\r\n\r\n onRefresh();\r\n onClose();\r\n } catch (error) {\r\n showError();\r\n }\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n const buttons : ButtonInfo[] = [\r\n {\r\n key: \"Save\",\r\n label: user == null ? \"Add\" : \"Save\",\r\n onClick: onSaveHandler,\r\n color: \"primary\",\r\n disabled: loading,\r\n },\r\n ];\r\n if(user != null && !user.emailConfirmed) {\r\n buttons.unshift({\r\n key: \"Invite\",\r\n label: \"Resend Invite\",\r\n onClick: async () => {\r\n setLoading(true);\r\n try {\r\n await resendInvite(user.id);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n },\r\n color: \"primary\",\r\n disabled: loading,\r\n });\r\n }\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n {isCompanyStaticDataReady\r\n ? (\r\n \r\n {businessUnitStaticData.length > 0\r\n ? (\r\n \r\n )\r\n : null}\r\n \r\n \r\n )\r\n : }\r\n \r\n\r\n
    \r\n {selectedRoles\r\n && selectedRoles.map((role) => (\r\n
    \r\n

    \r\n {`${roles.find((c) => c.value === role)?.description} Role Access`}\r\n

    \r\n

    \r\n {roles.find((c) => c.value === role)?.accessDescription}\r\n

    \r\n
    \r\n ))}\r\n
    \r\n\r\n {loading && }\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddUserModal;\r\n","import React, { useState, useEffect, useCallback } from \"react\";\r\n\r\nimport {\r\n PageHeading, SearchInput,\r\n useRouteState, ConfirmationModal,\r\n SearchFiltersContainer, FilterTypes, FilterValue, // eslint-disable-line no-unused-vars\r\n} from \"isuppli-react-components\";\r\n\r\nimport { useHistory } from \"react-router\";\r\nimport { useSelector } from \"react-redux\";\r\nimport navMenuItems from \"../../../Util/menuItems\";\r\nimport UserStatus from \"../../../Util/Enumerators/userStatus\";\r\n\r\nimport UserSearchResults from \"./UserSearchResults/UserSearchResults\";\r\nimport AddUserModal from \"./AddUserModal/AddUserModal\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport {\r\n UserMessage, // eslint-disable-line no-unused-vars\r\n UsersMessage, // eslint-disable-line no-unused-vars\r\n getUsers,\r\n deactivateUser, activateUser, deleteUser,\r\n} from \"../../../http/UserManagement/userManagementApi\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../../Store/ReduxState\";\r\nimport { UserSearchCriteria } from \"../../../http/UserManagement/Models/UserSearchCriteria\"; // eslint-disable-line no-unused-vars\r\nimport { StaticCompanyDataTypes } from \"../../../Util/Enumerators/staticCompanyDataTypes\";\r\nimport useStaticCompanyData, { TypedStaticOption } from \"../../../Hooks/useStaticCompanyData\"; // eslint-disable-line no-unused-vars\r\nimport UserSortOption from \"../../../Util/Enumerators/userSortOption\";\r\n\r\nconst UserManagement = () => {\r\n const [[rolesTemp, businessUnitStaticDataTemp]] = useStaticCompanyData(\r\n [StaticCompanyDataTypes.roles, StaticCompanyDataTypes.businessUnit]\r\n );\r\n const businessUnitStaticData = businessUnitStaticDataTemp as Array>;\r\n const roles = rolesTemp as Array>;\r\n\r\n const [showAddUserModal, setShowAddUserModal] = useState(false);\r\n const [showUserLimitModal, setShowUserLimitModal] = useState(false);\r\n const [showDeactivateUserModal, setShowDeactivateUserModal] = useState(false);\r\n const [showActivateUserModal, setShowActivateUserModal] = useState(false);\r\n const [showDeleteUserModal, setShowDeleteUserModal] = useState(false);\r\n const [userIdToAction, setUserIdToAction] = useState(\"\");\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [routeSearchTerm, setRouteSearchTerm] = useRouteState(\"q\", \"\");\r\n const [sortOption, setSortOption] = useRouteState(\r\n \"s\",\r\n UserSortOption.Name\r\n );\r\n const [filterOption, setFilterOption] = useRouteState(\r\n \"f\",\r\n UserStatus.None\r\n );\r\n const [routeFilterValues, setRouteFilterValues] = useRouteState<\r\n FilterValue[]\r\n >(\"fv\", []);\r\n const [filterValues, setFilterValues] = useState(\r\n routeFilterValues\r\n );\r\n const [page, setPage] = useRouteState(\"p\", { l: 20, o: 0 });\r\n const [editUser, setEditUser] = useState();\r\n const [userResults, setUserResults] = useState({\r\n items: [],\r\n totalItems: 0,\r\n totalActiveUsers: 0,\r\n });\r\n const [loading, setLoading] = useState(true);\r\n const history = useHistory();\r\n const showError = useShowError();\r\n\r\n const userLimit = useSelector((state: ReduxState) => state.loggedInUserDetails.userLimit);\r\n\r\n const addNewUserHandler = () => {\r\n setEditUser(undefined);\r\n\r\n // check user limit\r\n if (userLimit != null && userResults.totalActiveUsers >= userLimit) {\r\n setShowUserLimitModal(true);\r\n return;\r\n }\r\n setShowAddUserModal(true);\r\n };\r\n\r\n const onEditUserHandler = (user: UserMessage) => {\r\n setEditUser(user);\r\n setShowAddUserModal(true);\r\n };\r\n\r\n const onDeactivateUserClickHandler = (userId: string) => {\r\n setUserIdToAction(userId);\r\n setShowDeactivateUserModal(true);\r\n };\r\n\r\n const onActivateUserClickHandler = (userId: string) => {\r\n // check user limit\r\n if (userLimit != null && userResults.totalActiveUsers >= userLimit) {\r\n setShowUserLimitModal(true);\r\n return;\r\n }\r\n\r\n setUserIdToAction(userId);\r\n setShowActivateUserModal(true);\r\n };\r\n\r\n const onDeleteUserClickHandler = (userId: string) => {\r\n setUserIdToAction(userId);\r\n setShowDeleteUserModal(true);\r\n };\r\n\r\n const onDeactivateUserProceedHandler = async () => {\r\n setLoading(true);\r\n try {\r\n // API Call\r\n await deactivateUser(userIdToAction);\r\n\r\n // update user item in state\r\n setUserResults((prevState) => ({\r\n ...prevState,\r\n totalActiveUsers: prevState.totalActiveUsers - 1,\r\n items: prevState?.items.map((user) => {\r\n if (user.id === userIdToAction) {\r\n return { ...user, isDeactivated: true };\r\n }\r\n return user;\r\n }),\r\n }));\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const onActivateUserProceedHandler = async () => {\r\n setLoading(true);\r\n try {\r\n // API Call\r\n await activateUser(userIdToAction);\r\n\r\n // update user item in state\r\n setUserResults((prevState) => ({\r\n ...prevState,\r\n totalActiveUsers: prevState.totalActiveUsers + 1,\r\n items: prevState?.items.map((user) => {\r\n if (user.id === userIdToAction) {\r\n return { ...user, isDeactivated: false };\r\n }\r\n return user;\r\n }),\r\n }));\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const onDeleteUserProceedHandler = async () => {\r\n setLoading(true);\r\n try {\r\n // API Call\r\n await deleteUser(userIdToAction);\r\n\r\n // update user item in state\r\n\r\n setUserResults((prevState) => {\r\n const deletedUser = prevState?.items.find((user) => {\r\n if (user.id !== userIdToAction) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n return {\r\n totalItems: (prevState.totalItems - 1),\r\n items: prevState?.items.filter((user) => {\r\n if (user.id !== userIdToAction) {\r\n return true;\r\n }\r\n return false;\r\n }),\r\n totalActiveUsers: prevState.totalActiveUsers - (deletedUser?.isDeactivated ? 0 : 1),\r\n };\r\n });\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const executeSearch = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n const selectedRoleIds: any = routeFilterValues[0];\r\n const selectedBusinessUnitIds: any = routeFilterValues[1];\r\n\r\n const searchCriteria: UserSearchCriteria = {\r\n limit: page.l,\r\n offset: page.o,\r\n searchTerm: routeSearchTerm || undefined,\r\n statusFilter: filterOption,\r\n sortOption,\r\n selectedRoleIds,\r\n selectedBusinessUnitIds,\r\n };\r\n\r\n const data = await getUsers(searchCriteria);\r\n setUserResults(data);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n }, [page, showError, routeSearchTerm, routeFilterValues, filterOption, sortOption]);\r\n\r\n const clearSearch = () => {\r\n setRouteSearchTerm(\"\");\r\n setSearchTerm(\"\");\r\n setRouteFilterValues([]);\r\n setFilterValues([]);\r\n setFilterOption(UserStatus.None);\r\n setSortOption(UserSortOption.Name);\r\n };\r\n\r\n useEffect(() => {\r\n setSearchTerm(routeSearchTerm);\r\n setFilterValues(routeFilterValues);\r\n executeSearch();\r\n }, [routeSearchTerm, routeFilterValues, executeSearch, history.location]);\r\n\r\n const filters = [\r\n {\r\n filterName: \"Role\",\r\n options: roles,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n {\r\n filterName: \"Business Unit\",\r\n options: businessUnitStaticData,\r\n filterType: FilterTypes.MultiSelectDropDown,\r\n },\r\n ];\r\n\r\n return (\r\n
    \r\n {showAddUserModal && (\r\n {\r\n executeSearch();\r\n }}\r\n onClose={() => {\r\n setShowAddUserModal(false);\r\n setEditUser(undefined);\r\n }}\r\n />\r\n )}\r\n {showDeactivateUserModal && (\r\n { onDeactivateUserProceedHandler(); }}\r\n onToggleModal={() => setShowDeactivateUserModal(false)}\r\n />\r\n )}\r\n {showActivateUserModal && (\r\n { onActivateUserProceedHandler(); }}\r\n onToggleModal={() => setShowActivateUserModal(false)}\r\n />\r\n )}\r\n {showDeleteUserModal && (\r\n { onDeleteUserProceedHandler(); }}\r\n onToggleModal={() => setShowDeleteUserModal(false)}\r\n />\r\n )}\r\n {showUserLimitModal && (\r\n { history.push(\"/mycompany/subscription\"); }}\r\n onToggleModal={() => setShowUserLimitModal(false)}\r\n />\r\n )}\r\n
    \r\n
    \r\n\r\n \r\n {\r\n setPage({ l: page.l, o: 0 });\r\n setRouteSearchTerm(searchTerm);\r\n setRouteFilterValues(filterValues);\r\n }}\r\n onChange={(value: string) => { setSearchTerm(value); }}\r\n searchPlaceholder=\"Search by username\"\r\n buttons={[{\r\n key: \"add\", label: \"Add a new user\", onClick: addNewUserHandler, color: \"primary\",\r\n }]}\r\n className=\"mb-4\"\r\n />\r\n\r\n {\r\n setPage({ l: page.l, o: 0 });\r\n setRouteSearchTerm(searchTerm);\r\n setRouteFilterValues(filterValues);\r\n },\r\n color: \"primary\",\r\n },\r\n ]}\r\n className=\"mb-4\"\r\n onChange={setFilterValues}\r\n filterValues={filterValues ?? []}\r\n filters={filters}\r\n />\r\n\r\n setPage({ l, o })}\r\n onItemSelected={onEditUserHandler}\r\n onDeactivate={(userId: string) => { onDeactivateUserClickHandler(userId); }}\r\n onActivate={(userId: string) => { onActivateUserClickHandler(userId); }}\r\n onDelete={(userId: string) => { onDeleteUserClickHandler(userId); }}\r\n sortOption={sortOption}\r\n setSortOption={setSortOption}\r\n filterOption={filterOption}\r\n setFilterOption={setFilterOption}\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default UserManagement;\r\n","import { useLocation, useHistory } from \"react-router-dom\";\r\nimport { useRef, useCallback } from \"react\";\r\n\r\nconst changeQue : Array<{shortName: string, jsonString: string}> = [];\r\nlet newSearchParam : URLSearchParams | null = null;\r\n\r\nconst useRouteState = (shortName: string, defaultValue: T)\r\n : [T, (newValue: T) => void] => {\r\n const currentValue = useRef();\r\n\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n const params = new URLSearchParams(location.search);\r\n\r\n const stringValue = params.get(shortName);\r\n const value: T = stringValue == null ? defaultValue : JSON.parse(stringValue);\r\n\r\n if (currentValue.current == null) {\r\n currentValue.current = value;\r\n }\r\n\r\n const setFunction = useCallback(async (newValue: T) => {\r\n if (newValue !== currentValue.current) {\r\n currentValue.current = newValue;\r\n }\r\n\r\n newSearchParam = new URLSearchParams(location.search);\r\n\r\n const jsonString = JSON.stringify(newValue);\r\n changeQue.push({ shortName, jsonString });\r\n\r\n // break thread\r\n // this is to allow multiple calls to update at the same time\r\n // everything before this will be called, and then everything after\r\n await new Promise((r) => r());\r\n\r\n // now handle que\r\n if (changeQue.length > 0) {\r\n const toApply = changeQue.pop();\r\n if (toApply != null) {\r\n newSearchParam.set(toApply.shortName, toApply.jsonString);\r\n }\r\n }\r\n\r\n if (changeQue.length === 0) {\r\n // last call changes the route\r\n history.push({\r\n pathname: location.pathname,\r\n search: newSearchParam.toString(),\r\n });\r\n }\r\n }, [location, history, shortName]);\r\n\r\n return [currentValue.current, setFunction];\r\n};\r\n\r\nexport default useRouteState;\r\n","import axios from \"axios\";\r\n\r\nimport {\r\n CloseAccountFeedbackMessage, // eslint-disable-line no-unused-vars,\r\n} from \"./Models/Models\";\r\n\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport async function convertToNonDirectoryListing() {\r\n return makeRequestAsync(() => axios.post(\"/api/subscription/closeaccount/nondirectorylisting\"));\r\n}\r\n\r\nexport async function unsubscribeEntirely() {\r\n return makeRequestAsync(() => axios.post(\"/api/subscription/closeaccount/unsubscribe\"));\r\n}\r\n\r\nexport async function saveCloseAccountFeedback(\r\n closeAccountFeedbackMessage: CloseAccountFeedbackMessage\r\n) {\r\n return makeRequestAsync(() => axios.post(\"/api/subscription/closeaccount/feedback\", closeAccountFeedbackMessage));\r\n}\r\n","enum OnboardingBeeRequirement {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n BeeRequired = 1, // eslint-disable-line no-unused-vars\r\n ValidatedBeeRequired = 2, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport default OnboardingBeeRequirement;\r\n","import React, { useState, Fragment } from \"react\";\r\nimport {\r\n ModalPopup,\r\n CheckboxInput,\r\n TextAreaInput,\r\n Spinner,\r\n} from \"isuppli-react-components\";\r\nimport { useHistory } from \"react-router\";\r\nimport OptionSelector from \"../../../Controls/OptionSelector\";\r\nimport {\r\n updateSubscription,\r\n} from \"../../../http/Billing/billingApi\";\r\nimport {\r\n convertToNonDirectoryListing,\r\n unsubscribeEntirely,\r\n saveCloseAccountFeedback,\r\n} from \"../../../http/Subscription/subscriptionAPI\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport {\r\n CloseAccountFeedbackMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../../http/Subscription/Models/Models\";\r\n\r\nimport CloseAccountReasons, {\r\n closeAccountReasonToString,\r\n} from \"../../../Util/Enumerators/CloseAccountReasons\";\r\nimport { checkHttpStatus } from \"../../../http/httpHelpers\";\r\n\r\nconst CancelSubscriptionModal = (\r\n {\r\n showDowngradeToFreeOption,\r\n freeTierId,\r\n buyerCompanyNames,\r\n onClose,\r\n }\r\n :\r\n {\r\n showDowngradeToFreeOption: boolean,\r\n freeTierId?: number,\r\n buyerCompanyNames: string[],\r\n onClose: () => void,\r\n }\r\n) => {\r\n const [loading, setLoading] = useState(false);\r\n const history = useHistory();\r\n const [cancellationOption, setCancellationOption] = useState(-1);\r\n const [showCancelSubscriptionModal, setShowCancelSubscriptionModal] = useState(true);\r\n const [showUnsubscribeSuccessModal, setShowUnsubscribeSuccessModal] = useState(false);\r\n const [showConfirmationModal, setShowConfirmationModal] = useState(false);\r\n const [unsubscribeSuccessModalInfo, setUnsubscribeSuccessModalInfo] = useState({\r\n heading: \"\",\r\n subheading: \"\",\r\n body: \"\",\r\n });\r\n const [checkboxValues, setCheckboxValues] = useState([\r\n {\r\n display: closeAccountReasonToString(CloseAccountReasons.NoBusinessValue),\r\n selected: false,\r\n value: CloseAccountReasons.NoBusinessValue,\r\n },\r\n {\r\n display: closeAccountReasonToString(CloseAccountReasons.ManagingProfileFrustrating),\r\n selected: false,\r\n value: CloseAccountReasons.ManagingProfileFrustrating,\r\n },\r\n {\r\n display: closeAccountReasonToString(CloseAccountReasons.BusinessNoLongerTrading),\r\n selected: false,\r\n value: CloseAccountReasons.BusinessNoLongerTrading,\r\n },\r\n {\r\n display: closeAccountReasonToString(CloseAccountReasons.FoundBetterSolution),\r\n selected: false,\r\n value: CloseAccountReasons.FoundBetterSolution,\r\n },\r\n {\r\n display: closeAccountReasonToString(CloseAccountReasons.Other),\r\n selected: false,\r\n value: CloseAccountReasons.Other,\r\n },\r\n ]);\r\n const [optionalInput, setOptionalInput] = useState(\"\");\r\n const showError = useShowError();\r\n\r\n const downgradeToFreeHandler = async () => {\r\n setLoading(true);\r\n try {\r\n const model = {\r\n newSubscriptionTierId: freeTierId ?? -1,\r\n };\r\n\r\n const response = await updateSubscription(model);\r\n if (typeof response === \"string\" && response.trim()) {\r\n history.push(response);\r\n } else {\r\n history.push(\"/mycompany/subscription\");\r\n }\r\n } catch (getError) {\r\n if (!checkHttpStatus(getError, 404)) {\r\n // Break\r\n showError();\r\n setLoading(false);\r\n }\r\n }\r\n };\r\n\r\n const removeFromDirectoryHandler = async () => {\r\n setLoading(true);\r\n\r\n try {\r\n // cancel subscription on billing\r\n const model = {\r\n newSubscriptionTierId: freeTierId ?? -1,\r\n };\r\n await updateSubscription(model);\r\n } catch (getError) {\r\n if (!checkHttpStatus(getError, 404)) {\r\n // Break\r\n showError();\r\n setLoading(false);\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n // make api call\r\n await convertToNonDirectoryListing();\r\n\r\n // set success modal info\r\n setUnsubscribeSuccessModalInfo({\r\n heading: \"CONVERSION TO NON-DIRECTORY LISTING SUCCESSFUL\",\r\n subheading: \"As requested, you have been successfully converted to a non-directory listing.\",\r\n body: \"Your company profile will no longer be visible to the public Directory,\"\r\n + \"and only your current clients will still be able to see your profile. \"\r\n + \"You will not have access to any platform functionality, and will not incur\"\r\n + \"any charges. You will, however, still be able to access your profile in the\"\r\n + \"future, should you wish to re- subscribe. We're sorry to see you go, and hope\"\r\n + \"to welcome you back to B1LINK again in the future. \"\r\n + \"You are welcome to re - register at any time.\",\r\n });\r\n\r\n // hide original modal, show success modal\r\n setShowCancelSubscriptionModal(false);\r\n setShowUnsubscribeSuccessModal(true);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const unsubscribeEntirelyHandler = async () => {\r\n setLoading(true);\r\n\r\n try {\r\n // cancel subscription on billing\r\n const model = {\r\n newSubscriptionTierId: freeTierId ?? -1,\r\n };\r\n await updateSubscription(model);\r\n } catch (getError) {\r\n if (!checkHttpStatus(getError, 404)) {\r\n // Break\r\n showError();\r\n setLoading(false);\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n // make api call\r\n await unsubscribeEntirely();\r\n\r\n // set success modal info\r\n setUnsubscribeSuccessModalInfo({\r\n heading: \"UNSUBSCRIBE SUCCESSFUL\",\r\n subheading: \"You have successfully unsubscribed and will be removed from our database \"\r\n + \"in accordance with our terms and conditions.\",\r\n body: \"We're sorry to see you go, and hope to welcome you back to B1LINK again in the future. \"\r\n + \"You are welcome to re-register at any time.\",\r\n });\r\n\r\n // hide original modal, show success modal\r\n setShowCancelSubscriptionModal(false);\r\n setShowUnsubscribeSuccessModal(true);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const confirmChoiceHandler = async () => {\r\n switch (cancellationOption) {\r\n case 1:\r\n await removeFromDirectoryHandler();\r\n break;\r\n case 2:\r\n await unsubscribeEntirelyHandler();\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n const saveFeedbackHandler = async () => {\r\n setLoading(true);\r\n try {\r\n // build model\r\n const selectedValues = checkboxValues\r\n .filter((checkboxValue) => checkboxValue.selected === true\r\n && checkboxValue.value !== CloseAccountReasons.Other)\r\n .map((filteredValue) => filteredValue.value);\r\n\r\n const reasons = selectedValues.reduce((a, b) => a + b);\r\n\r\n const closeAccountFeedbackMessage: CloseAccountFeedbackMessage = {\r\n reasons,\r\n optionalInput,\r\n };\r\n\r\n // make api call\r\n await saveCloseAccountFeedback(closeAccountFeedbackMessage);\r\n window.location.href = \"/account/logout\";\r\n } catch (error) {\r\n showError();\r\n setLoading(false);\r\n }\r\n };\r\n\r\n // downgrade options\r\n const cancellationOptions = [];\r\n\r\n if (showDowngradeToFreeOption) {\r\n cancellationOptions.push({\r\n heading: \"I'd like to downgrade my package to the free subscription.\",\r\n value: 0,\r\n });\r\n }\r\n\r\n if (buyerCompanyNames.length > 0) {\r\n cancellationOptions.push({\r\n heading: \"Please remove me from the directory, but retain my profile for my corporate customers only.\",\r\n value: 1,\r\n });\r\n }\r\n\r\n cancellationOptions.push({\r\n heading: \"Please unsubscribe me entirely.\",\r\n value: 2,\r\n });\r\n\r\n const optionalCheckboxSelected = checkboxValues?.\r\n find((checkbox) => (checkbox.value === CloseAccountReasons.Other))?.selected;\r\n\r\n return (\r\n \r\n {\r\n showConfirmationModal && (\r\n { }}\r\n hasCancel={false}\r\n heading=\"Are you sure you want to proceed?\"\r\n size=\"extra-large\"\r\n buttons={[\r\n {\r\n key: \"back\",\r\n label: \"Back\",\r\n color: \"secondary\",\r\n onClick: () => {\r\n setShowConfirmationModal(false);\r\n setShowCancelSubscriptionModal(true);\r\n },\r\n },\r\n {\r\n key: \"proceed\",\r\n label: \"Proceed\",\r\n color: \"primary\",\r\n onClick: async () => {\r\n setShowConfirmationModal(false);\r\n await confirmChoiceHandler();\r\n },\r\n },\r\n ]}\r\n >\r\n
    \r\n This action cannot be undone.\r\n
    \r\n \r\n )\r\n }\r\n\r\n {\r\n showUnsubscribeSuccessModal && (\r\n { }}\r\n hasCancel={false}\r\n heading={unsubscribeSuccessModalInfo.heading}\r\n subheading={unsubscribeSuccessModalInfo.subheading}\r\n size=\"extra-large\"\r\n buttons={[\r\n {\r\n key: \"submit\",\r\n label: \"Submit\",\r\n color: \"primary\",\r\n onClick: async () => {\r\n await saveFeedbackHandler();\r\n },\r\n },\r\n ]}\r\n >\r\n
    \r\n
    \r\n {\r\n unsubscribeSuccessModalInfo.body\r\n }\r\n
    \r\n
    \r\n
    \r\n Please take a moment to let us know why you have chosen to leave us (optional).\r\n
    \r\n
    \r\n {\r\n checkboxValues.map((checkboxValue, i) => (\r\n {\r\n const newCheckboxes = checkboxValues.map((newCheckbox, j) => {\r\n if (i === j) {\r\n return {\r\n ...newCheckbox,\r\n selected: newValue,\r\n };\r\n }\r\n return newCheckbox;\r\n });\r\n setCheckboxValues(newCheckboxes);\r\n }}\r\n />\r\n ))\r\n }\r\n {\r\n optionalCheckboxSelected && (\r\n
    \r\n
    \r\n { setOptionalInput(newVal); }}\r\n />\r\n
    \r\n )\r\n }\r\n
    \r\n {loading && }\r\n \r\n )\r\n }\r\n\r\n {\r\n showCancelSubscriptionModal && (\r\n {\r\n switch (cancellationOption) {\r\n case 0:\r\n await downgradeToFreeHandler();\r\n break;\r\n default:\r\n setShowCancelSubscriptionModal(false);\r\n setShowConfirmationModal(true);\r\n }\r\n },\r\n },\r\n ]}\r\n >\r\n
    \r\n
    \r\n Do you know that you can downgrade to our B1LINK package, and\r\n continue to enjoy (limited) functionality on the platform, AT NO COST.\r\n If you have any concerns regarding the security and privacy of your data,\r\n please refer to our Terms and Conditions, or alternatively\r\n contact us at\r\n {\" \"}\r\n support@b1link.co.za\r\n
    \r\n {\r\n buyerCompanyNames.length > 0\r\n && (\r\n
    \r\n
    \r\n
    \r\n We notice that you are connected as a supplier to the following\r\n Corporate clients, who may utilize your information for their own\r\n purchasing and reporting purposes. By unsubscribing, B1LINK will\r\n be unable to provide them with this information.\r\n
    \r\n
    \r\n
      \r\n {\r\n buyerCompanyNames.map((buyerName, i) => (\r\n
    • \r\n {buyerName}\r\n
    • \r\n ))\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n {\r\n const newVal = Number((ev?.target as HTMLInputElement)?.value);\r\n setCancellationOption(newVal);\r\n }}\r\n />\r\n
    \r\n {loading && }\r\n \r\n )\r\n }\r\n {loading && }\r\n \r\n );\r\n};\r\n\r\nexport default CancelSubscriptionModal;\r\n","import React, {\r\n useState, useEffect, Fragment, useCallback,\r\n} from \"react\";\r\nimport {\r\n Table,\r\n // eslint-disable-next-line no-unused-vars\r\n TableConfig,\r\n // eslint-disable-next-line no-unused-vars\r\n TableData,\r\n PageHeading,\r\n SystemFeatures,\r\n WithFeature,\r\n} from \"isuppli-react-components\";\r\n\r\nimport {\r\n Button, Alert, UncontrolledTooltip,\r\n} from \"reactstrap\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\n\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport useRouteState from \"../../Hooks/useRouteState\";\r\nimport DetailsItem from \"../../Controls/DetailsItem\";\r\nimport { formatDate, formatCurrency } from \"../../Util/valueFormatter\";\r\n\r\nimport Styles from \"./Subscription.module.scss\";\r\n\r\nimport {\r\n InvoicesMessage, // eslint-disable-line no-unused-vars\r\n InvoiceMessage, // eslint-disable-line no-unused-vars\r\n BillingSubscriptionStatusMessage, // eslint-disable-line no-unused-vars\r\n} from \"../../http/Billing/Models/Models\";\r\nimport { getSubscriptionDetail, getUserBasicDetails } from \"../../http/index\";\r\nimport { StaticDataTypes } from \"../../Util/Enumerators/staticDataTypes\";\r\nimport useStaticData from \"../../Hooks/useStaticData\";\r\nimport {\r\n getInvoices, retrySubscriptionPayment,\r\n getSubscriptionStatus,\r\n} from \"../../http/Billing/billingApi\";\r\nimport Spinner from \"../../Containers/Spinner/Spinner\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport { checkHttpStatus } from \"../../http/httpHelpers\";\r\nimport { ReduxState } from \"../../Store/ReduxState\"; // eslint-disable-line no-unused-vars\r\nimport { setUserBasicDetails } from \"../../Store/actions\";\r\nimport CancelSubscriptionModal from \"./CancelSubscriptionModal/CancelSubscriptionModal\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport CompanyGroupingType from \"../../Util/Enumerators/CompanyGroupingType\";\r\n\r\nexport interface SubscriptionDetails {\r\n deactivationDate?: Date,\r\n nextBillingDate: Date,\r\n nextBillingAmount: number,\r\n subscriptionTierId: number,\r\n subscriptionTierName: string,\r\n pendingSubscriptionTier?: number,\r\n pendingSubscriptionId?: number,\r\n sponsored: boolean,\r\n sponsorName: string,\r\n sponsoredSubscriptionTierId: number,\r\n buyerCompanyNames: string[],\r\n disabledSubscriptionTierIds: number[],\r\n companyGroupingType: CompanyGroupingType,\r\n recommendedSubscriptionTierId: number,\r\n}\r\n\r\nconst Subscription = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingDetails, setLoadingDetails] = useState(true);\r\n const [subscriptionDetails, setSubscriptionDetails] = useState();\r\n const [subscriptionStatus, setSubscriptionStatus] = useState();\r\n const [loadingInvoices, setLoadingInvoices] = useState(true);\r\n const [invoices, setInvoices] = useState();\r\n const [pageInfo, setPageInfo] = useRouteState(\"p\", { l: 20, o: 0 });\r\n const [sortOption, setSortOption] = useRouteState(\"s\", 0);\r\n const [showCancelSubscriptionModal, setShowCancelSubscriptionModal] = useState(false);\r\n const showError = useShowError();\r\n const [[\r\n subscriptionTiers,\r\n ], staticDataReady] = useStaticData([StaticDataTypes.SubscriptionTier]);\r\n\r\n const currentSubscription = useSelector(\r\n (state: ReduxState) => state.loggedInUserDetails.subscriptionTierId\r\n );\r\n\r\n const dispatch = useDispatch();\r\n\r\n const loadSubscriptionDetails = useCallback(async () => {\r\n setLoadingDetails(true);\r\n try {\r\n const [\r\n loadedDetails,\r\n loadedSubscriptionStatus,\r\n ] = await Promise.all([\r\n getSubscriptionDetail() as Promise,\r\n getSubscriptionStatus(),\r\n ]);\r\n setSubscriptionDetails(loadedDetails);\r\n setSubscriptionStatus(loadedSubscriptionStatus);\r\n\r\n if (currentSubscription !== loadedDetails.subscriptionTierId) {\r\n // reload subscription details\r\n const userBasicDetails = await getUserBasicDetails();\r\n dispatch(setUserBasicDetails(userBasicDetails));\r\n }\r\n\r\n setLoadingDetails(false);\r\n } catch (error) {\r\n showError();\r\n }\r\n }, [currentSubscription, dispatch, showError]);\r\n\r\n useEffect(() => {\r\n // load subscription details\r\n loadSubscriptionDetails();\r\n }, [setLoadingDetails, loadSubscriptionDetails]);\r\n\r\n useEffect(() => {\r\n // load invoices\r\n const loadInvoices = async () => {\r\n setLoadingInvoices(true);\r\n try {\r\n const invoicesMessage = await getInvoices(pageInfo.l, pageInfo.o);\r\n setInvoices(invoicesMessage);\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoadingInvoices(false);\r\n };\r\n\r\n loadInvoices();\r\n }, [pageInfo, sortOption, showError]);\r\n\r\n const tableConfig : TableConfig = {\r\n columns: [{\r\n key: \"invoiceNo\",\r\n heading: \"Invoice No.\",\r\n valueTemplate: (item) => {item.invoiceNumber},\r\n size: \"auto\",\r\n align: \"left\",\r\n },\r\n {\r\n key: \"date\",\r\n heading: \"Date\",\r\n valueTemplate: (item) => {formatDate(item.invoiceDate)},\r\n size: \"auto\",\r\n align: \"left\",\r\n },\r\n {\r\n key: \"description\",\r\n heading: \"Description\",\r\n size: \"1fr\",\r\n align: \"left\",\r\n valueTemplate: (row) => (\r\n {\r\n }}\r\n >\r\n {row.description}\r\n \r\n ),\r\n },\r\n {\r\n key: \"amount\",\r\n heading: \"Amount (incl. VAT)\",\r\n valueTemplate: (item) => {formatCurrency(item.totalAmount)},\r\n size: \"auto\",\r\n align: \"left\",\r\n }],\r\n };\r\n\r\n const RetryPayment = async () => {\r\n if (subscriptionDetails == null\r\n || subscriptionDetails.pendingSubscriptionId == null\r\n || subscriptionDetails.pendingSubscriptionTier == null) {\r\n return;\r\n }\r\n setLoading(true);\r\n try {\r\n const redirectUrl = await retrySubscriptionPayment(\r\n subscriptionDetails?.pendingSubscriptionTier ?? 0,\r\n subscriptionDetails?.pendingSubscriptionId ?? 0\r\n );\r\n if (redirectUrl.length > 0) {\r\n window.location.href = redirectUrl;\r\n }\r\n } catch (error) {\r\n if (checkHttpStatus(error, 403)) {\r\n // forbidden means payment was already processed\r\n // now reload subscription details and user basic details\r\n await loadSubscriptionDetails();\r\n } else {\r\n showError();\r\n }\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n const tableData: TableData = {\r\n limit: pageInfo.l,\r\n offset: pageInfo.o,\r\n totalItems: invoices?.totalItems ?? 0,\r\n items: invoices?.items ?? [],\r\n };\r\n\r\n const downgradePending = subscriptionDetails?.pendingSubscriptionTier != null\r\n && subscriptionDetails?.deactivationDate != null;\r\n\r\n const upgradePending = subscriptionDetails?.pendingSubscriptionTier != null\r\n && subscriptionDetails?.deactivationDate == null;\r\n\r\n const pendingSubscription = subscriptionTiers == null ? null : subscriptionTiers\r\n .find((c) => c.value === subscriptionDetails?.pendingSubscriptionTier);\r\n\r\n const newSubscriptionName = (staticDataReady\r\n && subscriptionDetails?.pendingSubscriptionTier != null\r\n && pendingSubscription?.display)\r\n || \"\";\r\n\r\n const downgradeToFree = downgradePending && pendingSubscription?.monthlyPriceInclVAT === 0;\r\n\r\n const disableChangeSubscriptionButton = upgradePending || downgradeToFree;\r\n\r\n const disableCancelSubscriptionButton = downgradeToFree;\r\n\r\n const hideRetryButtons = upgradePending\r\n && pendingSubscription?.monthlyPriceInclVAT === null;\r\n\r\n const hasNextBillingDate = subscriptionDetails?.nextBillingDate != null;\r\n\r\n const currentSubscriptionTier = subscriptionTiers == null ? null : subscriptionTiers\r\n .find((c) => c.value === subscriptionDetails?.subscriptionTierId);\r\n\r\n // eslint-disable-next-line no-nested-ternary\r\n const pendingSubscriptionChangeMessage = upgradePending ? \"A subscription upgrade is already pending\"\r\n : downgradeToFree ? \"Your subscription has been cancelled and cannot be altered at this moment.\" : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n {loading && }\r\n
    \r\n
    \r\n \r\n\r\n {\r\n showCancelSubscriptionModal\r\n && (\r\n setShowCancelSubscriptionModal(false)}\r\n freeTierId={subscriptionTiers?.find((tier) => tier?.\r\n monthlyPriceInclVAT === 0)?.value}\r\n showDowngradeToFreeOption={!subscriptionDetails?.sponsored\r\n && currentSubscriptionTier?.monthlyPriceInclVAT > 0}\r\n buyerCompanyNames={subscriptionDetails?.buyerCompanyNames ?? []}\r\n />\r\n )\r\n }\r\n\r\n {/* Current Subscription Details */}\r\n
    \r\n
    \r\n
    \r\n

    Subscription details

    \r\n {\r\n downgradePending\r\n && (\r\n \r\n Your account will be downgraded to a\r\n {` ${newSubscriptionName} `}\r\n subscription on\r\n {` ${formatDate(subscriptionDetails?.deactivationDate ?? new Date())}`}\r\n \r\n )\r\n }\r\n {\r\n upgradePending\r\n && (\r\n \r\n
    \r\n
    \r\n Your account will be upgraded to a\r\n {` ${newSubscriptionName} `}\r\n subscription when payment is received\r\n
    \r\n {\r\n !hideRetryButtons\r\n && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n \r\n {\r\n (pendingSubscription != null)\r\n && (\r\n \r\n )\r\n }\r\n {\r\n (hasNextBillingDate && !(currentSubscriptionTier?.value === 0))\r\n && (\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n Change subscription\r\n \r\n
    \r\n \r\n
    \r\n setShowCancelSubscriptionModal(true)}\r\n >\r\n Cancel subscription\r\n \r\n
    \r\n {\r\n disableChangeSubscriptionButton\r\n && (\r\n \r\n {pendingSubscriptionChangeMessage}\r\n \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Invoice Table */}\r\n setPageInfo({ l, o })}\r\n tableStyle=\"basic\"\r\n onSortOptionChange={(newValue: number) => {\r\n setSortOption(newValue);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n};\r\n\r\nexport default Subscription;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport {\r\n Line, PageHeading, UtilButton, ConfirmationModal,\r\n} from \"isuppli-react-components\";\r\nimport navMenuItems from \"../../../Util/menuItems\";\r\nimport ProductTierSelector from \"../../../Containers/ProductTierSelector/ProductTierSelector\";\r\n\r\nimport {\r\n getSubscriptionDetail,\r\n getSubscriptionUpgradeFee,\r\n sendSubscriptionEnquirySupportEmail,\r\n} from \"../../../http/index\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n ReduxState,\r\n} from \"../../../Store/ReduxState\";\r\nimport Spinner from \"../../../Containers/Spinner/Spinner\";\r\nimport useStaticData from \"../../../Hooks/useStaticData\";\r\nimport { StaticDataTypes } from \"../../../Util/Enumerators/staticDataTypes\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { SubscriptionDetails } from \"../Subscription\";\r\nimport { formatDate, formatCurrency } from \"../../../Util/valueFormatter\";\r\nimport { updateSubscription, getSubscriptionStatus } from \"../../../http/Billing/billingApi\";\r\n\r\nimport SendSubscriptionEnquiryModal from \"../SendSubscriptionEnquiryModal/SendSubscriptionEnquiryModal\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport { BillingSubscriptionStatusMessage } from \"../../../http/Billing/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport CompanyGroupingType from \"../../../Util/Enumerators/CompanyGroupingType\";\r\n\r\nconst EditSubscription = () => {\r\n const [selectedTier, setSelectedTier] = useState(0);\r\n const [selectedTierName, setSelectedTierName] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const [subscriptionDetails, setSubscriptionDetails] = useState();\r\n const [subscriptionStatus, setSubscriptionStatus] = useState();\r\n const [showOnEnquireModal, setshowOnEnquireModal] = useState(false);\r\n\r\n const [\r\n effectiveCurrentSubscriptionTier,\r\n setEffectiveCurrentSubscriptionTier,\r\n ] = useState();\r\n const [showDowngradeModal, setShowDowngradeModal] = useState(false);\r\n const [showUpgradeModal, setShowUpgradeModal] = useState(false);\r\n const [showNewPurchaseModal, setShowNewPurchaseModal] = useState(false);\r\n const [showQuotePurchaseModal, setShowQuotePurchaseModal] = useState(false);\r\n\r\n const [upgradeFee, setUpgradeFee] = useState(0);\r\n\r\n const [[\r\n subscriptionTiers,\r\n ], staticDataReady] = useStaticData([StaticDataTypes.SubscriptionTier]);\r\n\r\n const currentSubscription = useSelector(\r\n (state: ReduxState) => (state.loggedInUserDetails.accountSuspended\r\n ? -1\r\n : state.loggedInUserDetails.subscriptionTierId)\r\n );\r\n\r\n const accountSuspended = useSelector(\r\n (state: ReduxState) => state.loggedInUserDetails.accountSuspended\r\n );\r\n\r\n const onSubscriptionChangeHandler = (value : number) => {\r\n setSelectedTier(value);\r\n };\r\n\r\n const onEnquireHandler = async (selectedTierId: number) => {\r\n const selectedSubscriptionTier = subscriptionTiers.find(\r\n (tier) => tier.id === selectedTierId\r\n );\r\n setSelectedTierName(selectedSubscriptionTier?.name);\r\n setshowOnEnquireModal(!showOnEnquireModal);\r\n\r\n // send email\r\n await sendSubscriptionEnquirySupportEmail(selectedTierId);\r\n };\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n if (staticDataReady && subscriptionDetails != null\r\n && subscriptionDetails.pendingSubscriptionTier != null) {\r\n const currentTier = subscriptionTiers?.find(\r\n (c) => c.value === currentSubscription);\r\n const pendingTier = subscriptionTiers?.find(\r\n (c) => c.value === subscriptionDetails.pendingSubscriptionTier);\r\n\r\n if (currentTier == null || pendingTier == null) {\r\n setEffectiveCurrentSubscriptionTier(currentSubscription);\r\n return;\r\n }\r\n\r\n if (pendingTier.monthlyPriceInclVAT === 0) {\r\n // cancel pending\r\n history.replace(\"/myCompany/subscription\");\r\n return;\r\n }\r\n\r\n if (pendingTier.monthlyPriceInclVAT < currentTier.monthlyPriceInclVAT) {\r\n // downgrade pending\r\n setEffectiveCurrentSubscriptionTier(subscriptionDetails.pendingSubscriptionTier);\r\n setSelectedTier(subscriptionDetails.pendingSubscriptionTier);\r\n return;\r\n }\r\n\r\n if (pendingTier.monthlyPriceInclVAT > currentTier.monthlyPriceInclVAT) {\r\n // upgrade pending\r\n history.replace(\"/myCompany/subscription\");\r\n return;\r\n }\r\n\r\n setEffectiveCurrentSubscriptionTier(currentSubscription);\r\n } else {\r\n setEffectiveCurrentSubscriptionTier(currentSubscription);\r\n }\r\n }, [\r\n subscriptionDetails,\r\n subscriptionTiers,\r\n staticDataReady,\r\n currentSubscription,\r\n effectiveCurrentSubscriptionTier,\r\n history]);\r\n\r\n useEffect(() => {\r\n // load subscription details\r\n const loadDetails = async () => {\r\n setLoading(true);\r\n const [\r\n loadedDetails,\r\n loadedSubscriptionStatus,\r\n ] = await Promise.all([\r\n getSubscriptionDetail() as Promise,\r\n getSubscriptionStatus(),\r\n ]);\r\n\r\n setSubscriptionDetails(loadedDetails);\r\n setSubscriptionStatus(loadedSubscriptionStatus);\r\n setLoading(false);\r\n };\r\n\r\n loadDetails();\r\n }, [setLoading]);\r\n\r\n useEffect(() => {\r\n setSelectedTier(currentSubscription ?? 0);\r\n }, [currentSubscription]);\r\n\r\n const showError = useShowError();\r\n\r\n const onSubmitHandler = async () => {\r\n setLoading(true);\r\n try {\r\n const model = {\r\n newSubscriptionTierId: selectedTier,\r\n };\r\n const response = await updateSubscription(model);\r\n if (typeof response === \"string\" && response.trim()) {\r\n window.location.href = response;\r\n } else {\r\n history.goBack();\r\n }\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const showConfirmModal = async () => {\r\n if (!staticDataReady) {\r\n return;\r\n }\r\n\r\n if (effectiveCurrentSubscriptionTier === selectedTier) {\r\n return;\r\n }\r\n // determine if it's a upgrade or downgrade\r\n\r\n const currentTier = subscriptionTiers?.find((c) => c.value === currentSubscription);\r\n const newTier = subscriptionTiers?.find((c) => c.value === selectedTier);\r\n\r\n if (newTier == null) return;\r\n\r\n if (!accountSuspended) {\r\n if (currentTier == null) {\r\n return;\r\n }\r\n\r\n if (newTier.monthlyPriceInclVAT == null) {\r\n // upgrading to quoted package\r\n setShowQuotePurchaseModal(true);\r\n return;\r\n }\r\n\r\n if (currentTier.monthlyPriceInclVAT === 0) {\r\n // new purchase\r\n setShowNewPurchaseModal(true);\r\n return;\r\n }\r\n\r\n if (currentTier.monthlyPriceInclVAT > newTier.monthlyPriceInclVAT) {\r\n setShowDowngradeModal(true);\r\n return;\r\n }\r\n }\r\n\r\n setLoading(true);\r\n try {\r\n const upgradeFeeFromApi = await getSubscriptionUpgradeFee(newTier.value);\r\n setUpgradeFee(upgradeFeeFromApi);\r\n setShowUpgradeModal(true);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n const newTier = subscriptionTiers?.find((c) => c.value === selectedTier);\r\n const currentTier = subscriptionTiers?.find(\r\n (c) => c.value === effectiveCurrentSubscriptionTier);\r\n\r\n const downgradeDate = subscriptionDetails?.nextBillingDate ?? new Date();\r\n\r\n const downgradeMessage = `Your current subscription will remain active until ${formatDate(downgradeDate)}. Thereafter you will be downgraded to a ${newTier?.display} package`;\r\n const upgradeMessage = subscriptionStatus?.hasActiveAdhocSubscription\r\n ? `You will be charged a pro-rata fee of ${formatCurrency(upgradeFee)} for this upgrade. We will charge the amount immediately using the payment details you provided previously.`\r\n : `You will be charged a pro-rata fee of ${formatCurrency(upgradeFee)} for this upgrade. You will be redirected to our payment provider to provide your payment details.`;\r\n\r\n const newSubscriptionMessage = \"You are upgrading from a free subscription to a paid subscription. You will be now be redirected to our payment provider's website.\";\r\n const newQuoteMessage = `Thank you for your interest in the ${newTier?.display} package. One of our sales consultants will be in contact soon.`;\r\n\r\n const isForeignCompany = subscriptionDetails?.companyGroupingType === CompanyGroupingType.Foreign\r\n ?? false;\r\n\r\n const alertText = isForeignCompany\r\n ? [\"We notice that you are a non South African registered company. \"\r\n + \"Our global application is in development for release in the near \"\r\n + \"future, and you are currently limited to the free B1LINK package.\",\r\n\r\n \"We will notify you as soon as the option to upgrade your package becomes \"\r\n + \"available, and trust that you will still be able to make use of the \"\r\n + \"platform until that time. Thank you for your patience and understanding.\"]\r\n\r\n : \"Upgrade or downgrade your subscription at any time.\";\r\n\r\n return (\r\n
    \r\n {showDowngradeModal && (\r\n setShowDowngradeModal(false)}\r\n />\r\n )}\r\n {showUpgradeModal && (\r\n setShowUpgradeModal(false)}\r\n />\r\n )}\r\n {showNewPurchaseModal && (\r\n setShowNewPurchaseModal(false)}\r\n />\r\n )}\r\n {showQuotePurchaseModal && (\r\n setShowQuotePurchaseModal(false)}\r\n />\r\n )}\r\n\r\n {showOnEnquireModal && (\r\n setshowOnEnquireModal(false)}\r\n selectedTierName={selectedTierName}\r\n />\r\n )}\r\n\r\n {loading && }\r\n
    \r\n
    \r\n \r\n onEnquireHandler(selectedTierId)}\r\n sponsoredSubscriptionTierId={\r\n subscriptionDetails?.sponsoredSubscriptionTierId ?? 0\r\n }\r\n disabledSubscriptionTierIds={\r\n subscriptionDetails?.disabledSubscriptionTierIds\r\n }\r\n recommendedSubscriptionTierId={subscriptionDetails?.recommendedSubscriptionTierId ?? 0}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n Submit & Make Payment\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default EditSubscription;\r\n","enum OnboardingApproverLevels {\r\n None = 0, // eslint-disable-line no-unused-vars\r\n Approver1 = 0x1, // eslint-disable-line no-unused-vars\r\n Approver2 = 0x2, // eslint-disable-line no-unused-vars\r\n}\r\nexport default OnboardingApproverLevels;\r\n\r\nexport const OnboardingApproverLevelsDisplay: { [index: number]: string } = {};\r\nOnboardingApproverLevelsDisplay[OnboardingApproverLevels.None] = \"None\";\r\nOnboardingApproverLevelsDisplay[OnboardingApproverLevels.Approver1] = \"Approver 1\";\r\nOnboardingApproverLevelsDisplay[OnboardingApproverLevels.Approver2] = \"Approver 2\";\r\n","import {\r\n // eslint-disable-next-line no-unused-vars\r\n FormRef,\r\n Spinner,\r\n WithFeature,\r\n SystemFeatures,\r\n Form,\r\n RadioButtonInput,\r\n} from \"isuppli-react-components\";\r\nimport React, {\r\n forwardRef,\r\n // eslint-disable-next-line no-unused-vars\r\n ForwardRefRenderFunction,\r\n Fragment,\r\n useEffect,\r\n useImperativeHandle,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport { FormGroup } from \"reactstrap\";\r\nimport useShowError from \"../../../../Hooks/useShowError\";\r\nimport {\r\n getCompanyInformationConfiguration,\r\n saveCompanyInformationConfiguration,\r\n} from \"../../../../http/EnterpriseConfiguration/enterpriseConfiguration\";\r\nimport OnboardingBeeRequirement from \"../../../../Util/Enumerators/OnboardingBeeRequirement\";\r\n\r\nexport interface CompanyInformationTabRef {\r\n save: () => Promise\r\n}\r\n\r\nexport interface CompanyInformationTabProps {\r\n\r\n}\r\n\r\nconst CompanyInformationTab: ForwardRefRenderFunction = (\r\n _: CompanyInformationTabProps, ref\r\n) => {\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(true);\r\n const formRef = useRef(null);\r\n const [beeRequiredForOnboarding, setBeeRequiredForOnboarding] = useState();\r\n const [validatedBeeRequired, setValidatedBeeRequired] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n\r\n try {\r\n const apiData = await getCompanyInformationConfiguration();\r\n switch (apiData.onboardingBeeRequirements) {\r\n case OnboardingBeeRequirement.BeeRequired:\r\n setBeeRequiredForOnboarding(true);\r\n setValidatedBeeRequired(false);\r\n break;\r\n case OnboardingBeeRequirement.ValidatedBeeRequired:\r\n setBeeRequiredForOnboarding(true);\r\n setValidatedBeeRequired(true);\r\n break;\r\n case OnboardingBeeRequirement.None:\r\n default:\r\n setBeeRequiredForOnboarding(false);\r\n setValidatedBeeRequired(false);\r\n break;\r\n }\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError, setLoading]);\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: async () => {\r\n if (!(formRef.current?.isValid())) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n try {\r\n let onboardingBeeRequirements = OnboardingBeeRequirement.None;\r\n if (beeRequiredForOnboarding && validatedBeeRequired) {\r\n onboardingBeeRequirements = OnboardingBeeRequirement.ValidatedBeeRequired;\r\n } else if (beeRequiredForOnboarding) {\r\n onboardingBeeRequirements = OnboardingBeeRequirement.BeeRequired;\r\n }\r\n await saveCompanyInformationConfiguration({\r\n onboardingBeeRequirements,\r\n });\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n },\r\n }));\r\n\r\n return (\r\n \r\n

    Company Information

    \r\n {loading && }\r\n \r\n
    \r\n\r\n \r\n \r\n

    \r\n Will B-BBEE be required for onboarding purposes,\r\n applicable to your South African suppliers?\r\n

    \r\n

    \r\n B-BBEE can be defined as a mandatory requirement for the purposes of your\r\n onboarding process, whereby your suppliers will be required to be compliant\r\n with the requirements of B-BBEE\r\n

    \r\n Is B-BBEE required as a mandatory onboarding requirement?\r\n
    \r\n {\r\n setBeeRequiredForOnboarding(true);\r\n }}\r\n name=\"bee-required\"\r\n label=\"Yes\"\r\n />\r\n {\r\n setBeeRequiredForOnboarding(false);\r\n setValidatedBeeRequired(false);\r\n }}\r\n name=\"bee-required\"\r\n label=\"No\"\r\n />\r\n
    \r\n {beeRequiredForOnboarding === true\r\n ? (\r\n \r\n \r\n Validated B-BBEE documents only?\r\n \r\n { setValidatedBeeRequired(true); }}\r\n name=\"bee-validated\"\r\n label=\"Yes\"\r\n />\r\n { setValidatedBeeRequired(false); }}\r\n name=\"bee-validated\"\r\n label=\"No\"\r\n />\r\n \r\n )\r\n : null}\r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default forwardRef(CompanyInformationTab);\r\n","import React from \"react\";\r\n\r\nconst ComplianceTab = () => (\r\n

    Compliance

    \r\n);\r\n\r\nexport default ComplianceTab;\r\n","import React from \"react\";\r\n\r\nconst ManageUsersTab = () => (\r\n

    Manage Users

    \r\n);\r\n\r\nexport default ManageUsersTab;\r\n","import axios from \"axios\";\r\nimport { AddOrUpdateConfigurationSupplierTypeMessage } from \"./AddOrUpdateConfigurationSupplierTypeMessage\";// eslint-disable-line no-unused-vars\r\nimport { makeRequestAsync } from \"../util\";\r\nimport { ConfigurationSupplierTypeMessage } from \"./ConfigurationSupplierTypeMessage\";// eslint-disable-line no-unused-vars\r\n\r\nexport const getConfigurationSupplierTypes = async () => {\r\n const url = \"api/enterprise/supplierTypes\";\r\n return await makeRequestAsync(() => axios\r\n .get(url)) as Promise>;\r\n};\r\n\r\nexport const getConfigurationSuppilerType = async (supplierTypeId: number) => {\r\n const url = `api/enterprise/supplierTypes/${supplierTypeId}`;\r\n return await makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n};\r\n\r\nexport const addOrUpdateConfigurationSupplierType = async (message : AddOrUpdateConfigurationSupplierTypeMessage) => {\r\n const url = \"api/enterprise/supplierTypes\";\r\n return await makeRequestAsync(() => axios\r\n .post(url, message)) as Promise;\r\n};\r\n\r\nexport const deleteConfigurationSuppilerType = async (supplierTypeId: number) => {\r\n const url = `api/enterprise/supplierTypes/${supplierTypeId}`;\r\n return await makeRequestAsync(() => axios.delete(url)) as Promise;\r\n};\r\n","import {\r\n DataFeatures,\r\n FlagEnumSelectorInput,\r\n Form,\r\n // eslint-disable-next-line no-unused-vars\r\n FormRef,\r\n ModalPopup, Spinner, TextInput,\r\n DataFeaturesDisplay,\r\n} from \"isuppli-react-components\";\r\nimport React, {\r\n Fragment, useEffect, useRef, useState,\r\n} from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { ConfigurationSupplierTypeMessage } from \"../../../http/SelfConfiguration/ConfigurationSupplierTypeMessage\";// eslint-disable-line no-unused-vars\r\nimport { addOrUpdateConfigurationSupplierType, getConfigurationSuppilerType } from \"../../../http/SelfConfiguration/SupplierTypesConfigApi\";\r\nimport OnboardingApproverLevels, { OnboardingApproverLevelsDisplay } from \"../../../Util/Enumerators/onboardingApproverLevel\";\r\n\r\nconst AddOrEditSupplierTypeModal = ({\r\n supplierTypeId,\r\n onCloseCallback,\r\n onSubmitCallback,\r\n isBankingGloballyRequired,\r\n}: {\r\n supplierTypeId?: number,\r\n onCloseCallback: () => void,\r\n onSubmitCallback: (updatedData: ConfigurationSupplierTypeMessage) => void,\r\n isBankingGloballyRequired: boolean,\r\n}) => {\r\n const [supplierName, setSupplierName] = useState(\"\");\r\n const [mtoApproverLevels, setMtoApproverLevels] = useState(OnboardingApproverLevels.None);\r\n const [dataFeatures, setDataFeatures] = useState(DataFeatures.None);\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n if (supplierTypeId != null && supplierTypeId > 0) {\r\n const data = await getConfigurationSuppilerType(supplierTypeId);\r\n setSupplierName(data.name);\r\n setMtoApproverLevels(data.onboardingApproverLevels);\r\n setDataFeatures(data.dataFeatures);\r\n }\r\n setLoading(false);\r\n } catch {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n\r\n loader();\r\n }, [supplierTypeId, showError]);\r\n\r\n const formRef = useRef(null);\r\n const handleSubmitConfigSupplierType = async () => {\r\n if (!formRef.current?.isValid()) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n try {\r\n const data = {\r\n id: supplierTypeId,\r\n name: supplierName,\r\n onboardingApproverLevels: mtoApproverLevels,\r\n dataFeatures,\r\n };\r\n const savedSupplierTypeId = await addOrUpdateConfigurationSupplierType(data);\r\n setLoading(false);\r\n data.id = savedSupplierTypeId;\r\n onSubmitCallback(data as ConfigurationSupplierTypeMessage);\r\n } catch {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n\r\n const disabledDataFeatures: { [index: number]: string } = {\r\n };\r\n if (isBankingGloballyRequired) {\r\n disabledDataFeatures[DataFeatures.BankingDetails] = \"Banking details are already required for all supplier types.\";\r\n }\r\n\r\n return (\r\n \r\n 0 ? \"Edit supplier type\" : \"Add a new supplier type\"}\r\n buttons={\r\n [\r\n {\r\n key: \"submit\",\r\n label: \"Submit\",\r\n onClick: () => handleSubmitConfigSupplierType(),\r\n color: \"primary\",\r\n },\r\n ]\r\n }\r\n >\r\n {\r\n loading ? \r\n : (\r\n \r\n
    \r\n
    \r\n
    \r\n setSupplierName(name)}\r\n />\r\n
    \r\n
    \r\n setMtoApproverLevels(selectedApproverLevels)}\r\n />\r\n
    \r\n
    \r\n setDataFeatures(selectedDataFeatures)}\r\n enumValuesToDisable={disabledDataFeatures}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddOrEditSupplierTypeModal;\r\n","import React, { Fragment, useState, useEffect } from \"react\";\r\nimport {\r\n BasicTable,\r\n ActionsDropDown,\r\n ActionsDropDownItem,\r\n WithFeature, SystemFeatures,\r\n UtilButton, useToast, Spinner,\r\n selectedFlagEnumToString,\r\n DataFeatures,\r\n DataFeaturesDisplay,\r\n useSystemFeatureCheck,\r\n} from \"isuppli-react-components\";\r\nimport { deleteConfigurationSuppilerType, getConfigurationSupplierTypes } from \"../../../http/SelfConfiguration/SupplierTypesConfigApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ConfigurationSupplierTypeMessage } from \"../../../http/SelfConfiguration/ConfigurationSupplierTypeMessage\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport AddOrEditSupplierTypeModal from \"./AddOrEditSupplierTypeModal\";\r\nimport OnboardingApproverLevels, { OnboardingApproverLevelsDisplay } from \"../../../Util/Enumerators/onboardingApproverLevel\";\r\n\r\nconst SupplierTypeConfig = (\r\n {\r\n isBankingGloballyRequired,\r\n }\r\n :\r\n {\r\n isBankingGloballyRequired: boolean\r\n }\r\n) => {\r\n const [configSupplierTypes, setConfigSupplierTypes] = useState>([]);\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n const [loadingTable, setLoadingTable] = useState(false);\r\n const [showAddSupplierTypeModal, setShowAddSupplierTypeModal] = useState(false);\r\n const [editSupplierTypeId, setEditSupplierTypeId] = useState(undefined);\r\n const hasFeature = useSystemFeatureCheck();\r\n const showToast = useToast();\r\n\r\n const editSupplierType = (supplierTypeId: number) => {\r\n setEditSupplierTypeId(supplierTypeId);\r\n setShowAddSupplierTypeModal(true);\r\n };\r\n\r\n useEffect(() => {\r\n setLoadingTable(true);\r\n const loader = async () => {\r\n try {\r\n const supplierTypesConfig = await getConfigurationSupplierTypes();\r\n setConfigSupplierTypes(supplierTypesConfig);\r\n setLoadingTable(false);\r\n } catch {\r\n setLoadingTable(false);\r\n showError();\r\n }\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const addNewSupplierType = () => {\r\n setShowAddSupplierTypeModal(true);\r\n };\r\n\r\n const handleCloseSupplierTypeModal = () => {\r\n setShowAddSupplierTypeModal(false);\r\n setEditSupplierTypeId(undefined);\r\n };\r\n\r\n const handleSubmitSupplierType = (submitedSupplierTypeData: ConfigurationSupplierTypeMessage) => {\r\n const exisitingRecord = configSupplierTypes.find((x) => x.id === submitedSupplierTypeData.id);\r\n let toastMessage = \"\";\r\n if (exisitingRecord == null) {\r\n toastMessage = \"New supplier type configuration added successfully\";\r\n setConfigSupplierTypes((prevState) => [...prevState, submitedSupplierTypeData]);\r\n } else {\r\n toastMessage = \"Supplier type configuration updated successfully\";\r\n setConfigSupplierTypes((prevState) => prevState.map((st) => (st.id === exisitingRecord.id\r\n ? submitedSupplierTypeData\r\n : st)));\r\n }\r\n setShowAddSupplierTypeModal(false);\r\n showToast(toastMessage);\r\n setEditSupplierTypeId(undefined);\r\n };\r\n\r\n const handleDeleteSupplierType = async (supplierTypeId: number) => {\r\n setLoading(true);\r\n try {\r\n await deleteConfigurationSuppilerType(supplierTypeId);\r\n showToast(\"Supplier type configuration deleted successfully!\");\r\n setConfigSupplierTypes((prevState) => prevState.filter((st) => st.id !== supplierTypeId));\r\n setLoading(false);\r\n } catch {\r\n showError();\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {\r\n loading && \r\n }\r\n {\r\n showAddSupplierTypeModal && (\r\n \r\n )\r\n }\r\n

    Configure My Supplier Types

    \r\n [\r\n {\r\n key: `Name_${st.id}`,\r\n value: st.name,\r\n },\r\n {\r\n key: `MTOApproverLevels_${st.id}`,\r\n value: selectedFlagEnumToString({\r\n value: st.onboardingApproverLevels,\r\n enumToUse: OnboardingApproverLevels,\r\n defaultEnumValueForEmtpySelection: OnboardingApproverLevels.None,\r\n enumDisplayValues: OnboardingApproverLevelsDisplay,\r\n }),\r\n },\r\n {\r\n key: `AdditionalSupplierData_${st.id}`,\r\n value: selectedFlagEnumToString({\r\n value: st.dataFeatures,\r\n enumToUse: DataFeatures,\r\n defaultEnumValueForEmtpySelection: DataFeatures.None,\r\n enumDisplayValues: DataFeaturesDisplay,\r\n }),\r\n },\r\n {\r\n key: `actions_${st.id}`,\r\n valueTemplate: () => (\r\n \r\n editSupplierType(st.id)}\r\n >\r\n Edit\r\n \r\n handleDeleteSupplierType(st.id)}\r\n >\r\n Delete\r\n \r\n \r\n ),\r\n },\r\n ])}\r\n />\r\n \r\n ADD NEW SUPPLIER TYPE\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierTypeConfig;\r\n","import {\r\n Spinner,\r\n Form,\r\n // eslint-disable-next-line no-unused-vars\r\n FormRef,\r\n RadioButtonInput,\r\n WithFeature,\r\n SystemFeatures,\r\n UtilButton,\r\n useSystemFeatureCheck,\r\n ConfirmationModal,\r\n} from \"isuppli-react-components\";\r\nimport React, {\r\n forwardRef,\r\n // eslint-disable-next-line no-unused-vars\r\n ForwardRefRenderFunction,\r\n Fragment, useEffect, useImperativeHandle, useRef, useState,\r\n} from \"react\";\r\nimport { FormGroup } from \"reactstrap\";\r\nimport SupplierTypeConfig from \"../../../../Containers/CompanyConfiguration/Onboarding/SupplierTypesConfig\";\r\nimport SupplierImportModal from \"../../../../Containers/SupplierImportModal/SupplierImportModal\";\r\n\r\nimport useShowError from \"../../../../Hooks/useShowError\";\r\nimport { getOnboardingConfiguration, saveOnboardingConfiguration } from \"../../../../http/EnterpriseConfiguration/enterpriseConfiguration\";\r\nimport VendorNumberOrigin from \"../../../../Util/Enumerators/vendorNumberOriginEnum\";\r\n\r\nexport interface OnboardingTabRef {\r\n save: () => Promise\r\n}\r\n\r\nexport interface OnboardingTabProps {\r\n\r\n}\r\n\r\nconst OnboardingTab: ForwardRefRenderFunction = (\r\n _: OnboardingTabProps, ref\r\n) => {\r\n const showError = useShowError();\r\n const featureCheck = useSystemFeatureCheck();\r\n const [loading, setLoading] = useState(true);\r\n const formRef = useRef(null);\r\n const [vendorNumberOrigin, setVendorNumberOrigin] = useState();\r\n const [isBankingDetailsRequired, setIsBankingDetailsRequired] = useState();\r\n const [canSuppliersEditProductSegments, setCanSuppliersEditProductSegments] = useState();\r\n const [showSupplierImportModal, setShowSupplierImportModal] = useState(false);\r\n const [showVendorNoConfigConfirmationModal, setShowVendorNoConfigConfirmationModal] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n\r\n try {\r\n const apiData = await getOnboardingConfiguration();\r\n setVendorNumberOrigin(apiData.vendorNumberOrigin);\r\n setIsBankingDetailsRequired(apiData.isBankingDetailsRequired);\r\n setCanSuppliersEditProductSegments(apiData.supplierCanEditClientSpecificCategories);\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError, setLoading]);\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: async () => {\r\n if (!(formRef.current?.isValid())) {\r\n formRef.current?.showValidation();\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n try {\r\n await saveOnboardingConfiguration({\r\n vendorNumberOrigin: vendorNumberOrigin ?? VendorNumberOrigin.Autogenerated,\r\n isBankingDetailsRequired: isBankingDetailsRequired === true,\r\n supplierCanEditClientSpecificCategories: canSuppliersEditProductSegments === true,\r\n });\r\n } catch (error) {\r\n showError();\r\n }\r\n\r\n setLoading(false);\r\n },\r\n }));\r\n\r\n return (\r\n \r\n

    Onboarding

    \r\n {loading && }\r\n {\r\n showVendorNoConfigConfirmationModal\r\n && (\r\n setShowVendorNoConfigConfirmationModal(false)}\r\n onProceedClick={() => setVendorNumberOrigin(VendorNumberOrigin.ManualAssignment)}\r\n description=\"It is important to note that once you save this configuration, it cannot be reverted.\r\n In order to adjust this at a later time, you will need to contact B1SA Support for configuration advice\"\r\n />\r\n )\r\n }\r\n
    \r\n \r\n \r\n How are your suppliers' vendor number's created?\r\n { setVendorNumberOrigin(VendorNumberOrigin.Autogenerated); }}\r\n name=\"vendorNumberOrigin\"\r\n label=\"Automatically assign the company's B1 LINK URN as my vendor number.\"\r\n />\r\n { setVendorNumberOrigin(VendorNumberOrigin.ERPIntegration); }}\r\n name=\"vendorNumberOrigin\"\r\n label=\"I will provide my own ERP vendor number through integration.\"\r\n />\r\n { setShowVendorNoConfigConfirmationModal(true); }}\r\n name=\"vendorNumberOrigin\"\r\n label=\"I will manually submit my own vendor number.\"\r\n />\r\n \r\n \r\n \r\n \r\n Is banking details required for suppliers?\r\n { setIsBankingDetailsRequired(true); }}\r\n name=\"bankingRequired\"\r\n label=\"Yes\"\r\n inline\r\n />\r\n { setIsBankingDetailsRequired(false); }}\r\n name=\"bankingRequired\"\r\n label=\"No\"\r\n inline\r\n />\r\n \r\n \r\n \r\n \r\n Should suppliers be allowed to edit their MTO Company Products and Segments ?\r\n { setCanSuppliersEditProductSegments(true); }}\r\n name=\"supplierCanEditProductSegments\"\r\n label=\"Yes\"\r\n inline\r\n />\r\n { setCanSuppliersEditProductSegments(false); }}\r\n name=\"supplierCanEditProductSegments\"\r\n label=\"No\"\r\n inline\r\n />\r\n \r\n \r\n
    \r\n\r\n setShowSupplierImportModal(true)}\r\n >\r\n UPLOAD MY SUPPLIERS\r\n \r\n
    \r\n {\r\n showSupplierImportModal\r\n && (\r\n {\r\n setShowSupplierImportModal(false);\r\n }}\r\n />\r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\nexport default forwardRef(OnboardingTab);\r\n","import React, {\r\n Fragment, useRef, useState,\r\n} from \"react\";\r\nimport {\r\n PageHeading,\r\n PageContentWithButtons,\r\n Page,\r\n Tabs,\r\n Tab,\r\n SystemFeatures,\r\n useToast,\r\n} from \"isuppli-react-components\";\r\nimport CompanyInformationTab, {\r\n // eslint-disable-next-line no-unused-vars\r\n CompanyInformationTabRef,\r\n} from \"./CompanyInformationTab/CompanyInformationTab\";\r\nimport ComplianceTab from \"./ComplianceTab/ComplianceTab\";\r\nimport ManageUsersTab from \"./ManageUsersTab/ManageUsersTab\";\r\nimport OnboardingTab, {\r\n // eslint-disable-next-line no-unused-vars\r\n OnboardingTabRef,\r\n} from \"./OnboardingTab/OnboardingTab\";\r\nimport navMenuItems from \"../../../Util/menuItems\";\r\n\r\nconst Configuration = () => {\r\n const onboardingTabRef = useRef(null);\r\n const companyInformationTabRef = useRef(null);\r\n\r\n const [currentTab, setCurrentTab] = useState(\"\");\r\n const showToast = useToast();\r\n\r\n const onSave = async () => {\r\n // trigger save in the given tab contents\r\n if (currentTab === \"onboarding\") {\r\n await onboardingTabRef.current?.save();\r\n showToast(\"Onboarding configuration saved\");\r\n }\r\n if (currentTab === \"company-information\") {\r\n await companyInformationTabRef.current?.save();\r\n showToast(\"Company information saved\");\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Configuration;\r\n","import React from \"react\";\r\nimport { SystemFeatures, FeatureRoute } from \"isuppli-react-components\";\r\nimport { Redirect, Switch } from \"react-router-dom\";\r\n\r\nimport AddressContactInfo from \"../Sections/MyCompany/AddressContactInfo\";\r\nimport SupplierInfo from \"../Sections/MyCompany/SupplierInfo\";\r\nimport Compliance from \"../Sections/MyCompany/Compliance\";\r\nimport BeePractice from \"../Sections/MyCompany/BeePractice\";\r\nimport MyClients from \"../Sections/MyCompany/MyClients\";\r\nimport ProductService from \"../Sections/MyCompany/ProductService\";\r\nimport BankInfo from \"../Sections/MyCompany/BankInfo\";\r\nimport EnterpriseConfigView from \"./EnterpriseConfigView\";\r\nimport Agreements from \"../Sections/MyCompany/Agreements\";\r\n\r\nimport UserManagement from \"../Sections/Administration/UserManagement/UserManagement\";\r\n\r\nimport Subscription from \"../Sections/Subscription/Subscription\";\r\nimport EditSubscription from \"../Sections/Subscription/EditSubscription/EditSubscription\";\r\nimport Configuration from \"../Sections/Administration/Configuration/Configuration\";\r\n\r\nfunction MyCompanyView() {\r\n return (\r\n
    \r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n\r\n \r\n\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default MyCompanyView;\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ConfirmationModal } from \"isuppli-react-components\";\r\nimport {\r\n showErrorDialog,\r\n showLoadingScreen,\r\n hideLoadingScreen,\r\n setDataFeatures,\r\n} from \"../Store/actions\";\r\n\r\nimport {\r\n getOnboardingInvitation,\r\n linkOnboardingRequestToUserCompany,\r\n rejectOnboardingRequest,\r\n getCompanyDataFeatures,\r\n} from \"../http/index\";\r\n\r\nimport OnboardingInvitationDetails from \"../Sections/Registration/OnboardInvitationDetails\";\r\nimport { checkHttpStatus } from \"../http/httpHelpers\";\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n showErrorDialog: () => {\r\n dispatch(showErrorDialog(true));\r\n },\r\n showLoadingScreen: (msg) => {\r\n dispatch(showLoadingScreen(msg));\r\n },\r\n hideLoadingScreen: () => {\r\n dispatch(hideLoadingScreen());\r\n },\r\n setDataFeatures: (dataFeatures) => {\r\n dispatch(setDataFeatures(dataFeatures));\r\n },\r\n});\r\n\r\nclass OnboardingInvitationCheck extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n invitation: {},\r\n showOnboardingInvitationModal: false,\r\n showOboardingIvitationFailure: false,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const invitation = await getOnboardingInvitation();\r\n if (invitation.length === 0) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n invitation,\r\n showOnboardingInvitationModal: true,\r\n });\r\n }\r\n\r\n async onRejectOnboardingInvitation() {\r\n this.props.showLoadingScreen();\r\n try {\r\n await rejectOnboardingRequest(this.state.invitation.invitationId);\r\n const dataFeatures = await getCompanyDataFeatures();\r\n this.props.setDataFeatures(dataFeatures.dataFeatures);\r\n } catch (error) {\r\n this.props.hideLoadingScreen();\r\n throw error;\r\n }\r\n this.props.hideLoadingScreen();\r\n }\r\n\r\n async onAcceptOnboardingInvitation(invitationId) {\r\n try {\r\n await linkOnboardingRequestToUserCompany(invitationId);\r\n } catch (error) {\r\n if (checkHttpStatus(error, 403)) {\r\n // The invitation did not match the company details\r\n this.setState({\r\n showOboardingIvitationFailure: true,\r\n });\r\n return;\r\n }\r\n\r\n this.props.showErrorDialog();\r\n }\r\n }\r\n\r\n hideError() {\r\n this.setState({\r\n showOboardingIvitationFailure: false,\r\n });\r\n }\r\n\r\n onCloseHandler() {\r\n this.setState({\r\n showOnboardingInvitationModal: false,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.showOnboardingInvitationModal && (\r\n this.onAcceptOnboardingInvitation(\r\n this.state.invitation.invitationId\r\n )}\r\n onReject={() => this.onRejectOnboardingInvitation(this.state.invitation.invitationId)}\r\n onClose={() => this.onCloseHandler()}\r\n />\r\n )}\r\n {this.state.showOboardingIvitationFailure && (\r\n this.hideError()}\r\n onProceedClick={() => {}}\r\n />\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(OnboardingInvitationCheck);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport { SystemFeatures } from \"isuppli-react-components\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport useSignalR, { SignalRNotifications } from \"../../Hooks/useSignalR\";\r\nimport { setSubscriptionInfo } from \"../../Store/actions\";\r\n\r\ninterface SubscriptionUpdateMessage {\r\n subscriptionTierId: number,\r\n subscriptionName: string,\r\n allowedFeatures: SystemFeatures,\r\n}\r\n\r\nconst SubscriptionCheck = () => {\r\n const dispatch = useDispatch();\r\n\r\n useSignalR(SignalRNotifications.SubscriptionUpdates, (message) => {\r\n dispatch(setSubscriptionInfo(message));\r\n });\r\n return null;\r\n};\r\n\r\nexport default SubscriptionCheck;\r\n","import { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nclass ScrollToTop extends Component {\r\n componentDidUpdate(prevProps) {\r\n if (this.props.location !== prevProps.location) {\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n render() {\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default withRouter(ScrollToTop);\r\n","import React, { Component, Fragment } from \"react\";\r\nimport {\r\n ConfirmationModal, ModalPopup, BasicTable, SystemFeatures,\r\n} from \"isuppli-react-components\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { clearApiErrors, showErrorDialog } from \"../Store/actions\";\r\n\r\nconst mapStateToProps = (state) => ({\r\n showError: state.showError,\r\n apiErrors: state.apiErrors,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n hideError: () => {\r\n dispatch(showErrorDialog(false));\r\n },\r\n clearApiErrors: () => {\r\n dispatch(clearApiErrors());\r\n },\r\n});\r\n\r\nclass AppErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError() {\r\n return { hasError: true };\r\n }\r\n\r\n closeErrorModal() {\r\n this.props.hideError();\r\n this.setState({\r\n hasError: false,\r\n });\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n // eslint-disable-next-line no-console\r\n console.error({ error, errorInfo });\r\n }\r\n\r\n render() {\r\n const errorModalHeader = this.props.apiErrors.errors.length > 1 ? \"Something(s) went wrong\" : \"Something went wrong\";\r\n const errorModal = (this.props.apiErrors.errors.length > 0\r\n ? (\r\n
    \r\n {\r\n this.closeErrorModal();\r\n this.props.clearApiErrors();\r\n },\r\n color: \"primary\",\r\n }]}\r\n >\r\n [\r\n {\r\n key: `${error.traceId}_code`,\r\n valueTemplate: () => (\r\n \r\n {error.status}\r\n \r\n ),\r\n },\r\n {\r\n key: `${error.traceId}_error`,\r\n valueTemplate: () => (\r\n \r\n {error.title}\r\n \r\n ),\r\n },\r\n {\r\n key: `${error.traceId}_message`,\r\n\r\n valueTemplate: () => (\r\n \r\n {error.additionalDetails?.message?.toString()}\r\n \r\n ),\r\n },\r\n {\r\n key: `${error.traceId}_subSystem`,\r\n value: error.additionalDetails?.subSystem,\r\n },\r\n ])}\r\n subRows={\r\n this.props.apiErrors?.errors?.map((error) => (\r\n
    \r\n

    \r\n Trace Id: \r\n {error.traceId}\r\n

    \r\n
    \r\n

    \r\n URL: \r\n {error.url}\r\n

    \r\n
    \r\n

    \r\n StackTrace:\r\n {error.additionalDetails?.stackStrace}\r\n

    \r\n
    \r\n ))\r\n }\r\n />\r\n \r\n
    \r\n\r\n )\r\n : (\r\n this.closeErrorModal()}\r\n onToggleModal={() => this.closeErrorModal()}\r\n proceedButtonText=\"OK\"\r\n hasCancel={false}\r\n description=\"An error occurred. Please try again or contact your system administrator.\"\r\n />\r\n )\r\n );\r\n\r\n return (\r\n \r\n {this.props.children}\r\n {this.state.hasError || this.props.showError ? (\r\n errorModal\r\n ) : null}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AppErrorBoundary);\r\n","import React, { Fragment, useEffect } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { ConfirmationModal } from \"isuppli-react-components\";\r\nimport { useLocation } from \"react-router\";\r\nimport { getUserBasicDetails } from \"../../http/index\";\r\nimport { clearNotAuthenticated } from \"../../Store/actions\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../Store/ReduxState\";\r\n\r\nconst NotAuthenticatedHandler = ({ children }: {children: React.ReactChildren}) => {\r\n const authenticationState = useSelector((state: ReduxState) => state.authentication);\r\n const dispatch = useDispatch();\r\n const location = useLocation();\r\n const userBasicDetails = useSelector((state: ReduxState) => state.loggedInUserDetails);\r\n if (location.pathname === \"/re-authenticate-callback\") {\r\n window.close();\r\n window.opener.reAuthenticateCallback();\r\n }\r\n\r\n useEffect(() => {\r\n // setup child view callback\r\n (window as any).reAuthenticateCallback = async () => {\r\n // check if company has changed\r\n const newUserDetails = await getUserBasicDetails();\r\n if (userBasicDetails.companyId !== newUserDetails.companyId) {\r\n window.location.reload();\r\n } else {\r\n authenticationState.retryHandlers.forEach((retry) => {\r\n retry();\r\n });\r\n }\r\n\r\n dispatch(clearNotAuthenticated());\r\n };\r\n }, [authenticationState, dispatch, userBasicDetails.companyId]);\r\n return (\r\n \r\n {!authenticationState.isAuthenticated && (\r\n { }}\r\n onProceedClick={() => {\r\n window.open(\"Account/ReAuthenticate\", \"_blank\", \"width=450, height=700\");\r\n }}\r\n />\r\n )}\r\n {authenticationState.forceLogout && (\r\n { }}\r\n onProceedClick={() => {\r\n window.location.href = \"/account/logout\";\r\n }}\r\n />\r\n )}\r\n {children}\r\n \r\n\r\n );\r\n};\r\n\r\nexport default NotAuthenticatedHandler;\r\n","/* eslint-disable no-unused-vars */\r\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\r\nimport React, { ReactNode, useEffect } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { ApiErrorCode, ProblemDetails } from \"isuppli-react-components\";\r\nimport { addApiError } from \"../../Store/actions\";\r\n\r\nconst AxiosInterceptor: React.FunctionComponent<{ children: ReactNode }> = (props) => {\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n axios.interceptors.response.use(\r\n (response: AxiosResponse) => response,\r\n // eslint-disable-next-line consistent-return\r\n (error: AxiosError) => {\r\n const paramStart = error.config?.url?.indexOf(\"?\");\r\n const endpointUrl = paramStart == null || paramStart <= 0 ? error.config?.url : error.config?.url?.substring(0, paramStart);\r\n\r\n const axiosErrorResponse = {\r\n code: error.response?.status,\r\n url: endpointUrl,\r\n message: error.response?.data,\r\n };\r\n\r\n let problemDetails: ProblemDetails = { ...error.response?.data, url: endpointUrl };\r\n if (problemDetails.code == null && axiosErrorResponse.code === 404) {\r\n problemDetails = {\r\n ...axiosErrorResponse,\r\n status: 404,\r\n code: ApiErrorCode.EntityNotFound,\r\n title: \"Not Found\",\r\n traceId: \"n/a\",\r\n additionalDetails: {\r\n message: axiosErrorResponse?.message,\r\n subSystem: \"Api Gateway\",\r\n },\r\n };\r\n }\r\n\r\n switch (problemDetails.code) {\r\n case ApiErrorCode.EntityNotFound:\r\n dispatch(addApiError(problemDetails));\r\n break;\r\n case ApiErrorCode.Unknown:\r\n dispatch(addApiError(problemDetails));\r\n break;\r\n case ApiErrorCode.ExistsExceptions:\r\n dispatch(addApiError(problemDetails));\r\n break;\r\n case ApiErrorCode.BadRequest:\r\n dispatch(addApiError(problemDetails));\r\n break;\r\n case ApiErrorCode.Conflict:\r\n dispatch(addApiError(problemDetails));\r\n break;\r\n default:\r\n // Do nothing and let specific custom business exception handling.\r\n }\r\n return Promise.reject(error);\r\n }\r\n );\r\n }, [dispatch]);\r\n\r\n return (\r\n <>\r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default AxiosInterceptor;\r\n","import {\r\n ISuppliDataRequirements,\r\n ISuppliAuthentication,\r\n ToastContainer,\r\n} from \"isuppli-react-components\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nimport AppErrorBoundary from \"./Containers/AppErrorBoundry\";\r\nimport NotAuthenticatedHandler from \"./Containers/NotAuthenticatedHandler/NotAuthenticatedHandler\";\r\nimport AxiosInterceptor from \"./Hooks/useAxiosError/AxiosInterceptor\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"./Store/ReduxState\";\r\n\r\nconst AppContent = ({ children }:{\r\n children: React.ReactChildren\r\n}) => {\r\n const dataFeatures = useSelector((state: ReduxState) => (state.dataFeatures));\r\n const allowedDataFeatures = useSelector((state: ReduxState) => (\r\n state.loggedInUserDetails.allowedFeatures));\r\n const subscriptionsAllowedFeaturesInfo = useSelector(\r\n (state: ReduxState) => (state.subscriptionsAllowedFeatures)\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AppContent;\r\n","/* eslint-disable no-undef */\r\nconst userMarketingInfoSubscriptionEnum = {\r\n /// \r\n /// Indicated that the user has not yet set their information\r\n /// \r\n /// \r\n /// Indicated that the user has not yet set their information\r\n /// \r\n None: 0,\r\n /// \r\n /// Indicates that the users has subscribed to marketing emails\r\n /// \r\n Subscribed: 1,\r\n /// \r\n /// Indicates that the users has not subscribed to marketing emails\r\n /// \r\n Unsubscribed: 2,\r\n};\r\n\r\nexport default userMarketingInfoSubscriptionEnum;\r\n","import React, {\r\n Fragment,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport {\r\n UtilButton,\r\n Line,\r\n useToast,\r\n Spinner,\r\n} from \"isuppli-react-components\";\r\nimport RadioSelector from \"../../Controls/RadioSelector\";\r\nimport { saveCommunicationPreference } from \"../../http/posts\";\r\nimport { getCommunicationPreference } from \"../../http/gets\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport receiveMarketingInfoEnum from \"../../Util/Enumerators/userMarketingInfoSubscriptionEnum\";\r\n\r\nconst CommunicationPreferencesSummary = () => {\r\n const [receiveMarketingInfo, setReceiveMarketingInfo] = useState(-1);\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n const showToast = useToast();\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const loader = async () => {\r\n const result = await getCommunicationPreference();\r\n setReceiveMarketingInfo(result === receiveMarketingInfoEnum.Subscribed ? 1 : 0);\r\n };\r\n loader();\r\n setLoading(false);\r\n }, [setReceiveMarketingInfo]);\r\n\r\n const onInputChange = (ev: Event) => {\r\n setReceiveMarketingInfo(Number((ev?.target as HTMLInputElement)?.value));\r\n };\r\n\r\n const onClickSave = async () => {\r\n setLoading(true);\r\n try {\r\n await saveCommunicationPreference(\r\n receiveMarketingInfo === 1\r\n ? receiveMarketingInfoEnum.Subscribed\r\n : receiveMarketingInfoEnum.Unsubscribed\r\n );\r\n setLoading(false);\r\n showToast(\"Communication Preferences Saved\");\r\n } catch (error) {\r\n setLoading(false);\r\n showError();\r\n throw error;\r\n }\r\n };\r\n\r\n return (\r\n \r\n {\r\n loading && \r\n }\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n SAVE\r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default CommunicationPreferencesSummary;\r\n","import React from \"react\";\r\n\r\nimport {\r\n PageHeading,\r\n} from \"isuppli-react-components\";\r\nimport Loading from \"../Loading\";\r\n\r\nimport InfoPopup from \"../../Containers/InfoPopup\";\r\nimport navMenuItems from \"../../Util/menuItems\";\r\nimport CommunicationPreferenceSummary from \"../../Containers/User/CommunicationPreferenceSummary\";\r\n\r\nconst CommunicationPreference = () => (\r\n
    \r\n\r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n);\r\n\r\nexport default CommunicationPreference;\r\n","import React from \"react\";\r\n\r\nconst SettingsView = () =>

    Settings

    ;\r\n\r\nexport default SettingsView;\r\n","import React from \"react\";\r\nimport { Switch, Route } from \"react-router-dom\";\r\nimport CommunicationPreference from \"../Sections/User/CommunicationPreference\";\r\n\r\nimport SettingsView from \"./SettingsView\";\r\n\r\nfunction UserView() {\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default UserView;\r\n","/* eslint-disable no-restricted-properties */\r\n/* eslint-disable no-undef */\r\nimport \"./Styles/General.css\";\r\nimport \"./Styles/Sections.css\";\r\nimport \"./Styles/Containers.css\";\r\nimport \"./Styles/Controls.css\";\r\nimport \"./Styles/LoadingIndicator.css\";\r\nimport \"./Styles/Overrides.css\";\r\nimport \"./Styles/isuppli-table.css\";\r\nimport {\r\n Header,\r\n FeatureRoute,\r\n Spinner,\r\n Footer,\r\n} from \"isuppli-react-components\";\r\n\r\nimport React, { Component, Fragment } from \"react\";\r\nimport { withRouter, Redirect, Switch } from \"react-router-dom\";\r\nimport { Provider } from \"react-redux\";\r\n\r\nimport NotificationMenuItem from \"./Containers/Header/NotificationMenuItem\";\r\nimport navMenuItems from \"./Util/menuItems\";\r\n\r\nimport RegistrationView from \"./Views/RegistrationView\";\r\nimport MyOfficeView from \"./Views/MyOfficeView\";\r\nimport MarketPlaceView from \"./Views/MarketPlaceView\";\r\nimport MyCompanyView from \"./Views/MyCompanyView\";\r\nimport DashboardView from \"./Views/DashboardView\";\r\n\r\nimport OnboardingInvitationCheck from \"./Containers/OnboardingInvitationCheck\";\r\nimport SubscriptionCheck from \"./Containers/SubscriptionCheck/SubscriptionCheck\";\r\nimport ScrollToTop from \"./Containers/ScrollToTop\";\r\nimport store from \"./Store\";\r\nimport AppContent from \"./AppContent\";\r\n\r\nimport {\r\n setUserBasicDetails,\r\n setCompanyConfiguration,\r\n setCompanyOutstandingInfo,\r\n setTokenDates,\r\n setDataFeatures,\r\n setSubscriptionAllowedFeatures,\r\n} from \"./Store/actions\";\r\n\r\nimport {\r\n getUserBasicDetails,\r\n getTermsAndConditionsAsync,\r\n getTokenExpiry,\r\n getCompanyDataFeatures,\r\n getCompanyConfiguration,\r\n getAllSubscriptionsAllowedFeatures,\r\n} from \"./http/index\";\r\n\r\nimport {\r\n getCompanyOutstandingInformation,\r\n} from \"./http/MyCompany/myCompanyAPI\";\r\n\r\nimport { checkHttpStatus } from \"./http/httpHelpers\";\r\nimport UserView from \"./Views/UserView\";\r\n\r\nclass App extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n loading: true,\r\n registrationDone: false,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n try {\r\n if (!this.state.loading) {\r\n this.setState({ loading: true });\r\n }\r\n\r\n const expiresAt = await getTokenExpiry({ bypassAuthCheck: true });\r\n\r\n const companyDataFeatures = await getCompanyDataFeatures();\r\n store.dispatch(setDataFeatures(companyDataFeatures.dataFeatures));\r\n\r\n const subscriptionAllowedFeatures = await getAllSubscriptionsAllowedFeatures();\r\n store.dispatch(setSubscriptionAllowedFeatures(subscriptionAllowedFeatures));\r\n\r\n // This API call will fail if it's a new registration without\r\n // a company being associated with the user\r\n const userDetails = await getUserBasicDetails();\r\n // 1. Allowed features must be a BigInt\r\n // 2. JavaScript fails to convert with greater than 53 bits with enough precision. see: https://shorturl.at/hpD58\r\n userDetails.allowedFeatures = BigInt(userDetails.allowedFeaturesString);\r\n store.dispatch(setUserBasicDetails(userDetails));\r\n store.dispatch(setTokenDates(new Date(), new Date(expiresAt)));\r\n\r\n const companyConfiguration = await getCompanyConfiguration();\r\n store.dispatch(setCompanyConfiguration(companyConfiguration));\r\n\r\n if (!userDetails.accountSuspended) {\r\n const companyOutstandingInfo = await getCompanyOutstandingInformation();\r\n store.dispatch(setCompanyOutstandingInfo(companyOutstandingInfo));\r\n }\r\n\r\n const termsAndConditions = await getTermsAndConditionsAsync(\r\n userDetails.companyId\r\n );\r\n\r\n if (termsAndConditions.agreeTC) {\r\n // Registration is done, keep current route\r\n this.setState({ registrationDone: true });\r\n if (userDetails.accountSuspended) {\r\n // Redirect to edit subscription\r\n this.props.history.replace(\"/mycompany/subscription/edit\");\r\n }\r\n } else {\r\n // Redirect to registration\r\n this.props.history.replace(\"/registration/supinfo\");\r\n }\r\n } catch (err) {\r\n if (checkHttpStatus(err, 404)) {\r\n // the user does not have a company, therefore he has not registered\r\n this.props.history.replace(\"/registration/supinfo\");\r\n this.setState({ loading: false });\r\n }\r\n if (checkHttpStatus(err, 401)) {\r\n // user is not authenticated, redirect to login\r\n window.location = `/account/login?returnUrl=${encodeURIComponent(window.location.href)}`;\r\n }\r\n }\r\n if (this.state.loading) {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n render() {\r\n const state = store.getState();\r\n const content = this.state.registrationDone ? (\r\n \r\n \r\n \r\n { window.location.href = \"/account/logout\"; }}\r\n onHeaderLogoClick={() => this.props.history.push(\"/dashboard\")}\r\n helpLink=\"/redirect/helpandsupport\"\r\n >\r\n \r\n \r\n
    \r\n \r\n {/* Removes trailing slashes from urls */}\r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n x.isUserMenu === true)}\r\n onLogout={() => { window.location.href = \"/account/logout\"; }}\r\n onHeaderLogoClick={() => this.props.history.push(\"/registration/supinfo\")}\r\n helpLink=\"/redirect/helpandsupport\"\r\n />\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n {this.state.loading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n content\r\n )}\r\n
    \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(App);\r\n","import \"isuppli-react-components/dist/isuppli-bootstrap.css\";\r\nimport \"isuppli-react-components/dist/index.css\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport registerServiceWorker from \"./registerServiceWorker\";\r\n\r\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\r\nconst rootElement = document.getElementById(\"root\");\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\nregisterServiceWorker();\r\n","import { Spinner } from \"isuppli-react-components\";\r\nimport React from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport Styles from \"./DashboardSuppliersSummary.module.scss\";\r\n\r\nconst DashboardSupplierSummaryCard = ({\r\n title,\r\n value,\r\n changePercentage,\r\n background = \"attention\",\r\n linkUrl,\r\n loading = false,\r\n}: {\r\n title:string,\r\n value: number,\r\n changePercentage: number | null | undefined,\r\n background?: \"attention\" | \"info\",\r\n linkUrl: string,\r\n loading?: boolean,\r\n}) => {\r\n const history = useHistory();\r\n const onClickHandler = () => history.push(linkUrl);\r\n\r\n return (\r\n onClickHandler()}\r\n className={`p-3 d-flex flex-column rounded\r\n ${background === \"info\" ? Styles.Info : Styles.Attention}\r\n ${Styles.height}`}\r\n >\r\n
    \r\n

    {title}

    \r\n
    \r\n
    \r\n {loading ? :

    {value}

    }\r\n
    \r\n
    \r\n {\r\n changePercentage == null\r\n ? (\r\n

    \r\n -\r\n

    \r\n ) : (\r\n

    \r\n {`${changePercentage}% `}\r\n From last week\r\n

    \r\n )\r\n }\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DashboardSupplierSummaryCard;\r\n","import axios from \"axios\";\r\n\r\nimport {\r\n DashboardSupplierSummaryMessage, // eslint-disable-line no-unused-vars\r\n DashboardBeeClassificationSummary, // eslint-disable-line no-unused-vars\r\n DashboardRegulatoryComplianceSummaryMessage, // eslint-disable-line no-unused-vars\r\n DashboardBulletinBoardSummary, // eslint-disable-line no-unused-vars\r\n DashboardReportSummary, // eslint-disable-line no-unused-vars\r\n DashboardSupplierStatusSummary, // eslint-disable-line no-unused-vars\r\n} from \"./Models/Models\";\r\nimport { makeRequestAsync } from \"../util\";\r\n\r\nexport async function getDashboardSuppliersSummary() {\r\n const url = \"api/dashboard/suppliers\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getDashboardBeeSummary() {\r\n const url = \"api/dashboard/bee\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getDashboardComplianceSummary() {\r\n const url = \"api/dashboard/compliance\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getDashboardSupplierTypesSummary() {\r\n const url = \"api/dashboard/suppliertypes\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getBulletinBoardSummary() {\r\n const url = \"api/opportunities/dashboard/bulletinBoardSummary\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getDashboardSupportingDocumentsSummary() {\r\n const url = \"api/dashboard/documents\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getDashboardSupplierPackagesSummary() {\r\n const url = \"api/dashboard/packages\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getDashboardSupplierStatusSummary() {\r\n const url = \"api/dashboard/status\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n\r\nexport async function getDashboardOnboardingStatusSummary() {\r\n const url = \"api/dashboard/onboarding\";\r\n return makeRequestAsync(() => axios\r\n .get(url)) as Promise;\r\n}\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n d: \"M18.9 3.294a10.953 10.953 0 0 0-15.66 0c-4.32 4.392-4.32 11.53 0 15.922a10.953 10.953 0 0 0 15.66 0c4.32-4.392 4.32-11.53 0-15.922zm-.756 15.153c-3.888 3.953-10.206 3.953-14.148 0-3.888-3.953-3.888-10.376 0-14.384C7.884.11 14.202.11 18.144 4.063c3.888 3.953 3.888 10.431 0 14.384zm2.376 1.867l-1.08 1.098L25.92 28 27 26.902l-6.48-6.588z\"\n});\n\nvar SvgMagnifyingGlassWhite = function SvgMagnifyingGlassWhite(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 28,\n viewBox: \"0 0 27 28\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgMagnifyingGlassWhite, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/magnifying-glass-white.6bf6c057.svg\";\nexport { ForwardRef as ReactComponent };","import {\r\n Line, ShadowCard, Spinner, UtilButton,\r\n} from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getBulletinBoardSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardBulletinBoardSummary } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DashboardSummaryCard, { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\n\r\nenum BulletinFilterField {\r\n Active = 0, // eslint-disable-line no-unused-vars\r\n All = 1, // eslint-disable-line no-unused-vars\r\n UserBids = 2, // eslint-disable-line no-unused-vars\r\n NotParticipating = 3, // eslint-disable-line no-unused-vars\r\n Participating = 4, // eslint-disable-line no-unused-vars\r\n QuoteRequired = 5, // eslint-disable-line no-unused-vars\r\n QuoteSubmitted = 6, // eslint-disable-line no-unused-vars\r\n DecisionPending = 7, // eslint-disable-line no-unused-vars\r\n Awarded = 8, // eslint-disable-line no-unused-vars\r\n Denied = 9, // eslint-disable-line no-unused-vars\r\n Closed = 10, // eslint-disable-line no-unused-vars\r\n}\r\n\r\nconst BulletinBoardSummaryCard = () => {\r\n const [bulletinBoardData, setBulletinBoardData] = useState<\r\n DashboardBulletinBoardSummary>();\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n try {\r\n setLoading(true);\r\n const data = await getBulletinBoardSummary();\r\n setBulletinBoardData(data);\r\n setLoading(false);\r\n } catch (error) {\r\n setLoading(false);\r\n showError();\r\n }\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const rfxUrl = `${window.location.origin}/redirect/bulletinboard`;\r\n const bulletinBoardSummary = [\r\n {\r\n key: \"total\",\r\n value: bulletinBoardData?.total,\r\n },\r\n {\r\n key: \"active\",\r\n title: \"ACTIVE\",\r\n value: bulletinBoardData?.new,\r\n linkUrl: `${rfxUrl}?opportunityFilter=${BulletinFilterField.Active}`,\r\n newTab: true,\r\n },\r\n {\r\n key: \"closed\",\r\n title: \"CLOSED\",\r\n value: bulletinBoardData?.old,\r\n linkUrl: `${rfxUrl}?opportunityFilter=${BulletinFilterField.Closed}`,\r\n newTab: true,\r\n },\r\n {\r\n key: \"awarded\",\r\n title: \"AWARDED\",\r\n value: bulletinBoardData?.won,\r\n linkUrl: `${rfxUrl}?opportunityFilter=${BulletinFilterField.Awarded}`,\r\n newTab: true,\r\n },\r\n {\r\n key: \"denied\",\r\n title: \"DENIED\",\r\n value: bulletinBoardData?.lost,\r\n linkUrl: `${rfxUrl}?opportunityFilter=${BulletinFilterField.Denied}`,\r\n newTab: true,\r\n },\r\n {\r\n key: \"decisionPending\",\r\n title: \"DECISION PENDING\",\r\n value: bulletinBoardData?.pending,\r\n linkUrl: `${rfxUrl}?opportunityFilter=${BulletinFilterField.DecisionPending}`,\r\n newTab: true,\r\n },\r\n ] as DashboardSummaryItem[];\r\n\r\n const handleViewMoreClick = () => {\r\n window.location.href = rfxUrl;\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n

    BULLETIN BOARD

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {loading\r\n ? ()\r\n : (\r\n \r\n )}\r\n\r\n \r\n
    \r\n \r\n VIEW MORE\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default BulletinBoardSummaryCard;\r\n","import { UtilButton } from \"isuppli-react-components\";\r\nimport React, { Fragment } from \"react\";\r\nimport { useHistory } from \"react-router\";\r\n\r\nimport { ReactComponent as MagnifyingGlassWhiteSvg } from \"./magnifying-glass-white.svg\";\r\n\r\nconst SearchSupplierDatabaseSection = () => {\r\n const history = useHistory();\r\n\r\n return (\r\n \r\n { history.push(\"/marketplace/search\"); }}\r\n >\r\n \r\n {\" \"}\r\n Search supplier database\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SearchSupplierDatabaseSection;\r\n","import React from \"react\";\r\nimport { ShadowCard } from \"isuppli-react-components\";\r\nimport StarRatingInput from \"../../../Controls/StarRatingInput/StarRatingInput\";\r\n\r\nconst OverallRatingCard = (\r\n {\r\n rating,\r\n totalRatings,\r\n }\r\n :\r\n {\r\n rating: number,\r\n totalRatings: number,\r\n }\r\n) => (\r\n \r\n
    \r\n
    \r\n

    My Overall Rating

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\nexport default OverallRatingCard;\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport {\r\n ShadowCard,\r\n Line,\r\n UtilButton,\r\n Spinner,\r\n} from \"isuppli-react-components\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ChannelMessage, getChannelList, PageTypes } from \"../../../http/Messaging/messagesApi\";\r\nimport ChatChannelListSection from \"../../Messaging/ChatChannelListSection/ChatChannelListSection\";\r\n\r\nconst MessageSummaryCard = () => {\r\n const [messageSummary, setMessageSummary] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const messageChannelList = await getChannelList({\r\n limit: 5,\r\n pageType: PageTypes.From,\r\n });\r\n setMessageSummary(messageChannelList);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [setMessageSummary, setLoading, showError, history.location]);\r\n\r\n return (\r\n \r\n

    MESSAGES

    \r\n \r\n\r\n {loading ? : (\r\n
    \r\n
    \r\n {ChatChannelListSection({ messageCardList: messageSummary, timestampFormat: \"dd MMM-hh:mm\" })}\r\n
    \r\n \r\n
    \r\n { history.push(\"/marketplace/messaging\"); }}\r\n >\r\n VIEW MORE\r\n \r\n
    \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MessageSummaryCard;\r\n","import React from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport Styles from \"./DashboardSummaryItem.module.scss\";\r\n\r\nexport interface DashboardSummaryItem {\r\n key:string;\r\n title?: string;\r\n value: number;\r\n linkUrl?: string;\r\n redirect?:boolean;\r\n newTab?:boolean;\r\n}\r\n\r\nconst DashboardSummaryCard = ({\r\n heading,\r\n summaryItems = [],\r\n className = \"col-lg-6\",\r\n borderRight = false,\r\n borderBottom = false,\r\n}: {\r\n heading: string,\r\n summaryItems: DashboardSummaryItem[]\r\n className ?: string\r\n borderRight?: boolean,\r\n borderBottom?:boolean,\r\n}) => {\r\n const history = useHistory();\r\n const singleItem = summaryItems.length === 1 && summaryItems[0].title == null;\r\n const layout = summaryItems.map((item) => {\r\n if (item.linkUrl != null) {\r\n return (\r\n
    \r\n

    {item.title}

    \r\n
    \r\n {\r\n ev.preventDefault();\r\n if (item.linkUrl !== \"\" && item.linkUrl != null) {\r\n if (item.newTab) {\r\n window.open(item.linkUrl);\r\n } else {\r\n item.redirect === true\r\n ? window.location.href = item.linkUrl\r\n : history.push(item.linkUrl ?? \"\");\r\n }\r\n }\r\n }}\r\n >\r\n

    \r\n \r\n {item.value ?? \"-\"}\r\n \r\n

    \r\n \r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n

    {item.title}

    \r\n
    \r\n

    {item.value ?? \"-\"}

    \r\n
    \r\n );\r\n });\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {heading}

    \r\n
    \r\n {layout}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DashboardSummaryCard;\r\n","import {\r\n ShadowCard, Spinner,\r\n} from \"isuppli-react-components\";\r\nimport React, { useState, useEffect, Fragment } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getDashboardBeeSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardBeeClassificationSummary } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\nimport DashboardSuppliersSummaryTable from \"../DashboardSuppliersSummaryTable/DashboardSuppliersSummaryTable\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nenum BeeStateFilter {\r\n None = 0,\r\n Valid = 1,\r\n Invalid = 2,\r\n Expired = 3,\r\n PendingValidation = 4,\r\n ValidForClient =7,\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nconst SupplierBEEComplianceSummary = () => {\r\n const [beeSummaryData, setBeeSummaryData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardBeeSummaryData = await getDashboardBeeSummary();\r\n setBeeSummaryData(dashboardBeeSummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [setLoading, showError]);\r\n\r\n const columns = [\r\n \"\",\r\n \"Total\",\r\n \"Valid\",\r\n \"Invalid\",\r\n \"Expired\",\r\n \"In Validation\",\r\n \"Valid in Period\",\r\n ];\r\n\r\n const rows = beeSummaryData?.map((data) => [\r\n { value: data.name },\r\n {\r\n value: data.total >= 0 ? data.total : null,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,${data.beeClassificationId},${BeeStateFilter.None},null,null,null,null,null,null,null,null,null]&sf=1`,\r\n },\r\n {\r\n value: data.valid >= 0 ? data.valid : null,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,${data.beeClassificationId},${BeeStateFilter.Valid},null,null,null,null,null,null,null,null,null]&sf=1`,\r\n },\r\n {\r\n value: data.invalid >= 0 ? data.invalid : null,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,${data.beeClassificationId},${BeeStateFilter.Invalid},null,null,null,null,null,null,null,null,null]&sf=1`,\r\n },\r\n {\r\n value: data.expired >= 0 ? data.expired : null,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,${data.beeClassificationId},${BeeStateFilter.Expired},null,null,null,null,null,null,null,null,null]&sf=1`,\r\n },\r\n {\r\n value: data.pendingValidation >= 0 ? data.pendingValidation : null,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,${data.beeClassificationId},${BeeStateFilter.PendingValidation},null,null,null,null,null,null,null,null,null]&sf=1`,\r\n },\r\n {\r\n value: data.validForClient >= 0 ? data.validForClient : null,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,${data.beeClassificationId},${BeeStateFilter.ValidForClient},null,null,null,null,null,null,null,null,null]&sf=1`,\r\n },\r\n ] as DashboardSummaryItem[]) ?? [[]];\r\n\r\n return (\r\n \r\n {/* BEE */}\r\n
    \r\n
    \r\n

    MY SUPPLIERS BY BEE COMPLIANCE

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {loading ? : (\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierBEEComplianceSummary;\r\n","import {\r\n ShadowCard, Spinner, SystemFeatures, WithFeature,\r\n} from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Badge } from \"reactstrap\";\r\nimport BeeStatusBadge from \"../../../Containers/Supplier/BeeStatusBadge\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { ReduxState } from \"../../../Store/ReduxState\";\r\nimport ComplianceStatus, { complianceStatusToString, getComplianceStatusBadgeColor } from \"../../../Util/Enumerators/ComplianceStatus\";\r\nimport Styles from \"./ProfileStatusSummary.module.scss\";\r\nimport { loadBeePracticeData } from \"../../../Util/dataLoader\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { BeeRatingMessage } from \"../../../http/ManualSupplier/Messages/Messages\";\r\nimport {\r\n getCompanyCompliance,\r\n} from \"../../../http/Compliance/complianceApi\";\r\nimport { getOnboardingRequestExceptionReason } from \"../../../http/gets\";\r\n\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport {\r\n // eslint-disable-next-line no-unused-vars\r\n DetailsDisplay,\r\n getFormattedComplianceDetails,\r\n} from \"../../../Util/complianceFormatter\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { OnboardingComplianceExceptionMessage } from \"../../../http/Compliance/Models/Models\";\r\nimport { checkHttpStatus } from \"../../../http/httpHelpers\";\r\n\r\nconst ProfileStatusSummary = () => {\r\n const [checkDetails, setCheckDetails] = useState();\r\n const [beeData, setBeeData] = useState({} as BeeRatingMessage);\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n const userDetails = useSelector(\r\n (state: ReduxState) => state.loggedInUserDetails\r\n );\r\n useEffect(() => {\r\n const loader = async () => {\r\n try {\r\n await loadBeePracticeData({ data: userDetails, setBeeInfo: setBeeData });\r\n\r\n const details = await getCompanyCompliance(userDetails.companyId);\r\n const exceptionReason: OnboardingComplianceExceptionMessage = await\r\n getOnboardingRequestExceptionReason(userDetails.companyId);\r\n\r\n const formattedDetails = getFormattedComplianceDetails(details, exceptionReason);\r\n setCheckDetails(formattedDetails);\r\n } catch (getError) {\r\n if (checkHttpStatus(getError, 404)) {\r\n setCheckDetails({\r\n complianceCheckId: userDetails.companyId,\r\n company: {\r\n registeredName: \"\",\r\n registrationNumber: \"\",\r\n vatNumber: \"\",\r\n externalVendorId: \"\",\r\n registrationType: 0,\r\n },\r\n complianceProvider: 0,\r\n status: ComplianceStatus.AwaitingResults,\r\n complianceResults: [],\r\n error: \"No compliance details available\",\r\n });\r\n return;\r\n }\r\n showError();\r\n }\r\n };\r\n setLoading(true);\r\n loader();\r\n setLoading(false);\r\n }, [userDetails, showError]);\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n

    Profile Status

    \r\n
    \r\n {\r\n loading ? : (\r\n \r\n {/* Completion status */}\r\n
    \r\n
    \r\n

    \r\n Completion:\r\n {\" \"}\r\n 100%\r\n

    \r\n
    \r\n
    \r\n {/* Company BEE & Regulatory Compliance */}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n Compliance\r\n {\" \"}\r\n \r\n {complianceStatusToString(checkDetails?.status\r\n ?? ComplianceStatus.AwaitingResults)}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ProfileStatusSummary;\r\n","import { ShadowCard, Spinner } from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getDashboardSupplierTypesSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardReportSummary } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DashboardSummaryCard, { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\n\r\nconst SupplierTypesSummary = () => {\r\n const [SupplierTypesSummaryData,\r\n setSupplierTypesSummaryData] = useState();\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardSupplierTypesSummaryData = await getDashboardSupplierTypesSummary();\r\n setSupplierTypesSummaryData(dashboardSupplierTypesSummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const SupplierTypeComp = SupplierTypesSummaryData?.items?.map((i) => ({\r\n key: i.name,\r\n title: i.name,\r\n value: i.count,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,${i.id},null,null,null,null,null,null,null,null,null,null]&sf=1`,\r\n }) as DashboardSummaryItem) ?? [];\r\n\r\n return (\r\n \r\n {/* Suppliers */}\r\n
    \r\n
    \r\n

    MY SUPPLIERS BY TYPE

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {loading ? : (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierTypesSummary;\r\n","import { ShadowCard, Spinner } from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getDashboardSupportingDocumentsSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardReportSummary } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DashboardSummaryCard, { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\n\r\nconst SupportingDocumentsSummary = () => {\r\n const [SupportingDocumentSummaryData,\r\n setSupportingDocumentSummaryData] = useState();\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardSupportingDocumentsSummaryData = await getDashboardSupportingDocumentsSummary();\r\n setSupportingDocumentSummaryData(dashboardSupportingDocumentsSummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const SupplierTypeComp = SupportingDocumentSummaryData?.items?.map((i) => ({\r\n key: i.name,\r\n title: i.name,\r\n value: i.count,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,${i.id}]&sf=1`,\r\n }) as DashboardSummaryItem) ?? [];\r\n\r\n return (\r\n \r\n {/* Suppliers */}\r\n
    \r\n
    \r\n

    MY SUPPLIERS SUPPORTING DOCUMENTS

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {loading ? : (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupportingDocumentsSummary;\r\n","import React from \"react\";\r\nimport { useHistory } from \"react-router\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\n\r\nconst DashboardSuppliersSummaryTable = ({\r\n title,\r\n columns,\r\n rows,\r\n}: {\r\n title:string,\r\n columns: string[],\r\n rows: DashboardSummaryItem[][],\r\n}) => {\r\n const history = useHistory();\r\n\r\n return (\r\n
    \r\n
    \r\n

    {title}

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {columns.map((x, colIndex) => )}\r\n \r\n \r\n \r\n {rows.map((x, rowIndex) => (\r\n \r\n {x.map((y, itemIndex) => (\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n
    {x}
    \r\n {\r\n ev.preventDefault();\r\n if (y.linkUrl !== \"\" && y.linkUrl != null) {\r\n if (y.newTab) {\r\n window.open(y.linkUrl);\r\n } else {\r\n y.redirect === true\r\n ? window.location.href = y.linkUrl\r\n : history.push(y.linkUrl ?? \"\");\r\n }\r\n }\r\n }}\r\n >\r\n

    \r\n \r\n {y.value}\r\n \r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DashboardSuppliersSummaryTable;\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\n\r\nimport { ShadowCard, Spinner } from \"isuppli-react-components\";\r\nimport { getDashboardContractAgreementsSummary } from \"../../../http/Contracting/contractingApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardContractReportSummary } from \"../../../http/Contracting/Models/DashboardContractReportSummary\";\r\nimport DashboardSuppliersSummaryTable from \"../DashboardSuppliersSummaryTable/DashboardSuppliersSummaryTable\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\n\r\nconst SupplierContractAgreementSummary = () => {\r\n const [contractAgreementsSummaryData,\r\n setContractAgreementsSummaryData] = useState({ items: [] });\r\n const [loading, setLoading] = useState(false);\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardContractAgreementsSummarySummaryData = await getDashboardContractAgreementsSummary();\r\n setContractAgreementsSummaryData(dashboardContractAgreementsSummarySummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, []);\r\n\r\n if (!loading && (contractAgreementsSummaryData?.items?.length ?? 0) === 0) {\r\n return null;\r\n }\r\n\r\n const columns = [\r\n \"\",\r\n \"Approved\",\r\n \"Pending Approval\",\r\n ];\r\n\r\n const rows = contractAgreementsSummaryData?.items?.map((x) => [\r\n { key: `${x.id}`, value: x.name },\r\n { key: `${x.id}_approved`, value: x.approvedCount, linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,${x.id},true]&sf=1` },\r\n { key: `${x.id}_pending`, value: x.pendingApprovalCount, linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,${x.id},false]&sf=1` },\r\n ] as DashboardSummaryItem[]) ?? [];\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n

    MY SUPPLIERS AGREEMENTS

    \r\n
    \r\n
    \r\n \r\n {loading ? : (\r\n contractAgreementsSummaryData.items.length > 0 && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierContractAgreementSummary;\r\n","import { ShadowCard, Spinner } from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getDashboardSupplierPackagesSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardReportSummary } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DashboardSummaryCard, { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\n\r\nconst SupplierPackagesSummary = () => {\r\n const [SupplierPackagesSummaryData,\r\n setSupplierPackagesSummaryData] = useState();\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardSupportingDocumentsSummaryData = await getDashboardSupplierPackagesSummary();\r\n setSupplierPackagesSummaryData(dashboardSupportingDocumentsSummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const SupplierPackages = SupplierPackagesSummaryData?.items?.map((i) => ({\r\n key: i.name,\r\n title: i.name,\r\n value: i.count,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,${i.id}]&sf=1`,\r\n }) as DashboardSummaryItem) ?? [];\r\n\r\n return (\r\n \r\n {/* Suppliers */}\r\n
    \r\n
    \r\n

    MY SUPPLIERS BY PACKAGES

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {loading ? : (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierPackagesSummary;\r\n","import { ShadowCard, Spinner } from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getDashboardSupplierStatusSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardSupplierStatusSummary } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DashboardSummaryCard, { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\n\r\nconst SupplierStatusSummary = () => {\r\n const [SupplierPackagesSummaryData,\r\n setSupplierStatusSummaryData] = useState();\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardSupplierStatusSummaryData = await getDashboardSupplierStatusSummary();\r\n setSupplierStatusSummaryData(dashboardSupplierStatusSummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const SupplierStatus = SupplierPackagesSummaryData?.items?.map((i) => ({\r\n key: i.name,\r\n title: i.name,\r\n value: i.count,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,${i.status}]&sf=1`,\r\n }) as DashboardSummaryItem) ?? [];\r\n\r\n return (\r\n \r\n {/* Suppliers */}\r\n
    \r\n
    \r\n

    MY SUPPLIERS BY STATUS

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {loading ? : (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierStatusSummary;\r\n","import { ShadowCard, Spinner } from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getDashboardComplianceSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardRegulatoryComplianceSummaryMessage } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DashboardSummaryCard, { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\nimport {\r\n ComplianceCheckType,\r\n ComplianceCheckStatus,\r\n} from \"../../../Util/Enumerators/ComplianceCheck\";\r\n\r\nconst SupplierRegulatoryComplianceSummary = () => {\r\n const [complianceSummaryData,\r\n setComplianceSummaryData] = useState();\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardComplianceSummaryData = await getDashboardComplianceSummary();\r\n setComplianceSummaryData(dashboardComplianceSummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const cipcComplianceItems = [\r\n {\r\n title: \"Valid\",\r\n key: \"cipcvalid\",\r\n value: complianceSummaryData?.cipcValid,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.CIPC},${ComplianceCheckStatus.Valid}]&sf=1`,\r\n },\r\n {\r\n title: \"Invalid\",\r\n key: \"cipcinvalid\",\r\n value: complianceSummaryData?.cipcInvalid,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.CIPC},${ComplianceCheckStatus.Invalid}]&sf=1`,\r\n },\r\n {\r\n title: \"Pending\",\r\n key: \"cipcpending\",\r\n value: complianceSummaryData?.cipcPending,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.CIPC},${ComplianceCheckStatus.Pending}]&sf=1`,\r\n },\r\n {\r\n title: \"N/A\",\r\n key: \"cipcna\",\r\n value: complianceSummaryData?.cipcna,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.CIPC},${ComplianceCheckStatus.NA}]&sf=1`,\r\n },\r\n ] as DashboardSummaryItem[];\r\n\r\n const sarsComplianceItems = [\r\n {\r\n title: \"Valid\",\r\n key: \"sarsvalid\",\r\n value: complianceSummaryData?.sarsValid,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.SARS},${ComplianceCheckStatus.Valid}]&sf=1`,\r\n },\r\n {\r\n title: \"Invalid\",\r\n key: \"sarsinvalid\",\r\n value: complianceSummaryData?.sarsInvalid,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.SARS},${ComplianceCheckStatus.Invalid}]&sf=1`,\r\n },\r\n {\r\n title: \"Pending\",\r\n key: \"sarspending\",\r\n value: complianceSummaryData?.sarsPending,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.SARS},${ComplianceCheckStatus.Pending}]&sf=1`,\r\n },\r\n {\r\n title: \"N/A\",\r\n key: \"sarsna\",\r\n value: complianceSummaryData?.sarsna,\r\n linkUrl: `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,${ComplianceCheckType.SARS},${ComplianceCheckStatus.NA}]&sf=1`,\r\n },\r\n ] as DashboardSummaryItem[];\r\n\r\n return (\r\n \r\n {/* Regulatory */}\r\n
    \r\n
    \r\n

    MY SUPPLIERS BY REGULATORY COMPLIANCE

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {loading ? : (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupplierRegulatoryComplianceSummary;\r\n","import { ShadowCard, Spinner } from \"isuppli-react-components\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport useShowError from \"../../../Hooks/useShowError\";\r\nimport { getDashboardOnboardingStatusSummary } from \"../../../http/Dashboard/dashboardApi\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardSupplierStatusSummary } from \"../../../http/Dashboard/Models/Models\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport DashboardSummaryCard, { DashboardSummaryItem } from \"../DashboardSummaryItem/DashboardSummaryItem\";\r\n\r\nconst OnboardingStatusSummary = () => {\r\n const [onboardingStatusSummaryData,\r\n setOnboardingStatusSummaryData] = useState();\r\n const showError = useShowError();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const dashboardOnboardingStatusSummaryData = await getDashboardOnboardingStatusSummary();\r\n setOnboardingStatusSummaryData(dashboardOnboardingStatusSummaryData);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [showError]);\r\n\r\n const items = onboardingStatusSummaryData?.items?.map((i) => ({\r\n key: i.name,\r\n title: i.name,\r\n value: i.count,\r\n linkUrl: i.status >= 0 ? `/marketplace/search?f=[[],[],[],[],[],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,${i.status}]&sf=0` : null,\r\n }) as DashboardSummaryItem) ?? [];\r\n\r\n return (\r\n \r\n {/* Suppliers */}\r\n
    \r\n
    \r\n

    MY SUPPLIERS BY ONBOARDING STATUS

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {loading ? : (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default OnboardingStatusSummary;\r\n","import React, { useState, useEffect, Fragment } from \"react\";\r\nimport {\r\n PageHeading,\r\n SystemFeatures, WithFeature, useSystemFeatureCheck,\r\n} from \"isuppli-react-components\";\r\nimport DashboardSuppliersSummaryCard from \"./DashboardSuppliersSummaryCard/DashboardSuppliersSummaryCard\";\r\nimport useShowError from \"../../Hooks/useShowError\";\r\nimport {\r\n getDashboardSuppliersSummary,\r\n} from \"../../http/Dashboard/dashboardApi\";\r\nimport navMenuItems from \"../../Util/menuItems\";\r\n// eslint-disable-next-line no-unused-vars\r\nimport { DashboardSupplierSummaryMessage } from \"../../http/Dashboard/Models/Models\";\r\nimport supplierFilterOptions from \"../../Util/Enumerators/supplierFilterOptions\";\r\nimport SearchSupplierDatabaseSection from \"./SearchSupplierDatabaseSection/SearchSupplierDatabaseSection\";\r\nimport DashboardOverallRatingCard from \"./OverallRatingCard/OverallRatingCard\";\r\nimport MessagesSummaryCard from \"./MessagesSummaryCard/MessagesSummaryCard\";\r\nimport BulletinBoardSummaryCard from \"./BulletinBoardSummaryCard/BulletinBoardSummaryCard\";\r\nimport ProfileStatusSummary from \"./ProfileStatusSummary/ProfileStatusSummay\";\r\nimport SupplierTypeSummary from \"./SupplierTypeSummary/SupplierTypeSummary\";\r\nimport SupportingDocumentsSummary from \"./SupportingDocumentsSummary/SupportingDocumentsSummary\";\r\nimport SupplierContractAgreementSummary from \"./SupplierContractAgreementSummary/SupplierContractAgreementSummary\";\r\nimport SupplierPackagesSummary from \"./SupplierPackagesSummary/SupplierPackagesSummary\";\r\nimport SupplierStatusSummary from \"./SupplierStatusSummary/SupplierStatusSummary\";\r\nimport SupplierBEEComplianceSummary from \"./SupplierBEEComplianceSummary/SupplierBEEComplianceSummary\";\r\nimport SupplierRegulatoryComplianceSummary from \"./SupplierRegulatoryComplianceSummary/SupplierRegulatoryComplianceSummary\";\r\nimport OnboardingStatusSummary from \"./OnboardingStatusSummary/OnboardingStatusSummary\";\r\n\r\nimport { getMyCompanyRating } from \"../../http/MyCompany/myCompanyAPI\";\r\n\r\nconst Dashboard = () => {\r\n const featureCheck = useSystemFeatureCheck();\r\n const [loading, setLoading] = useState(true);\r\n const [suppliersSummary, setSuppliersSummary] = useState();\r\n const [rating, setRating] = useState(0);\r\n const [totalRatings, setTotalRatings] = useState(0);\r\n\r\n const showError = useShowError();\r\n\r\n useEffect(() => {\r\n const loader = async () => {\r\n setLoading(true);\r\n try {\r\n // api calls\r\n const supplierSummaryData = await getDashboardSuppliersSummary();\r\n setSuppliersSummary(supplierSummaryData);\r\n\r\n const result = await getMyCompanyRating();\r\n setRating(result?.rating ?? 0);\r\n setTotalRatings(result?.totalRatings ?? 0);\r\n } catch (error) {\r\n showError();\r\n }\r\n setLoading(false);\r\n };\r\n loader();\r\n }, [setSuppliersSummary, setRating, setTotalRatings, setLoading, showError]);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* Supplier stats */}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {/* Messaging */}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {/* Star rating */}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Dashboard;\r\n"],"sourceRoot":""}